/* 
 *  Copyright(c) 2008-2009, Y.T.Ho & Information Strategies
 *  
 *  All rights reserved. 
 *  Any unauthorized use of this script is strictly prohibited.
 *
 *  http://infst.com
 */
function infst(a){if(a){a.call(infst)}return infst}infst.extend=function(){var c=arguments[0];for(var b=1;b<arguments.length;b++){if(arguments[b].constructor==Object){for(var a in arguments[b]){c[a]=arguments[b][a]}}}return c};infst.conf=(window._infstConf_)?window._infstConf_:{devMode:false};infst.extend(infst,{ie:(navigator.userAgent.search(/msie/i)==-1)?false:true,ie6:(navigator.userAgent.search(/msie 6/i)==-1)?false:true,mac:(navigator.userAgent.search(/mac/i)==-1)?false:true,ll:function(c){var a,d,e="";if(window.l_label==null){l_label={}}if(arguments.length>1){for(var b=1;b<arguments.length;b++){if(typeof arguments[b]=="object"){d=arguments[b]}else{e+=arguments[b]}}}if(d&&l_label[c]){a=l_label[c].replace(/%(\w+)/g,function(g,f){return(d[f]==null)?f:d[f]})}else{a=(l_label[c]==null)?c:l_label[c]}return a+e},nTable:function(f,a){var e=this.ne("table",a);var c=this.ne("tbody");e.appendChild(c);for(var d=0;d<f.length;d++){var g=this.ne("tr");for(var b=0;b<f[d].length;b++){g.appendChild(f[d][b])}c.appendChild(g)}return e},loadCSS:function(a){if(a){var b=document.createElement("link");b.rel="stylesheet";b.type="text/css";b.href=a;document.getElementsByTagName("head")[0].appendChild(b)}},loadScript:function(b,c){var a=document.createElement("script");if(c){if(a.addEventListener){a.addEventListener("load",c,false)}else{a.onreadystatechange=function(){if(this.readyState=="complete"||this.readyState=="loaded"){c.call(this)}}}}a.src=b;document.getElementsByTagName("head")[0].appendChild(a);a=null},_HTMLCACHE_:{},loadHTML:function(b,a){var d=this;if(!this._HTMLCACHE_[b]){this.ajax({method:"GET",url:b,async:false,dataType:"text",onSuccess:function(e){d._HTMLCACHE_[b]=e}})}var c=this._HTMLCACHE_[b];if(a){c=c.replace(/\$(\w+)/g,function(){return a[arguments[1]]})}return c},loadWidget:function(a,b,d){var c=infst.widgetBase||"/";if(!b){b={css:true,js:true}}if(b.css){this.loadCSS(c+"css/"+a+".css")}if(b.js){this.loadScript(c+"js/"+a+".js",d)}},getFormValue:function(e,f){if(typeof e=="string"){e=document.forms[e]}if(!e){return null}var d={},a=[];if(typeof f=="string"){a.push(e[f])}else{if(this.isArray(f)){for(var c=0;c<f.length;c++){var g=e[f[c]];if(g){a.push(g)}}}else{(function(){for(var m=0;m<arguments.length;m++){var l=e.getElementsByTagName(arguments[m]);for(var k=0;k<l.length;k++){a.push(l[k])}}})("input","textarea","select")}}for(var c=0;c<a.length;c++){var g=a[c];if(g){switch(g.type){case"text":d[g.name]=g.value;break;case"password":d[g.name]=g.value;break;case"textarea":d[g.name]=g.value.replace(/\r\n/g,"\n");break;case"hidden":d[g.name]=g.value.replace(/\r\n/g,"\n");break;case"file":d[g.name]=g.value;break;case"select-one":d[g.name]=(g.selectedIndex>-1)?g.options[g.selectedIndex].value:null;break;case"select-multiple":d[g.name]=[];for(var b=0;b<g.options.length;b++){if(g.options[b].selected){d[g.name].push(g.options[b].value)}}break;case"radio":if(g.checked){d[g.name]=g.value}break;case"checkbox":d[g.name]=(g.checked)?true:false;break}}}return(typeof f=="string")?d[f]:d},setFormValue:function(c,a){if(typeof c=="string"){c=document.forms[c]}for(var b in a){var d=c[b];if(d){this.setFormElmValue(d,a[b])}}},setFormElmValue:function(d,c){if(d.length){for(var b=0;b<d.length;b++){if(d[b].type=="radio"){d[b].checked=(d[b].value==c)?true:false}}}if(d.type=="checkbox"){d.checked=!!c}else{if(d.type=="select-one"){for(var b=0;b<d.options.length;b++){if(d.options[b].value==c){d.selectedIndex=b;break}}}else{if(d.type=="select-multiple"){if(typeof c=="string"){c=[c]}for(var b=0;b<d.options.length;b++){d[b].selected=false;for(var a=0;a<c.length;a++){if(d.options[b].value==c[a]){d[b].selected=true;break}}}}else{d.value=c}}}},regEvent:function(d,a,c){var b;if(infst.conf.devMode){b=function(f){f=f||window.event;try{c.call(d,f,arguments.callee)}catch(g){console.error(g)}}}else{b=function(e){e=e||window.event;c.call(d,e,arguments.callee)}}if(window.attachEvent){d.attachEvent("on"+a,b)}else{if(a=="mousewheel"){d.addEventListener("DOMMouseScroll",b,false);d.addEventListener("mousewheel",b,false)}else{d.addEventListener(a,b,false)}}return b},delEvent:function(c,a,b){if(c.detachEvent){c.detachEvent("on"+a,b)}else{if(a=="mousewheel"){}c.removeEventListener(a,b,false)}},regKeyEvent:function(j,e,f){var b={alt:false,ctrl:false,shift:false};if(typeof e!="number"){var g=function(i){var l=({backspace:8,tab:9,enter:13,shift:16,ctrl:17,alt:18,escape:27,esc:27,pgup:33,pgdn:34,end:35,home:36,left:37,up:38,right:39,down:40,insert:45,ins:45,"delete":46,del:46,f1:112,f2:113,f3:114,f4:115,f5:116,f6:117,f7:118,f8:119,f9:120,f10:121,f11:122,f12:123,";":186,"=":187,",":188,"-":189,".":190,"/":191,"`":192,"[":219,"\\":220,"]":221,"'":222})[i];return l||i.toUpperCase().charCodeAt(0)};var d=e.split("+");for(var c=0;c<d.length;c++){switch(d[c]){case"alt":case"ctrl":case"shift":b[d[c]]=true;break;default:e=g(d[c])}}}var a=function(k,l){if(b.ctrl&&!I.ctrlKey(k)){return}if(b.alt&&!k.altKey){return}if(b.shift&&!k.shiftKey){return}var i=k.charCode||k.keyCode;if(i==e){f.call(j,k,l)}};return this.regEvent(j,"keydown",a)},delKeyEvent:function(b,a){this.delEvent(b,"keydown",a)},ctrlKey:function(a){a=a||window.event;if(!a){return false}return(infst.mac)?(a.metaKey||a.ctrlKey):a.ctrlKey},mouseButton:function(b){b=b||window.event;var a=b.button;if(infst.ie){return(a==4)?"middle":(a==2)?"right":(a==1)?"left":null}else{return(a==2)?"right":(a==1)?"middle":(a==0)?"left":null}},dispatchEvent:function(d,b,a){var c;if(!a){a={}}if(document.createEvent){if(a.screenX||a.screenY||a.clientX||a.clientY||a.ctrlKey||a.altKey||a.shiftKey||a.metaKey||a.button||a.relatedTarget){c=document.createEvent("MouseEvents");c.initMouseEvent(b,a.canBubble,a.cancelable,a.view,a.detail,a.screenX,a.screenY,a.clientX,a.clientY,a.ctrlKey,a.altKey,a.shiftKey,a.metaKey,a.button,a.relatedTarget)}else{c=document.createEvent("UIEvents");c.initUIEvent(b,a.canBubble,a.cancelable,a.view,a.detail)}d.dispatchEvent(c)}else{if(document.createEventObject){var c=document.createEventObject();c.detail=a.detail;c.screenX=a.screenX;c.screenY=a.screenY;c.clientX=a.clientX;c.clientY=a.clientY;c.ctrlKey=a.ctrlKey;c.altKey=a.altKey;c.shiftKey=a.shiftKey;c.metaKey=a.metaKey;c.button=a.button;c.relatedTarget=a.relatedTarget;d.fireEvent("on"+b,c)}}},cancelBubble:function(a){if(!a){a=window.event}if(a.stopPropagation){a.stopPropagation()}else{a.cancelBubble=true}},preventDefault:function(a){if(!a){a=window.event}if(a.preventDefault){a.preventDefault()}else{a.returnValue=false}},getWindowSize:function(){var a=h=0;if(window.scrollMaxY||window.scrollMaxX){a=document.documentElement.clientWidth+window.scrollMaxX;h=document.documentElement.clientHeight+window.scrollMaxY}else{a=Math.max(document.body.scrollWidth,document.documentElement.clientWidth);h=Math.max(document.body.scrollHeight,document.documentElement.clientHeight)}return{width:a,height:h}},elmPos:function(a){var b=curtop=0;if(a.offsetParent){do{b+=a.offsetLeft;curtop+=a.offsetTop}while(a=a.offsetParent)}return{x:b,y:curtop}},mouseCoords:function(a){a=a||window.event;var b;if(a.pageX||a.pageY){b={x:a.pageX,y:a.pageY}}else{if(a.clientX||a.clientY){posx=a.clientX+document.documentElement.scrollLeft;posy=a.clientY+document.documentElement.scrollTop;if(document.body){posx+=document.body.scrollLeft;posy+=document.body.scrollTop}b={x:posx,y:posy}}}return b},relativeMousePos:function(b,d){var a=this.mouseCoords(b);var c=this.elmPos(d);a.x-=c.x;a.y-=c.y;do{if(d.tagName=="BODY"){break}a.x+=d.scrollLeft;a.y+=d.scrollTop}while(d=d.offsetParent);return a},setUnselectable:function(a){if(this.ie){a.unselectable="on"}else{a.style.setProperty("-moz-user-select","none",null);a.style.setProperty("-khtml-user-select","none",null);a.style.setProperty("user-select","none",null)}a.onselectstart=function(b){return false}},ajax:function(j){if(!j){j={}}var b=j.method||"POST";var w=j.data||{};var n=j.dataType||"json";var d=j.url||this.conf.ajaxDefaultURL;var g=(j.async==undefined)?true:j.async;var m=j.timeout||15000;var x=null;var l=false;var f=j.onSuccess;var q=j.onStart;var u=j.onFinish;var k=j.onError;var c=(j.errPrompt==undefined)?true:j.errPrompt;var v=(j.timeoutErrPrompt==undefined)?true:j.timeoutErrPrompt;var a=null;if(!k){k=function(e){if(c){if(e.status==0||e.status>12000){alert("Error: Server Connection Failed")}else{alert(e.status+" "+e.statusText+"\n\n"+e.responseText)}}}}var o=function(){l=true;if(u){u()}if(a){a.abort()}if(v){alert("Error: AJAX Timeout")}};var r=function(){if(a.readyState==4){clearTimeout(x);if(!l&&u){u()}if(a.status>=200&&a.status<300){if(f){var e=(n=="xml")?a.responseXML:(n=="text")?a.responseText:JSON.parse(a.responseText);f(e)}}else{if(!l&&k){k(a)}}a=null}};if(w!=null&&typeof w!="string"){var t=[];for(var p in w){t.push(encodeURIComponent(p)+"="+encodeURIComponent(w[p]))}w=t.join("&")}if(b.toUpperCase()=="GET"){if(d.indexOf("?")==-1){d+="?"}d+=w}x=setTimeout(o,m);if(q){q()}try{a=window.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest();if(g){a.onreadystatechange=r}a.open(b,d,g);a.setRequestHeader("Content-type","application/x-www-form-urlencoded");if(b.toUpperCase()=="POST"){a.setRequestHeader("Content-length",w.length)}a.send(w)}catch(s){clearTimeout(x);k(a);if(u){u()}}if(!g&&a){r()}return a},isArray:function(b){return Object.prototype.toString.call(b)==="[object Array]"},clone:function(a){return this.extend({},a)},preloadImgPending:[],preloadImg:function(b,c){if(b==null){return}if(!this.isArray(b)){b=[b]}if(c){if(!c.match(/\/$/)){c+="/"}for(var a=0;a<b.length;a++){b[a]=c+b[a]}}for(var a=0;a<b.length;a++){document.createElement("img").src=b[a]}},preloadImgDefaultURL:function(){var b=[];for(var a=0;a<arguments.length;a++){b.push(arguments[a])}if(this.conf.imgURL){b=b.concat(this.preloadImgPending);this.preloadImgPending=[];this.preloadImg(b,this.conf.imgURL)}else{this.preloadImgPending=this.preloadImgPending.concat(b)}}});