var EventCache=function(){var listEvents=[];return{listEvents:listEvents,add:function(node,sEventName,fHandler){listEvents.push(arguments);},flush:function(){var i,item;for(i=listEvents.length-1;i>=0;i=i-1){item=listEvents[i];if(item[0].removeEventListener){item[0].removeEventListener(item[1],item[2],item[3]);};if(item[1].substring(0,2)!="on"){item[1]="on"+item[1];};if(item[0].detachEvent){item[0].detachEvent(item[1],item[2]);};item[0][item[1]]=null;};}};}();function addEvent(obj,type,fn){if(obj.addEventListener){obj.addEventListener(type,fn,false);EventCache.add(obj,type,fn);}
else if(obj.attachEvent){obj["e"+type+fn]=fn;obj[type+fn]=function(){obj["e"+type+fn](window.event);}
obj.attachEvent("on"+type,obj[type+fn]);EventCache.add(obj,type,fn);}
else{obj["on"+type]=obj["e"+type+fn];}}
addEvent(window,'unload',EventCache.flush);function removeElementById(object_id,opac){var passed=parseInt(opac);var newOpac=parseInt(passed-10);if(newOpac>0){$e(object_id).style.opacity='.'+newOpac;$e(object_id).style.filter="alpha(opacity:"+newOpac+")";opacityID=window.setTimeout("removeElementById('"+object_id+"', '"+newOpac+"')",20);}else{$e(object_id).parentNode.removeChild($e(object_id));}}
function print_r(input,_indent)
{var indent=(typeof(_indent)=='string')?_indent+'    ':'    ';var paren_indent=(typeof(_indent)=='string')?_indent+'  ':'';if(typeof(input)=='string'){var output="'"+input+"'\n"}else if(typeof(input)=='boolean'){var output=(input?'true':'false')+"\n"}else if(typeof(input)=='number'){var output=(input)+"\n"}else if(typeof(input)=='object'){var output=((input.reverse)?'Array':'Object')+"\n"
output+=paren_indent+"(\n";for(var i in input){output+=indent+"["+i+"] => "+print_r(input[i],indent)}
output+=paren_indent+")\n"}
return output};function formSubmit(name){var obj=eval("document."+name);var onsubmit=obj.onsubmit();if(onsubmit){obj.submit();}}
function is_numeric(mixed_var){return!isNaN(mixed_var);};function count(mixed_var,mode){var key,cnt=0;if(mode=='COUNT_RECURSIVE')mode=1;if(mode!=1)mode=0;for(key in mixed_var){cnt++;if(mode==1&&mixed_var[key]&&(mixed_var[key].constructor===Array||mixed_var[key].constructor===Object)){cnt+=count(mixed_var[key],1);}}
return cnt;}
function serialize(_obj){var type=typeof(_obj);if(parseFloat(_obj)){type="number";}
switch(type){case"number":if(isNaN(_obj)){return false;}else{return(Math.floor(_obj)==_obj?"i":"d")+":"+_obj+";";}
break;case"string":return"s:"+_obj.length+":\""+_obj+"\";";break;case"boolen":return"b:"+(_obj?"1":"0")+";";break;case"object":if(_obj==null){return"N;";}
_ser="a:"+count(_obj)+":{";for(i in _obj){_ser+=serialize(i)+serialize(_obj[i]);}
_ser+="}";return _ser;break;case"undefined":return"N;";break;}};function unserialize(data){var error=function(type,msg,filename,line){throw new window[type](msg,filename,line);};var read_until=function(data,offset,stopchr){var buf=[];var chr=data.slice(offset,offset+1);var i=2;while(chr!=stopchr){if((i+offset)>data.length){error('Error','Invalid');}
buf.push(chr);chr=data.slice(offset+(i-1),offset+i);i+=1;}
return[buf.length,buf.join('')];};var read_chrs=function(data,offset,length){buf=[];for(var i=0;i<length;i++){var chr=data.slice(offset+(i-1),offset+i);buf.push(chr);}
return[buf.length,buf.join('')];};var _unserialize=function(data,offset){if(!offset)offset=0;var buf=[];var dtype=(data.slice(offset,offset+1)).toLowerCase();var dataoffset=offset+2;var typeconvert=new Function('x','return x');var chrs=0;var datalength=0;switch(dtype){case"i":typeconvert=new Function('x','return parseInt(x)');var readData=read_until(data,dataoffset,';');var chrs=readData[0];var readdata=readData[1];dataoffset+=chrs+1;break;case"b":typeconvert=new Function('x','return (parseInt(x) == 1)');var readData=read_until(data,dataoffset,';');var chrs=readData[0];var readdata=readData[1];dataoffset+=chrs+1;break;case"d":typeconvert=new Function('x','return parseFloat(x)');var readData=read_until(data,dataoffset,';');var chrs=readData[0];var readdata=readData[1];dataoffset+=chrs+1;break;case"n":readdata=null;break;case"s":var ccount=read_until(data,dataoffset,':');var chrs=ccount[0];var stringlength=ccount[1];dataoffset+=chrs+2;var readData=read_chrs(data,dataoffset+1,parseInt(stringlength));var chrs=readData[0];var readdata=readData[1];dataoffset+=chrs+2;if(chrs!=parseInt(stringlength)&&chrs!=readdata.length){error('SyntaxError','String length mismatch');}
break;case"a":var readdata={};var keyandchrs=read_until(data,dataoffset,':');var chrs=keyandchrs[0];var keys=keyandchrs[1];dataoffset+=chrs+2;for(var i=0;i<parseInt(keys);i++){var kprops=_unserialize(data,dataoffset);var kchrs=kprops[1];var key=kprops[2];dataoffset+=kchrs;var vprops=_unserialize(data,dataoffset);var vchrs=vprops[1];var value=vprops[2];dataoffset+=vchrs;readdata[key]=value;}
dataoffset+=1;break;default:error('SyntaxError','Unknown / Unhandled data type(s): '+dtype);break;}
return[dtype,dataoffset-offset,typeconvert(readdata)];};return _unserialize(data,0)[2];}
function array_sum(array){var key,sum=0;if(!array||(array.constructor!==Array&&array.constructor!==Object)||!array.length){return null;}
for(var key in array){sum+=array[key];}
return sum;}
function array_values(input){var tmp_arr=new Array(),cnt=0;for(key in input){tmp_arr[cnt]=input[key];cnt++;}
return tmp_arr;}
function inArray(needle,haystack,strict){var found=false,key,strict=!!strict;for(key in haystack){if((strict&&haystack[key]===needle)||(!strict&&haystack[key]==needle)){found=true;break;}}
return found;}