JAME=function(){};JAME=JAME.prototype=function(){};JAME.VERSION=0.01;JAME.$=function(A){if(document.getElementById){JAME.$=function(B){if(document.getElementById(B)){return document.getElementById(B)}}}if(document.getElementById(A)){return document.getElementById(A)}};JAME.Package=function(B){var H=B.split(".")||[B];var A=H.length;var C=window;var G=function(){};for(var D=0;D<A;D++){var E=H[D];if(typeof (C[E])==="undefined"){C=C[E]=G;C=C.prototype=G}else{C=C[E]}}};JAME.Import=function(){var A=arguments.length;for(var B=0;B<A;B++){var C=arguments[B];if(C.Export!==undefined){C.Export()}else{if(C.prototype.Export!==undefined){C.prototype.Export()}}}};JAME.Exporter=function(B,A){if(!A){A=""}for(var C in B){if(C==="Export"||/^_/.test(C)){continue}window[A+C]=B[C]}};JAME.Export=function(){JAME.Exporter({Package:JAME.Package,Import:JAME.Import})};function extend(A,D){function C(E){if(typeof E._super=="undefined"){E._super=function(){var F=arguments[0];var G=arguments[1];this["__parent_methods"][F].apply(this,G)}}if(typeof E.__parent_methods=="undefined"){E.__parent_methods={}}}for(var B in D){if(typeof A[B]!="undefined"){C(A);A.__parent_methods[B]=D[B]}else{A[B]=D[B]}}}JAME.extend=function(A,C){if(typeof A.__parent_methods=="undefined"){A.__parent_methods={}}if(typeof A.SUPER=="undefined"){A.SUPER=function(){var D=arguments[0];var E=arguments[1];this["__parent_methods"][D].apply(this,E)}}for(var B in C){if(typeof A[B]!="undefined"){A.__parent_methods[B]=C[B]}else{A[B]=C[B]}}};JAME.Package("JAME.Util.String");JAME.Util.String={camelize:function(A){return A.replace(/-(.)/g,function(B,C){return C.toUpperCase()})},hyphenize:function(A){return A.replace(/([A-Z])/g,function(B,C){return"-"+C.toLowerCase()})},firstToUpperCase:function(A){return A.replace(/^([a-z])/,function(B,C){return C.toUpperCase()})},trim:function(A){return A.replace(/^\s+|\s+$/g,"")},Export:function(){JAME.Exporter(this)}};JAME.Package('JAME.Util.Number');JAME.Util.Number={d2h:function(A){return A.toString(16)},h2d:function(A){return parseInt(A,16)},Export:function(){JAME.Exporter(this)}};JAME.Package("JAME.Util.Queue");JAME.Util.Queue=function(A){this.q=[];this.paused=false;if(A){extend(this,A)}};extend(JAME.Util.Queue.prototype,{queue:function(){for(var A=0;A<arguments.length;A++){this.q.push(arguments[A])}return this},dequeue:function(){if(!this.empty()){this.q.pop()}return this},next:function(){if(this.empty()){this.inProgress=false;return }this.paused=false;this.inProgress=true;this.q.shift().apply(this);return this},flush:function(){while(!this.empty()){this.next()}},empty:function(){if(this.q.length==0){return true}return false}});JAME.Package("JAME.Util.Color");(function(){var B=JAME.Util.Number.d2h;var A=JAME.Util.Number.h2d;JAME.Util.Color={rgb2h:function(E,D,C){return[B(E),B(D),B(C)]},h2rgb:function(D,E,C){return[A(D),A(E),A(C)]},hexStr2rgbArray:function(C){return JAME.Util.Color.h2rgb(C.substring(1,3),C.substring(3,5),C.substring(5,7))},rgbStr2rgbArray:function(C){return C.substring(4,C.length-1).split(",")},cssColor2rgb:function(C){if(C.indexOf("rgb")<=-1){return JAME.Util.Color.hexStr2rgbArray(C)}return JAME.Util.Color.rgbStr2rgbArray(C)},Export:function(){JAME.Exporter(this)}}})();JAME.Package("JAME.HTMLMixin");JAME.HTMLMixin={set:function(B){B=B||{};for(var A in B){if(A=="class"){this.elm.className=B[A]}this.elm[A]=B[A]}return this},getElement:function(){return this.elm},add:function(){for(var A=0,B=arguments.length;A<B;A++){this.elm.appendChild(arguments[A].getElement());this.elm._elements.push(arguments[A])}return this},toQueryString:function(F){if(!F){return null}var D=[];for(var E in F){var A=F[E];A=(typeof A=="string")?[A]:A;for(var B=0,C=A.length;B<C;B++){D.push(encodeURIComponent(E)+"="+encodeURIComponent(A[B]))}}return D.join("&")},val:function(){}};JAME.Package("JAME.Form");JAME.Form=function(A,B){if(/form/i.test(A.nodeName)){B=A;A={}}this.elm=B||document.createElement("form");JAME.extend(this,JAME.HTMLMixin);this.set(A);this.elm._elements=[];this.getChildren()};JAME.extend(JAME.Form,JAME.HTMLMixin);JAME.Form.serialize=function(D){if(!D){return JAME.Form.toQueryString(D)}if(D.nodeName==="undefined"){return JAME.Form.toQueryString(D)}var F=D.elements;var E={};for(var B=0,C=F.length;B<C;B++){var G=F[B];if(!G.disabled){if(!/file/i.test(G.nodeName)){if(!E[G.name]){var A=JAME.Form.val(G);if(A&&A.length>0){E[G.name]=A}}}}}return JAME.Form.toQueryString(E)};JAME.Form.val=function(G){if(/select/i.test(G.nodeName)){var F=G.selectedIndex;var I=[];var J=G.options;if(F>0){for(var C=F,H=J.length;C<H;C++){var E=J[C];if(E.selected){value=(window.attachEvent&&!E.attributes.value.specified)?E.text:E.value;I.push(value)}}return I}}if(/text|hidden|password|radio|file/i.test(G.type)||/textarea/i.test(G.nodeName)){if(G.value&&G.value!=""){var B=G.value;B=B.replace(/\r/,"");return[B]}}if(/checkbox/i.test(G.type)){var I=[];var A=JAME.Form.getForm(G);var D=document.getElementsByName(G.name);if(D.length==1&&G.checked){return[G.value]}for(var C=0,H=D.length;C<H;C++){if(JAME.Form.getForm(D[C])===A&&D[C].checked){I.push(D[C].value)}}return I}return[]};JAME.Form.getForm=function(A){do{A=A.parentNode;if(/form/i.test(A.nodeName)){return A}}while(A)};JAME.extend(JAME.Form.prototype,{getChildren:function(){var C=this.elm.elements;for(var A=0,B=C.length;A<B;A++){var D=this.elm[A];if(/select/i.test(D.nodeName)){this.elm._elements.push(new JAME.SelectField(D))}else{this.elm._elements.push(new JAME.InputField(D))}}},getVals:function(){var E=this.elm._elements;var D={};for(var B=0,C=E.length;B<C;B++){var F=this.elm._elements[B];if(!F.getElement().disabled){if(!/file/i.test(F.getElement().nodeName)){if(!D[F.getElement().name]){var A=F.val();if(A.length>0){D[F.getElement().name]=A}}}}}return D}});JAME.Package("JAME.InputField");JAME.InputField=function(B,A){JAME.extend(this,JAME.HTMLMixin);if(B.nodeName){this.elm=B;return this}if(B=="textarea"){this.textarea(A)}else{this.input(B,A)}return this};JAME.extend(JAME.InputField.prototype,{val:function(){var A=this.elm.value||this.elm.innerHTML;if(A&&A!=""){A=A.replace(/\r/,"");return[A]}return[]},input:function(B,A,C){this.elm=C||document.createElement("input");this.elm.type=B;this.set(A);return this},textarea:function(A){this.elm=document.createElement("textarea");if(A.value){this.elm.innerHTML=A.value;delete A.value}this.set(A);return this}});JAME.Package("JAME.SelectField");JAME.SelectField=function(A,B){JAME.extend(this,JAME.HTMLMixin);if(/select/i.test(A.nodeName)){this.elm=A;return this}this.select(A,B);return this};JAME.extend(JAME.SelectField.prototype,{val:function(){var C=this.elm.selectedIndex;var A=[];var B=this.elm.options;if(C>=0){for(var D=C,F=B.length;D<F;D++){var E=B[D];if(E.selected){value=(window.attachEvent&&!E.attributes.value.specified)?E.text:E.value;A.push(value)}}return A}return[]},select:function(B,A){this.elm=document.createElement("select");this.set(B);for(var D in A){var C=document.createElement("option");C.value=D;C.innerHTML=A[D];this.elm.appendChild(C)}return this}});JAME.Package("JAME.Ajax");JAME.Ajax=function(A){this.options={url:A.url||"",type:A.type||"",method:A.method||"",vars:A.vars||null,timeout:A.timeout||2000,retryDelay:A.retryDelay||100,retryLimit:A.retryLimit||3,every:A.every||0,everyDecay:A.everyDecay||0,async:A.async||true,onSuccess:A.onSuccess||function(){},onError:A.onError||function(){}};this.retryCount=0;this.guessMethod();this.guessURL();this._init()};JAME.extend(JAME.Ajax.prototype,{_init:function(){var B=this;this.timer=setTimeout(function(){B.abortXHR();if(B.retryCount<B.options.retryLimit){B.retryCount++;setTimeout(function(){B._init()},B.options.retryDelay)}},this.options.timeout);this.xhr=this.getXHR();var C="";var A="";if(this.options.method=="POST"){C=JAME.Form.serialize(this.options.vars)}else{A=this.appendQueryString(JAME.Form.serialize(this.options.vars))}this.xhr.open(this.options.method,this.options.url+A,this.options.async);if(this.options.method=="POST"){this.xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");if(this.xhr.overrideMimeType){this.xhr.setRequestHeader("Connection","close")}}this.handleResponse();this.xhr.send(C)},guessURL:function(){if(this.options.url){return }var A=this.options.vars;if(A&&A.nodeName!=="undefined"){this.options.url=A.action;return }},guessMethod:function(){if(this.options.method){return }var A=this.options.url;if(/\?/.test(A)){this.options.method="GET";return }if(this.options.vars){this.options.method="POST";return }this.options.method="GET"},appendQueryString:function(B){var A=this.options.url;if(/\?.+/.test(A)){B="&"+B}else{if(/\?$/.test(A)){}else{if(this.options.vars){B="?"+B}}}return B||""},getXHR:function(){if(window.XMLHttpRequest){JAME.Ajax.prototype.getXHR=function(){return new XMLHttpRequest()}}else{if(window.ActiveXObject){var E;var B=["Msxml2.XMLHTTP.5.0","Msxml2.XMLHTTP.4.0","Msxml2.XMLHTTP.3.0","Msxml2.XMLHTTP","Microsoft.XMLHTTP"];for(var A=0,C=B.length;A<C;A++){try{E=function(){return new ActiveXObject(B[A])};E()}catch(D){continue}break}JAME.Ajax.prototype.getXHR=E}else{throw new Error("XMLHTTPRequest not supported...")}}return JAME.Ajax.prototype.getXHR()},handleResponse:function(){var A=this;this.xhr.onreadystatechange=function(){if(A.xhr.readyState==4){if(A.isStatusOK()){clearTimeout(A.timer);A.options.onSuccess(A.normalizeResponse())}else{A.options.onError()}A.xhr=null}}},isStatusOK:function(){try{if((!this.xhr.status&&window.location.protocol=="file:")||(this.xhr.status>=200&&this.xhr.status<300)||this.xhr.status==304||(navigator.userAgent.indexOf("Safari")>=0&&typeof this.xhr.status==="undefined")){return true}}catch(A){}return false},normalizeResponse:function(){var contentType=this.xhr.getResponseHeader("content-type")||-1;var data=(!this.options.type&&contentType.indexOf("xml")>=0);this.guessType();data=(this.options.type=="xml"||data)?this.xhr.responseXML:this.xhr.responseText;if(this.options.type=="js"){eval.call(window,data)}return data},guessType:function(){if(this.options.type){return this.options.type}if(/\.xml$/.test(this.options.url)){return"xml"}if(/\.js$/.test(this.options.url)){return"js"}},abortXHR:function(){if(this.xhr){this.xhr.abort()}clearTimeout(this.timer)}});JAME.Package("JAME.DOM");JAME.DOM={lastNode:function(A){if(!A.lastChild){return false}A=A.lastChild;return(A&&A.nodeType!=1)?JAME.DOM.prevNode(A):A},prevNode:function(A){if(!A){return false}do{A=A.previousSibling}while(A&&A.nodeType!=1);return A},nextNode:function(A){if(!A){return false}do{A=A.nextSibling}while(A&&A.nodeType!=1);return A},firstNode:function(A){if(!A.firstChild){return false}A=A.firstChild;return(A&&A.nodeType!=1)?JAME.DOM.nextNode(A):A},getText:function(D){var A=[];D=D.childNodes;for(var B=0,C=D.length;B<C;B++){A.push((D[B].nodeType!=1)?D[B].nodeValue:JAME.DOM.getText(D[B]))}return A.join("")},Ready:function(A){if(JAME.DOM.Ready.done){return A()}if(!JAME.DOM.Ready.timer){JAME.DOM.Ready.todo=[A];JAME.DOM.Ready.timer=setInterval(JAME.DOM.__isDOMReady,13)}else{JAME.DOM.Ready.todo.push(A)}},__isDOMReady:function(){if(JAME.DOM.Ready.done){return false}if(document&&document.getElementsByTagName&&document.getElementById&&document.body){clearInterval(JAME.DOM.Ready.timer);JAME.DOM.Ready.timer=null;var A=JAME.DOM.Ready.todo.length;for(var B=0;B<A;B++){JAME.DOM.Ready.todo[B]()}JAME.DOM.Ready.todo=null;JAME.DOM.Ready.done=true}},createNode:function(A){return document.createElement(A)},wrapNode:function(D,C){var B=JAME.DOM.createNode(C);var A=D.cloneNode(true);B.appendChild(A);oparent=D.parentNode;JAME.DOM.insertAfter(B,D);oparent.removeChild(D);return B},insertAfter:function(C,B){var A=B.parentNode;if(B==A.lastChild){A.appendChild(C)}else{A.insertBefore(C,JAME.DOM.nextNode(B))}},Export:function(){JAME.Exporter(this)}};JAME.Package("JAME.Events.EventDispatcher");JAME.Events.EventDispatcher=function(){this.listeners={}};extend(JAME.Events.EventDispatcher.prototype,{dispatch:function(C){var B=(this.listeners[C])?this.listeners[C].length:0;for(var A=0;A<B;A++){this.listeners[C][A].apply(this,arguments)}return this},addListener:function(B,A){if(this.listeners[B]){this.listeners[B].push(A)}else{this.listeners[B]=[A]}},removeListener:function(E,D){var A=this.listeners[E];for(var B=0,C=A.length;B<C;B++){if(A[B]===D){this.listeners[E].splice(B,1)}}}});JAME.Package("JAME.Events.Normalize");JAME.Events.Normalize=function(B){B=B||window.event;if(window.event){B.preventDefault=function(){this.returnValue=false};B.stopPropagation=function(){this.cancelBubble=true};B.target=B.srcElement;B.relatedTarget=(B.fromElement==B.target)?B.toElement:B.fromElement}if(B.target.nodeType==3){B.target=B.target.parentNode}if(B.pageX==null&&B.clientX!=null){var C=document.documentElement,A=document.body;B.pageX=B.clientX+(C&&C.scrollLeft||A.scrollLeft||0);B.pageY=B.clientY+(C&&C.scrollTop||A.scrollTop||0)}if(B.layerX==null&&B.offsetX!=null){B.layerX=B.offsetX||0;B.layerY=B.offsetY||0}if(!B.which&&(B.charCode||B.keyCode)){B.which=B.charCode||B.keyCode}if(!B.metaKey&&B.ctrlKey){B.metaKey=B.ctrlKey}if(!B.which&&B.button){B.which=(B.button&1?1:(B.button&2?3:(B.button&4?2:0)))}return B};var selectors=[" ",".","#","+",">","~",":","::","*","[","]",","];var keywords=[];function parse(H){var A=H.split("");var C=undefined;var F=undefined;if(A.length==1&&H=="*"){return $T("*")}for(var D=0,G=A.length;D<G;D++){if(selectors.indexOf(A[D])!=-1){C=A[D]}if(/[a-zA-Z0-9_-]/.test(A[D])){regex="^.{"+D+"}([a-zA-Z0-9_-]+)";var B=new RegExp(regex);var J=B.exec(H);var I=J[1];var E=getByClass(I,D,A,C,F);if(E){F=E;D=I.length-1+D;continue}var E=getId(I,D,A,C,F);if(I.length==A.length&&E){return E}if(E){F=E;D=I.length-1+D;continue}var E=getHTMLList(I,D,A,C,F);if(I.length==A.length&&E){return E}if(E){F=E;D=I.length-1+D;continue}var E=getDirectChildOf(I,D,A,C,F);if(I.length==A.length&&E){return E}if(E){F=E;D=I.length-1+D;continue}var E=getFirstSiblingOf(I,D,A,C,F);if(I.length==A.length&&E){return E}if(E){F=E;D=I.length-1+D;continue}D=I.length-1+D}}return F}function getId(B,D,E,A,C){if(A=="#"){return JAME.$(B)}return false}function getHTMLList(B,D,E,A,C){if((A==" "||!A)){return $TS(B,C)}return false}function getDirectChildOf(B,D,I,G,A){if(G==">"){tags=$TS(B,A);if(!tags){return }var E=[];for(var C=0,F=tags.length;C<F;C++){var J=tags[C];var H=J.parentNode;if(H&&H===A[0]){E.push(J)}}return E}return false}function getDirectSiblingOf(B,D,H,G,A){if(G=="+"){B=B.toLowerCase();var E=[];for(var C=0,F=A.length;C<F;C++){var I=A[C];I=next(I);if(n&&n.nodeName.toLowerCase()==B){E.push(n)}}return E}return false}function getFirstSiblingOf(C,E,I,H,B){if(H=="~"){C=C.toLowerCase();var F=[];B=(B.constructor===Array)?B:[B];for(var D=0,G=B.length;D<G;D++){var A=B[D];do{A=next(A);alert(A.nodeName)}while(A&&A.nodeName.toLowerCase()!=C);if(A){F.push(A)}}return F}return false}function getByClass(B,D,E,A,C){if(A=="."){if(/ /.test(E[D-2])){C=$TS(" ",C)}return $C(B,C)}return false}function $A__(A,C,B){if(B[A]==C){return B}if(parseInt(B[A])===C){return B}if(parseInt(B[A])===parseInt(C)){return B}}function $A__S(A,G,E){E=(E.constructor!==Array)?[E]:E;var D=[];for(var B=0;B<E.length;B++){var C=E[B];var F=$A__(A,G,C);if(F){D.push(F)}}return(D.length>1)?D:D[0]}function $C(C,D){var A=[];D=D||document.body.getElementsByTagName("*");var F;for(var B=0,E=D.length;B<E;B++){F=D[B];if(F.className){if(F.className===C){A.push(F)}}}if(A.length==0){return }return(A.length>1)?A:A[0]}function $T(A,E){if(A=="body"){return document.body}var D=(E||document).getElementsByTagName(A);if(D.length==0){return }var B=[];for(var C=0,F=D.length;C<F;C++){B.push(D[C])}return(B.length>0)?B:undefined}function $TS(A,F){if(F===undefined){return $T(A)}F=(F.constructor!==Array)?[F]:F;var E=[];for(var C=0;C<F.length;C++){var D=F[C][0]||F[C];var G=$T(A,D);if(G){for(var B=0;B<G.length;B++){E.push(G[B])}}}return(E.length>1)?E:E[0]}if(!Array.prototype.indexOf){Array.prototype.indexOf=function(B){var A=this.length;var C=Number(arguments[1])||0;C=(C<0)?Math.ceil(C):Math.floor(C);if(C<0){C+=A}for(;C<A;C++){if(C in this&&this[C]===B){return C}}return -1}};Array.prototype.each2=function(B){var C=this;for(var A=0;A<this.length;A++){(function(){var D=A;B.call(C,C[D],D,C)})()}};JAME.Package('JAME.CSS');
JAME.CSS={
   setOpacity : function (obj,amount) {
      JAME.CSS.setOpacity=(window.attachEvent)
        ? function (obj,amount) {
            obj.style.zoom = 1;
            obj.style.filter = "alpha(opacity=" + amount*100 + ")";
			obj.style.opacity = amount;
          }
        : function (obj,amount) {
            obj.style.opacity = amount;
          }
       JAME.CSS.setOpacity(obj,amount);
   },
   _float : function() {
      var prop = (window.attachEvent) ? 'styleFloat' : 'cssFloat';
      this.styleFloat=function() { return prop; };
      return prop;
   },
   setStyle : function (elm,prop,val) {
      elm = (elm.constructor===Array) ? elm : [elm];
      for(var i=0;i<elm.length;i++) {
        if(prop=='opacity') { 
           JAME.CSS.setOpacity(elm[i],parseFloat(val));
           continue;
         }
         if(prop=='float')   prop = JAME.CSS._float();
         prop = JAME.Util.String.camelize(prop);
         unit=(prop=='zIndex'||prop=='zoom'||/olor/.test(prop)) ? '':'px';
		 if(prop=='zIndex') {
			elm[i].style[prop] = parseInt(val);
		 }
		 else {
         	try  { elm[i].style[prop] = (typeof val=='string') ? val : val+unit; }
			catch(e) {}
		}
      }
   },
   setStyles : function (elm,props) {
      for(var prop in props) {
        JAME.CSS.setStyle(elm,prop,props[prop]);
      }
   },
   getStyle : function (elm,style) {
        if (document.defaultView && document.defaultView.getComputedStyle) {
            JAME.CSS.getStyle = function(elm, style){
				if(!elm) return;
				style = JAME.Util.String.camelize(style);
                if(elm.style[style]) return elm.style[style];
				style = JAME.Util.String.hyphenize(style);
                var val = document.defaultView.getComputedStyle(elm, "").getPropertyValue(style);
                if (!/^[0-9]+/.test(parseInt(val)) && (style == 'height' || style == 'width')) {
                    val = JAME.CSS._getXorY(elm, style);
                }
                return val;
            }
        }
        else if (elm.currentStyle) {
            JAME.CSS.getStyle = function(elm, style){
				if(!elm) return;
				style = JAME.Util.String.camelize(style);
                if(elm.style && elm.style[style]) return elm.style[style];
                	var val= elm.currentStyle[style];
                	if (!/^[0-9]+/.test(parseInt(val)) && (style == 'height' || style == 'width')) {
                    	val = JAME.CSS._getXorY(elm, style);
                	}
                return val;
            }
        }
        return JAME.CSS.getStyle(elm,style);
    },
    _getXorY : function(elm,XY) {
        var mXY = (XY=='height') ? 'Height' : 'Width';

        if(JAME.CSS.getStyle(elm,'display')!='none') {
            return elm["offset"+mXY]>=0 ? elm["offset"+mXY] : JAME.CSS.getStyle(elm,XY);
		}
        var oldStyle = {
            display    : JAME.CSS.getStyle(elm,'display'),
            visibility : JAME.CSS.getStyle(elm,'visibility'),
            position   : JAME.CSS.getStyle(elm,'position')
        };
        JAME.CSS.setStyles(elm,{display:'',visibility:'hidden',position:'absolute'});
        var val = elm["client"+mXY]>=0 ? elm["offset"+mXY] : JAME.CSS.getStyle(elm,XY);
        JAME.CSS.setStyles(elm,oldStyle);
        return val;
    },
    Export : function() {
        JAME.Exporter(this);
    }
};JAME.Package("JAME.FX");JAME.FX=function(A){A=A||{};this.duration=A.duration||700;this.fps=A.fps||40;this.easing=A.easing||function(C,B,E,D){return B+(E/D)*C};this.async=A.async||false;this.behavior=A.behavior||"stop:link";this.interval=Math.ceil(1000/this.fps);this.totalframes=Math.ceil(this.duration/this.interval);this.frame=1};JAME.extend(JAME.FX.prototype,{Tween:function(C,A){JAME.extend(this,new JAME.Util.Queue());JAME.extend(this,new JAME.Events.EventDispatcher());if(arguments[2]){this.paused=true}this.elm=C||this.elm;this.props=A||this.props;this.setProperties();this.setMultiInstance(arguments[2]);if((C&&A)||!this.tweener){this.tweener=new JAME.FX.CSSTweener(this.elm,this.props,this.totalframes,this.easing)}if(!this.setBehavior()){return this}this.elm.__ON=true;this.startingTime=new Date().getTime();var B=this;this.elm.effect=B;this.dispatch("onStart");this.timer=setInterval(function(){B.setAnimation.apply(B)},this.interval);return this},setAnimation:function(){this.actualTime=new Date().getTime();this.tweener.compute(parseInt((this.actualTime-this.startingTime)/this.interval));this.dispatch("onTween");if(this.actualTime>=this.startingTime+this.duration){this.stop()}},setProperties:function(){for(var A in this.extendProperties){if(A=="prototype"){continue}this.extendProperties[A].apply(this)}},reverse:function(){var B=this.props;for(var C in B){var A=this.props[C].end;this.props[C].end=this.props[C].start;this.props[C].start=A}this.elm=(this.elms&&this.elms.length)?this.elms.reverse():this.elm;this.Tween()},stop:function(){clearInterval(this.timer);this.tweener.compute(this.totalframes);this.paused=false;this.elm.__ON=false;this.dispatch("onComplete");this._cleanOut();this.next();return this},addToQueue:function(B){var A=this;B.queue(function(){return B.Tween(A.elm,A.props,1)})},_cleanOut:function(){this.elm.effect=null;this.elm.__ON=null},setBehavior:function(){if(this.elm.__ON===true){var A=this.elm.effect;if(this.behavior=="stop:link"){var B=A.props;for(var C in B){if(this.props[C]){this.props[C].start=A.elm.style[C]}}if(this.empty()){this.addToQueue(A)}A.stop();return }else{if(this.behavior=="stop:play"){clearInterval(A.timer);this.q=[];return true}else{if(this.behavior=="finish:play"||this.behavior=="finish:link"){this.addToQueue(A);return }else{if(this.behavior=="finish:skip"){return }else{this.elm.__ON=false;clearInterval(A.timer);this.q=[];return }}}}}return true},setMultiInstance:function(){var A=arguments[0];if(this.elm&&this.elm.constructor===Array){this.elms=this.elm;var C=this;if(this.async){for(var B=1;B<this.elm.length;B++){(function(){var D=C.elm[B];C.Tween(D,C.props)})()}}else{if(A===undefined){for(var B=1;B<this.elm.length;B++){(function(){var D=C.elm[B];C.queue(function(){C.Tween(D,C.props)})})()}}else{for(var B=this.elm.length-1;B>0;B--){(function(){var D=C.elm[B];C.q.unshift(function(){C.Tween(D,C.props)})})()}if(A){C.paused=false}}this.elm=this.elms[0]}}}});JAME.FX.prototype.extendProperties={CSS:function(){if(this.props.selector){var C=(this.props.selector.style)?this.props.selector.style:undefined;if(this.style!=C){this.style=C;var B=new JAME.E4CSS(C);var D=B[this.props.selector[0]];var A=B[this.props.selector[1]];for(var E in D) { this.props[E]["start"]=D[E]; this.props[E]["end"]=A[E]; } }; delete this.props.selector}},Auto:function(){var A={};for(var B in this.props){A[B]={};if(this.props[B].length==1){A[B]["end"]=this.props[B][0];A[B]["start"]=JAME.CSS.getStyle(this.elm,B)}if(this.props[B].length==2){A[B]["start"]=this.props[B][0];A[B]["end"]=this.props[B][1]}if(!this.props[B].length){A[B]["start"]=this.props[B]["start"];A[B]["end"]=this.props[B]["end"]}}this.props=A;A=null}};JAME.Package('JAME.FX.CSSTweener');
JAME.FX.CSSTweener = function(elm,props,frames,easing) {
this.elm = elm;this.props  = props;this.frames = frames;this.easing = easing; }
JAME.FX.CSSTweener.prototype ={
     compute : function(frame) {
       this.frame=frame;
       for(var prop in this.props){
	   this.prop = prop;
	   this.from = this.props[prop].start;
	   this.to   = this.props[prop].end;
          var method=JAME.Util.String.camelize(JAME.Util.String.firstToUpperCase(prop));
          if(this[method]) { this[method](); }
          else if(/[0-9]+/.test(parseInt(this.from)) && !/\s/.test(this.from)) {
 	       this.Numeric(); }
          else { this.String();}
     }
  },
  String : function(obj,ratio) {
	ratio=ratio || 0.2;var set = ((this.frame/this.frames)>=ratio) ? this.to : this.from;JAME.CSS.setStyle(this.elm,this.prop,set);
  },
  Numeric : function () {
      var begin  = (/[a-z]/.test(this.from)) ? parseInt(this.from)*10000 : this.from*10000;
      var end    = (/[a-z]/.test(this.to))   ? parseInt(this.to)  *10000 : this.to  *10000;
      var displacement = this.easing(this.frame, begin, end-begin, this.frames);
	  try {JAME.CSS.setStyle(this.elm,this.prop,displacement/10000);}catch(e){};
  }
};
JAME.Package('JAME.FX.Transition');JAME.FX.Transition.Linear=function(t, b, c, d) {return b + (c/d)*t;}
JAME.Package('JAME.FX.Transition.Sine');
JAME.FX.Transition.Sine ={
    In: function (t, b, c, d) { return -c * Math.cos(t/d * (Math.PI/2)) + c + b;},
    Out : function (t, b, c, d) { return c * Math.sin(t/d * (Math.PI/2)) + b;},
    InOut : function (t, b, c, d) { return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;}
}
    function $C(t,s) {
        var ar=[];

        s= s || document.body.getElementsByTagName('*');
        var e;
        for(var i=0,ln=s.length;i<ln;i++) {
            e=s[i];

            if(e.className) if(new RegExp('\s*'+t+'\s*').test(e.className)) ar.push(e);
        }
        if(ar.length==0) return;
        return (ar.length>1) ? ar : ar[0];
    }
JAME.extend(JAME.FX.CSSTweener.prototype, { 

    _position : ['Top','Right','Bottom','Left'],

    Padding : function () {
	this.setMultiPart('Numeric');
    },
    Margin : function () {
	this.setMultiPart('Numeric');
    },

    setMultiPart : function (method,sub) {
	var elms = this.splitMultiPart();
	if(sub==undefined) sub='';
	var i=0,j=0,k=0,l=0;
	if(elms.start.length==2) i=0,j=1,k=0,l=1;
	if(elms.start.length==3) i=0,j=1,k=2,l=1;
	if(elms.start.length==4) i=0,j=1,k=2,l=3;

	var v = [i,j,k,l];

	var prop=this.prop;

	for(var m=0;m<v.length;m++) {
		this.prop   = prop+this._position[m]+sub;
		this.from   = elms.start[v[m]];
		this.to     = elms.end[v[m]];
		this.bezier = elms.bezier[v[m]];
	   this[method]();
	}
    }, 
    splitMultiPart : function () {
	var start = this.from.replace(/(, )/g,function(m,l) { return ','});
	var end   = this.to.replace(/(, )/g,function(m,l) { return ','});

	var starts  = start.split(/\s/) || [];
	var ends    = end.split(/\s/)   || [];
	var beziers = (this.bezier) ? this.bezier.split(/\s/) : [];
	return {start:starts,end:ends,bezier:beziers};
    }
});
JAME.extend(JAME.FX.CSSTweener.prototype, { 
    BackgroundPosition : function () {
	     this.setBGMultiPart('Numeric');
    },
    setBGMultiPart : function (method) {
	    var elms = this.splitMultiPart();
      var begin  = (/[a-z]/.test(elms.start[0])) ? parseInt(elms.start[0])*10000 : elms.start[0]*10000;
      var end    = (/[a-z]/.test(elms.end[0]))   ? parseInt(elms.end[0])  *10000 : elms.end[0]  *10000;
      var displacementX = this.easing(this.frame, begin, end-begin, this.frames)/10000;
      begin  = (/[a-z]/.test(elms.start[1])) ? parseInt(elms.start[1])*10000 : elms.start[1]*10000;
      end    = (/[a-z]/.test(elms.end[1]))   ? parseInt(elms.end[1])  *10000 : elms.end[1]*10000;
      var displacementY = this.easing(this.frame, begin, end-begin, this.frames)/10000;
	  var value=displacementX+'px '+displacementY+'px';
      JAME.CSS.setStyle(this.elm,this.prop,value);
    }
});
JAME.Package('JAME.Events.EventDispatcher');JAME.Events.EventDispatcher=function() { this.listeners={} ; };JAME.extend(JAME.Events.EventDispatcher.prototype,{
    dispatch : function(event) {
        if(this.listeners[event]) {
        	for(var i=0;i<this.listeners[event].length;i++) {
            	this.listeners[event][i].apply(this,arguments);
			}
		}
        return this;
    },
    addListener : function (event,func) {
        if(this.listeners[event]) this.listeners[event].push(func);
        else this.listeners[event]=[func];
    },
    removeListener : function (event,func) {
        var funcs = this.listeners[event] || [];
        for (var i = 0, ln = funcs.length; i < ln; i++) {
			if (funcs[i] === func) {
				this.listeners[event].splice(i,1);
			}
		}

    }
});
function getDirectChildOf(searchTag,inLoop,aSelection,lastSelector,elms) {
    if(lastSelector=='>'){
        tags = $TS(searchTag,elms);

        if(!tags) return; 
        var ret=[];
        for(var i=0,ln=tags.length;i<ln;i++) { 
            var s=tags[i];
            var parent=s.parentNode;
            if(parent) for(var j=0,ln2=elms.length;j<ln2;j++) if(parent===elms[j]) ret.push(s);
        }

        return ret;
    }
    return false;
}
JAME.Package('JAME.DOM.Load');

JAME.DOM.Load = function ( F ) {
     var oldOnload = window.onload;
     if (typeof window.onload !== 'function') {
         window.onload = F;
     } else {
         window.onload = function() {
            oldOnload();
            F();
         };
     }
}
JAME.Package('JAME.E4CSS');

(function() {

    var instance;

    JAME.E4CSS = function (val) {
         if (instance) {
		 	if(instance.styleSheet===-1)
		 	return instance;
			
		 }
         instance = (this instanceof JAME.E4CSS) ? this.parse(val) : new JAME.E4CSS(val);
         return instance;
    }

})();

JAME.E4CSS.prototype={

      styleSheet:0,

      sheets: (document.styleSheets) ? document.styleSheets : undefined,

      lookupTable:{},

      getCssRules : function(val) {

        if(typeof val==='number') {
            this.styleSheet=val;
            if(val > this.sheets.length) return;
            return this.sheets[val]['cssRules'] || this.sheets[val]['rules'];
        }

        var regex=new RegExp(val);

        for(i=0; i< this.sheets.length;i++) {
            if(regex.test(this.sheets[i].href)) {
                this.styleSheet=i;
                return this.sheets[i]['cssRules']|| this.sheets[i]['rules'];
            }
        }
        return undefined;
    },

    getAll : function () {
        for(i=0; i< this.sheets.length;i++)
            this.parse(i);
		this.styleSheet=-1;//loaded everything
    },

    parse : function(cssFileName) {

        if(cssFileName===undefined) {
            this.getAll();
            extend(this,JAME.E4CSS.prototype);
            return this;
        }

        var rule=this.getCssRules(cssFileName);
        if(!rule) return;

        for(var i=0;i<rule.length;i++) {

            //get the selector of first rule
            var selector=rule[i].selectorText;
            if(!selector) continue;

            //get all the attributes of above selector
            var csss=rule[i].style.cssText.split(';');

            //temporary object to hold the actual selector
            var props={};

            for(var j=0;j<csss.length;j++) {

                    //split the string by :, get the attribute and value in array
                    //ie display in display: none;
                    var attr=csss[j].split(/:\s?/);

                    if(attr[0].length==1 || !attr[0] || !attr[1]) continue;

                    //lowercase the attribute as IE put all tags in uppercase
                    //and put in camel case
                    var tmp=JAME.Util.String.camelize(attr[0].toLowerCase());

                    //add the attribute with its value to the tmp obj;
                    props[JAME.Util.String.trim(tmp)]=attr[1];
            }

            //browsers are not consistent : some of them keep comma separated 
            //attributes as one selector, other change it into several one
            //therefore h1,h2{...}; can be h2 {...}; h1 {..};
            var selectors=selector.split(',') || [selector];

            for(k=0;k<selectors.length;k++) {

                //if we already have the selector in our main object
                //we add/overwrite the above values
                if(this[selectors[k]]) {
                    for(var attr in props)
                        this[selectors[k].toLowerCase()][attr]=props[attr];
                }
                //if the selector is not in the main object,
                // we just add the temporary object into it
                else 
                    this[selectors[k].toLowerCase()]=props;	

                // we keep track from where the selector comes, ie the style sheet number
                this.lookupTable[selectors[k].toLowerCase()]=this.styleSheet;
            }
        }

        return this;
    }
};


JAME.FX.prototype.extendProperties={

        CSS  : function() {


            if(this.props['selector']) {

               var style = (this.props['selector'][2]) ? this.props['selector'][2] : 0;
               if(this.style!=style) {
                    this.style=style;
                    var css    = new JAME.E4CSS(style);
                    var starts = css[this.props['selector'][0]];
                    var ends   = css[this.props['selector'][1]];
                    for(var prop in starts)  {
						this.props[prop]={};
						this.props[prop]["start"]=starts[prop];
						this.props[prop]["end"]  =ends[prop];
					}
               }
               delete this.props['selector'];
           }
       },
        Auto : function() {

            var nprops={};
            for(var prop in this.props) {
                nprops[prop]={};
                if (this.props[prop].length == 1) {
                    nprops[prop]["end"]   = this.props[prop][0];
                    nprops[prop]["start"] = JAME.CSS.getStyle(this.elm,prop);
                }
                if (this.props[prop].length == 2) {
                    nprops[prop]["start"] = this.props[prop][0];
                    nprops[prop]["end"]   = this.props[prop][1];
                }
                if (!this.props[prop].length) {
                    nprops[prop]["start"] = this.props[prop]["start"];
                    nprops[prop]["end"]   = this.props[prop]["end"];
                }
            }

            this.props=nprops;
			nprops=null;
       }
};
if(!Array.prototype.each) {
Array.prototype.each=function (fn,bind) {
    var that=this ||bind;
    for(var i=0;i < this.length ;i++) {
        (function() {
            var c=i;
            fn.call(that,that[c],c,that);
        })();
    }
}
}
