var Giga_Ajax=new Class({initialize:function(A){if(!A){var A=$$("form","div")}else{A=[A]}A.each(function(B){if(B.getProperty("gigajax:updatable")){if(B.getProperty("gigajax:time")&&B.getProperty("gigajax:updateurl")){(function(C){new Ajax(C.getProperty("gigajax:updateurl"),{method:"get",data:"ajax=1",onComplete:function(D){this.ajaxCommon(D,C)}.bind(this)}).request()}).periodical(parseInt(B.getProperty("gigajax:time"))*1000,this,B)}else{B.getElementsBySelector("input[type=submit],input[type=image],button[type=submit],a[href]").each(function(C){if(B.getProperty("gigajax:target")){this.ajaxify(C,B,$E(B.getProperty("gigajax:target")))}else{this.ajaxify(C,B)}}.bind(this))}}}.bind(this))},ajaxCommon:function(response,parent){var time=null;var updateurl=null;var json=null;var mode=null;var effect=null;var target=parent;if(parent.getProperty("gigajax:data")=="json"){json=eval("("+response+")")}if(parent.getProperty("gigajax:target")){target=$E(parent.getProperty("gigajax:target"))}if(parent.getProperty("gigajax:time")&&parent.getProperty("gigajax:updateurl")){time=parent.getProperty("gigajax:time");updateurl=parent.getProperty("gigajax:updateurl")}if(parent.getProperty("gigajax:effect")){effect=parent.getProperty("gigajax:effect")}if(parent.getProperty("gigajax:mode")){mode=parent.getProperty("gigajax:mode")}if(json){if(json.stat=="fail"){return}else{if(json.data){var response=json.data}if(json.options){if(json.options.target){target=$E(json.options.target)}if(json.options.time){time=json.options.time}if(json.options.updateurl){updateurl=json.options.updateurl}if(json.options.effect){effect=json.options.effect}if(json.options.mode){mode=json.options.mode}}}}if(effect=="fade"){this.fadeIn(target,response,parent)}else{if(mode=="append"){target.innerHTML+=(response)}else{target.innerHTML=response}}},ajaxify:function(C,A,B){if(B==null){var B=A}if(C.getProperty("gigajax:ignore")){return}C.addEvent("click",function(D){D.stop();new Ajax((A.getTag()=="form")?A.getProperty("action"):C.getProperty("href"),{method:(A.getTag()=="form")?A.getProperty("method"):"get",data:"ajax=1"+((A.getTag()=="form")?"&"+A.toQueryString():""),onComplete:function(E){var F=null;if(C.getTag()=="input"||C.getTag()=="button"){F=C.getParent();while(F.getTag()!="form"&&F.getTag()!="body"){F=F.getParent()}if(F.getTag()!="form"){F=null}}else{F=C.getParent();while(F.getTag()!="body"){if(F.getTag()=="div"){if(F.getProperty("gigajax:updatable")){break}}F=F.getParent()}}if(F){this.ajaxCommon(E,F)}}.bind(this)}).request()}.bindWithEvent(this))},fadeIn:function(G,F,E){var B=new Element("div").setStyles({overflow:"hidden",height:0});G.adopt(B);var D=new Element("div").setHTML(F).injectInside(B);var A=D.getSize().size.y;D.remove();B.remove();delete D;delete B;var C=G.getStyles();G.setStyles({height:G.getSize().size.y,overflow:"none"});if(E.getProperty("gigajax:mode")=="append"){G.effects({duration:400}).start({height:[G.getSize().size.y,G.getSize().size.y+A]})}else{G.effects({duration:400}).start({opacity:[1,0],height:[G.getSize().size.y,A]})}(function(L,K,H,J,I){if(J.getProperty("gigajax:mode")=="append"){L.innerHTML+=(K)}else{L.innerHTML=K}L.setStyle("height",null);L.setStyles(I);if(J.getProperty("gigajax:mode")!="append"){L.effect("opacity",{duration:400}).start(0,1)}if(L.getProperty("gigajax:recursive")=="true"){L.getElementsBySelector("input[type=submit],button[type=submit],a[href]").each(function(M){this.ajaxify(M,L)}.bind(this))}}).delay(450,this,[G,F,A,E,C])}});window.addEvent("domready",function(){gigajax=new Giga_Ajax()});