function Class(){}
Class.prototype.construct=function(){};Class.__asMethod__=function(func,superClass){return function(){var currentSuperClass=this.$;this.$=superClass;var ret=func.apply(this,arguments);this.$=currentSuperClass;return ret;};};Class.extend=function(def){var classDef=function(){if(arguments[0]!==Class){this.construct.apply(this,arguments);}};var proto=new this(Class);var superClass=this.prototype;for(var n in def){var item=def[n];if(item instanceof Function){item=Class.__asMethod__(item,superClass);}
proto[n]=item;}
proto.$=superClass;classDef.prototype=proto;classDef.extend=this.extend;return classDef;};var PageList=Class.extend({construct:function(pageIndex,totalPage,totalSize,callbackFunction,isScroll){this.pageIndex=pageIndex;this.totalPage=totalPage;this.total=totalSize;this.callbackFunction=callbackFunction;this.isScroll=isScroll;this.tailNumber=8;this.headNumber=8;this.width=3;this.twoend=2;if(this.pageIndex-1>0){this.prev=this.pageIndex-1;}else{this.prev=0;}
if(this.pageIndex<this.totalPage){this.next=this.pageIndex+1;}else{this.next=0;}
this.class_prefix="p";},displayList:function(){var result="";if(this.total==0){}else{if(this.totalPage<=1){result+="<div align='center' class='p_total'><div class='p_bar'>"+page_total+" ("+this.total+")</div></div></div>";}else{result="<div class='"+this.class_prefix+"_bar' align='center'><nobr>";result+=this.getPrevPageNum()+"&nbsp;&nbsp;";if(this.totalPage>(this.twoend*2+this.width*2+1)){result+=this.getHead();result+=this.getCurPageNum(this.pageIndex);result+=this.getTail();}else{for(var i=1;i<=this.totalPage;i++){if(i!=this.pageIndex){result+=this.getPageNum(i);}else{result+=this.getCurPageNum(i);}}}
result+="&nbsp;&nbsp;"+this.getNextPageNum();result+="</nobr>";result+="<div align='center' class='p_total'>"+page_total+" ("+this.total+")</div></div>";}}
return result;},getHead:function(){var result="";if(this.pageIndex-this.headNumber>1){var start=(this.pageIndex-this.width<this.totalPage-this.headNumber?this.pageIndex-this.width:this.totalPage-this.headNumber);for(var i=1;i<=this.twoend;i++){result+=this.getPageNum(i);}
if(start>this.twoend+1){result+="<span class='nolink'>&nbsp;...&nbsp;</span>";}
for(var i=start;i<this.pageIndex;i++){result+=this.getPageNum(i);}}else{for(var i=1;i<this.pageIndex;i++){result+=this.getPageNum(i);}}
return result;},getTail:function(){var result="";if(this.pageIndex+this.tailNumber<this.totalPage){var end=(this.pageIndex+this.width<this.headNumber?this.headNumber:this.pageIndex+this.width);for(var i=this.pageIndex+1;i<=end;i++){result+=this.getPageNum(i);}
if(end<this.totalPage-this.twoend){result+="<span class='nolink'>&nbsp;...&nbsp;</span>";}
for(var i=this.totalPage-this.twoend+1;i<=this.totalPage;i++){result+=this.getPageNum(i);}}else{for(var i=this.pageIndex+1;i<=this.totalPage;i++){result+=this.getPageNum(i);}}
return result;},getPageNum:function(index){var f=this.callbackFunction+"("+index+");";if(this.isScroll){f+="scroll(0,0);";}
return"<a href=\"#\" onclick=\""+f+";addHistory("+index+");return false\" class='"+this.class_prefix+"_num'>"+index+"</a>";},getCurPageNum:function(index){return"<span class='pageon'>"+index+"</span>";},getPrevPageNum:function(){if(this.prev>0){var f=this.callbackFunction+"("+this.prev+");";if(this.isScroll){f+="scroll(0,0);";}
var prev_ten;if(this.pageIndex>10){var prev_ten_num=this.pageIndex-10;var t=this.callbackFunction+"("+prev_ten_num+");";prev_ten="<a href=\"#\" onclick=\""+t+";addHistory("+prev_ten_num+");return false\" class='"+this.class_prefix+"_num'>"+prev_ten_page+"</a>"}else{prev_ten="";}
return"<a href=\"#\" onclick=\""+f+";addHistory("+this.prev+");return false\" class='"+this.class_prefix+"_num'>"+prev_page+"</a>"+prev_ten;}else{return prev_page;}},getNextPageNum:function(){if(this.next>0){var f=this.callbackFunction+"("+this.next+");";if(this.isScroll){f+="scroll(0,0);";}
var next_ten;if(this.totalPage-this.pageIndex>=10){var next_ten_num=this.pageIndex+10;var t=this.callbackFunction+"("+next_ten_num+");";next_ten="<a href=\"#\" onclick=\""+t+";addHistory("+next_ten_num+");return false\" class='"+this.class_prefix+"_num'>"+next_ten_page+"</a>"}else{next_ten="";}
return next_ten+"<a href=\"#\" onclick=\""+f+";addHistory("+this.next+");return false\" class='"+this.class_prefix+"_num'>"+next_page+"</a>";}else{return next_page;}}});var SmallPageList=PageList.extend({construct:function(pageIndex,totalPage,totalSize,callbackFunction){this.pageIndex=pageIndex;this.totalPage=totalPage;this.total=totalSize;this.callbackFunction=callbackFunction;this.tailNumber=1;this.headNumber=1;this.width=1;this.twoend=1;if(this.pageIndex-1>0){this.prev=this.pageIndex-1;}else{this.prev=0;}
if(this.pageIndex<this.totalPage){this.next=this.pageIndex+1;}else{this.next=0;}
this.class_prefix="sp";}});var NUMBER_OF_STARS=5;var ratingBaseScore=1;function displayHover(ratingId,star,ratingImagePrefixName,ext){var obj=document.getElementById(""+ratingId+"_1");var obj1=document.getElementById(ratingId+"_1");var nStar1=obj.parentNode.offsetLeft;var ImgWidth=parseInt(obj.parentNode.getAttribute("ImgWidth"));var myRating=obj.parentNode.myRating;for(var i=1;i<=5;i++){document.getElementById(""+ratingId+"_"+i).setAttribute("src","/images/stars/"+ratingImagePrefixName+"_off."+ext);}
for(var i=1;i<=star;i++){var obj2=document.getElementById(ratingId+"_"+i);var currLeft=parseInt(document.getElementById(""+ratingId+"_"+i).parentNode.getAttribute("posX"));if(star==i){if(((currLeft-nStar1)%ImgWidth<ImgWidth/2)){obj2.setAttribute("src","/images/stars/"+ratingImagePrefixName+"_half."+ext);obj1.parentNode.setAttribute("rating",(star-0.5)*ratingBaseScore);obj1.parentNode.rating=(star-0.5)*ratingBaseScore;}else{obj2.setAttribute("src","/images/stars/"+ratingImagePrefixName+"_on."+ext);obj1.parentNode.setAttribute("rating",star*ratingBaseScore);obj1.parentNode.rating=star*ratingBaseScore;}}else{document.getElementById(""+ratingId+"_"+i).setAttribute("src","/images/stars/"+ratingImagePrefixName+"_on."+ext);}}}
function displayNormal(ratingId,star,ratingImagePrefixName,ext){for(var i=1;i<=5;i++){var status=document.getElementById(""+ratingId+"_"+i).className;document.getElementById(""+ratingId+"_"+i).setAttribute("src","/images/stars/"+ratingImagePrefixName+"_"+status+"."+ext);}}
function initRating(ratingType,canRating,ratingImagePrefixName,tagName,ext){if(ratingImagePrefixName==undefined){ratingImagePrefixName="rating";}
if(ext==undefined){ext="jpg";}
if(tagName!=null)
var ratings=document.getElementsByTagName(tagName);else
var ratings=document.getElementsByTagName("span");for(var i=0;i<ratings.length;i++){if(ratings[i].className!=ratingType){continue;}
var rating=ratings[i].firstChild.nodeValue;if(typeof rating!="string")
continue;rating=parseInt(rating*2)/2;if(rating!=null&&!isNaN(rating)){rating=rating/ratingBaseScore;ratings[i].removeChild(ratings[i].firstChild);ratings[i].innerHTML="";if(rating>NUMBER_OF_STARS||rating<0){NUMBER_OF_STARS=5;}
var ImgWid=document.createElement("img");ImgWid.setAttribute("src","/images/stars/"+ratingImagePrefixName+"_on."+ext);ratings[i].setAttribute("ImgWidth",ImgWid.width);for(var j=1;j<=NUMBER_OF_STARS;j++){var star=document.createElement("img");if(rating>0.5){star.setAttribute("src","/images/stars/"+ratingImagePrefixName+"_on."+ext);star.className="on";rating--;}else{if(rating>0){star.setAttribute("src","/images/stars/"+ratingImagePrefixName+"_half."+ext);star.className="half";rating=0;}else{star.setAttribute("src","/images/stars/"+ratingImagePrefixName+"_off."+ext);star.className="off";}}
var widgetId=ratings[i].getAttribute("id");star.setAttribute("id",""+widgetId+"_"+j);if(canRating==true){star.onmousemove=new Function("evt","displayHover('"+widgetId+"', "+j+",'"+ratingImagePrefixName+"','"+ext+"');");star.onmouseout=new Function("evt","displayNormal('"+widgetId+"', "+j+",'"+ratingImagePrefixName+"','"+ext+"');");}
ratings[i].appendChild(star);}
ratings[i].style.visibility="visible";}}}
function mouseX(evt){if(!evt){evt=window.event;}
if(evt.clientX){return evt.clientX;}else{return evt.pageX;}}
function mouseY(evt){if(!evt){evt=window.event;}
if(evt.clientY){return evt.clientY;}else{return evt.pageY;}}
function follow(evt,obj1){if(obj1!=null){obj1.posX=mouseX(evt);obj1.setAttribute("posX",mouseX(evt));}}
var doc=document;var clAlert;var isFocus=false;var options={border:1,borderStyle:"solid",borderColor:"#000000",width:320,titleColor:"#007A99",titleFontColor:"#FFFFFF",titleWeight:700,titleBorderColor:"#000000",contentColor:"#FFFFFF",contentFontColor:"#000000"};clAlert=new Alert(options);function Alert(options){var ao=this;ao.version="1.1";if(!window.XMLHttpRequest){var ie6=true;}
var aw,ab,at,ac,bc,alb,mouseX,mouseY,pe,alertY,alertX;if(ie6){var af;}
var Client={viewportWidth:function(){return self.innerWidth||(doc.documentElement.clientWidth||doc.body.clientWidth);},viewportHeight:function(){return self.innerHeight||(doc.documentElement.clientHeight||doc.body.clientHeight);},viewportSize:function(){return{width:this.viewportWidth(),height:this.viewportHeight()};}};ao.Position=rePos;ao.Dialog=function(title,text,button,buttonEvent){if(doc.getElementById("modalWindow")){return;}
createWindow("dialog",title,text,button,buttonEvent);rePos();if(ie6){changeSelect(true);}alb.focus();};ao.Confirm=function(title,text,button,buttonEvent,button2,button2Event){if(doc.getElementById("modalWindow")){return;}
createWindow("confirm",title,text,button,buttonEvent,button2,button2Event);rePos();if(ie6){changeSelect(true);}cb.focus();};function rePos(){var pageY=window.pageYOffset||doc.documentElement.scrollTop;var pageX=window.pageXOffset||doc.documentElement.scrollLeft;ab.style.left=(Client.viewportWidth()-ab.offsetWidth)/2+pageX+"px";ab.style.top=(Client.viewportHeight()-ab.offsetHeight)/2+pageY+"px";if(ie6){af.style.left=(Client.viewportWidth()-ab.offsetWidth)/2+pageX+"px";af.style.top=(Client.viewportHeight()-ab.offsetHeight)/2+pageY+"px";af.style.height=ab.offsetHeight+"px";af.style.visibility="visible";}
ab.style.visibility="visible";}
function changeSelect(bool){var sb=doc.getElementsByTagName("select");for(var i=0;i<sb.length;i++){sb[i].disabled=bool;}}
function alarm_OK(event,on_OK){if(ie6){changeSelect(false);}
doc.body.removeChild(aw);window.onscroll=null;window.onresize=null;aw=null;ab=null;at=null;ac=null;alb=null;bc=null;if(on_OK){try{e=(event)?event:window.event;on_OK(e);}catch(error){}}}
function alarm_CANCEL(event,on_CANCEL){if(ie6){changeSelect(false);}
doc.body.removeChild(aw);window.onscroll=null;window.onresize=null;aw=null;ab=null;at=null;ac=null;alb=null;bc=null;if(on_CANCEL){try{e=(event)?event:window.event;on_CANCEL(e);}
catch(error){}}}
function mouseDown(e){e=(e==null)?window.event:e;target=(e.target)?e.target:e.srcElement;if(target.id=="content"){mouseX=e.clientX;mouseY=e.clientY;pe=target.parentNode;alertX=pe.style.left;alertY=pe.style.top;doc.onmousemove=mouseMove;doc.onmouseup=mouseUp;doc.onselectstart=function(){return false;};return false;}}
function mouseMove(e){e=(e==null)?window.event:e;newX=parseInt(alertX.split("px")[0]);newY=parseInt(alertY.split("px")[0]);pe.style.left=(newX+e.clientX-mouseX)+"px";pe.style.top=(newY+e.clientY-mouseY)+"px";if(ie6){af.style.left=(newX+e.clientX-mouseX)+"px";af.style.top=(newY+e.clientY-mouseY)+"px";}}
function mouseUp(e){e=(e==null)?window.event:e;doc.onmousemove=null;doc.onselectstart=null;}
function createWindow(alertType,title,text,button,buttonEvent,button2,button2Event){var msg="<div style='float:left;width:35px;height:35px;'><img src='/images/alert_blue.png' style='width:35px;height:35px;padding-top:5px;padding-right:15px;' /></div><div id=\"alert_msg\" style='float:left;width:260px;margin-top:10px;margin-left:5px;margin-bottom:10px;'><p><font color='#000000'>"+text+"</font></p></div>";aw=doc.body.appendChild(doc.createElement("div"));ab=aw.appendChild(doc.createElement("div"));at=ab.appendChild(doc.createElement("div"));ac=ab.appendChild(doc.createElement("div"));bc=ab.appendChild(doc.createElement("div"));aw.id="modalWindow";aw.style.height=doc.documentElement.scrollHeight+"px";aw.style.position="absolute";aw.style.width="100%";aw.style.top="0px";aw.style.left="0px";aw.style.zIndex="10000";aw.style.backgroundImage="url(tp.png)";ab.style.visibility="hidden";ab.style.position="absolute";ab.style.width=options.width+"px";ab.style.border=options.border+"px";ab.style.borderStyle=options.borderStyle;ab.style.borderColor=options.borderColor;ab.style.textAlign="center";ab.style.zIndex=101;ab.style.background=options.contentColor;if(ie6){af=aw.appendChild(doc.createElement("iframe"));af.src="javascript:void(0);";af.style.visibility="hidden";af.style.position="absolute";af.style.width=options.width+"px";af.style.zIndex=100;af.frameBorder="0";}
ac=ab.appendChild(doc.createElement("div"));ac.style.padding="5px";ac.id="content";ac.style.background=options.contentColor;ac.style.color=options.contentFontColor;ac.innerHTML=msg;ac.style.marginBottom="0px";ac.style.marginTop="0px";ac.style.textAlign="left";if(window.addEventListener){ac.addEventListener("mousedown",function(e){mouseDown(e);},false);}else{ac.onmousedown=mouseDown;}
bc=ab.appendChild(doc.createElement("div"));bc.style.background=options.contentColor;bc.style.marginBottom="0px";bc.style.marginTop="0px";bc.style.clear="both";if(alertType=="confirm"){cb=doc.createElement("div");cb.id="btn3";cb.style.cursor="pointer";cb.innerHTML="<div class='alert'>"+button2+"</div>";cb.tabIndex=0;cb.onclick=function(event){alarm_CANCEL(event,button2Event);};cb.onfocus=function(event){isFocus=true;};cb.onkeypress=function(event){if(isFocus&&(checkEnter(event)||checkSpace(event)))alarm_CANCEL(event,button2Event);};cb.style.marginRight="5px";cb.style.marginLeft="5px";cb.style.marginBottom="5px";bc.appendChild(cb);cb.style.width="150px";cb.style.height="25px";cb.style.styleFloat="right";cb.style.cssFloat="right";cb.style.overflow="visible";cb.style.zoom="1";doc.getElementById("btn3").style.background="url(/images/btn3.jpg)";}
alb=doc.createElement("div");alb.id="btn1";alb.style.cursor="pointer";alb.innerHTML="<div id='alertText' class='alert'>"+button+"</div>";if(alertType!="confirm")
alb.tabIndex=0;else
alb.tabIndex=1;alb.onclick=function(event){alarm_OK(event,buttonEvent);};alb.onfocus=function(event){isFocus=true;};alb.onkeypress=function(event){if(isFocus&&(checkEnter(event)||checkSpace(event)))alarm_OK(event,buttonEvent);};alb.style.marginRight="5px";alb.style.marginLeft="5px";alb.style.marginBottom="5px";alb.style.width="83px";alb.style.height="25px";alb.style.styleFloat="right";alb.style.cssFloat="right";alb.style.overflow="visible";alb.style.zoom="1";bc.appendChild(alb);doc.getElementById("btn1").style.background="url(/images/btn1.jpg)";window.onscroll=function(){ao.Position();};window.onresize=function(){ao.Position();};}}
window.dhtmlHistory={initialize:function(){if(this.isInternetExplorer()==false){return;}
if(historyStorage.hasKey("DhtmlHistory_pageLoaded")==false){this.fireOnNewListener=false;this.firstLoad=true;historyStorage.put("DhtmlHistory_pageLoaded",true);}else{this.fireOnNewListener=true;this.firstLoad=false;}},addListener:function(callback){this.listener=callback;if(this.fireOnNewListener==true){this.fireHistoryEvent(this.currentLocation);this.fireOnNewListener=false;}},add:function(newLocation,historyData){var self=this;var addImpl=function(){if(self.currentWaitTime>0){self.currentWaitTime=self.currentWaitTime-self.WAIT_TIME;}
newLocation=self.removeHash(newLocation);var idCheck=document.getElementById(newLocation);if(idCheck!=undefined||idCheck!=null){var message="Exception: History locations can not have "+"the same value as _any_ id's "+"that might be in the document, "+"due to a bug in Internet "+"Explorer; please ask the "+"developer to choose a history "+"location that does not match "+"any HTML id's in this "+"document. The following ID "+"is already taken and can not "+"be a location: "+newLocation;throw message;}
historyStorage.put(newLocation,historyData);self.ignoreLocationChange=true;this.ieAtomicLocationChange=true;self.currentLocation=newLocation;window.location.hash=newLocation;if(self.isInternetExplorer()){self.iframe.src="/js/blank.html?"+newLocation;}
this.ieAtomicLocationChange=false;};window.setTimeout(addImpl,this.currentWaitTime);this.currentWaitTime=this.currentWaitTime+this.WAIT_TIME;},isFirstLoad:function(){if(this.firstLoad==true){return true;}else{return false;}},isInternational:function(){return false;},getVersion:function(){return"0.05";},getCurrentLocation:function(){var currentLocation=this.removeHash(window.location.hash);return currentLocation;},currentLocation:null,listener:null,iframe:null,ignoreLocationChange:null,WAIT_TIME:200,currentWaitTime:0,fireOnNewListener:null,firstLoad:null,ieAtomicLocationChange:null,create:function(){var initialHash=this.getCurrentLocation();this.currentLocation=initialHash;if(this.isInternetExplorer()){document.write("<iframe style='border: 0px; width: 1px; "+"height: 1px; position: absolute; bottom: 0px; "+"right: 0px; visibility: visible;' "+"name='DhtmlHistoryFrame' id='DhtmlHistoryFrame' "+"src='/js/blank.html?"+initialHash+"'>"+"</iframe>");this.WAIT_TIME=400;}
var self=this;window.onunload=function(){self.firstLoad=null;};if(this.isInternetExplorer()==false){if(historyStorage.hasKey("DhtmlHistory_pageLoaded")==false){this.ignoreLocationChange=true;this.firstLoad=true;historyStorage.put("DhtmlHistory_pageLoaded",true);}else{this.ignoreLocationChange=false;this.fireOnNewListener=true;}}else{this.ignoreLocationChange=true;}
if(this.isInternetExplorer()){this.iframe=document.getElementById("DhtmlHistoryFrame");}
var self=this;var locationHandler=function(){self.checkLocation();};setInterval(locationHandler,100);},fireHistoryEvent:function(newHash){var historyData=historyStorage.get(newHash);this.listener.call(null,newHash,historyData);},checkLocation:function(){if(this.isInternetExplorer()==false&&this.ignoreLocationChange==true){this.ignoreLocationChange=false;return;}
if(this.isInternetExplorer()==false&&this.ieAtomicLocationChange==true){return;}
var hash=this.getCurrentLocation();if(hash==this.currentLocation){return;}
this.ieAtomicLocationChange=true;if(this.isInternetExplorer()&&this.getIFrameHash()!=hash){this.iframe.src="/js/blank.html?"+hash;}else{if(this.isInternetExplorer()){return;}}
this.currentLocation=hash;this.ieAtomicLocationChange=false;this.fireHistoryEvent(hash);},getIFrameHash:function(){var historyFrame=document.getElementById("DhtmlHistoryFrame");var doc=historyFrame.contentWindow.document;var hash=new String(doc.location.search);if(hash.length==1&&hash.charAt(0)=="?"){hash="";}else{if(hash.length>=2&&hash.charAt(0)=="?"){hash=hash.substring(1);}}
return hash;},removeHash:function(hashValue){if(hashValue==null||hashValue==undefined){return null;}else{if(hashValue==""){return"";}else{if(hashValue.length==1&&hashValue.charAt(0)=="#"){return"";}else{if(hashValue.length>1&&hashValue.charAt(0)=="#"){return hashValue.substring(1);}else{return hashValue;}}}}},iframeLoaded:function(newLocation){if(this.ignoreLocationChange==true){this.ignoreLocationChange=false;return;}
var hash=new String(newLocation.search);if(hash.length==1&&hash.charAt(0)=="?"){hash="";}else{if(hash.length>=2&&hash.charAt(0)=="?"){hash=hash.substring(1);}}
if(this.pageLoadEvent!=true){window.location.hash=hash;}
this.fireHistoryEvent(hash);},isInternetExplorer:function(){var userAgent=navigator.userAgent.toLowerCase();if(document.all&&userAgent.indexOf("msie")!=-1){return true;}else{return false;}}};window.historyStorage={debugging:false,storageHash:new Object(),hashLoaded:false,put:function(key,value){this.assertValidKey(key);if(this.hasKey(key)){this.remove(key);}
this.storageHash[key]=value;this.saveHashTable();},get:function(key){this.assertValidKey(key);this.loadHashTable();var value=this.storageHash[key];if(value==undefined){return null;}else{return value;}},remove:function(key){this.assertValidKey(key);this.loadHashTable();delete this.storageHash[key];this.saveHashTable();},reset:function(){this.storageField.value="";this.storageHash=new Object();},hasKey:function(key){this.assertValidKey(key);this.loadHashTable();if(typeof this.storageHash[key]=="undefined"){return false;}else{return true;}},isValidKey:function(key){return(typeof key=="string");},storageField:null,init:function(){var styleValue="";if(this.debugging==true){styleValue="width: 30em; height: 30em;";}
var newContent="<form id='historyStorageForm' "+"method='GET' "+"style='"+styleValue+"'>"+"<textarea id='historyStorageField' "+"style='display:none'"+"left: -1000px;' "+"name='historyStorageField'></textarea>"+"</form>";document.write(newContent);this.storageField=document.getElementById("historyStorageField");},assertValidKey:function(key){if(this.isValidKey(key)==false){throw"Please provide a valid key for "+"window.historyStorage, key= "+key;}},loadHashTable:function(){if(this.hashLoaded==false){var serializedHashTable=this.storageField.value;if(serializedHashTable!=""&&serializedHashTable!=null){this.storageHash=eval("("+serializedHashTable+")");}
this.hashLoaded=true;}},saveHashTable:function(){this.loadHashTable();var serializedHashTable=JSON.stringify(this.storageHash);this.storageField.value=serializedHashTable;}};Array.prototype.______array="______array";var JSON={org:"http://www.JSON.org",copyright:"(c)2005 JSON.org",license:"http://www.crockford.com/JSON/license.html",stringify:function(arg){var c,i,l,s="",v;switch(typeof arg){case"object":if(arg){if(arg.______array=="______array"){for(i=0;i<arg.length;++i){v=this.stringify(arg[i]);if(s){s+=",";}
s+=v;}
return"["+s+"]";}else{if(typeof arg.toString!="undefined"){for(i in arg){v=arg[i];if(typeof v!="undefined"&&typeof v!="function"){v=this.stringify(v);if(s){s+=",";}
s+=this.stringify(i)+":"+v;}}
return"{"+s+"}";}}}
return"null";case"number":return isFinite(arg)?String(arg):"null";case"string":l=arg.length;s="\"";for(i=0;i<l;i+=1){c=arg.charAt(i);if(c>=" "){if(c=="\\"||c=="\""){s+="\\";}
s+=c;}else{switch(c){case"\b":s+="\\b";break;case"\f":s+="\\f";break;case"\n":s+="\\n";break;case"\r":s+="\\r";break;case"\t":s+="\\t";break;default:c=c.charCodeAt();s+="\\u00"+Math.floor(c/16).toString(16)+(c%16).toString(16);}}}
return s+"\"";case"boolean":return String(arg);default:return"null";}},parse:function(text){var at=0;var ch=" ";function error(m){throw{name:"JSONError",message:m,at:at-1,text:text};}
function next(){ch=text.charAt(at);at+=1;return ch;}
function white(){while(ch!=""&&ch<=" "){next();}}
function str(){var i,s="",t,u;if(ch=="\""){outer:while(next()){if(ch=="\""){next();return s;}else{if(ch=="\\"){switch(next()){case"b":s+="\b";break;case"f":s+="\f";break;case"n":s+="\n";break;case"r":s+="\r";break;case"t":s+="\t";break;case"u":u=0;for(i=0;i<4;i+=1){t=parseInt(next(),16);if(!isFinite(t)){break outer;}
u=u*16+t;}
s+=String.fromCharCode(u);break;default:s+=ch;}}else{s+=ch;}}}}
error("Bad string");}
function arr(){var a=[];if(ch=="["){next();white();if(ch=="]"){next();return a;}
while(ch){a.push(val());white();if(ch=="]"){next();return a;}else{if(ch!=","){break;}}
next();white();}}
error("Bad array");}
function obj(){var k,o={};if(ch=="{"){next();white();if(ch=="}"){next();return o;}
while(ch){k=str();white();if(ch!=":"){break;}
next();o[k]=val();white();if(ch=="}"){next();return o;}else{if(ch!=","){break;}}
next();white();}}
error("Bad object");}
function num(){var n="",v;if(ch=="-"){n="-";next();}
while(ch>="0"&&ch<="9"){n+=ch;next();}
if(ch=="."){n+=".";while(next()&&ch>="0"&&ch<="9"){n+=ch;}}
if(ch=="e"||ch=="E"){n+="e";next();if(ch=="-"||ch=="+"){n+=ch;next();}
while(ch>="0"&&ch<="9"){n+=ch;next();}}
v=+n;if(!isFinite(v)){error("Bad number");}else{return v;}}
function word(){switch(ch){case"t":if(next()=="r"&&next()=="u"&&next()=="e"){next();return true;}
break;case"f":if(next()=="a"&&next()=="l"&&next()=="s"&&next()=="e"){next();return false;}
break;case"n":if(next()=="u"&&next()=="l"&&next()=="l"){next();return null;}
break;}
error("Syntax error");}
function val(){white();switch(ch){case"{":return obj();case"[":return arr();case"\"":return str();case"-":return num();default:return ch>="0"&&ch<="9"?num():word();}}
return val();}};window.historyStorage.init();window.dhtmlHistory.create();