(function(a){a.fn.ajaxify=function(b){b=a.extend({},Ajaxify.options,b||{});for(var c=0;c<this.length;c++){a(this[c]).data("options",b);if(a(this[c]).attr("tagName").toLowerCase()=="a"){a(this[c]).bind("click",function(d){d.preventDefault();if(!a(this).data("options").confirm||(a(this).data("options").confirm&&confirm(a(this).data("options").confirm))){Ajaxify.process(d,this)}})}else{if(a(this[c]).attr("tagName").toLowerCase()=="form"){a(this[c]).find(b.buttons).each(function(d,g){a(g).click(function(e){a(this).before('<input type="hidden" name="'+a(this).attr("name")+'" value="'+a(this).val()+'" class="ajaxify__submitButton__"/>').attr("name",a(this).attr("name")).val(a(this).val());if(a(this).attr("type")=="image"){a(this).before('<input type="hidden" name="'+a(this).attr("name")+'_y" value="'+(e.pageY-a(this).offset().top)+'" class="ajaxify__submitButtonX__"/>');a(this).before('<input type="hidden" name="'+a(this).attr("name")+'_x" value="'+(e.pageX-a(this).offset().left)+'" class="ajaxify__submitButtonY__"/>')}})});a(this[c]).bind("submit",function(d){d.preventDefault();if(!a(this).data("options").confirm||(a(this).data("options").confirm&&confirm(a(this).data("options").confirm))){Ajaxify.process(d,this)}})}}}return this}})(jQuery);var Ajaxify={options:{append:"ajax=1",buttons:"button[type=submit], input[type=submit], input[type=image]",confirm:null,replace:true,submit:{disable:{selector:null,className:null},message:{text:null,className:null},waiting:{timeout:0,message:null,className:null,callback:null}},update:null,async:true,beforeSend:null,complete:null,contentType:null,dataFilter:null,dataType:"html",error:function(a,c,b){if("console" in window){if("warn" in window.console){console.warn("Error processing data via AJAX:\n"+b+" ("+c+")")}else{if("log" in window.console){console.log("Warning: Error processing data via AJAX:\n"+b+" ("+c+")")}}}else{alert("Error processing data via AJAX:\n"+b+" ("+c+")")}},success:function(b,c){var a=this;if(a.replace){jQuery(a.update).html(b)}else{jQuery(a.update).append(b)}},type:null,url:null},data:[],store:function(b){var a=this.data.length;this.data.push(b);return a},retrieve:function(a){if(this.data[a]){return this.data[a]}else{return}},process:function(e,node){var $=jQuery;var options={};$.extend(options,$(node).data("options"));if($(node).attr("tagName").toLowerCase()=="form"){options.url=(options.url)?this.appendToURL(options.url,options.append):this.appendToURL($(node).attr("action"),options.append);options.type=(options.type)?options.type:$(node).attr("method").toUpperCase();options.contentType=(options.contentType)?options.contentType:$(node).attr("enctype")||"application/x-www-form-urlencoded";if(options.data){if(typeof options.data=="string"){options.data=$(node).serialize()+"&"+options.data}else{options.data=$(node).serialize()+"&"+$.param(options.data)}}else{options.data=$(node).serialize()}}else{if($(node).attr("tagName").toLowerCase()=="a"){options.url=(options.url)?this.appendToURL(options.url,options.append):this.appendToURL($(node).attr("href"),options.append);options.type=(options.type)?options.type:"GET";options.contentType=(options.contentType)?options.contentType:"application/x-www-form-urlencoded"}else{return}}if($(node).attr("id")){var id=$(node).attr("id")}else{var id="ajaxify__unique__"+this.data.length;$(node).attr("id",id)}var selector=$(node).attr("tagName").toLowerCase()+"#"+id;options.update=(options.update)?options.update:($(node).attr("target")?$(node).attr("target"):$(node).parent());if($(node).attr("tagName").toLowerCase()=="form"){if(options.submit.disable.selector){if(options.submit.disable.selector=="buttons"){options.submit.disable.selector=options.buttons}$(node).find(options.submit.disable.selector).each(function(i,e){if(options.submit.disable.className){$(e).addClass(options.submit.disable.className)}$(e).attr("disabled",true)})}}else{if(options.submit.disable.selector){options.submit.disable.selector=null}}if(options.submit.message.text){if($("div#ajaxify__submitMessage__").length==0){$("body").append($('<div id="ajaxify__submitMessage__"></div>'))}$("div#ajaxify__submitMessage__").html(options.submit.message.text);if(options.submit.message.className){$("div#ajaxify__submitMessage__").addClass(options.submit.message.className)}}if(options.complete){options.onComplete=options.complete}if(options.beforeSend){options.onBeforeSend=options.beforeSend}options.complete=function(XHR,textStatus){if("id" in this){var data=Ajaxify.retrieve(this.id)}else{var data=false}if(data){if(data.timeout){window.clearTimeout(data.timeout)}$(data.selector).find("input.ajaxify__submitButton__, input.ajaxify__submitButtonX__, input.ajaxify__submitButtonY__").remove();if(data.options.submit.disable.selector){var els=$(data.selector).find(data.options.submit.disable.selector).each(function(i,e){if(data.options.submit.disable.className){$(e).removeClass(data.options.submit.disable.className)}$(e).attr("disabled",false)})}if(data.options.onComplete){try{data.options.onComplete(XHR,textStatus)}catch(e){}}}if($("div#ajaxify__submitMessage__").length){$("div#ajaxify__submitMessage__").fadeOut(600,function(){$(this).remove()})}};if(options.submit.waiting.timeout){eval("var f = function() { Ajaxify.cleanUp("+this.data.length+"); };");options.timeout=window.setTimeout(f,(options.submit.waiting.timeout*1000))}else{options.timeout=null}options.id=Ajaxify.store({selector:selector,options:options,timeout:options.timeout});$.ajax(options)},cleanUp:function(d){var b=jQuery;var a=Ajaxify.retrieve(d);if(!a){return}if(a.options.submit.disable.selector){b(a.selector).find(a.options.submit.disable.selector).each(function(g,h){if(a.options.submit.disable.className){b(h).addClass(a.options.submit.disable.className)}b(h).attr("disabled",false)})}if(a.options.submit.waiting.message){b("div#ajaxify__submitMessage__").html(a.options.submit.waiting.message)}if(a.options.submit.waiting.className){b("div#ajaxify__submitMessage__").addClass(a.options.submit.waiting.className)}if(a.options.submit.waiting.callback){try{a.options.submit.waiting.callback()}catch(c){}}},appendToURL:function(b,a){if(a){if(b.indexOf("#")!=-1){b=b.substr(0,b.indexOf("#"))}b+=(b.indexOf("?")==-1?"?"+a:"&"+a)}return b}};
