(function($,undefined){$.extend($.J,{form:{init:function(form){$("input,textarea,select",form).each(function(){var $this=$(this);var onchange=$this.data("onchange");if(onchange)$this.change($.J.form.event.change)});$(".datepicker",form).each(function(){$(this).datepicker({dateFormat:$(this).data("date-format"),showOtherMonths:true,selectOtherMonths:true})});$(".timepicker",form).timepicker({showPeriodLabels:false,showOn:"focus"});$(".autocomplete",form).each(function(){$.J.form.setup.autocomplete($(this))}); $(".token_list",form).each(function(){var param=$.parseJSON($(this).attr("rel"));$(this).tokenInput("/ajax"+param.link,param)});$(".new_tokenlist",form).each(function(){$.J.form.setup.tokenlist($(this))})},setup:{autocomplete:function($this){var name=$this.attr("id").split("_autocomplete")[0];$this.data("autocomplete-input",$("#"+name)).autocomplete({delay:250,autoFocus:true,source:$this.data("autocomplete-link")?$.J.form.event.autocomplete.source_ajax:$this.data("autocomplete-list"),select:$.J.form.event.autocomplete.select})}, tokenlist:function($this){var container=$("#"+$this.attr("id")+"_tokencontainer tbody");var template=$("tr.hidden",container);$(".tokenlist_remove",container).click($.J.form.event.tokenlist.remove);$this.data("tokenlist-container",container).data("tokenlist-template",template).autocomplete({delay:250,source:$this.data("autocomplete-link")?$.J.form.event.autocomplete.source_ajax:$this.data("autocomplete-list"),select:$.J.form.event.tokenlist.select})}},extract:function(form,name_callback,skip){var name, param={};if(skip===undefined)skip=1;if(window.CKEDITOR!==undefined)for(instance in CKEDITOR.instances)CKEDITOR.instances[instance].updateElement();var getname=function(){var name=name_callback?name_callback.call(this):this.name;return name.length?name:false};$("input",form).each(function(){var name=getname.call(this);if(name===false)return;var $this=$(this);if(skip&&$this.data("skip"))return;switch(this.type){case "checkbox":param[name]=$this.is(":checked");break;case "text":case "password":case "hidden":param[name]= $this.val();break;case "radio":if($this.is(":checked"))param[name]=$this.val();break;default:return}});$("input.new_tokenlist",form).each(function(){var name=getname.call(this);if(name===false)return;param[name]={};$("tr",$(this).data("tokenlist-container")).each(function(){var id=$(this).data("tokenlist-id");if(id)param[name][id]=$.J.form.extract($(this),function(){return this.name.substring(name.length+1)},0)})});$("select,textarea",form).each(function(){var name=getname.call(this);var $this=$(this); if(name===false||skip&&$this.data("skip"))return;param[name]=$this.val()});$(".success_files",form).each(function(){if($(".success_file",$(this)).length>0){var name=$(this).attr("name");var files={};$(".success_file",$(this)).each(function(){files[$(this).attr("id")]={name:$(this).data("name"),dir:$(this).data("dir"),type:$(this).data("type"),size:$(this).data("size")}});param[name]=files}});return param},event:{change:function(event){var $this=$(this);var form=$this.parents("form");var data=$.J.form.extract(form); data.form_submit=true;$.J.ajax($this.data("onchange"),{data:data,success:function(data){for(var i in data.form){var elm=$("#"+i);if(data.form[i].autocomplete===true){if(data.form[i].value!==undefined)elm.val(data.form[i].value);if(data.form[i].label!==undefined)$("#"+i+"_autocomplete").val(data.form[i].label);if(data.form[i].link!==undefined)$("#"+i+"_autocomplete").data("autocomplete-link",data.form[i].link);if(data.form[i].options!==undefined)$("#"+i+"_autocomplete").autocomplete("option","source", data.form[i].options)}else elm.each(function(){switch(this.nodeName){case "SPAN":$(this).html(data.form[i].value);break;case "SELECT":var value=typeof data.form[i].value!==undefined?data.form[i]:$(this).val();if(typeof data.form[i].options=="object"){var html="";for(var key in data.form[i].options)html+='";$(this).html(html)}$(this).val(value);if($.mobile)$(this).selectmenu("refresh",true);break;case "INPUT":$(this).val(data.form[i].value); break}})}}})},autocomplete:{source_ajax:function(request,response){var $this=$(this.element);var form=$this.parents("form:first");if(form.length)request.form=$.J.form.extract(form);var url=$this.data("autocomplete-link");$.J.ajax("/ajax"+url+(url[url.length-1]=="/"?"?":"&")+"q="+request.term,{data:request,success:function(data){response($.map(data.result,function(item){return{label:item.name,value:item.name,id:item.id}}))}})},select:function(event,ui){var input=$(this).data("autocomplete-input"); input.val(ui.item.id).trigger("change")}},tokenlist:{select:function(event,ui){var $this=$(this);var found=false;$("tr",$(this).data("tokenlist-container")).each(function(){if($(this).data("tokenlist-id")==ui.item.id){found=true;return false}});if(found)return;var elm=$this.data("tokenlist-template").clone().removeClass("hidden").data("tokenlist-id",ui.item.id);$("td:first",elm).html(ui.item.label);$(".tokenlist_remove",elm).click($.J.form.event.tokenlist.remove);$this.data("tokenlist-container").append(elm); $this.val("");if($.mobile){$("[data-role]",elm).each(function(){$(this).removeAttr("data-role")});$("[data-org-role]",elm).each(function(){var $this=$(this);var role=$this.data("org-role");$this.attr("data-role",role)});elm.page()}return false},remove:function(){$(this).parents("tr:first").remove()}}},validate:{error:function(form,error){var is_error=typeof error==="object";$(".error_label",form).each(function(){var name=this.id.substr(5,this.id.length-11);if(!is_error||!error[name])$(this).remove(); $("#form_"+name,form).removeClass("error")});var focus_set=false;if(is_error)for(var name in error){var input_elm=$("#form_"+name,form).addClass("error");var elm=$("#form_"+name+"_error",form);if(!elm.length)var elm=$('');$(input_elm).before(elm);$("td",elm).html(error[name]);if(!focus_set)focus_set=$("input, select, textarea",input_elm)}}}}})})(jQuery);