h_flag=0;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,onBeforeAdd){var self=this;var addImpl=function(){if(self.currentWaitTime>0)
self.currentWaitTime=self.currentWaitTime-self.WAIT_TIME;if(onBeforeAdd)onBeforeAdd();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="blank.html?"+newLocation;this.ieAtomicLocationChange=false;if(dhtmlHistory.listener)dhtmlHistory.listener();};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.body.appendChild(document.createElement("<iframe style='border: 0px; width: 1px; "
+"height: 1px; position: absolute; bottom: 0px; "
+"right: 0px; visibility: visible;' "
+"name='DhtmlHistoryFrame' id='DhtmlHistoryFrame' "
+"src='blank.html?"+initialHash+"'>"));this.WAIT_TIME=400;}
var self=this;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){if(document.getElementById('_results_table'))
{h_flag=h_flag+1;if(h_flag==2)
{h_flag=0;return;}
window.history.forward(1);if(h_flag==1)
{alert('Los botones de ATRAS y ADELANTE estan desactivados para que no pierdas tus datos.\n\nPuedes acceder al formulario pinchando en la opcion CAMBIAR DATOS (arriba a la derecha)');return;h_flag=0;}}
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="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(){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(){return;if(this.hashLoaded==false){var serializedHashTable=this.storageField.value;if(serializedHashTable!=""&&serializedHashTable!=null){this.storageHash=eval('('+serializedHashTable+')');}
this.hashLoaded=true;}},saveHashTable:function(){return;this.loadHashTable();var serializedHashTable=__JSON.stringify(this.storageHash);this.storageField.value=serializedHashTable;}};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.constructor==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';}}};
