if(!window.AJS){
    var AJS={
        BASE_URL:"",
        ajaxErrorHandler:null,
        getQueryArgument:function(f){
            var b=window.location.search.substring(1);
            var c=b.split("&");
            for(var a=0;
                a<c.length;
                a++){
                var d=c[a].split("=");
                if(d[0]==f){
                    return d[1]
                }
            }
            return null
        },
        _agent:navigator.userAgent.toLowerCase(),
        _agent_version:navigator.productSub,
        isIe:function(){
            return(AJS._agent.indexOf("msie")!=-1&&AJS._agent.indexOf("opera")==-1)
        },
        isIe8:function(){
            return AJS._agent.indexOf("msie 8")!=-1
        },
        isSafari:function(a){
            if(a){
                return AJS._agent.indexOf("khtml")
            }
            return(AJS._agent.indexOf("khtml")!=-1&&AJS._agent.match(/3\.\d\.\d safari/)==null)
        },
        isOpera:function(){
            return AJS._agent.indexOf("opera")!=-1
        },
        isMozilla:function(){
            return(AJS._agent.indexOf("gecko")!=-1&&AJS._agent_version>=20030210)
        },
        isMac:function(){
            return(AJS._agent.indexOf("macintosh")!=-1)
        },
        isCamino:function(){
            return(AJS._agent.indexOf("camino")!=-1)
        },
        createArray:function(a){
            if(AJS.isArray(a)&&!AJS.isString(a)){
                return a
            }else{
                if(!a){
                    return[]
                }else{
                    return[a]
                }
            }
        },
        forceArray:function(a){
            var c=[];
            for(var b=0;
                b<a.length;
                b++){
                c.push(a[b])
            }
            return c
        },
        join:function(d,b){
            try{
                return b.join(d)
            }catch(c){
                var a=b[0]||"";
                AJS.map(b,function(f){
                    a+=d+f
                },1);
                return a+""
            }
        },
        isIn:function(c,b){
            var a=AJS.getIndex(c,b);
            if(a!=-1){
                return true
            }else{
                return false
            }
        },
        getIndex:function(d,b,c){
            for(var a=0;
                a<b.length;
                a++){
                if(c&&c(b[a])||d==b[a]){
                    return a
                }
            }
            return -1
        },
        getFirst:function(a){
            if(a.length>0){
                return a[0]
            }else{
                return null
            }
        },
        getLast:function(a){
            if(a.length>0){
                return a[a.length-1]
            }else{
                return null
            }
        },
        getRandom:function(a){
            return a[Math.floor(Math.random()*a.length)]
        },
        update:function(b,a){
            for(var c in a){
                b[c]=a[c]
            }
            return b
        },
        flattenList:function(g){
            var f=false;
            var a=[];
            for(var b=0;
                b<g.length;
                b++){
                var h=g[b];
                if(AJS.isArray(h)){
                    f=true;
                    break
                }
                if(h!=null){
                    a.push(h)
                }
            }
            if(!f){
                return a
            }
            var c=[];
            var d=function(j,i){
                AJS.map(i,function(l){
                    if(l==null){}else{
                        if(AJS.isArray(l)){
                            d(j,l)
                        }else{
                            j.push(l)
                        }
                    }
                })
            };

            d(c,g);
            return c
        },
        flattenElmArguments:function(a){
            return AJS.flattenList(AJS.forceArray(a))
        },
        map:function(g,f,b,d){
            var c=0,a=g.length;
            if(b){
                c=b
            }
            if(d){
                a=d
            }
            for(c;
                c<a;
                c++){
                var h=f(g[c],c);
                if(h!=undefined){
                    return h
                }
            }
        },
        rmap:function(d,c){
            var b=d.length-1,a=0;
            for(b;
                b>=a;
                b--){
                var f=c.apply(null,[d[b],b]);
                if(f!=undefined){
                    return f
                }
            }
        },
        filter:function(f,c,a,b){
            var d=[];
            AJS.map(f,function(g){
                if(c(g)){
                    d.push(g)
                }
            },a,b);
            return d
        },
        partial:function(b){
            var a=AJS.$FA(arguments);
            a.shift();
            return function(){
                a=a.concat(AJS.$FA(arguments));
                return b.apply(window,a)
            }
        },
        getElement:function(a){
            if(AJS.isString(a)||AJS.isNumber(a)){
                return document.getElementById(a)
            }else{
                return a
            }
        },
        getElements:function(){
            var a=AJS.flattenElmArguments(arguments);
            var d=new Array();
            for(var c=0;
                c<a.length;
                c++){
                var b=AJS.getElement(a[c]);
                d.push(b)
            }
            return d
        },
        getElementsByTagAndClassName:function(a,b,n,h){
            var g=[];
            if(!AJS.isDefined(n)){
                n=document
            }
            if(!AJS.isDefined(a)){
                a="*"
            }
            var f,d;
            if(b&&document.getElementsByClassName){
                var c=n.getElementsByClassName(b);
                if(a=="*"){
                    g=AJS.forceArray(c)
                }else{
                    var m=c.length;
                    for(f=0;
                        f<m;
                        f++){
                        if(c[f].nodeName.toLowerCase()==a){
                            g.push(c[f])
                        }
                    }
                }
            }else{
                var c=n.getElementsByTagName(a);
                if(!b){
                    g=AJS.forceArray(c)
                }else{
                    var m=c.length;
                    var l=new RegExp("(^|\\s)"+b+"(\\s|$)");
                    for(f=0;
                        f<m;
                        f++){
                        if(l.test(c[f].className)||!b){
                            g.push(c[f])
                        }
                    }
                }
            }
            if(h){
                return g[0]
            }else{
                return g
            }
        },
        nodeName:function(a){
            return a.nodeName.toLowerCase()
        },
        _nodeWalk:function(g,d,b,f){
            var c=f(g);
            var a;
            if(d&&b){
                a=function(h){
                    return AJS.nodeName(h)==d&&AJS.hasClass(h,b)
                }
            }else{
                if(d){
                    a=function(h){
                        return AJS.nodeName(h)==d
                    }
                }else{
                    a=function(h){
                        return AJS.hasClass(h,b)
                    }
                }
            }
            if(a(g)){
                return g
            }
            while(c){
                if(a(c)){
                    return c
                }
                c=f(c)
            }
            return null
        },
        getParentBytc:function(c,b,a){
            return AJS._nodeWalk(c,b,a,function(d){
                if(d){
                    return d.parentNode
                }
            })
        },
        getChildBytc:function(d,c,b){
            var a=AJS.$bytc(c,b,d);
            if(a.length>0){
                return a[0]
            }else{
                return null
            }
        },
        hasParent:function(c,b,a){
            if(c==b){
                return true
            }
            if(a==0){
                return false
            }
            return AJS.hasParent(c.parentNode,b,a-1)
        },
        getPreviousSiblingBytc:function(c,b,a){
            return AJS._nodeWalk(c,b,a,function(d){
                return d.previousSibling
            })
        },
        getNextSiblingBytc:function(c,b,a){
            return AJS._nodeWalk(c,b,a,function(d){
                return d.nextSibling
            })
        },
        getBody:function(){
            return AJS.$bytc("body")[0]
        },
        getFormElement:function(c,a){
            c=AJS.$(c);
            var b=null;
            AJS.map(c.elements,function(d){
                if(d.name&&d.name==a){
                    b=d
                }
            });
            if(b){
                return b
            }
            AJS.map(AJS.$bytc("select",null,c),function(d){
                if(d.name&&d.name==a){
                    b=d
                }
            });
            return b
        },
        getSelectValue:function(a){
            var a=AJS.$(a);
            return a.options[a.selectedIndex].value
        },
        documentInsert:function(a){
            if(typeof(a)=="string"){
                a=AJS.HTML2DOM(a)
            }
            document.write('<span id="dummy_holder"></span>');
            AJS.swapDOM(AJS.$("dummy_holder"),a)
        },
        appendChildNodes:function(a){
            if(arguments.length>=2){
                AJS.map(arguments,function(b){
                    if(AJS.isString(b)){
                        b=AJS.TN(b)
                    }
                    if(AJS.isDefined(b)){
                        a.appendChild(b)
                    }
                },1)
            }
            return a
        },
        appendToTop:function(d){
            var b=AJS.flattenElmArguments(arguments).slice(1);
            if(b.length>=1){
                var c=d.firstChild;
                if(c){
                    while(true){
                        var a=b.shift();
                        if(a){
                            AJS.insertBefore(a,c)
                        }else{
                            break
                        }
                    }
                }else{
                    AJS.ACN.apply(null,arguments)
                }
            }
            return d
        },
        replaceChildNodes:function(b){
            var a;
            while((a=b.firstChild)){
                AJS.swapDOM(a,null)
            }
            if(arguments.length<2){
                return b
            }else{
                return AJS.appendChildNodes.apply(null,arguments)
            }
            return b
        },
        insertAfter:function(b,a){
            a.parentNode.insertBefore(b,a.nextSibling);
            return b
        },
        insertBefore:function(b,a){
            a.parentNode.insertBefore(b,a);
            return b
        },
        swapDOM:function(a,c){
            a=AJS.getElement(a);
            var b=a.parentNode;
            if(c){
                c=AJS.getElement(c);
                b.replaceChild(c,a)
            }else{
                b.removeChild(a)
            }
            return c
        },
        removeElement:function(){
            var a=AJS.flattenElmArguments(arguments);
            try{
                AJS.map(a,function(c){
                    if($(c)){
                        AJS.swapDOM(c,null)
                    }
                })
            }catch(b){}
        },
        createDOM:function(f,d){
            var g=0,a;
            var l=document.createElement(f);
            var b=d[0];
            if(AJS.isDict(d[g])){
                for(k in b){
                    a=b[k];
                    if(k=="style"||k=="s"){
                        l.style.cssText=a
                    }else{
                        if(k=="c"||k=="class"||k=="className"){
                            l.className=a
                        }else{
                            l.setAttribute(k,a)
                        }
                    }
                }
                g++
            }
            if(b==null){
                g=1
            }
            for(var c=g;
                c<d.length;
                c++){
                var a=d[c];
                if(a){
                    var h=typeof(a);
                    if(h=="string"||h=="number"){
                        a=AJS.TN(a)
                    }
                    l.appendChild(a)
                }
            }
            return l
        },
        _createDomShortcuts:function(){
            var b=["ul","li","td","tr","th","tbody","table","input","span","b","a","div","img","button","h1","h2","h3","h4","h5","h6","br","textarea","form","p","select","option","optgroup","iframe","script","center","dl","dt","dd","small","pre","i","label","thead"];
            var a=function(c){
                AJS[c.toUpperCase()]=function(){
                    return AJS.createDOM.apply(null,[c,arguments])
                }
            };

            AJS.map(b,a);
            AJS.TN=function(c){
                return document.createTextNode(c)
            }
        },
        setHTML:function(){
            var a=AJS.flattenElmArguments(arguments);
            var b=a.pop();
            AJS.map(a,function(c){
                if(c){
                    c.innerHTML=b
                }
            });
            return a[0]
        },
        setVisibility:function(){
            var a=AJS.flattenElmArguments(arguments);
            var b=a.pop()&&"visible"||"hidden";
            AJS.setStyle(a,"visibility",b)
        },
        showElement:function(){
            AJS.setStyle(AJS.flattenElmArguments(arguments),"display","")
        },
        hideElement:function(a){
            AJS.setStyle(AJS.flattenElmArguments(arguments),"display","none")
        },
        isElementHidden:function(a){
            return((a.style.display=="none")||(a.style.visibility=="hidden"))
        },
        isElementShown:function(a){
            return !AJS.isElementHidden(a)
        },
        setStyle:function(){
            var b=AJS.flattenElmArguments(arguments);
            var d=b.pop();
            var a=["top","left","right","width","height"];
            if(AJS.isObject(d)){
                AJS.map(b,function(f){
                    AJS.map(AJS.keys(d),function(h){
                        var g=d[h];
                        if(AJS.isIn(h,a)){
                            g=AJS.isString(g)&&g||g+"px"
                        }
                        f.style[h]=g
                    })
                })
            }else{
                var c=b.pop();
                AJS.map(b,function(f){
                    if(AJS.isIn(c,a)){
                        d=AJS.isString(d)&&d||d+"px"
                    }
                    f.style[c]=d
                })
            }
        },
        __cssDim:function(a,b){
            var a=AJS.$FA(a);
            a.splice(a.length-1,0,b);
            AJS.setStyle.apply(null,a)
        },
        setWidth:function(){
            return AJS.__cssDim(arguments,"width")
        },
        setHeight:function(){
            return AJS.__cssDim(arguments,"height")
        },
        setLeft:function(){
            return AJS.__cssDim(arguments,"left")
        },
        setRight:function(){
            return AJS.__cssDim(arguments,"right")
        },
        setTop:function(){
            return AJS.__cssDim(arguments,"top")
        },
        setClass:function(){
            var a=AJS.flattenElmArguments(arguments);
            var b=a.pop();
            AJS.map(a,function(c){
                c.className=b
            })
        },
        addClass:function(){
            var b=AJS.flattenElmArguments(arguments);
            var a=b.pop();
            var c=function(d){
                if(!new RegExp("(^|\\s)"+a+"(\\s|$)").test(d.className)){
                    d.className+=(d.className?" ":"")+a
                }
            };

            AJS.map(b,function(d){
                c(d)
            })
        },
        hasClass:function(c,a){
            if(!c||!c.className){
                return false
            }
            var b=c.className;
            return(b.length>0&&(b==a||new RegExp("(^|\\s)"+a+"(\\s|$)").test(b)))
        },
        removeClass:function(){
            var c=AJS.flattenElmArguments(arguments);
            var a=c.pop();
            var b=function(d){
                d.className=d.className.replace(new RegExp("(^|\\s)"+a,"g"),"")
            };

            AJS.map(c,function(d){
                b(d)
            })
        },
        setOpacity:function(b,a){
            if(a==1){
                b.style.opacity=1;
                b.style.filter=""
            }else{
                b.style.opacity=a;
                b.style.filter="alpha(opacity="+a*100+")"
            }
        },
        HTML2DOM:function(a,c){
            var b=AJS.DIV();
            b.innerHTML=a;
            if(c){
                return b.childNodes[0]
            }else{
                return b
            }
        },
        preloadImages:function(){
            AJS.AEV(window,"load",AJS.$p(function(a){
                AJS.map(a,function(c){
                    var b=new Image();
                    b.src=c
                })
            },arguments))
        },
        RND:function(a,d,c){
            c=c||window;
            var b=function(f,l){
                l=l.split("|");
                var j=d[l[0]];
                for(var h=1;
                    h<l.length;
                    h++){
                    j=c[l[h]](j)
                }
                if(j==""){
                    return""
                }
                if(j==0||j==-1){
                    j+=""
                }
                return j||f
            };

            return a.replace(/%\(([A-Za-z0-9_|.]*)\)/g,b)
        },
        getXMLHttpRequest:function(){
            var b=[function(){
                return new XMLHttpRequest()
            },function(){
                return new ActiveXObject("Msxml2.XMLHTTP")
            },function(){
                return new ActiveXObject("Microsoft.XMLHTTP")
            },function(){
                return new ActiveXObject("Msxml2.XMLHTTP.4.0")
            },function(){
                throw"Browser does not support XMLHttpRequest"
            }];
            for(var a=0;
                a<b.length;
                a++){
                var c=b[a];
                try{
                    return c()
                }catch(d){}
            }
        },
        getRequest:function(a,c){
            var b=AJS.getXMLHttpRequest();
            if(a.match(/^https?:\/\//)==null){
                if(AJS.BASE_URL!=""){
                    if(AJS.BASE_URL.lastIndexOf("/")!=AJS.BASE_URL.length-1){
                        AJS.BASE_URL+="/"
                    }
                    a=AJS.BASE_URL+a
                }
            }
            if(!c){
                c="POST"
            }
            return new AJSDeferred(b,c,a)
        },
        serializeJSON:function(j){
            var a=typeof(j);
            if(a=="undefined"){
                return"null"
            }else{
                if(a=="number"||a=="boolean"){
                    return j+""
                }
                else{
                    if(j===null){
                        return"null"
                    }
                }
            }
            if(a=="string"){
                return AJS._reprString(j)
            }
            if(a=="object"&&j.getFullYear){
                return AJS._reprDate(j)
            }
            var f=arguments.callee;
            if(a!="function"&&typeof(j.length)=="number"){
                var d=[];
                for(var c=0;
                    c<j.length;
                    c++){
                    var h=f(j[c]);
                    if(typeof(h)!="string"){
                        h="undefined"
                    }
                    d.push(h)
                }
                return"["+d.join(",")+"]"
            }
            if(a=="function"){
                return null
            }
            d=[];
            for(var b in j){
                var g;
                if(typeof(b)=="number"){
                    g='"'+b+'"'
                }else{
                    if(typeof(b)=="string"){
                        g=AJS._reprString(b)
                    }else{
                        continue
                    }
                }
                h=f(j[b]);
                if(typeof(h)!="string"){
                    continue
                }
                d.push(g+":"+h)
            }
            return"{"+d.join(",")+"}"
        },
        loadJSON:function(b,c,a){
            var g=AJS.getRequest(b,c);
            var f=function(h,d){
                var i=d.responseText;
                if(i=="Error"){
                    g.errback(d)
                }else{
                    return AJS.evalTxt(i)
                }
            };

            g.addCallback(f);
            return g
        },
        evalTxt:function(txt){
            try{
                return eval("("+txt+")")
            }catch(e){
                return eval(txt)
            }
        },
        evalScriptTags:function(html){
            var script_data=html.match(/<script.*?>((\n|\r|.)*?)<\/script>/g);
            if(script_data!=null){
                for(var i=0;
                    i<script_data.length;
                    i++){
                    var script_only=script_data[i].replace(/<script.*?>/g,"");
                    script_only=script_only.replace(/<\/script>/g,"");
                    eval(script_only)
                }
            }
        },
        encodeArguments:function(a){
            var b=[];
            for(k in a){
                b.push(k+"="+AJS.urlencode(a[k]))
            }
            return b.join("&")
        },
        _reprString:function(a){
            return('"'+a.replace(/(["\\])/g,"\\$1")+'"').replace(/[\f]/g,"\\f").replace(/[\b]/g,"\\b").replace(/[\n]/g,"\\n").replace(/[\t]/g,"\\t").replace(/[\r]/g,"\\r")
        },
        _reprDate:function(c){
            var d=c.getUTCFullYear();
            var a=c.getUTCDate();
            var f=c.getUTCMonth()+1;
            var b=function(g){
                if(g<10){
                    g="0"+g
                }
                return g
            };

            return'"'+d+"-"+f+"-"+a+"T"+b(c.getUTCHours())+":"+b(c.getUTCMinutes())+":"+b(c.getUTCSeconds())+'"'
        },
        getMousePos:function(b){
            var a=0;
            var c=0;
            if(!b){
                var b=window.event
            }
            if(b.pageX||b.pageY){
                a=b.pageX;
                c=b.pageY
            }else{
                if(b.clientX||b.clientY){
                    a=b.clientX+document.body.scrollLeft+document.documentElement.scrollLeft;
                    c=b.clientY+document.body.scrollTop+document.documentElement.scrollTop
                }
            }
            return{
                x:a,
                y:c
            }
        },
        getScrollTop:function(){
            var a;
            if(document.documentElement&&document.documentElement.scrollTop){
                a=document.documentElement.scrollTop
            }else{
                if(document.body){
                    a=document.body.scrollTop
                }
            }
            return a
        },
        absolutePosition:function(c){
            if(!c){
                return{
                    x:0,
                    y:0
                }
            }
            if(c.scrollLeft){
                return{
                    x:c.scrollLeft,
                    y:c.scrollTop
                }
            }else{
                if(c.clientX){
                    return{
                        x:c.clientX,
                        y:c.clientY
                    }
                }
            }
            var b={
                x:c.offsetLeft,
                y:c.offsetTop
            };

            if(c.offsetParent){
                var a=c.offsetParent;
                while(a){
                    b.x+=a.offsetLeft;
                    b.y+=a.offsetTop;
                    a=a.offsetParent
                }
            }
            if(AJS.isSafari()&&c.style.position=="absolute"){
                b.x-=document.body.offsetLeft;
                b.y-=document.body.offsetTop
            }
            return b
        },
        getWindowSize:function(c){
            c=c||document;
            var b,a;
            if(self.innerHeight){
                b=self.innerWidth;
                a=self.innerHeight
            }else{
                if(c.documentElement&&c.documentElement.clientHeight){
                    b=c.documentElement.clientWidth;
                    a=c.documentElement.clientHeight
                }else{
                    if(c.body){
                        b=c.body.clientWidth;
                        a=c.body.clientHeight
                    }
                }
            }
            return{
                w:b,
                h:a
            }
        },
        isOverlapping:function(g,c){
            var j=AJS.absolutePosition(g);
            var i=AJS.absolutePosition(c);
            var m=j.y;
            var o=j.x;
            var f=o+g.offsetWidth;
            var d=m+g.offsetHeight;
            var l=i.y;
            var n=i.x;
            var b=n+c.offsetWidth;
            var a=l+c.offsetHeight;
            var h=function(p){
                if(p>0){
                    return"+"
                }else{
                    if(p<0){
                        return"-"
                    }else{
                        return 0
                    }
                }
            };

            if((h(m-a)!=h(d-l))&&(h(o-b)!=h(f-n))){
                return true
            }
            return false
        },
        getEventElm:function(b){
            if(b&&!b.type&&!b.keyCode){
                return b
            }
            var a;
            if(!b){
                var b=window.event
            }
            if(b.target){
                a=b.target
            }else{
                if(b.srcElement){
                    a=b.srcElement
                }
            }
            if(a&&a.nodeType==3){
                a=a.parentNode
            }
            return a
        },
        setEventKey:function(a){
            if(!a){
                a=window.event
            }
            a.key=a.keyCode?a.keyCode:a.charCode;
            a.ctrl=a.ctrlKey;
            a.alt=a.altKey;
            a.meta=a.metaKey;
            a.shift=a.shiftKey
        },
        onEvent:function(c,b,a,d){
            c=AJS.$A(c);
            AJS.map(c,function(f){
                if(f.events){
                    f.events[b]={}
                }
            });
            return AJS.AEV(c,b,a,d)
        },
        ready_bound:false,
        is_ready:false,
        bindReady:function(){
            if(AJS.ready_bound){
                return
            }
            AJS.ready_bound=true;
            if(document.addEventListener){
                document.addEventListener("DOMContentLoaded",function(){
                    document.removeEventListener("DOMContentLoaded",arguments.callee,false);
                    AJS.ready()
                },false)
            }else{
                if(document.attachEvent){
                    document.attachEvent("onreadystatechange",function(){
                        if(document.readyState==="complete"){
                            document.detachEvent("onreadystatechange",arguments.callee);
                            AJS.ready()
                        }
                    });
                    if(document.documentElement.doScroll&&window==window.top){
                        (function(){
                            if(AJS.is_ready){
                                return
                            }
                            try{
                                document.documentElement.doScroll("left")
                            }catch(a){
                                setTimeout(arguments.callee,0);
                                return
                            }
                            AJS.ready()
                        })()
                    }
                }
            }
            AJS.AEV(window,"load",AJS.ready)
        },
        ready_list:[],
        ready:function(a){
            if(AJS.is_ready){
                return
            }
            AJS.is_ready=true;
            AJS.map(AJS.ready_list,function(b){
                b.call(window)
            });
            AJS.ready_list=[]
        },
        _f_guid:0,
        _wipe_guid:0,
        addEventListener:function(c,a,b,d){
            c=AJS.$A(c);
            a=AJS.$A(a);
            AJS.map(c,function(f){
                if(d){
                    b.listen_once=true
                }
                if(!b.$f_guid){
                    b.$f_guid=AJS._f_guid++
                }
                if(!f.events){
                    f.events={}
                }
                AJS.map(a,function(h){
                    var g=f.events[h];
                    if(f==window&&h=="load"){
                        AJS.ready_list.push(b)
                    }else{
                        if(h=="lazy_load"){
                            h="load"
                        }
                        if(!g){
                            g=f.events[h]={};

                            if(f["on"+h]){
                                g[0]=f["on"+h]
                            }
                        }
                        if(!f._wipe_guid){
                            f._wipe_guid=AJS._wipe_guid++
                        }
                        g[b.$f_guid]=b;
                        f["on"+h]=AJS.handleEvent
                    }
                });
                f=null
            })
        },
        handleEvent:function(h){
            var g=this;
            h=h||window.event;
            if(!h){
                return
            }
            if(!h.ctrl&&h.type.indexOf("key")!=-1){
                AJS.setEventKey(h)
            }
            var b=this.events[h.type];
            var a=[];
            var d=true;
            for(var c in b){
                var f=this.$$handleEvent=b[c];
                if(f==AJS.handleEvent){
                    continue
                }
                d=f(h);
                if(f.listen_once){
                    a.push(f)
                }
            }
            if(a.length>0){
                AJS.map(a,function(i){
                    delete g.events[h.type][i.$f_guid]
                })
            }
            return d
        },
        removeEventListener:function(c,b,a){
            c=AJS.$A(c);
            map(c,function(d){
                if(d.events&&d.events[b]){
                    delete d.events[b][a.$f_guid]
                }
            })
        },
        bind:function(b,a,c){
            b._cscope=a;
            return AJS._getRealScope(b,c)
        },
        bindMethods:function(b){
            for(var a in b){
                var c=b[a];
                if(typeof(c)=="function"){
                    b[a]=AJS.$b(c,b)
                }
            }
        },
        preventDefault:function(a){
            if(AJS.isIe()){
                window.event.returnValue=false
            }else{
                a.preventDefault()
            }
        },
        _listenOnce:function(d,b,a){
            var c=function(){
                AJS.removeEventListener(d,b,c);
                a(arguments)
            };

            return c
        },
        _getRealScope:function(b,c){
            c=AJS.$A(c);
            var a=b._cscope||window;
            return function(){
                try{
                    var d=AJS.$FA(arguments).concat(c);
                    return b.apply(a,d)
                }catch(f){}
            }
        },
        _reccruing_tos:{},
        setSingleTimeout:function(b,c,a){
            var d=AJS._reccruing_tos[b];
            if(d){
                clearTimeout(d)
            }
            AJS._reccruing_tos[b]=setTimeout(c,a)
        },
        keys:function(b){
            var a=[];
            for(var c in b){
                a.push(c)
            }
            return a
        },
        values:function(b){
            var a=[];
            for(var c in b){
                a.push(b[c])
            }
            return a
        },
        urlencode:function(a){
            return encodeURIComponent(AJS.isDefined(a)&&a.toString()||"")
        },
        urldecode:function(b){
            var a=decodeURIComponent(AJS.isDefined(b)&&b.toString()||"");
            return a.replace(/\+/g," ")
        },
        isDefined:function(a){
            return(a!="undefined"&&a!=null)
        },
        isArray:function(b){
            try{
                return b instanceof Array
            }catch(a){
                return false
            }
        },
        isString:function(a){
            return(typeof a=="string")
        },
        isNumber:function(a){
            return(typeof a=="number")
        },
        isObject:function(a){
            return(typeof a=="object")
        },
        isFunction:function(a){
            return(typeof a=="function")
        },
        isDict:function(b){
            var a=String(b);
            return a.indexOf(" Object")!=-1
        },
        exportToGlobalScope:function(a){
            a=a||window;
            for(e in AJS){
                if(e!="addEventListener"){
                    a[e]=AJS[e]
                }
            }
        },
        log:function(b){
            try{
                if(window._firebug){
                    window._firebug.log(b)
                }else{
                    if(window.console){
                        console.log(b)
                    }
                }
            }catch(a){}
        },
        strip:function(a){
            return a.replace(/^\s+/,"").replace(/\s+$/g,"")
        },
        trim_if_needed:function(c,a,b){
            if(c.length>a){
                return c.substring(0,a)+(b||"...")
            }
            return c
        }
    };

    AJS.Class=function(a){
        var b=function(){
            if(arguments[0]!="no_init"){
                return this.init.apply(this,arguments)
            }
        };

        b.prototype=a;
        AJS.update(b,AJS.Class.prototype);
        return b
    };

    AJS.Class.prototype={
        extend:function(a){
            var b=new this("no_init");
            for(k in a){
                var c=b[k];
                var d=a[k];
                if(c&&c!=d&&typeof d=="function"){
                    d=this._parentize(d,c)
                }
                b[k]=d
            }
            return new AJS.Class(b)
        },
        implement:function(a){
            AJS.update(this.prototype,a)
        },
        _parentize:function(b,a){
            return function(){
                this.parent=a;
                return b.apply(this,arguments)
            }
        }
    };

    AJS.$=AJS.getElement;
    AJS.$$=AJS.getElements;
    AJS.$f=AJS.getFormElement;
    AJS.$b=AJS.bind;
    AJS.$p=AJS.partial;
    AJS.$FA=AJS.forceArray;
    AJS.$A=AJS.createArray;
    AJS.DI=AJS.documentInsert;
    AJS.ACN=AJS.appendChildNodes;
    AJS.RCN=AJS.replaceChildNodes;
    AJS.AEV=AJS.addEventListener;
    AJS.REV=AJS.removeEventListener;
    AJS.$bytc=AJS.getElementsByTagAndClassName;
    AJS.$AP=AJS.absolutePosition;
    AJS.loadJSONDoc=AJS.loadJSON;
    AJS.queryArguments=AJS.encodeArguments;
    AJS.$gp=AJS.getParentBytc;
    AJS.$gc=AJS.getChildBytc;
    AJS.$sv=AJS.setVisibility;
    AJS.generalErrorback=null;
    AJS.generalCallback=null;
    AJSDeferred=function(b,c,a){
        this.callbacks=[];
        this.errbacks=[];
        this.req=b;
        this.http_method=c;
        this.http_url=a
    };

    AJSDeferred.prototype={
        excCallbackSeq:function(c,f){
            var d=c.responseText;
            if(AJS.generalCallback){
                d=AJS.generalCallback(c,f);
                if(!d){
                    return
                }
            }while(f.length>0){
                var b=f.pop();
                var a=b(d,c);
                if(a){
                    d=a
                }else{
                    if(a==false){
                        break
                    }
                }
            }
        },
        callback:function(){
            this.excCallbackSeq(this.req,this.callbacks)
        },
        errback:function(){
            if(this.errbacks.length==0){
                if(AJS.ajaxErrorHandler){
                    AJS.ajaxErrorHandler(req.responseText,req)
                }else{
                    var b=this.req.responseText.substring(0,200);
                    if(AJS.strip(b)&&b.indexOf("<html")==-1){
                        alert("Error encountered:\n"+b)
                    }
                }
            }
            if(AJS.generalErrorback){
                var a=AJS.generalErrorback(this.req);
                if(!a){
                    return
                }
            }
            this.excCallbackSeq(this.req,this.errbacks)
        },
        addErrback:function(a){
            this.errbacks.unshift(a)
        },
        addCallback:function(a){
            this.callbacks.unshift(a)
        },
        abort:function(){
            this.req.abort()
        },
        addCallbacks:function(b,a){
            this.addCallback(b);
            this.addErrback(a)
        },
        _onreadystatechange:function(){
            var b=this.req;
            var f=this;
            if(b.readyState==4){
                var a="";
                try{
                    a=b.status
                }catch(c){}
                if(a==200||a==304||b.responseText==null){
                    this.callback()
                }else{
                    this.errback()
                }
            }
        },
        sendReq:function(d){
            var c=this.req;
            var b=this.http_method;
            var a=this.http_url;
            if(b=="POST"){
                c.open(b,a,true);
                c.onreadystatechange=AJS.$b(this._onreadystatechange,this);
                c.setRequestHeader("Content-type","application/x-www-form-urlencoded");
                if(AJS.isObject(d)){
                    c.send(AJS.encodeArguments(d))
                }else{
                    if(AJS.isDefined(d)){
                        c.send(d)
                    }else{
                        c.send("")
                    }
                }
            }else{
                c.open("GET",a,true);
                c.onreadystatechange=AJS.$b(this._onreadystatechange,this);
                c.send(null)
            }
        }
    };

    AJS._createDomShortcuts()
}
script_loaded=true;
AJS.exportToGlobalScope();
AJS.bindReady();
script_loaded=true;