var Fat={make_hex:function(r,g,b){r=r.toString(16);if(r.length==1)r='0'+r;g=g.toString(16);if(g.length==1)g='0'+g;b=b.toString(16);if(b.length==1)b='0'+b;return"#"+r+g+b;},fade_all:function(dur){var a=document.getElementsByTagName("*");for(var i=0;i<a.length;i++){var o=a[i];var r=/fade-?(\w{3,6})?/.exec(o.className);if(r){if(!r[1])r[1]="";if(o.id)Fat.fade_element(o.id,null,dur,"#"+r[1]);}}},fade_element:function(id,fps,duration,from,to){if(!fps)fps=30;if(!duration)duration=3000;if(!from||from=="#")from="#FFFF33";if(!to)to=this.get_bgcolor(id);var frames=Math.round(fps*(duration/1000));var interval=duration/frames;var delay=interval;var frame=0;if(from.length<7)from+=from.substr(1,3);if(to.length<7)to+=to.substr(1,3);var rf=parseInt(from.substr(1,2),16);var gf=parseInt(from.substr(3,2),16);var bf=parseInt(from.substr(5,2),16);var rt=parseInt(to.substr(1,2),16);var gt=parseInt(to.substr(3,2),16);var bt=parseInt(to.substr(5,2),16);var r,g,b,h;while(frame<frames){r=Math.floor(rf*((frames-frame)/frames) + rt * (frame/frames));g=Math.floor(gf*((frames-frame)/frames) + gt * (frame/frames));b=Math.floor(bf*((frames-frame)/frames) + bt * (frame/frames));h=this.make_hex(r,g,b);setTimeout("Fat.set_bgcolor('"+id+"','"+h+"')",delay);frame++;delay=interval*frame;}setTimeout("Fat.set_bgcolor('"+id+"','"+to+"')",delay);},set_bgcolor:function(id,c){var o=document.getElementById(id);o.style.backgroundColor=c;},get_bgcolor:function(id){var o=document.getElementById(id);while(o){var c;if(window.getComputedStyle)c=window.getComputedStyle(o,null).getPropertyValue("background-color");if(o.currentStyle)c=o.currentStyle.backgroundColor;if((c!=""&&c!="transparent")||o.tagName=="BODY"){break;}o=o.parentNode;}if(c==undefined||c==""||c=="transparent")c="#FFFFFF";var rgb=c.match(/rgb\s*\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*\)/);if(rgb)c=this.make_hex(parseInt(rgb[1]),parseInt(rgb[2]),parseInt(rgb[3]));return c;}};function isDefined(a){return typeof(a)!='undefined';}function isObject(a){return typeof(a)=='object';}function isString(a){return typeof(a)=='string';}function isArray(a){return isObject(a)&&a.constructor==Array;}var isIE=document.all;var isNS6=document.getElementById&&!document.all;var isOpera=window.opera;var isSafari=navigator.userAgent.match('AppleWebKit');var ieTrueBody=document.compatMode&&document.compatMode!='BackCompat'?document.documentElement:document.body;if(!khanh)var khanh={};if(!khanh.core){khanh.core={push:function(arr,elm){arr[arr.length]=elm;},find:function(arr,s){for(var i=0;i<arr.length;i++)if(arr[i]==s)return i;return false;},browser:function(s){if(s)s=s.toLowerCase();else return false;var agentStr=navigator.userAgent.toLowerCase();if(agentStr.indexOf(s)!=-1){if(s=='msie'&&(agentStr.indexOf('opera')!=-1))return false;return true;}else return false;},setCookie:function(cookieName,cookieValue,nDays){var today=new Date();var expire=new Date();if(nDays==null||nDays==0)nDays=1;expire.setTime(today.getTime()+3600000*24*nDays);document.cookie=cookieName+'='+escape(cookieValue)+';expires='+expire.toGMTString();},getCookie:function(cookieName){var theCookie=''+document.cookie;var ind=theCookie.indexOf(cookieName);if(ind==-1||cookieName=='')return'';var ind1=theCookie.indexOf(';',ind);if(ind1==-1)ind1=theCookie.length;if(ind+cookieName.length==theCookie.indexOf(';',ind))return'';else return unescape(theCookie.substring(ind+cookieName.length+1,ind1));},randomString:function(strLen,chars){if(!strLen)strLen=8;if(!chars)chars="0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz";var str='';for(i=0;i<strLen;i++){rnum=Math.floor(Math.random()*chars.length);str+=chars.substring(rnum,rnum+1);}return str;},unEscape:function(s){return unescape(s).replace(/\+/g,' ');},delay:function(t){date=new Date();var curDate=null;do curDate=new Date();while(curDate-date<t);}};}if(!khanh)var khanh={};if(!khanh.dom){khanh.dom={insertAdjacentElement:function(elm,where,parsedNode){if(isIE)elm.insertAdjacentElement(where,parsedNode);else{switch(where){case'beforeBegin':elm.parentNode.insertBefore(parsedNode,elm);break;case'afterBegin':elm.insertBefore(parsedNode,elm.firstChild);break;case'beforeEnd':elm.appendChild(parsedNode);break;case'afterEnd':if(elm.nextSibling)elm.parentNode.insertBefore(parsedNode,elm.nextSibling);else elm.parentNode.appendChild(parsedNode);break;}}},insertAdjacentHTML:function(elm,where,htmlStr){if(isIE)elm.insertAdjacentHTML(where,htmlStr);else{var r=elm.ownerDocument.createRange();r.setStartBefore(elm);var parsedHTML=r.createContextualFragment(htmlStr);this.insertAdjacentElement(elm,where,parsedHTML);}},insertAdjacentText:function(elm,where,txtStr){if(isIE)elm.insertAdjacentText(where,txtStr);else{var parsedText=document.createTextNode(txtStr);this.insertAdjacentElement(elm,where,parsedText);}}};}if(!khanh)var khanh={};if(!khanh.event){khanh.event={unloadEvents:null,domloadEvents:[],domLoaded:0,init:function(){if(!this.unloadEvents){this.unloadEvents=[];var that=this;this.add(window,'unload',function(){that.cleanup(that);});}},cleanup:function(that){for(var i=0;i<that.unloadEvents.length;i++)with(that.unloadEvents[i])that.remove(obj,type,fn,useCapture);that.unloadEvents='';},add:function(obj,type,fn,useCapture){if(type=='domload'){this.domloadEvents.push(fn);return 1;}this.init();if(obj.addEventListener)obj.addEventListener(type,fn,useCapture);else if(obj.attachEvent)obj.attachEvent('on'+type,fn);else return 0;this.unloadEvents.push({obj:obj,type:type,fn:fn,useCapture:useCapture});return 1;},wait:function(id,fn,time,showError){var pollTime=20;if(isDefined(time)&&time!=0){if(document.getElementById(id))khanh.event.runJS(fn);else{setTimeout("khanh.event.wait('"+id+"', '"+fn+"', "+(time>0?(time>pollTime?time-pollTime:0):(time<0&&khanh.event.domLoaded?(Math.abs(time)>pollTime?Math.abs(time)-pollTime:0):time))+", "+showError+")",pollTime);}}else if(!isDefined(time)){if(document.getElementById(id))khanh.event.runJS(fn);else setTimeout("khanh.event.wait('"+id+"', '"+fn+"')",pollTime);}else if(showError)alert(fn+' timed out.\n['+id+'] not found!')},runJS:function(jsText){if(window.execScript)window.execScript(jsText);else if(eval.call)eval.call(window,jsText);},remove:function(obj,type,fn,useCapture){if(obj.removeEventListener)obj.removeEventListener(type,fn,useCapture);else if(obj.detachEvent)obj.detachEvent('on'+type,fn);else return 0;return 1;},src:function(e){e=e||window.event;var elm;if(e.target)elm=e.target.nodeType==3?e.target.parentNode:e.target;else elm=e.srcElement;return elm;},initDomload:function(){if(document.addEventListener)document.addEventListener('DOMContentLoaded',this.ondomload,0);else if(khanh.core.browser('msie')){document.write('<script id="__ie_onload" defer src=javascript:void(0)></script>');document.getElementById('__ie_onload').onreadystatechange=function(){if(this.readyState=='complete')khanh.event.ondomload();};}else if(khanh.core.browser('WebKit')){var _timer=setInterval(function(){if(/loaded|complete/.test(document.readyState)){clearInterval(_timer);khanh.event.ondomload();}},10);}this.add(window,'load',this.ondomload);},ondomload:function(){if(khanh.event.domLoaded)return;khanh.event.domLoaded=1;for(var i=0;i<khanh.event.domloadEvents.length;i++)khanh.event.domloadEvents[i]();}};khanh.event.initDomload();}if(!khanh)var khanh={};if(!khanh.loader){khanh.loader=function(){this.url='';this.tracker='';this.stack=null;this.queue=null;this.onload=null;this.add=function(include){this.push(include,'stack');};this.then=function(include){this.push(include,'queue');};this.push=function(include,array){if(!isArray(include['files']))if(include['files'])include['files']=new Array(include['files']);else return;if(!this[array])this[array]=[];this[array][this[array].length]=include;};this.load=function(file){if(file)this.url=this.getURL(file);if(!this.stack&&this.queue&&this.queue.length)this.stack=this.queue.splice(0,1);this.tracker='';for(var i=0;i<this.stack.length;i++){var files=this.stack[i]['files'];if(isDefined(files))for(var j=0;j<files.length;j++)this.tracker+=this.url+files[j];}var stack=this.stack;this.stack=null;for(var i=0;i<stack.length;i++){var files=stack[i]['files'];var callback=null;if(stack[i]['type']=='js')callback=this.runJS;else if(stack[i]['type']=='css')callback=this.addCSS;if(isDefined(files)&&callback)for(var j=0;j<files.length;j++)this.loadURL(this.url+files[j],callback,stack[i]['replace']);}};this.loadURL=function(url,callback,RegExpObj){var xmlhttp=null;try{xmlhttp=new ActiveXObject('Msxml2.XMLHTTP');}catch(e){try{xmlhttp=new ActiveXObject('Microsoft.XMLHTTP');}catch(E){xmlhttp=null;}}if(!xmlhttp&&isDefined(XMLHttpRequest))xmlhttp=new XMLHttpRequest();if(xmlhttp){xmlhttp.open('GET',url,1);xmlhttp.setRequestHeader('If-Modified-Since','Sat, 1 Jan 2000 00:00:00 GMT');var that=this;xmlhttp.onreadystatechange=function(){if(xmlhttp.readyState==4){var responseText=xmlhttp.responseText;if(RegExpObj)for(var i=0;i<RegExpObj.length;i++)responseText=responseText.replace(new RegExp(RegExpObj[i]['pattern'],RegExpObj[i]['modifiers']),RegExpObj[i]['replacement']);callback(that,url,responseText);}};xmlhttp.send(null);}};this.runJS=function(that,url,jsText){if(window.execScript){window.execScript(jsText);that.checkDone(url);}else if(eval.call){eval.call(window,jsText);that.checkDone(url);}};this.addCSS=function(that,url,cssText){var style=document.createElement('style');style.type='text/css';if(style.styleSheet)style.styleSheet.cssText=cssText;else style.appendChild(document.createTextNode(cssText));document.getElementsByTagName('head')[0].appendChild(style);that.checkDone(url);};this.checkDone=function(url){this.tracker=this.tracker.replace(new RegExp(url),'');if(!this.tracker){if(this.queue&&this.queue.length){this.stack=this.queue.splice(0,1);if(!this.queue.length)this.queue=null;this.load();}else this.onload();}};this.getURL=function(file){var scripts=document.getElementsByTagName('script');for(var i=scripts.length-1;i>=0;i--){if(new RegExp(file.replace(/\./g,'\.')).test(scripts[i].src)){var core=/includes\/core\.php\?dir=/;if(core.test(scripts[i].src))return scripts[i].src.replace(/&?(file|type)=.+(&|$)/g,'').replace(core,'')+'/';else return scripts[i].src.replace(/[^\/]+$/,'');}}};};}if(!khanh)var khanh={};if(!khanh.debug){khanh.debug={buffer:[],print:function(text,dump){if(text!=null){if(dump)text=text.replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/\n/g,'<br />');this.buffer.push(text+'');}if(document.body){if(!this.box){this.box=document.createElement('div');this.box.style.cssText='background:#fff;border: 5px solid #000';this.box.innerHTML='<h2 style="text-align:center;color:#fff;background:#000;margin:0;padding:0 0 5px 0;">Debugging Output</h2>'+'<div style="padding:5px;"></div>';document.body.appendChild(this.box);this.output=this.box.lastChild;}for(var i=0;i<this.buffer.length;i++){this.output.innerHTML+=this.buffer[i]+'<br />\n';}this.buffer=[];}else if(!this.flush){this.flush=function(){khanh.debug.print();};khanh.event.add(window,'domload',this.flush);}},iterateObj:function(obj,t){var s='';if(!isDefined(t))t='';for(v in obj){if(typeof(obj[v])=='object')u='+ ';else u='- ';s+=t+u+v+': '+typeof(obj[v])+'\n';if(typeof(obj[v])=='object'){s+=this.iterateObj(obj[v],t+'\t');}}return s;}};}function trace(text){khanh.debug.print(text);};function dump(text){khanh.debug.print(text,1);};