//Event.observe($$('#item li'), 'click', handler) 




Kwo.Widget.Menu = {
  "opened": null,
  "binded": {},
  "timeout": null,
  "id": null,
  "bind": function() {
    document.getElementsByClassName("bind-menu").each(function (item) {

      if (!$("menu-"+item.id)) return;

      Event.observe(item, "mouseover", function () {
        if (Kwo.Widget.Menu.id != null && Kwo.Widget.Menu.id != item.id) {
          $("menu-"+Kwo.Widget.Menu.id).hide();
        }
        Kwo.Widget.Menu.id = item.id;
        if (Kwo.Widget.Menu.timeout) {
          window.clearTimeout(Kwo.Widget.Menu.timeout);
        }
        Kwo.Widget.Menu.opened = $("menu-"+item.id);
        var pos = Position.cumulativeOffset(this);
        Kwo.Widget.Menu.opened.setStyle({top: (pos[1]+this.getHeight())+"px",
                                         left: pos[0]+"px"});
        if (!(Kwo.Widget.Menu.opened.id in Kwo.Widget.Menu.binded)) {
          Kwo.Widget.Menu.binded[Kwo.Widget.Menu.opened.id] = true;
        /*Event.observe(Kwo.Widget.Menu.opened, "mouseover", Kwo.Widget.Menu.over);
          Event.observe(Kwo.Widget.Menu.opened, "mouseout", Kwo.Widget.Menu.out);*/
          Kwo.Widget.Menu.opened.onmouseover = Kwo.Widget.Menu.over;
          Kwo.Widget.Menu.opened.onmouseout = Kwo.Widget.Menu.out;
        }
        Kwo.Widget.Menu.opened.show();
      });
      
      Event.observe(item, "mouseout", function () { 
        window.clearTimeout(Kwo.Widget.Menu.timeout);
        Kwo.Widget.Menu.timeout = setTimeout(function () { 
          Kwo.Widget.Menu.opened.hide(); 
        }, 800);
      });
      
    });
  },

  "out": function () { 
    window.clearTimeout(Kwo.Widget.Menu.timeout); 
    this.hide();
  },

  "over": function() {
    window.clearTimeout(Kwo.Widget.Menu.timeout); 
    this.show(); 
  }
};

Kwo.Search = {
  "getResults": function(query) {
    var args = ("string" == typeof query) ? {"query": query} : query;
    Kwo.go("/search/results", args);
  }
};

Kwo.Tag = {
  "view": function(tag) {
    Kwo.Search.getResults({"query": tag, "source": "tag"});
  }
};

Kwo.User = {

  "File": {

    "args": {},

    "handleSelection": function(file_name) {
      $(Kwo.User.File.args["input"]).setValue(file_name);
      Kwo.dlg.close();
    },

    "list": function() {
      Kwo.exec("/community/user.files", Kwo.User.File.args, {"container": "support"});
    },

    "select": function(callback) {
      callback = callback || "user_file";
      Kwo.User.File.args = {"input": callback};
      Kwo.dlg = new Kwo.Dialog("/community/user.files", Kwo.User.File.args);
    },

    "selectRemoteFile": function() {
      $('box-list', 'box-upload').invoke('toggle');
    },

    "send": function(form_id) {
      $("files-box", "loading-box").invoke("toggle");
      $(form_id).submit();
    }
  },

  "Msg": {

    "compose": function(id) {
      id = (id === undefined) ? user_id : id;
      new Kwo.Dialog("/community/user.compose_msg", {"id": id}, {"height": 350});
    },

    "send": function(args) {
      Kwo.dlg = Kwo.exec("/community/user.send_msg", args);
    }
  }
};

