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;
