Pastebin launched a little side project called VERYVIRAL.com, check it out ;-) Want more features on Pastebin? Sign Up, it's FREE!
Guest

Greybox.AJS.js

By: valter on Mar 5th, 2011  |  syntax: JavaScript  |  size: 39.94 KB  |  views: 128  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. if(!window.AJS){
  2.     var AJS={
  3.         BASE_URL:"",
  4.         ajaxErrorHandler:null,
  5.         getQueryArgument:function(f){
  6.             var b=window.location.search.substring(1);
  7.             var c=b.split("&");
  8.             for(var a=0;
  9.                 a<c.length;
  10.                 a++){
  11.                 var d=c[a].split("=");
  12.                 if(d[0]==f){
  13.                     return d[1]
  14.                 }
  15.             }
  16.             return null
  17.         },
  18.         _agent:navigator.userAgent.toLowerCase(),
  19.         _agent_version:navigator.productSub,
  20.         isIe:function(){
  21.             return(AJS._agent.indexOf("msie")!=-1&&AJS._agent.indexOf("opera")==-1)
  22.         },
  23.         isIe8:function(){
  24.             return AJS._agent.indexOf("msie 8")!=-1
  25.         },
  26.         isSafari:function(a){
  27.             if(a){
  28.                 return AJS._agent.indexOf("khtml")
  29.             }
  30.             return(AJS._agent.indexOf("khtml")!=-1&&AJS._agent.match(/3\.\d\.\d safari/)==null)
  31.         },
  32.         isOpera:function(){
  33.             return AJS._agent.indexOf("opera")!=-1
  34.         },
  35.         isMozilla:function(){
  36.             return(AJS._agent.indexOf("gecko")!=-1&&AJS._agent_version>=20030210)
  37.         },
  38.         isMac:function(){
  39.             return(AJS._agent.indexOf("macintosh")!=-1)
  40.         },
  41.         isCamino:function(){
  42.             return(AJS._agent.indexOf("camino")!=-1)
  43.         },
  44.         createArray:function(a){
  45.             if(AJS.isArray(a)&&!AJS.isString(a)){
  46.                 return a
  47.             }else{
  48.                 if(!a){
  49.                     return[]
  50.                 }else{
  51.                     return[a]
  52.                 }
  53.             }
  54.         },
  55.         forceArray:function(a){
  56.             var c=[];
  57.             for(var b=0;
  58.                 b<a.length;
  59.                 b++){
  60.                 c.push(a[b])
  61.             }
  62.             return c
  63.         },
  64.         join:function(d,b){
  65.             try{
  66.                 return b.join(d)
  67.             }catch(c){
  68.                 var a=b[0]||"";
  69.                 AJS.map(b,function(f){
  70.                     a+=d+f
  71.                 },1);
  72.                 return a+""
  73.             }
  74.         },
  75.         isIn:function(c,b){
  76.             var a=AJS.getIndex(c,b);
  77.             if(a!=-1){
  78.                 return true
  79.             }else{
  80.                 return false
  81.             }
  82.         },
  83.         getIndex:function(d,b,c){
  84.             for(var a=0;
  85.                 a<b.length;
  86.                 a++){
  87.                 if(c&&c(b[a])||d==b[a]){
  88.                     return a
  89.                 }
  90.             }
  91.             return -1
  92.         },
  93.         getFirst:function(a){
  94.             if(a.length>0){
  95.                 return a[0]
  96.             }else{
  97.                 return null
  98.             }
  99.         },
  100.         getLast:function(a){
  101.             if(a.length>0){
  102.                 return a[a.length-1]
  103.             }else{
  104.                 return null
  105.             }
  106.         },
  107.         getRandom:function(a){
  108.             return a[Math.floor(Math.random()*a.length)]
  109.         },
  110.         update:function(b,a){
  111.             for(var c in a){
  112.                 b[c]=a[c]
  113.             }
  114.             return b
  115.         },
  116.         flattenList:function(g){
  117.             var f=false;
  118.             var a=[];
  119.             for(var b=0;
  120.                 b<g.length;
  121.                 b++){
  122.                 var h=g[b];
  123.                 if(AJS.isArray(h)){
  124.                     f=true;
  125.                     break
  126.                 }
  127.                 if(h!=null){
  128.                     a.push(h)
  129.                 }
  130.             }
  131.             if(!f){
  132.                 return a
  133.             }
  134.             var c=[];
  135.             var d=function(j,i){
  136.                 AJS.map(i,function(l){
  137.                     if(l==null){}else{
  138.                         if(AJS.isArray(l)){
  139.                             d(j,l)
  140.                         }else{
  141.                             j.push(l)
  142.                         }
  143.                     }
  144.                 })
  145.             };
  146.  
  147.             d(c,g);
  148.             return c
  149.         },
  150.         flattenElmArguments:function(a){
  151.             return AJS.flattenList(AJS.forceArray(a))
  152.         },
  153.         map:function(g,f,b,d){
  154.             var c=0,a=g.length;
  155.             if(b){
  156.                 c=b
  157.             }
  158.             if(d){
  159.                 a=d
  160.             }
  161.             for(c;
  162.                 c<a;
  163.                 c++){
  164.                 var h=f(g[c],c);
  165.                 if(h!=undefined){
  166.                     return h
  167.                 }
  168.             }
  169.         },
  170.         rmap:function(d,c){
  171.             var b=d.length-1,a=0;
  172.             for(b;
  173.                 b>=a;
  174.                 b--){
  175.                 var f=c.apply(null,[d[b],b]);
  176.                 if(f!=undefined){
  177.                     return f
  178.                 }
  179.             }
  180.         },
  181.         filter:function(f,c,a,b){
  182.             var d=[];
  183.             AJS.map(f,function(g){
  184.                 if(c(g)){
  185.                     d.push(g)
  186.                 }
  187.             },a,b);
  188.             return d
  189.         },
  190.         partial:function(b){
  191.             var a=AJS.$FA(arguments);
  192.             a.shift();
  193.             return function(){
  194.                 a=a.concat(AJS.$FA(arguments));
  195.                 return b.apply(window,a)
  196.             }
  197.         },
  198.         getElement:function(a){
  199.             if(AJS.isString(a)||AJS.isNumber(a)){
  200.                 return document.getElementById(a)
  201.             }else{
  202.                 return a
  203.             }
  204.         },
  205.         getElements:function(){
  206.             var a=AJS.flattenElmArguments(arguments);
  207.             var d=new Array();
  208.             for(var c=0;
  209.                 c<a.length;
  210.                 c++){
  211.                 var b=AJS.getElement(a[c]);
  212.                 d.push(b)
  213.             }
  214.             return d
  215.         },
  216.         getElementsByTagAndClassName:function(a,b,n,h){
  217.             var g=[];
  218.             if(!AJS.isDefined(n)){
  219.                 n=document
  220.             }
  221.             if(!AJS.isDefined(a)){
  222.                 a="*"
  223.             }
  224.             var f,d;
  225.             if(b&&document.getElementsByClassName){
  226.                 var c=n.getElementsByClassName(b);
  227.                 if(a=="*"){
  228.                     g=AJS.forceArray(c)
  229.                 }else{
  230.                     var m=c.length;
  231.                     for(f=0;
  232.                         f<m;
  233.                         f++){
  234.                         if(c[f].nodeName.toLowerCase()==a){
  235.                             g.push(c[f])
  236.                         }
  237.                     }
  238.                 }
  239.             }else{
  240.                 var c=n.getElementsByTagName(a);
  241.                 if(!b){
  242.                     g=AJS.forceArray(c)
  243.                 }else{
  244.                     var m=c.length;
  245.                     var l=new RegExp("(^|\\s)"+b+"(\\s|$)");
  246.                     for(f=0;
  247.                         f<m;
  248.                         f++){
  249.                         if(l.test(c[f].className)||!b){
  250.                             g.push(c[f])
  251.                         }
  252.                     }
  253.                 }
  254.             }
  255.             if(h){
  256.                 return g[0]
  257.             }else{
  258.                 return g
  259.             }
  260.         },
  261.         nodeName:function(a){
  262.             return a.nodeName.toLowerCase()
  263.         },
  264.         _nodeWalk:function(g,d,b,f){
  265.             var c=f(g);
  266.             var a;
  267.             if(d&&b){
  268.                 a=function(h){
  269.                     return AJS.nodeName(h)==d&&AJS.hasClass(h,b)
  270.                 }
  271.             }else{
  272.                 if(d){
  273.                     a=function(h){
  274.                         return AJS.nodeName(h)==d
  275.                     }
  276.                 }else{
  277.                     a=function(h){
  278.                         return AJS.hasClass(h,b)
  279.                     }
  280.                 }
  281.             }
  282.             if(a(g)){
  283.                 return g
  284.             }while(c){
  285.                 if(a(c)){
  286.                     return c
  287.                 }
  288.                 c=f(c)
  289.             }
  290.             return null
  291.         },
  292.         getParentBytc:function(c,b,a){
  293.             return AJS._nodeWalk(c,b,a,function(d){
  294.                 if(d){
  295.                     return d.parentNode
  296.                 }
  297.             })
  298.         },
  299.         getChildBytc:function(d,c,b){
  300.             var a=AJS.$bytc(c,b,d);
  301.             if(a.length>0){
  302.                 return a[0]
  303.             }else{
  304.                 return null
  305.             }
  306.         },
  307.         hasParent:function(c,b,a){
  308.             if(c==b){
  309.                 return true
  310.             }
  311.             if(a==0){
  312.                 return false
  313.             }
  314.             return AJS.hasParent(c.parentNode,b,a-1)
  315.         },
  316.         getPreviousSiblingBytc:function(c,b,a){
  317.             return AJS._nodeWalk(c,b,a,function(d){
  318.                 return d.previousSibling
  319.             })
  320.         },
  321.         getNextSiblingBytc:function(c,b,a){
  322.             return AJS._nodeWalk(c,b,a,function(d){
  323.                 return d.nextSibling
  324.             })
  325.         },
  326.         getBody:function(){
  327.             return AJS.$bytc("body")[0]
  328.         },
  329.         getFormElement:function(c,a){
  330.             c=AJS.$(c);
  331.             var b=null;
  332.             AJS.map(c.elements,function(d){
  333.                 if(d.name&&d.name==a){
  334.                     b=d
  335.                 }
  336.             });
  337.             if(b){
  338.                 return b
  339.             }
  340.             AJS.map(AJS.$bytc("select",null,c),function(d){
  341.                 if(d.name&&d.name==a){
  342.                     b=d
  343.                 }
  344.             });
  345.             return b
  346.         },
  347.         getSelectValue:function(a){
  348.             var a=AJS.$(a);
  349.             return a.options[a.selectedIndex].value
  350.         },
  351.         documentInsert:function(a){
  352.             if(typeof(a)=="string"){
  353.                 a=AJS.HTML2DOM(a)
  354.             }
  355.             document.write('<span id="dummy_holder"></span>');
  356.             AJS.swapDOM(AJS.$("dummy_holder"),a)
  357.         },
  358.         appendChildNodes:function(a){
  359.             if(arguments.length>=2){
  360.                 AJS.map(arguments,function(b){
  361.                     if(AJS.isString(b)){
  362.                         b=AJS.TN(b)
  363.                     }
  364.                     if(AJS.isDefined(b)){
  365.                         a.appendChild(b)
  366.                     }
  367.                 },1)
  368.             }
  369.             return a
  370.         },
  371.         appendToTop:function(d){
  372.             var b=AJS.flattenElmArguments(arguments).slice(1);
  373.             if(b.length>=1){
  374.                 var c=d.firstChild;
  375.                 if(c){
  376.                     while(true){
  377.                         var a=b.shift();
  378.                         if(a){
  379.                             AJS.insertBefore(a,c)
  380.                         }else{
  381.                             break
  382.                         }
  383.                     }
  384.                 }else{
  385.                     AJS.ACN.apply(null,arguments)
  386.                 }
  387.             }
  388.             return d
  389.         },
  390.         replaceChildNodes:function(b){
  391.             var a;
  392.             while((a=b.firstChild)){
  393.                 AJS.swapDOM(a,null)
  394.             }
  395.             if(arguments.length<2){
  396.                 return b
  397.             }else{
  398.                 return AJS.appendChildNodes.apply(null,arguments)
  399.             }
  400.             return b
  401.         },
  402.         insertAfter:function(b,a){
  403.             a.parentNode.insertBefore(b,a.nextSibling);
  404.             return b
  405.         },
  406.         insertBefore:function(b,a){
  407.             a.parentNode.insertBefore(b,a);
  408.             return b
  409.         },
  410.         swapDOM:function(a,c){
  411.             a=AJS.getElement(a);
  412.             var b=a.parentNode;
  413.             if(c){
  414.                 c=AJS.getElement(c);
  415.                 b.replaceChild(c,a)
  416.             }else{
  417.                 b.removeChild(a)
  418.             }
  419.             return c
  420.         },
  421.         removeElement:function(){
  422.             var a=AJS.flattenElmArguments(arguments);
  423.             try{
  424.                 AJS.map(a,function(c){
  425.                     if($(c)){
  426.                         AJS.swapDOM(c,null)
  427.                     }
  428.                 })
  429.             }catch(b){}
  430.         },
  431.         createDOM:function(f,d){
  432.             var g=0,a;
  433.             var l=document.createElement(f);
  434.             var b=d[0];
  435.             if(AJS.isDict(d[g])){
  436.                 for(k in b){
  437.                     a=b[k];
  438.                     if(k=="style"||k=="s"){
  439.                         l.style.cssText=a
  440.                     }else{
  441.                         if(k=="c"||k=="class"||k=="className"){
  442.                             l.className=a
  443.                         }else{
  444.                             l.setAttribute(k,a)
  445.                         }
  446.                     }
  447.                 }
  448.                 g++
  449.             }
  450.             if(b==null){
  451.                 g=1
  452.             }
  453.             for(var c=g;
  454.                 c<d.length;
  455.                 c++){
  456.                 var a=d[c];
  457.                 if(a){
  458.                     var h=typeof(a);
  459.                     if(h=="string"||h=="number"){
  460.                         a=AJS.TN(a)
  461.                     }
  462.                     l.appendChild(a)
  463.                 }
  464.             }
  465.             return l
  466.         },
  467.         _createDomShortcuts:function(){
  468.             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"];
  469.             var a=function(c){
  470.                 AJS[c.toUpperCase()]=function(){
  471.                     return AJS.createDOM.apply(null,[c,arguments])
  472.                 }
  473.             };
  474.  
  475.             AJS.map(b,a);
  476.             AJS.TN=function(c){
  477.                 return document.createTextNode(c)
  478.             }
  479.         },
  480.         setHTML:function(){
  481.             var a=AJS.flattenElmArguments(arguments);
  482.             var b=a.pop();
  483.             AJS.map(a,function(c){
  484.                 if(c){
  485.                     c.innerHTML=b
  486.                 }
  487.             });
  488.             return a[0]
  489.         },
  490.         setVisibility:function(){
  491.             var a=AJS.flattenElmArguments(arguments);
  492.             var b=a.pop()&&"visible"||"hidden";
  493.             AJS.setStyle(a,"visibility",b)
  494.         },
  495.         showElement:function(){
  496.             AJS.setStyle(AJS.flattenElmArguments(arguments),"display","")
  497.         },
  498.         hideElement:function(a){
  499.             AJS.setStyle(AJS.flattenElmArguments(arguments),"display","none")
  500.         },
  501.         isElementHidden:function(a){
  502.             return((a.style.display=="none")||(a.style.visibility=="hidden"))
  503.         },
  504.         isElementShown:function(a){
  505.             return !AJS.isElementHidden(a)
  506.         },
  507.         setStyle:function(){
  508.             var b=AJS.flattenElmArguments(arguments);
  509.             var d=b.pop();
  510.             var a=["top","left","right","width","height"];
  511.             if(AJS.isObject(d)){
  512.                 AJS.map(b,function(f){
  513.                     AJS.map(AJS.keys(d),function(h){
  514.                         var g=d[h];
  515.                         if(AJS.isIn(h,a)){
  516.                             g=AJS.isString(g)&&g||g+"px"
  517.                         }
  518.                         f.style[h]=g
  519.                     })
  520.                 })
  521.             }else{
  522.                 var c=b.pop();
  523.                 AJS.map(b,function(f){
  524.                     if(AJS.isIn(c,a)){
  525.                         d=AJS.isString(d)&&d||d+"px"
  526.                     }
  527.                     f.style[c]=d
  528.                 })
  529.             }
  530.         },
  531.         __cssDim:function(a,b){
  532.             var a=AJS.$FA(a);
  533.             a.splice(a.length-1,0,b);
  534.             AJS.setStyle.apply(null,a)
  535.         },
  536.         setWidth:function(){
  537.             return AJS.__cssDim(arguments,"width")
  538.         },
  539.         setHeight:function(){
  540.             return AJS.__cssDim(arguments,"height")
  541.         },
  542.         setLeft:function(){
  543.             return AJS.__cssDim(arguments,"left")
  544.         },
  545.         setRight:function(){
  546.             return AJS.__cssDim(arguments,"right")
  547.         },
  548.         setTop:function(){
  549.             return AJS.__cssDim(arguments,"top")
  550.         },
  551.         setClass:function(){
  552.             var a=AJS.flattenElmArguments(arguments);
  553.             var b=a.pop();
  554.             AJS.map(a,function(c){
  555.                 c.className=b
  556.             })
  557.         },
  558.         addClass:function(){
  559.             var b=AJS.flattenElmArguments(arguments);
  560.             var a=b.pop();
  561.             var c=function(d){
  562.                 if(!new RegExp("(^|\\s)"+a+"(\\s|$)").test(d.className)){
  563.                     d.className+=(d.className?" ":"")+a
  564.                 }
  565.             };
  566.  
  567.             AJS.map(b,function(d){
  568.                 c(d)
  569.             })
  570.         },
  571.         hasClass:function(c,a){
  572.             if(!c||!c.className){
  573.                 return false
  574.             }
  575.             var b=c.className;
  576.             return(b.length>0&&(b==a||new RegExp("(^|\\s)"+a+"(\\s|$)").test(b)))
  577.         },
  578.         removeClass:function(){
  579.             var c=AJS.flattenElmArguments(arguments);
  580.             var a=c.pop();
  581.             var b=function(d){
  582.                 d.className=d.className.replace(new RegExp("(^|\\s)"+a,"g"),"")
  583.             };
  584.  
  585.             AJS.map(c,function(d){
  586.                 b(d)
  587.             })
  588.         },
  589.         setOpacity:function(b,a){
  590.             if(a==1){
  591.                 b.style.opacity=1;
  592.                 b.style.filter=""
  593.             }else{
  594.                 b.style.opacity=a;
  595.                 b.style.filter="alpha(opacity="+a*100+")"
  596.             }
  597.         },
  598.         HTML2DOM:function(a,c){
  599.             var b=AJS.DIV();
  600.             b.innerHTML=a;
  601.             if(c){
  602.                 return b.childNodes[0]
  603.             }else{
  604.                 return b
  605.             }
  606.         },
  607.         preloadImages:function(){
  608.             AJS.AEV(window,"load",AJS.$p(function(a){
  609.                 AJS.map(a,function(c){
  610.                     var b=new Image();
  611.                     b.src=c
  612.                 })
  613.             },arguments))
  614.         },
  615.         RND:function(a,d,c){
  616.             c=c||window;
  617.             var b=function(f,l){
  618.                 l=l.split("|");
  619.                 var j=d[l[0]];
  620.                 for(var h=1;
  621.                     h<l.length;
  622.                     h++){
  623.                     j=c[l[h]](j)
  624.                 }
  625.                 if(j==""){
  626.                     return""
  627.                 }
  628.                 if(j==0||j==-1){
  629.                     j+=""
  630.                 }
  631.                 return j||f
  632.             };
  633.  
  634.             return a.replace(/%\(([A-Za-z0-9_|.]*)\)/g,b)
  635.         },
  636.         getXMLHttpRequest:function(){
  637.             var b=[function(){
  638.                 return new XMLHttpRequest()
  639.             },function(){
  640.                 return new ActiveXObject("Msxml2.XMLHTTP")
  641.             },function(){
  642.                 return new ActiveXObject("Microsoft.XMLHTTP")
  643.             },function(){
  644.                 return new ActiveXObject("Msxml2.XMLHTTP.4.0")
  645.             },function(){
  646.                 throw"Browser does not support XMLHttpRequest"
  647.             }];
  648.             for(var a=0;
  649.                 a<b.length;
  650.                 a++){
  651.                 var c=b[a];
  652.                 try{
  653.                     return c()
  654.                 }catch(d){}
  655.             }
  656.         },
  657.         getRequest:function(a,c){
  658.             var b=AJS.getXMLHttpRequest();
  659.             if(a.match(/^https?:\/\//)==null){
  660.                 if(AJS.BASE_URL!=""){
  661.                     if(AJS.BASE_URL.lastIndexOf("/")!=AJS.BASE_URL.length-1){
  662.                         AJS.BASE_URL+="/"
  663.                     }
  664.                     a=AJS.BASE_URL+a
  665.                 }
  666.             }
  667.             if(!c){
  668.                 c="POST"
  669.             }
  670.             return new AJSDeferred(b,c,a)
  671.         },
  672.         serializeJSON:function(j){
  673.             var a=typeof(j);
  674.             if(a=="undefined"){
  675.                 return"null"
  676.             }else{
  677.                 if(a=="number"||a=="boolean"){
  678.                     return j+""
  679.                 }else{
  680.                     if(j===null){
  681.                         return"null"
  682.                     }
  683.                 }
  684.             }
  685.             if(a=="string"){
  686.                 return AJS._reprString(j)
  687.             }
  688.             if(a=="object"&&j.getFullYear){
  689.                 return AJS._reprDate(j)
  690.             }
  691.             var f=arguments.callee;
  692.             if(a!="function"&&typeof(j.length)=="number"){
  693.                 var d=[];
  694.                 for(var c=0;
  695.                     c<j.length;
  696.                     c++){
  697.                     var h=f(j[c]);
  698.                     if(typeof(h)!="string"){
  699.                         h="undefined"
  700.                     }
  701.                     d.push(h)
  702.                 }
  703.                 return"["+d.join(",")+"]"
  704.             }
  705.             if(a=="function"){
  706.                 return null
  707.             }
  708.             d=[];
  709.             for(var b in j){
  710.                 var g;
  711.                 if(typeof(b)=="number"){
  712.                     g='"'+b+'"'
  713.                 }else{
  714.                     if(typeof(b)=="string"){
  715.                         g=AJS._reprString(b)
  716.                     }else{
  717.                         continue
  718.                     }
  719.                 }
  720.                 h=f(j[b]);
  721.                 if(typeof(h)!="string"){
  722.                     continue
  723.                 }
  724.                 d.push(g+":"+h)
  725.             }
  726.             return"{"+d.join(",")+"}"
  727.         },
  728.         loadJSON:function(b,c,a){
  729.             var g=AJS.getRequest(b,c);
  730.             var f=function(h,d){
  731.                 var i=d.responseText;
  732.                 if(i=="Error"){
  733.                     g.errback(d)
  734.                 }else{
  735.                     return AJS.evalTxt(i)
  736.                 }
  737.             };
  738.  
  739.             g.addCallback(f);
  740.             return g
  741.         },
  742.         evalTxt:function(txt){
  743.             try{
  744.                 return eval("("+txt+")")
  745.             }catch(e){
  746.                 return eval(txt)
  747.             }
  748.         },
  749.         evalScriptTags:function(html){
  750.             var script_data=html.match(/<script.*?>((\n|\r|.)*?)<\/script>/g);
  751.             if(script_data!=null){
  752.                 for(var i=0;
  753.                     i<script_data.length;
  754.                     i++){
  755.                     var script_only=script_data[i].replace(/<script.*?>/g,"");
  756.                     script_only=script_only.replace(/<\/script>/g,"");
  757.                     eval(script_only)
  758.                 }
  759.             }
  760.         },
  761.         encodeArguments:function(a){
  762.             var b=[];
  763.             for(k in a){
  764.                 b.push(k+"="+AJS.urlencode(a[k]))
  765.             }
  766.             return b.join("&")
  767.         },
  768.         _reprString:function(a){
  769.             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")
  770.         },
  771.         _reprDate:function(c){
  772.             var d=c.getUTCFullYear();
  773.             var a=c.getUTCDate();
  774.             var f=c.getUTCMonth()+1;
  775.             var b=function(g){
  776.                 if(g<10){
  777.                     g="0"+g
  778.                 }
  779.                 return g
  780.             };
  781.  
  782.             return'"'+d+"-"+f+"-"+a+"T"+b(c.getUTCHours())+":"+b(c.getUTCMinutes())+":"+b(c.getUTCSeconds())+'"'
  783.         },
  784.         getMousePos:function(b){
  785.             var a=0;
  786.             var c=0;
  787.             if(!b){
  788.                 var b=window.event
  789.             }
  790.             if(b.pageX||b.pageY){
  791.                 a=b.pageX;
  792.                 c=b.pageY
  793.             }else{
  794.                 if(b.clientX||b.clientY){
  795.                     a=b.clientX+document.body.scrollLeft+document.documentElement.scrollLeft;
  796.                     c=b.clientY+document.body.scrollTop+document.documentElement.scrollTop
  797.                 }
  798.             }
  799.             return{
  800.                 x:a,
  801.                 y:c
  802.             }
  803.         },
  804.         getScrollTop:function(){
  805.             var a;
  806.             if(document.documentElement&&document.documentElement.scrollTop){
  807.                 a=document.documentElement.scrollTop
  808.             }else{
  809.                 if(document.body){
  810.                     a=document.body.scrollTop
  811.                 }
  812.             }
  813.             return a
  814.         },
  815.         absolutePosition:function(c){
  816.             if(!c){
  817.                 return{
  818.                     x:0,
  819.                     y:0
  820.                 }
  821.             }
  822.             if(c.scrollLeft){
  823.                 return{
  824.                     x:c.scrollLeft,
  825.                     y:c.scrollTop
  826.                 }
  827.             }else{
  828.                 if(c.clientX){
  829.                     return{
  830.                         x:c.clientX,
  831.                         y:c.clientY
  832.                     }
  833.                 }
  834.             }
  835.             var b={
  836.                 x:c.offsetLeft,
  837.                 y:c.offsetTop
  838.             };
  839.  
  840.             if(c.offsetParent){
  841.                 var a=c.offsetParent;
  842.                 while(a){
  843.                     b.x+=a.offsetLeft;
  844.                     b.y+=a.offsetTop;
  845.                     a=a.offsetParent
  846.                 }
  847.             }
  848.             if(AJS.isSafari()&&c.style.position=="absolute"){
  849.                 b.x-=document.body.offsetLeft;
  850.                 b.y-=document.body.offsetTop
  851.             }
  852.             return b
  853.         },
  854.         getWindowSize:function(c){
  855.             c=c||document;
  856.             var b,a;
  857.             if(self.innerHeight){
  858.                 b=self.innerWidth;
  859.                 a=self.innerHeight
  860.             }else{
  861.                 if(c.documentElement&&c.documentElement.clientHeight){
  862.                     b=c.documentElement.clientWidth;
  863.                     a=c.documentElement.clientHeight
  864.                 }else{
  865.                     if(c.body){
  866.                         b=c.body.clientWidth;
  867.                         a=c.body.clientHeight
  868.                     }
  869.                 }
  870.             }
  871.             return{
  872.                 w:b,
  873.                 h:a
  874.             }
  875.         },
  876.         isOverlapping:function(g,c){
  877.             var j=AJS.absolutePosition(g);
  878.             var i=AJS.absolutePosition(c);
  879.             var m=j.y;
  880.             var o=j.x;
  881.             var f=o+g.offsetWidth;
  882.             var d=m+g.offsetHeight;
  883.             var l=i.y;
  884.             var n=i.x;
  885.             var b=n+c.offsetWidth;
  886.             var a=l+c.offsetHeight;
  887.             var h=function(p){
  888.                 if(p>0){
  889.                     return"+"
  890.                 }else{
  891.                     if(p<0){
  892.                         return"-"
  893.                     }else{
  894.                         return 0
  895.                     }
  896.                 }
  897.             };
  898.  
  899.             if((h(m-a)!=h(d-l))&&(h(o-b)!=h(f-n))){
  900.                 return true
  901.             }
  902.             return false
  903.         },
  904.         getEventElm:function(b){
  905.             if(b&&!b.type&&!b.keyCode){
  906.                 return b
  907.             }
  908.             var a;
  909.             if(!b){
  910.                 var b=window.event
  911.             }
  912.             if(b.target){
  913.                 a=b.target
  914.             }else{
  915.                 if(b.srcElement){
  916.                     a=b.srcElement
  917.                 }
  918.             }
  919.             if(a&&a.nodeType==3){
  920.                 a=a.parentNode
  921.             }
  922.             return a
  923.         },
  924.         setEventKey:function(a){
  925.             if(!a){
  926.                 a=window.event
  927.             }
  928.             a.key=a.keyCode?a.keyCode:a.charCode;
  929.             a.ctrl=a.ctrlKey;
  930.             a.alt=a.altKey;
  931.             a.meta=a.metaKey;
  932.             a.shift=a.shiftKey
  933.         },
  934.         onEvent:function(c,b,a,d){
  935.             c=AJS.$A(c);
  936.             AJS.map(c,function(f){
  937.                 if(f.events){
  938.                     f.events[b]={}
  939.                 }
  940.             });
  941.             return AJS.AEV(c,b,a,d)
  942.         },
  943.         ready_bound:false,
  944.         is_ready:false,
  945.         bindReady:function(){
  946.             if(AJS.ready_bound){
  947.                 return
  948.             }
  949.             AJS.ready_bound=true;
  950.             if(document.addEventListener){
  951.                 document.addEventListener("DOMContentLoaded",function(){
  952.                     document.removeEventListener("DOMContentLoaded",arguments.callee,false);
  953.                     AJS.ready()
  954.                 },false)
  955.             }else{
  956.                 if(document.attachEvent){
  957.                     document.attachEvent("onreadystatechange",function(){
  958.                         if(document.readyState==="complete"){
  959.                             document.detachEvent("onreadystatechange",arguments.callee);
  960.                             AJS.ready()
  961.                         }
  962.                     });
  963.                     if(document.documentElement.doScroll&&window==window.top){
  964.                         (function(){
  965.                             if(AJS.is_ready){
  966.                                 return
  967.                             }
  968.                             try{
  969.                                 document.documentElement.doScroll("left")
  970.                             }catch(a){
  971.                                 setTimeout(arguments.callee,0);
  972.                                 return
  973.                             }
  974.                             AJS.ready()
  975.                         })()
  976.                     }
  977.                 }
  978.             }
  979.             AJS.AEV(window,"load",AJS.ready)
  980.         },
  981.         ready_list:[],
  982.         ready:function(a){
  983.             if(AJS.is_ready){
  984.                 return
  985.             }
  986.             AJS.is_ready=true;
  987.             AJS.map(AJS.ready_list,function(b){
  988.                 b.call(window)
  989.             });
  990.             AJS.ready_list=[]
  991.         },
  992.         _f_guid:0,
  993.         _wipe_guid:0,
  994.         addEventListener:function(c,a,b,d){
  995.             c=AJS.$A(c);
  996.             a=AJS.$A(a);
  997.             AJS.map(c,function(f){
  998.                 if(d){
  999.                     b.listen_once=true
  1000.                 }
  1001.                 if(!b.$f_guid){
  1002.                     b.$f_guid=AJS._f_guid++
  1003.                 }
  1004.                 if(!f.events){
  1005.                     f.events={}
  1006.                 }
  1007.                 AJS.map(a,function(h){
  1008.                     var g=f.events[h];
  1009.                     if(f==window&&h=="load"){
  1010.                         AJS.ready_list.push(b)
  1011.                     }else{
  1012.                         if(h=="lazy_load"){
  1013.                             h="load"
  1014.                         }
  1015.                         if(!g){
  1016.                             g=f.events[h]={};
  1017.  
  1018.                             if(f["on"+h]){
  1019.                                 g[0]=f["on"+h]
  1020.                             }
  1021.                         }
  1022.                         if(!f._wipe_guid){
  1023.                             f._wipe_guid=AJS._wipe_guid++
  1024.                         }
  1025.                         g[b.$f_guid]=b;
  1026.                         f["on"+h]=AJS.handleEvent
  1027.                     }
  1028.                 });
  1029.                 f=null
  1030.             })
  1031.         },
  1032.         handleEvent:function(h){
  1033.             var g=this;
  1034.             h=h||window.event;
  1035.             if(!h){
  1036.                 return
  1037.             }
  1038.             if(!h.ctrl&&h.type.indexOf("key")!=-1){
  1039.                 AJS.setEventKey(h)
  1040.             }
  1041.             var b=this.events[h.type];
  1042.             var a=[];
  1043.             var d=true;
  1044.             for(var c in b){
  1045.                 var f=this.$$handleEvent=b[c];
  1046.                 if(f==AJS.handleEvent){
  1047.                     continue
  1048.                 }
  1049.                 d=f(h);
  1050.                 if(f.listen_once){
  1051.                     a.push(f)
  1052.                 }
  1053.             }
  1054.             if(a.length>0){
  1055.                 AJS.map(a,function(i){
  1056.                     delete g.events[h.type][i.$f_guid]
  1057.                 })
  1058.             }
  1059.             return d
  1060.         },
  1061.         removeEventListener:function(c,b,a){
  1062.             c=AJS.$A(c);
  1063.             map(c,function(d){
  1064.                 if(d.events&&d.events[b]){
  1065.                     delete d.events[b][a.$f_guid]
  1066.                 }
  1067.             })
  1068.         },
  1069.         bind:function(b,a,c){
  1070.             b._cscope=a;
  1071.             return AJS._getRealScope(b,c)
  1072.         },
  1073.         bindMethods:function(b){
  1074.             for(var a in b){
  1075.                 var c=b[a];
  1076.                 if(typeof(c)=="function"){
  1077.                     b[a]=AJS.$b(c,b)
  1078.                 }
  1079.             }
  1080.         },
  1081.         preventDefault:function(a){
  1082.             if(AJS.isIe()){
  1083.                 window.event.returnValue=false
  1084.             }else{
  1085.                 a.preventDefault()
  1086.             }
  1087.         },
  1088.         _listenOnce:function(d,b,a){
  1089.             var c=function(){
  1090.                 AJS.removeEventListener(d,b,c);
  1091.                 a(arguments)
  1092.             };
  1093.  
  1094.             return c
  1095.         },
  1096.         _getRealScope:function(b,c){
  1097.             c=AJS.$A(c);
  1098.             var a=b._cscope||window;
  1099.             return function(){
  1100.                 try{
  1101.                     var d=AJS.$FA(arguments).concat(c);
  1102.                     return b.apply(a,d)
  1103.                 }catch(f){}
  1104.             }
  1105.         },
  1106.         _reccruing_tos:{},
  1107.         setSingleTimeout:function(b,c,a){
  1108.             var d=AJS._reccruing_tos[b];
  1109.             if(d){
  1110.                 clearTimeout(d)
  1111.             }
  1112.             AJS._reccruing_tos[b]=setTimeout(c,a)
  1113.         },
  1114.         keys:function(b){
  1115.             var a=[];
  1116.             for(var c in b){
  1117.                 a.push(c)
  1118.             }
  1119.             return a
  1120.         },
  1121.         values:function(b){
  1122.             var a=[];
  1123.             for(var c in b){
  1124.                 a.push(b[c])
  1125.             }
  1126.             return a
  1127.         },
  1128.         urlencode:function(a){
  1129.             return encodeURIComponent(AJS.isDefined(a)&&a.toString()||"")
  1130.         },
  1131.         urldecode:function(b){
  1132.             var a=decodeURIComponent(AJS.isDefined(b)&&b.toString()||"");
  1133.             return a.replace(/\+/g," ")
  1134.         },
  1135.         isDefined:function(a){
  1136.             return(a!="undefined"&&a!=null)
  1137.         },
  1138.         isArray:function(b){
  1139.             try{
  1140.                 return b instanceof Array
  1141.             }catch(a){
  1142.                 return false
  1143.             }
  1144.         },
  1145.         isString:function(a){
  1146.             return(typeof a=="string")
  1147.         },
  1148.         isNumber:function(a){
  1149.             return(typeof a=="number")
  1150.         },
  1151.         isObject:function(a){
  1152.             return(typeof a=="object")
  1153.         },
  1154.         isFunction:function(a){
  1155.             return(typeof a=="function")
  1156.         },
  1157.         isDict:function(b){
  1158.             var a=String(b);
  1159.             return a.indexOf(" Object")!=-1
  1160.         },
  1161.         exportToGlobalScope:function(a){
  1162.             a=a||window;
  1163.             for(e in AJS){
  1164.                 if(e!="addEventListener"){
  1165.                     a[e]=AJS[e]
  1166.                 }
  1167.             }
  1168.         },
  1169.         log:function(b){
  1170.             try{
  1171.                 if(window._firebug){
  1172.                     window._firebug.log(b)
  1173.                 }else{
  1174.                     if(window.console){
  1175.                         console.log(b)
  1176.                     }
  1177.                 }
  1178.             }catch(a){}
  1179.         },
  1180.         strip:function(a){
  1181.             return a.replace(/^\s+/,"").replace(/\s+$/g,"")
  1182.         },
  1183.         trim_if_needed:function(c,a,b){
  1184.             if(c.length>a){
  1185.                 return c.substring(0,a)+(b||"...")
  1186.             }
  1187.             return c
  1188.         }
  1189.     };
  1190.  
  1191.     AJS.Class=function(a){
  1192.         var b=function(){
  1193.             if(arguments[0]!="no_init"){
  1194.                 return this.init.apply(this,arguments)
  1195.             }
  1196.         };
  1197.  
  1198.         b.prototype=a;
  1199.         AJS.update(b,AJS.Class.prototype);
  1200.         return b
  1201.     };
  1202.  
  1203.     AJS.Class.prototype={
  1204.         extend:function(a){
  1205.             var b=new this("no_init");
  1206.             for(k in a){
  1207.                 var c=b[k];
  1208.                 var d=a[k];
  1209.                 if(c&&c!=d&&typeof d=="function"){
  1210.                     d=this._parentize(d,c)
  1211.                 }
  1212.                 b[k]=d
  1213.             }
  1214.             return new AJS.Class(b)
  1215.         },
  1216.         implement:function(a){
  1217.             AJS.update(this.prototype,a)
  1218.         },
  1219.         _parentize:function(b,a){
  1220.             return function(){
  1221.                 this.parent=a;
  1222.                 return b.apply(this,arguments)
  1223.             }
  1224.         }
  1225.     };
  1226.  
  1227.     AJS.$=AJS.getElement;
  1228.     AJS.$$=AJS.getElements;
  1229.     AJS.$f=AJS.getFormElement;
  1230.     AJS.$b=AJS.bind;
  1231.     AJS.$p=AJS.partial;
  1232.     AJS.$FA=AJS.forceArray;
  1233.     AJS.$A=AJS.createArray;
  1234.     AJS.DI=AJS.documentInsert;
  1235.     AJS.ACN=AJS.appendChildNodes;
  1236.     AJS.RCN=AJS.replaceChildNodes;
  1237.     AJS.AEV=AJS.addEventListener;
  1238.     AJS.REV=AJS.removeEventListener;
  1239.     AJS.$bytc=AJS.getElementsByTagAndClassName;
  1240.     AJS.$AP=AJS.absolutePosition;
  1241.     AJS.loadJSONDoc=AJS.loadJSON;
  1242.     AJS.queryArguments=AJS.encodeArguments;
  1243.     AJS.$gp=AJS.getParentBytc;
  1244.     AJS.$gc=AJS.getChildBytc;
  1245.     AJS.$sv=AJS.setVisibility;
  1246.     AJS.generalErrorback=null;
  1247.     AJS.generalCallback=null;
  1248.     AJSDeferred=function(b,c,a){
  1249.         this.callbacks=[];
  1250.         this.errbacks=[];
  1251.         this.req=b;
  1252.         this.http_method=c;
  1253.         this.http_url=a
  1254.     };
  1255.  
  1256.     AJSDeferred.prototype={
  1257.         excCallbackSeq:function(c,f){
  1258.             var d=c.responseText;
  1259.             if(AJS.generalCallback){
  1260.                 d=AJS.generalCallback(c,f);
  1261.                 if(!d){
  1262.                     return
  1263.                 }
  1264.             }while(f.length>0){
  1265.                 var b=f.pop();
  1266.                 var a=b(d,c);
  1267.                 if(a){
  1268.                     d=a
  1269.                 }else{
  1270.                     if(a==false){
  1271.                         break
  1272.                     }
  1273.                 }
  1274.             }
  1275.         },
  1276.         callback:function(){
  1277.             this.excCallbackSeq(this.req,this.callbacks)
  1278.         },
  1279.         errback:function(){
  1280.             if(this.errbacks.length==0){
  1281.                 if(AJS.ajaxErrorHandler){
  1282.                     AJS.ajaxErrorHandler(req.responseText,req)
  1283.                 }else{
  1284.                     var b=this.req.responseText.substring(0,200);
  1285.                     if(AJS.strip(b)&&b.indexOf("<html")==-1){
  1286.                         alert("Error encountered:\n"+b)
  1287.                     }
  1288.                 }
  1289.             }
  1290.             if(AJS.generalErrorback){
  1291.                 var a=AJS.generalErrorback(this.req);
  1292.                 if(!a){
  1293.                     return
  1294.                 }
  1295.             }
  1296.             this.excCallbackSeq(this.req,this.errbacks)
  1297.         },
  1298.         addErrback:function(a){
  1299.             this.errbacks.unshift(a)
  1300.         },
  1301.         addCallback:function(a){
  1302.             this.callbacks.unshift(a)
  1303.         },
  1304.         abort:function(){
  1305.             this.req.abort()
  1306.         },
  1307.         addCallbacks:function(b,a){
  1308.             this.addCallback(b);
  1309.             this.addErrback(a)
  1310.         },
  1311.         _onreadystatechange:function(){
  1312.             var b=this.req;
  1313.             var f=this;
  1314.             if(b.readyState==4){
  1315.                 var a="";
  1316.                 try{
  1317.                     a=b.status
  1318.                 }catch(c){}
  1319.                 if(a==200||a==304||b.responseText==null){
  1320.                     this.callback()
  1321.                 }else{
  1322.                     this.errback()
  1323.                 }
  1324.             }
  1325.         },
  1326.         sendReq:function(d){
  1327.             var c=this.req;
  1328.             var b=this.http_method;
  1329.             var a=this.http_url;
  1330.             if(b=="POST"){
  1331.                 c.open(b,a,true);
  1332.                 c.onreadystatechange=AJS.$b(this._onreadystatechange,this);
  1333.                 c.setRequestHeader("Content-type","application/x-www-form-urlencoded");
  1334.                 if(AJS.isObject(d)){
  1335.                     c.send(AJS.encodeArguments(d))
  1336.                 }else{
  1337.                     if(AJS.isDefined(d)){
  1338.                         c.send(d)
  1339.                     }else{
  1340.                         c.send("")
  1341.                     }
  1342.                 }
  1343.             }else{
  1344.                 c.open("GET",a,true);
  1345.                 c.onreadystatechange=AJS.$b(this._onreadystatechange,this);
  1346.                 c.send(null)
  1347.             }
  1348.         }
  1349.     };
  1350.  
  1351.     AJS._createDomShortcuts()
  1352. }
  1353. script_loaded=true;
  1354. AJS.exportToGlobalScope();
  1355. AJS.bindReady();
  1356. script_loaded=true;
clone this paste RAW Paste Data