(function($){jQuery.AjaxifyDefaults={event:"click",link:false,target:"#container",animateOut:false,animateIn:false,animateOutSpeed:"normal",animateInSpeed:"normal",method:"GET",tagToload:false,loading_txt:"",loading_img:"images/loading.gif",loading_target:false,loading_fn:function(options){jQuery.ajaxifyLoading(options)},loadHash:false,title:false,forms:false,params:"ajax=true",timeout:false,contentType:"application/x-www-form-urlencoded",dataType:"html",cache:false,username:false,password:false,onStart:function(op){},onError:function(op){jQuery.ajaxifyManip(op,"<font style='color: #CC0000'>Error: </font> Couldn't open the page.")},onSuccess:function(op){},onComplete:function(op){}};jQuery.AjaxifyFirstLoad=true;jQuery.AjaxifyhistorySet=new Object();jQuery.AjaxifyPageTitle=document.title;jQuery.AjaxifyDebug=false;jQuery.fn.ajaxify=function(options){if(!jQuery(this).size()){jQuery.ajaxifylog('Error: No matched element/s for your ajaxify selector " '+jQuery(this).selector+' ".');return false}return this.each(function(){var current=jQuery.extend({},jQuery.AjaxifyDefaults,options);if(jQuery.metadata){current=jQuery.extend(current,jQuery(this).metadata())}if(current.event){jQuery(this).bind(current.event,function(){jQuery(this).ajaxifyAnalyse(current);if(!current.hash){jQuery.ajaxifyLoad(current)}else{jQuery.ajaxifyHash(current)}if(jQuery(this).is("a")||jQuery(this).is("form")){return false}})}else{jQuery(this).ajaxifyAnalyse(current);jQuery.ajaxifyLoad(current)}if(current.loadHash&&jQuery.AjaxifyFirstLoad){jQuery(this).ajaxifyAnalyse(current);if(document.location.hash.replace(/^#/,"")==current.hash&&current.hash){jQuery.ajaxifyHash(current);jQuery.AjaxifyFirstLoad=false}}})};jQuery.fn.ajaxifyAnalyse=function(current){current.object=this;if(jQuery(this).is("a")){if(jQuery(this).attr("href")){var link=jQuery(this).attr("href").replace(/^#/,"");current.link=link||current.link}else{current.link}if(typeof current.tagToload!="object"){if(jQuery(this).attr("target")){current.target=jQuery(this).attr("target")}else{current.target}}else{current.target=current.loading_target||"#AjaxifyTemp"}}if(!current.loading_target){current.loading_target=current.target}if(current.forms){var text=jQuery(current.forms).serialize();current.paramres=text}if(typeof current.params=="function"){var params=current.params(current)}else{var params=current.params}if(typeof params=="string"){if(text){current.paramres+="&"+params}else{current.paramres=params}}var len=current.target.length-1;if(typeof current.tagToload!="object"){if(current.target.charAt(len)=="+"||current.target.charAt(len)=="-"){current.manip=current.target.charAt(len);current.target=current.target.substr(0,len)}}if(current.loadHash){if(!jQuery.historyInit){jQuery.ajaxifylog("Error: loadHash is enabled but history plugin couldn't be found.");return false}if(current.loadHash===true){jQuery.ajaxifylog('Info: It seemes you are upgrading from v1.0. Please see the new documentation about loadHash. "attr:href" will be used instead of "true".');current.loadHash="attr:href"}if(current.loadHash.toLowerCase()=="attr:href"||current.loadHash.toLowerCase()=="attr:rel"||current.loadHash.toLowerCase()=="attr:title"){current.loadHash=current.loadHash.toLowerCase();current.hash=jQuery(this).attr(current.loadHash.replace("attr:",""));if(jQuery.browser.opera){current.hash=current.hash.replace("?","%3F");current.hash=current.hash.replace("&","%26");current.hash=current.hash.replace("=","%3D")}}else{current.hash=current.loadHash}if(!current.hash){jQuery.ajaxifylog("Warning: You have specified loadHash, but its empty or attribute couldn't be found.")}}if(!jQuery(current.target).size()&&typeof current.tagToload!="object"){jQuery.ajaxifylog('Warning: Target " '+current.target+" \" couldn't be found.")}};jQuery.ajaxifyLoading=function(options){var html="<div id='AjaxifyLoading'><img src='"+options.loading_img+"' alt='Loading...' title='Loading...' >"+options.loading_txt+"</div>";if(options.loading_target){jQuery.ajaxifyManip(options.loading_target,html)}else{jQuery.ajaxifyManip(options,html)}};jQuery.ajaxifyHash=function(current){var ob=new Object();jQuery.each(current,function(key,value){ob[key]=value});jQuery.AjaxifyhistorySet[ob.hash]=ob;location.hash=ob.hash;jQuery.historyInit(jQuery.ajaxifyHistory);jQuery.AjaxifyFirstLoad.history=false};jQuery.ajaxifyLoad=function(current){jQuery.ajaxSetup({global:false});jQuery.ajax({type:current.method,url:current.link,dataType:current.dataType,data:current.paramres,contentType:current.contentType,processData:true,timeout:current.timeout,cache:current.cache,username:current.username,password:current.password,complete:function(){current.onComplete(current)},beforeSend:function(){current.onStart(current);if(current.animateOut){if(current.loading_target!=current.target){}current.loading_fn(current);jQuery(current.target).animate(current.animateOut,current.animateOutSpeed,function(){if(!current.loading_target){current.loading_fn(current)}})}else{current.loading_fn(current)}},success:function(data){jQuery(current.target).stop();jQuery("#AjaxifyLoading").remove();if(current.title){document.title=current.title}else{if(document.title!=jQuery.AjaxifyPageTitle){document.title=jQuery.AjaxifyPageTitle}}if(current.tagToload){data="<div>"+data+"</div>";if(typeof current.tagToload=="string"){jQuery.ajaxifyManip(current,jQuery(data).find(current.tagToload))}else{if(typeof current.tagToload=="object"){jQuery.each(current.tagToload,function(tag,target){if(jQuery(data).find(tag).size()){jQuery.ajaxifyManip(target,jQuery(data).find(tag))}else{jQuery.ajaxifylog('Warning: Tag "'+tag+"\" couldn't be found.")}})}}}else{jQuery.ajaxifyManip(current,data)}current.onSuccess(current,data);if(current.animateIn){jQuery(current.target).animate(current.animateIn,current.animateInSpeed)}},error:function(msg){jQuery(current.target).stop();current.onError(current,msg);if(current.animateIn){jQuery(current.target).animate(current.animateIn,current.animateInSpeed)}}})};jQuery.ajaxifylog=function(message){if(jQuery.AjaxifyDebug){if(window.console){console.debug(message)}else{alert(message)}}};jQuery.ajaxifyHistory=function(hash){if(hash){if(jQuery.browser.safari){var options=jQuery.AjaxifyhistorySet[location.hash.replace(/^#/,"")]}else{var options=jQuery.AjaxifyhistorySet[hash]}if(options){jQuery.ajaxifyLoad(options)}else{jQuery.ajaxifylog("History Fired. But I couldn't find hash. Most propabley, the hash is empty. If so, its normal.")}}};jQuery.ajaxifyManip=function(current,data){if(typeof current!="object"){var target=current;var current=new Object;var len=target.length-1;if(target.charAt(len)=="+"||target.charAt(len)=="-"){current.manip=target.charAt(len);current.target=target.substr(0,len)}else{current.manip="";current.target=target}if(!jQuery(current.target).size()){jQuery.ajaxifylog('Warning: Target "'+current.target+"\" couldn't be found.")}}if(current.manip=="+"){jQuery(current.target).append(data)}else{if(current.manip=="-"){jQuery(current.target).prepend(data)}else{jQuery(current.target).html(data)}}}})(jQuery);
