function createHTTPHandler(){httphandler=false;/*@cc_on@*/
/*@if (@_jscript_version >= 5)
    // JScript gies us Conditional compilation, we can cope with old IE versions
    // and security blocked creation of the objects

    try {
        httphandler = new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch (e) {
        try {
            httphandler = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (E) {
            httphandler = false;
        }
    }
    @end@*/
if(!httphandler&&typeof XMLHttpRequest!='undefined'){httphandler=new XMLHttpRequest();}
return httphandler;}
function loadAjaxPage(page){var element=document.getElementById('content_center');var navigation=document.getElementById('navigation');element.innerHTML="<i>Loading content</i> <img src='http://www.opzoeknaareenband.nl/images/ajax.gif'>";var XMLHTTPObject=createHTTPHandler();XMLHTTPObject.open('GET','http://www.opzoeknaareenband.nl/content/'+page+'.php',true);XMLHTTPObject.onreadystatechange=function(){if(XMLHTTPObject.readyState==4){if(dhtmlHistory.isFirstLoad()){}
if(page!==''){element.innerHTML=XMLHTTPObject.responseText;}}}
XMLHTTPObject.setRequestHeader("Expires","0");XMLHTTPObject.setRequestHeader("Cache-Control","no-store, no-cache, must-revalidate");XMLHTTPObject.setRequestHeader("If-Modified-Since","Sat, 1 Jan 2005 00:00:00 GMT");XMLHTTPObject.setRequestHeader("Pragma","no-cache");XMLHTTPObject.send(null);switch(page){case(page='links'):navigation.innerHTML="<a href='index.php' class='navigation_link' />Home</a> -> <span class='navigation_link'>Links</span>";break;case(page='contact'):navigation.innerHTML="<a href='index.php' class='navigation_link' />Home</a> -> <span class='navigation_link'>Contact</span>";break;case(page='wiezijnwij'):navigation.innerHTML="<a href='index.php' class='navigation_link' />Home</a> -> <span class='navigation_link'>Wie zijn wij</span>";break;case(page='disclaimer'):navigation.innerHTML="<a href='index.php' class='navigation_link' />Home</a> -> <span class='navigation_link'>Disclaimer</span>";break;case(page='privacypolicy'):navigation.innerHTML="<a href='index.php' class='navigation_link' />Home</a> -> <span class='navigation_link'>Privacy Policy</span>";break;case(page='referenties'):navigation.innerHTML="<a href='index.php' class='navigation_link' />Home</a> -> <span class='navigation_link'>Referenties</span>";break;case(page='affiliate'):navigation.innerHTML="<a href='index.php' class='navigation_link' />Home</a> -> <span class='navigation_link'>Partnerprogramma</span>";break;case(page='faq'):navigation.innerHTML="<a href='index.php' class='navigation_link' />Home</a> -> <span class='navigation_link'>Veel gestelde vragen</span>";break;case(page='bandlogin'):navigation.innerHTML="<a href='index.php' class='navigation_link' />Home</a> -> <span class='navigation_link'>Band login</span>";break;case(page='bandaanmelden'):navigation.innerHTML="<a href='index.php' class='navigation_link' />Home</a> -> <span class='navigation_link'>Band aanmelden</span>";break;case(page='uitgebreidzoeken'):navigation.innerHTML="<a href='index.php' class='navigation_link' />Home</a> -> <span class='navigation_link'>Uitgebreid zoeken</span>";break;default:navigation.innerHTML="<a href='index.php' class='navigation_link' />Home</a> -> <span class='navigation_link'>Band aanmelden</span>";}
document.getElementById('paging').innerHTML="";}
function loadAjaxDetailPage(page,id,parameters,bandnaam,url){var element=document.getElementById('detailcontent_content');element.innerHTML="<i>Loading content</i> <img src='http://www.opzoeknaareenband.nl/images/ajax.gif'>";var navigation=document.getElementById('navigation');var root="<a href='index.php' class='navigation_link' />Home</a> -> <a href='index.php?"+url+"' class='navigation_link' />"+urldecode(bandnaam)+"</a> -> ";if(typeof(parameters)=='undefined'){parameters='band_id='+id+'&timestamp='+new Date().getTime();}
else{parameters='band_id='+id+'&timestamp='+new Date().getTime()+'&'+parameters;}
var XMLHTTPObject=createHTTPHandler();XMLHTTPObject.open('POST','http://www.opzoeknaareenband.nl/content/'+page+'.php',true);XMLHTTPObject.onreadystatechange=function(){if(XMLHTTPObject.readyState==4){if(dhtmlHistory.isFirstLoad()){dhtmlHistory.add(page+'_'+id,"Hello World Data");}
if(page!==''){element.innerHTML=XMLHTTPObject.responseText;switch(page){case'put_optie':navigation.innerHTML=root+"Optie";break;case'offerte':navigation.innerHTML=root+"Offerte";calcTotal();break;case'checkbeschikbaarheid':navigation.innerHTML=root+"Beschikbaarheid";break;case'recensies':navigation.innerHTML=root+"Recensies";break;case'photo':navigation.innerHTML=root+"Foto's";start_slides();break;case'audio':navigation.innerHTML=root+"Muziek";break;case'video':navigation.innerHTML=root+"Video";break;case'biografie2':navigation.innerHTML=root+"Biografie";break;case'bezetting':navigation.innerHTML=root+"Bezetting";break;case'setlist':navigation.innerHTML=root+"Setlist";break;case'agenda':navigation.innerHTML=root+"Agenda";break;case'recensie':navigation.innerHTML=root+"Recensie";break;case'tipfriend':navigation.innerHTML=root+"Tip vriend";break;}}}}
XMLHTTPObject.setRequestHeader("Content-type","application/x-www-form-urlencoded");XMLHTTPObject.setRequestHeader("Content-length",parameters.length);XMLHTTPObject.setRequestHeader("Cache-Control","no-cache");XMLHTTPObject.setRequestHeader("X_USERAGENT","MijnAjaxApplicatie");XMLHTTPObject.send(parameters);}
function putRecensie(){if(CheckFormRecensie()){var band_id=document.getElementById('band_id');var naam=document.getElementById('naam');var email=document.getElementById('email');var toon_email=document.getElementById('toon_email');var dagrecensie=document.getElementById('dagrecensie');var maandrecensie=document.getElementById('maandrecensie');var jaarrecensie=document.getElementById('jaarrecensie');var recensie=document.getElementById('recensie');var parID='band_id='+band_id.value;var parNaam='naam='+naam.value;var parEmail='email='+email.value;var parToonEmail='toon_email='+(toon_email.checked?'1':'0');var parDagRecensie='dag='+dagrecensie.value;var parMaandRecensie='maand='+maandrecensie.value;var parJaarRecensie='jaar='+jaarrecensie.value;var parRecensie='recensie='+recensie.value;var parameters=parID+'&'+parNaam+'&'+parEmail+'&'+parToonEmail+'&'+parDagRecensie+'&'+parMaandRecensie+'&'+parJaarRecensie+'&'+parRecensie;var XMLHTTPObject=createHTTPHandler();XMLHTTPObject.open('POST','http://www.opzoeknaareenband.nl/content/actions/recensie_new.php',true);XMLHTTPObject.onreadystatechange=function(){if(XMLHTTPObject.readyState==4){var check_result=XMLHTTPObject.responseText;if(check_result>0){loadAjaxDetailPage('recensie_thankyou',band_id,'recensie_id='+check_result);}
else{alert(check_result);}}}
XMLHTTPObject.setRequestHeader("Content-type","application/x-www-form-urlencoded");XMLHTTPObject.setRequestHeader("Content-length",parameters.length);XMLHTTPObject.setRequestHeader("Cache-Control","no-cache");XMLHTTPObject.setRequestHeader("X_USERAGENT","MijnAjaxApplicatie");XMLHTTPObject.send(parameters);}}
function checkDate(){var dag=document.getElementById('dag').value;var maand=document.getElementById('maand').value;var jaar=document.getElementById('jaar').value;var selectedDay=new Date(jaar,maand-1,dag,0,0,0);var today=new Date();if(selectedDay<=today){alert('Kies een datum in de toekomst.');return false;}
else{return true;}}
function ajaxCheckDatum(id){var dagcheck=document.getElementById('dagcheck');var maandcheck=document.getElementById('maandcheck');var jaarcheck=document.getElementById('jaarcheck');var parID='id='+id;var parDag='dag='+dagcheck.value;var parMaand='maand='+maandcheck.value;var parJaar='jaar='+jaarcheck.value;var parameters=parID+'&'+parDag+'&'+parMaand+'&'+parJaar;var XMLHTTPObject=createHTTPHandler();XMLHTTPObject.open('POST','http://www.opzoeknaareenband.nl/include/ajax_checkdatum.php',true);XMLHTTPObject.onreadystatechange=function(){if(XMLHTTPObject.readyState==4){showResult(XMLHTTPObject.responseText);}}
XMLHTTPObject.setRequestHeader("Content-type","application/x-www-form-urlencoded");XMLHTTPObject.setRequestHeader("Content-length",parameters.length);XMLHTTPObject.setRequestHeader("Cache-Control","no-cache");XMLHTTPObject.setRequestHeader("X_USERAGENT","MijnAjaxApplicatie");XMLHTTPObject.send(parameters);}
function getWindowWidth(){if(window.innerWidth){return window.innerWidth;}else{return document.documentElement.clientWidth;}}
function checkEmailAddress(field){var goodEmail=field.value.match(/\b(^(\S+@).+((\.com)|(\.net)|(\.edu)|(\.mil)|(\.gov)|(\.org)|(\..{2,2}))$)\b/gi);if(!goodEmail){field.focus();field.select();}
return goodEmail;}
function start_show()
{setInterval("slideshow()",5000);}
function slideshow()
{picture_num++;if(picture_num==pictures.length)
{picture_num=0;}
current_picture.src=pictures[picture_num];document["rotating_picture"].src=current_picture.src;}
function NavigateToPage(page){window.location="/index.php?page="+page;}
function FieldIsEmpty(field){var isEmpty;isEmpty=field.value.match(/^$/);if(isEmpty){field.focus();field.select();}
return isEmpty;}
function checkTelefoonnummer(field){var is10Digit;is10Digit=field.value.match(/^[0-9]{10}|[0-9]{2}\-[0-9]{8}|[0-9]{3}\-[0-9]{7}|[0-9]{4}\-[0-9]{6}$/);if(!is10Digit){field.focus();field.select();}
return is10Digit;}
function IsNumeric(field){var isNumeric;isNumeric=field.value.search("[^0-9]")<0;if(!isNumeric){field.focus();field.select();}
return isNumeric;}
function checkPostcode(field){var isPostcode;isPostcode=field.value.match(/^\d{4}[a-zA-Z]{2}$/)||field.value.match(/^\d{4} [a-zA-Z]{2}$/);if(!isPostcode){field.focus();field.select();}
return isPostcode;}
function GetDayName(date){var Days=new Array('zo','ma','di','wo','do','vr','za');return Days[today.getDay()];}
function play(media){document.getElementById('mediaplayer1').innerHTML='<object classid="clsid:22D6F312-B0F6-11D0-94AB-0080C74C7E95" codebase="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=6,4,5,715" type="application/x-oleobject" width="350" height="68" align="baseline" border="0" standby="Loading Microsoft® Windows® Media Player components..." id="mediaplayer1">'+'<param name="filename" value="'+media+'">'+'<param name="ShowDisplay" value="0">'+'<param name="ShowControls" value="1">'+'<param name="ShowPositionControls" value="1">'+'<param name="ShowSelectionControls" value="1">'+'<param name="ShowTracker" value="1">'+'<param name="MovieWindowSize" value=0>'+'<param name="FullScreenMode" value="0">'+'<param name="MovieWindowWidth" value="0">'+'<param name="MovieWindowHeight" value="0">'+'<param name="AutoStart" value="1">'+'<param name="AutoRewind" value="1">'+'<param name="PlayCount" value="1">'+'<param name="SelectionStart" value="0">'+'<param name="Appearance" value="1">'+'<param name="BorderStyle" value="0">'+'<param name="ShowStatusBar" value="1">'+'<param name="DisplayMode" value="0">'+'<param name="volume" value="-1">'+'<embed src="'+media+'" width="350" height="68" autostart="1" volume=-1 loop="0" ShowStatusBar=1 type="application/x-mplayer2" pluginspage="http://www.microsoft.com/Windows/MediaPlayer/download/default.asp" controller="true" filename="'+media+'" showdisplay="0" showcontrols="1" showpositioncontrols="1" showselectioncontrols="1" showtracker="1" moviewindowsize="0" fullscreenmode="0" moviewindowwidth="0" moviewindowheight="0" autorewind="1" playcount="1" selectionstart="0" appearance="0" borderstyle="0" displaymode="0" ></embed></object>'}
function urldecode(str){if(str!==undefined){var histogram={};var ret=str.toString();var replacer=function(search,replace,str){var tmp_arr=[];tmp_arr=str.split(search);return tmp_arr.join(replace);};histogram["'"]='%27';histogram['(']='%28';histogram[')']='%29';histogram['*']='%2A';histogram['~']='%7E';histogram['!']='%21';histogram['%20']='+';for(replace in histogram){search=histogram[replace];ret=replacer(search,replace,ret)}
ret=decodeURIComponent(ret);return ret;}}
window.dhtmlHistory={isIE:false,isOpera:false,isSafari:false,isKonquerer:false,isGecko:false,isSupported:false,create:function(_1){var _2=this;var UA=navigator.userAgent.toLowerCase();var _4=navigator.platform.toLowerCase();var _5=navigator.vendor||"";if(_5==="KDE"){this.isKonqueror=true;this.isSupported=false;}else{if(typeof window.opera!=="undefined"){this.isOpera=true;this.isSupported=true;}else{if(typeof document.all!=="undefined"){this.isIE=true;this.isSupported=true;}else{if(_5.indexOf("Apple Computer, Inc.")>-1){this.isSafari=true;this.isSupported=(_4.indexOf("mac")>-1);}else{if(UA.indexOf("gecko")!=-1){this.isGecko=true;this.isSupported=true;}}}}}window.historyStorage.setup(_1);if(this.isSafari){this.createSafari();}else{if(this.isOpera){this.createOpera();}}var _6=this.getCurrentLocation();this.currentLocation=_6;if(this.isIE){this.createIE(_6);}var _7=function(){_2.firstLoad=null;};this.addEventListener(window,"unload",_7);if(this.isIE){this.ignoreLocationChange=true;}else{if(!historyStorage.hasKey(this.PAGELOADEDSTRING)){this.ignoreLocationChange=true;this.firstLoad=true;historyStorage.put(this.PAGELOADEDSTRING,true);}else{this.ignoreLocationChange=false;this.fireOnNewListener=true;}}var _8=function(){_2.checkLocation();};setInterval(_8,100);},initialize:function(){if(this.isIE){if(!historyStorage.hasKey(this.PAGELOADEDSTRING)){this.fireOnNewListener=false;this.firstLoad=true;historyStorage.put(this.PAGELOADEDSTRING,true);}else{this.fireOnNewListener=true;this.firstLoad=false;}}},addListener:function(_9){this.listener=_9;if(this.fireOnNewListener){this.fireHistoryEvent(this.currentLocation);this.fireOnNewListener=false;}},addEventListener:function(o,e,l){if(o.addEventListener){o.addEventListener(e,l,false);}else{if(o.attachEvent){o.attachEvent("on"+e,function(){l(window.event);});}}},add:function(_d,_e){if(this.isSafari){_d=this.removeHash(_d);historyStorage.put(_d,_e);this.currentLocation=_d;window.location.hash=_d;this.putSafariState(_d);}else{var _f=this;var _10=function(){if(_f.currentWaitTime>0){_f.currentWaitTime=_f.currentWaitTime-_f.waitTime;}_d=_f.removeHash(_d);if(document.getElementById(_d)&&_f.debugMode){var e="Exception: History locations can not have the same value as _any_ IDs that might be in the document,"+" due to a bug in IE; please ask the developer to choose a history location that does not match any HTML"+" IDs in this document. The following ID is already taken and cannot be a location: "+_d;throw new Error(e);}historyStorage.put(_d,_e);_f.ignoreLocationChange=true;_f.ieAtomicLocationChange=true;_f.currentLocation=_d;window.location.hash=_d;if(_f.isIE){_f.iframe.src="blank.html?"+_d;}_f.ieAtomicLocationChange=false;};window.setTimeout(_10,this.currentWaitTime);this.currentWaitTime=this.currentWaitTime+this.waitTime;}},isFirstLoad:function(){return this.firstLoad;},getVersion:function(){return"0.6";},getCurrentLocation:function(){var r=(this.isSafari?this.getSafariState():this.getCurrentHash());return r;},getCurrentHash:function(){var r=window.location.href;var i=r.indexOf("#");return(i>=0?r.substr(i+1):"");},PAGELOADEDSTRING:"DhtmlHistory_pageLoaded",listener:null,waitTime:200,currentWaitTime:0,currentLocation:null,iframe:null,safariHistoryStartPoint:null,safariStack:null,safariLength:null,ignoreLocationChange:null,fireOnNewListener:null,firstLoad:null,ieAtomicLocationChange:null,createIE:function(_15){this.waitTime=400;var _16=(historyStorage.debugMode?"width: 800px;height:80px;border:1px solid black;":historyStorage.hideStyles);var _17="rshHistoryFrame";var _18="<iframe frameborder=\"0\" id=\""+_17+"\" style=\""+_16+"\" src=\"blank.html?"+_15+"\"></iframe>";document.write(_18);this.iframe=document.getElementById(_17);},createOpera:function(){this.waitTime=400;var _19="<img src=\"javascript:location.href='javascript:dhtmlHistory.checkLocation();';\" style=\""+historyStorage.hideStyles+"\" />";document.write(_19);},createSafari:function(){var _1a="rshSafariForm";var _1b="rshSafariStack";var _1c="rshSafariLength";var _1d=historyStorage.debugMode?historyStorage.showStyles:historyStorage.hideStyles;var _1e=(historyStorage.debugMode?"width:800px;height:20px;border:1px solid black;margin:0;padding:0;":historyStorage.hideStyles);var _1f="<form id=\""+_1a+"\" style=\""+_1d+"\">"+"<input type=\"text\" style=\""+_1e+"\" id=\""+_1b+"\" value=\"[]\"/>"+"<input type=\"text\" style=\""+_1e+"\" id=\""+_1c+"\" value=\"\"/>"+"</form>";document.write(_1f);this.safariStack=document.getElementById(_1b);this.safariLength=document.getElementById(_1c);if(!historyStorage.hasKey(this.PAGELOADEDSTRING)){this.safariHistoryStartPoint=history.length;this.safariLength.value=this.safariHistoryStartPoint;}else{this.safariHistoryStartPoint=this.safariLength.value;}},getSafariStack:function(){var r=this.safariStack.value;return historyStorage.fromJSON(r);},getSafariState:function(){var _21=this.getSafariStack();var _22=_21[history.length-this.safariHistoryStartPoint-1];return _22;},putSafariState:function(_23){var _24=this.getSafariStack();_24[history.length-this.safariHistoryStartPoint]=_23;this.safariStack.value=historyStorage.toJSON(_24);},fireHistoryEvent:function(_25){var _26=historyStorage.get(_25);this.listener.call(null,_25,_26);},checkLocation:function(){if(!this.isIE&&this.ignoreLocationChange){this.ignoreLocationChange=false;return;}if(!this.isIE&&this.ieAtomicLocationChange){return;}var _27=this.getCurrentLocation();if(_27==this.currentLocation){return;}this.ieAtomicLocationChange=true;if(this.isIE&&this.getIframeHash()!=_27){this.iframe.src="blank.html?"+_27;}else{if(this.isIE){return;}}this.currentLocation=_27;this.ieAtomicLocationChange=false;this.fireHistoryEvent(_27);},getIframeHash:function(){var doc=this.iframe.contentWindow.document;var _29=String(doc.location.search);if(_29.length==1&&_29.charAt(0)=="?"){_29="";}else{if(_29.length>=2&&_29.charAt(0)=="?"){_29=_29.substring(1);}}return _29;},removeHash:function(_2a){var r;if(_2a===null||_2a===undefined){r=null;}else{if(_2a===""){r="";}else{if(_2a.length==1&&_2a.charAt(0)=="#"){r="";}else{if(_2a.length>1&&_2a.charAt(0)=="#"){r=_2a.substring(1);}else{r=_2a;}}}}return r;},iframeLoaded:function(_2c){if(this.ignoreLocationChange){this.ignoreLocationChange=false;return;}var _2d=String(_2c.search);if(_2d.length==1&&_2d.charAt(0)=="?"){_2d="";}else{if(_2d.length>=2&&_2d.charAt(0)=="?"){_2d=_2d.substring(1);}}window.location.hash=_2d;this.fireHistoryEvent(_2d);}};window.historyStorage={setup:function(_2e){if(typeof _2e!=="undefined"){if(_2e.debugMode){this.debugMode=_2e.debugMode;}if(_2e.toJSON){this.toJSON=_2e.toJSON;}if(_2e.fromJSON){this.fromJSON=_2e.fromJSON;}}var _2f="rshStorageForm";var _30="rshStorageField";var _31=this.debugMode?historyStorage.showStyles:historyStorage.hideStyles;var _32=(historyStorage.debugMode?"width: 800px;height:80px;border:1px solid black;":historyStorage.hideStyles);var _33="<form id=\""+_2f+"\" style=\""+_31+"\">"+"<textarea id=\""+_30+"\" style=\""+_32+"\"></textarea>"+"</form>";document.write(_33);this.storageField=document.getElementById(_30);if(typeof window.opera!=="undefined"){this.storageField.focus();}},put:function(key,_35){this.assertValidKey(key);if(this.hasKey(key)){this.remove(key);}this.storageHash[key]=_35;this.saveHashTable();},get:function(key){this.assertValidKey(key);this.loadHashTable();var _37=this.storageHash[key];if(_37===undefined){_37=null;}return _37;},remove:function(key){this.assertValidKey(key);this.loadHashTable();delete this.storageHash[key];this.saveHashTable();},reset:function(){this.storageField.value="";this.storageHash={};},hasKey:function(key){this.assertValidKey(key);this.loadHashTable();return(typeof this.storageHash[key]!=="undefined");},isValidKey:function(key){return(typeof key==="string");},showStyles:"border:0;margin:0;padding:0;",hideStyles:"left:-1000px;top:-1000px;width:1px;height:1px;border:0;position:absolute;",debugMode:false,storageHash:{},hashLoaded:false,storageField:null,assertValidKey:function(key){var _3c=this.isValidKey(key);if(!_3c&&this.debugMode){throw new Error("Please provide a valid key for window.historyStorage. Invalid key = "+key+".");}},loadHashTable:function(){if(!this.hashLoaded){var _3d=this.storageField.value;if(_3d!==""&&_3d!==null){this.storageHash=this.fromJSON(_3d);this.hashLoaded=true;}}},saveHashTable:function(){this.loadHashTable();var _3e=this.toJSON(this.storageHash);this.storageField.value=_3e;},toJSON:function(o){return o.toJSONString();},fromJSON:function(s){return s.parseJSON();}};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()}};