Kwo.Community = {
  
  "Account": {

    "clean": function() {
      $("comment_message").hide();
    },

    "view": function(page) {
      var url = "/community/account";
      if (page !== undefined) {
        url = url+"#"+page;
      }
      Kwo.go(url);
    },
    
    "refresh": function(msg) {
      Kwo.Community.Account.setMessage(msg);
      elt = $("account").getElementsByClassName("page_link")[0];
      Kwo.exec(elt.getAttribute("action"), {"page": elt.id}, {"container": "page"});
      setTimeout(function() { $("comment_message").hide(); }, 30000);
    },
    
    "exec": function(name) {
      Kwo.Community.Account.clean();
      $("page").update('<img src="/app/sys/pix/throbber2.gif" />');
      elt = $(name);
      if (window.location.hash.length >= 2) {
        window.location.href = window.location.href.replace(window.location.hash, "#"+elt.id); 
      }
      else {
        window.location.href += "#"+elt.id;
      }
      $("account").getElementsByClassName("page_link").each(function (e) { e.removeClassName('on'); });
      elt.addClassName('on');
      Kwo.exec(elt.getAttribute("action"), {"page": elt.id}, {"container": "page"});
    },

    "setMessage": function(msg, error) {
      error = error || false;
      msg = (msg === undefined) ? "ok" : msg;
      $("comment_message").show();
      $("comment_message").update('<img src="/app/sys/pix/status/ok.png" id="emblem" />'+msg.ucfirst()
                                  +'<div style="clear:both;"></div>');
    },

    "storeProfile": function(args) {
      Kwo.exec("/community/user.store_profile", args);
    }
    
  },
  
  "Friend": {
    "add": function(user_id) {
      
    },

    "remove": function(user_id) {
      if (!confirm("êtes vous sûr ?".ucfirst())) return;
      Kwo.exec("/community/user.remove_friend", 
               {"user_id": user_id});
    }
  },

  "changeEmail": function(args) {
    Kwo.exec("/community/user.change_email", args, {"toggle": "panel_throbber", "reset": true});
  },
    
  "changePassword": function(args) {
    Kwo.exec("/community/user.change_password", args, {"reset": true});
  },  

  "forgotPassword": function() {
    new Kwo.Dialog('/community/visitor.forgot_password');
  },

  "initAuthBox": function() {
    Kwo.exec("/community/widget.auth", null, {"container":"widget-auth"});
    return false;
  },

  "login": function(args) {
    Kwo.exec("/community/login", args);
    return false;
  },
  
  "logout": function(args) {
    Kwo.exec("/community/logout", null, {"confirm": args});
  },

  "sendPassword": function(args) {
    Kwo.exec("/community/visitor.send_password", args);
    if ($("forget_area")) {
      $("forget_area").toggle();
      if ($("login")) $("login").focus();
    }
  },

  "signin": function(args) {
    if ($("terms_of_use") && !$("terms_of_use").checked) {
      return Kwo.warn("Veuillez accepter les CGU / Please accept terms of use.");
    }
    Kwo.exec("/community/login", args);
  },
  
  "signup": function () {
    Kwo.go("/community/signup");
  }

};

Kwo.Widget.Comment = {

  "add": function() {
    if ($F("comment_content_input").empty()) return ;
    $("comment_content").value = $F("comment_content_input");
    $("comment_offset").value = 0;
    Kwo.exec("/comment/comment.store", $("comment_context"));
  },

  "refresh": function() {
    Kwo.exec("/comment/comment.list", $("comment_context"), {"container": "comments"});
  },

  "switchPage": function(num) {
    if ((num - 1) == $F("comment_offset")) return ;
    $("comment_offset").value = num - 1;
    Kwo.Widget.Comment.refresh();
  }

};

Kwo.Widget.Notify = {
  "send": function(elt) {
    Kwo.exec("/sys/visitor.send_notification", elt, {"toggle": "kwo-notify-throbber", "reset": true});
  }
};

Kwo.Widget.Rating = {

  "registry": {},

  "handleClick": function(event) {
    event = event || window.event;
    var arr = Event.element(event).id.split("-");
    if (this.registry[arr[0]+"-"+arr[1]+"-"+arr[2]+"-"+arr[3]] == true) return ;
    this.registry[arr[0]+"-"+arr[1]+"-"+arr[2]+"-"+arr[3]] = true;
    Kwo.exec("/rate/ping", {"model_id": arr[2], "record_id": arr[3], "note": arr[4]}, {async:false});
  },

  "handleMove": function(event) {
    event = event || window.event;
    var arr = Event.element(event).id.split("-");
    if (this.registry[arr[0]+"-"+arr[1]+"-"+arr[2]+"-"+arr[3]] == true) return ;
    var sig = arr[0]+"-"+arr[1]+"-"+arr[2]+"-"+arr[3]+"-";
    var i = 1;
    if (event.type.endsWith("out")) {
      while (i < 10) {
        if (!$(sig+i)) break;
        $(sig+i).src = $(sig+i).src.preg_replace("on", "off");
        i++;
      }
    }
    else {
      var num = parseInt(arr[4]);      
      for (i = 1; i <= num; i++) {
        $(sig+i).src = $(sig+i).src.preg_replace("off", "on");
      }
    }
  },

  "notify": function(model_id, record_id) {
    $("kwo-star-"+model_id+"-"+record_id+"-1").up("div").hide();
  }
};

Kwo.Widget.Poll = {

  "handleResponse": function(msg) {
    Kwo.warn(msg);
  },

  "submit": function(id) {
    Kwo.exec("/poll/poll.add_result", $("kwo-poll-"+id), {"toggle": "kwo-poll-throbber-"+id});
  }

};

Kwo.Form = {

  "handleResponse": function(id, o) {
    $("kwo-form-"+id+"-error_count").value = o.error_count;
    if (o.error_count > 0) {
      var length = o.fields_arr.length;
      for (var i = 0; i < length; i++) {
        $("kwo-form-"+id+"-labels-"+o.fields_arr[i]).addClassName("error");
      }
    }
    else {
      $("kwo-form-"+id+"-fields", "kwo-form-"+id+"-acknowledgement").invoke("toggle");
    }
  },

  "submit": function(id) {
    if ($F("kwo-form-"+id+"-error_count") != "0") {
      $$("#kwo-form-"+id+" LABEL").invoke("removeClassName", "error");
    }
    Kwo.exec("/form/form.add_answer", $("kwo-form-"+id), {"toggle": "kwo-form-throbber-"+id});
  }

};



