function selectPicture(name)
{
document.images.bigPicture.src = name;
}

function resetDiv(divid) {
	var ajaxDisplay = document.getElementById(divid);
	ajaxDisplay.innerHTML = "<table width='98%'><tr><td><center>Loading...<br><img src='images/ajax-loader.gif'></center></td></tr></table>";	 
	
}

function pricing(id){
	document.getElementById('pricing0').className = 'linkplain';
	document.getElementById('pricing1').className = 'linkplain';
	document.getElementById('pricing2').className = 'linkplain';
	document.getElementById('pricing3').className = 'linkplain';
	document.getElementById('pricing4').className = 'linkplain';
	document.getElementById('pricing5').className = 'linkplain';
	document.getElementById('pricing'+id).className = 'linkselectedred';
	if (id==0) {
		document.getElementById('lowprice').value='';
		document.getElementById('price').value='';
		}
	else if (id==5) {
		document.getElementById('lowprice').value=(id-1)+'00';
		document.getElementById('price').value='';
	}	
	else {
		document.getElementById('lowprice').value=(id-1)+'00';
		document.getElementById('price').value=(id-1)+'99';
	}	
	updateTabs('');
}

function stars(id){
	var text='';
	document.getElementById('stars0').className = 'linkplain';
	for (var i=3; i<6; i++){	
		text='';
		for (var x=1; x<=i; x++){
			text=text+"<img src='images/star-black.gif' class='activebutton'>";	
		}
	document.getElementById('stars'+i).innerHTML = text;
	}
	text='';
	for (var x=1; x<=id; x++){
		text=text+"<img src='images/star-red.gif' class='activebutton'>";	
	}
	
	if (id==0) document.getElementById('stars'+id).className = 'linkselectedred';
	else document.getElementById('stars'+id).innerHTML = text;

	if (id==0) document.getElementById('stars').value='';
	else document.getElementById('stars').value=id;
	updateTabs('');
}

function AddQuestion() {
	var ajaxRequest;  // The variable that makes Ajax possible!
	try{
		// Opera 8.0+, Firefox, Safari
		ajaxRequest = new XMLHttpRequest();
	} catch (e){
		// Internet Explorer Browsers
		try{
			ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try{
				ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e){
				// Something went wrong
				alert("Your browser cannot support this site. Please upgrade.");
				return false;
			}
		}
	}
	// Create a function that will receive data sent from the server
	ajaxRequest.onreadystatechange = function(){
		if(ajaxRequest.readyState == 4){
			var ajaxDisplay = document.getElementById('status');
			ajaxDisplay.innerHTML = ajaxRequest.responseText;
		}
	}
		 
	var question=document.getElementById('question').value;
	var type = document.getElementById('type').value;
	var queryString = "?question=" + question + "&type=" + type + "&ms=" + new Date().getTime();
	ajaxRequest.open("GET", "addquestions.php" + queryString, true);
	ajaxRequest.send(null); 

}

function IsEmpty(aTextField) {
   if ((aTextField.value.length==0) ||
   (aTextField.value==null)) {
      return true;
   }
   else { return false; }
}	

function isEmail(string) {
if (string.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) != -1)
return true;
else
return false;
}

function ReturningLogin (){
		document.getElementById('email').value=document.getElementById('authemail').value;
		document.getElementById('password').value=document.getElementById('authpassword').value;
		loginFunction('topmenu');
		setTimeout("ajaxFunction('','epdq/confirmdetails','returning')",500);
		document.getElementById('customerdetails').innerHTML = '';
		
}
function ValidateForm(form)
{

   if(IsEmpty(form.email)) 
   { 
      alert('Please enter an email address.') 
      form.email.focus(); 
      return false; 
   } 
   if (!(isEmail(form.email.value))){
      alert('Please enter a valid email address.') 
      form.email.focus(); 
      return false; 
		
	}
   if (form.pass1){
	   if(IsEmpty(form.pass1)) 
	   { 
	      alert('Please enter a password.') 
	      form.pass1.focus(); 
	      return false; 
	   } 
	   if(form.pass1.value!=form.pass2.value) 
	   { 
	      alert('The passwords do not match. ') ;
	      form.pass1.focus(); 
	      return false; 
	   } 
	}
   if (IsEmpty(form.fullname)) 
   { 
      alert('Please enter your name') 
      form.fullname.focus(); 
      return false; 
      } 
   if(IsEmpty(form.surname)) 
   { 
      alert('Please enter your surname.') 
      form.surname.focus(); 
      return false; 
   } 
   if(IsEmpty(form.Add1)) 
   { 
      alert('Please enter an address.') 
      form.Add1.focus(); 
      return false; 
   } 
   if(IsEmpty(form.Add3)) 
   { 
      alert('Please enter a City.') 
      form.Add3.focus(); 
      return false; 
   } 
   if(IsEmpty(form.postcode)) 
   { 
      alert('Please enter a postcode.') 
      form.postcode.focus(); 
      return false; 
   } 
   if(IsEmpty(form.telephone)) 
   { 
      alert('Please enter a contact number.') 
      form.telephone.focus(); 
      return false; 
   } 
 
 
return true;
 
} 

function CheckBoxes(){
	var trip = document.getElementById('confirmtrip').checked;
	var tandc = document.getElementById('confirmtandc').checked;
	if (trip && tandc) document.myform.mybutton.disabled = false;
	if (trip && tandc) document.banktransfer.mybutton.disabled = false;
}

function CheckCard(currency){
	var type = document.getElementById('cardtype').value;
	var cccost = document.getElementById('cccost').value;
	var dccost = document.getElementById('dccost').value;
	if (type==2) document.getElementById('paynow').innerHTML="Amount due now : "+currency+cccost+"<br>(including Credit Card surcharge) ";
	if (type==1) document.getElementById('paynow').innerHTML="Amount due now  : "+currency+dccost;
}

function StrtWorkflow(resid) {

	var wfid = document.getElementById('wfid'+resid);
	wfid.innerHTML = "Requests sent";
	var ajaxDisplay = document.getElementById('workflow');
	ajaxDisplay.innerHTML = "<iframe src='../worker.php?resid=" + resid + "&start=1' frameborder=0 scrolling=no width=600 height=600></iframe>";

}

function RecoverPWD(dowhat,where) {
	var ajaxRequest;  // The variable that makes Ajax possible!
	try{
		// Opera 8.0+, Firefox, Safari
		ajaxRequest = new XMLHttpRequest();
	} catch (e){
		// Internet Explorer Browsers
		try{
			ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try{
				ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e){
				// Something went wrong
				alert("Your browser cannot support this site. Please upgrade.");
				return false;
			}
		}
	}
	// Create a function that will receive data sent from the server
	ajaxRequest.onreadystatechange = function(){
		if(ajaxRequest.readyState == 4){
			if (where=='') where='info';
			alert(where);
			var ajaxDisplay = document.getElementById(where);
			ajaxDisplay.innerHTML = ajaxRequest.responseText;
		}
	}
	if (dowhat=='change') {
		var email = document.getElementById('email').value;
		var postcode = document.getElementById('oldpass').value;
		var pass1 = document.getElementById('pass1').value;
		var pass2 = document.getElementById('pass2').value;
		var queryString = "?email=" + email + "&oldpass=" + oldpass + "&pass1=" + pass1 + "&pass2=" + pass2  + "&dowhat=" + dowhat + "&ms=" + new Date().getTime();
	}
	if (dowhat=='recover') {
		var email = document.getElementById('email').value;
		var postcode = document.getElementById('postcode').value;
		var queryString = "?email=" + email + "&postcode=" + postcode  + "&dowhat=" + dowhat + "&ms=" + new Date().getTime();
	}
	if (dowhat=='') {
		var queryString = "?dowhat=" + dowhat + "&ms=" + new Date().getTime();
	}
	ajaxRequest.open("GET", "recoverpwd.php" + queryString, true);
	ajaxRequest.send(null); 
	
}

function AdminUpdate(id,field,table) {
	var valuer = document.getElementById(field).value;
	var ajaxRequest;  // The variable that makes Ajax possible!
	try{
		// Opera 8.0+, Firefox, Safari
		ajaxRequest = new XMLHttpRequest();
	} catch (e){
		// Internet Explorer Browsers
		try{
			ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try{
				ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e){
				// Something went wrong
				alert("Your browser cannot support this site. Please upgrade.");
				return false;
			}
		}
	}
	// Create a function that will receive data sent from the server
	ajaxRequest.onreadystatechange = function(){
		if(ajaxRequest.readyState == 4){
//			document.getElementById('info').style.display = 'block';
			window.Refresh();
			var ajaxDisplay = document.getElementById('info');
			ajaxDisplay.innerHTML = ajaxRequest.responseText;
		}
	}
		 
	var queryString = "?id=" + id + "&field=" + field + "&value=" + valuer + "&table=" + table + "&ms=" + new Date().getTime();
	ajaxRequest.open("GET", "ajaxupdate.php" + queryString, true);
	ajaxRequest.send(null); 
	
}

function loaddraganddrop(filename, filetype){
 if (filetype=="js"){ //if filename is a external JavaScript file
  var fileref=document.createElement('script')
  fileref.setAttribute("type","text/javascript")
  fileref.setAttribute("src", filename)
 }
 else if (filetype=="css"){ //if filename is an external CSS file
  var fileref=document.createElement("link")
  fileref.setAttribute("rel", "stylesheet")
  fileref.setAttribute("type", "text/css")
  fileref.setAttribute("href", filename)
 }
 if (typeof fileref!="undefined")
  document.getElementsByTagName("head")[0].appendChild(fileref)
}


function AltProps(resid) {
		document.getElementById('info').style.display = 'block';
	var ajaxRequest;  // The variable that makes Ajax possible!
	try{
		// Opera 8.0+, Firefox, Safari
		ajaxRequest = new XMLHttpRequest();
	} catch (e){
		// Internet Explorer Browsers
		try{
			ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try{
				ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e){
				// Something went wrong
				alert("Your browser cannot support this site. Please upgrade.");
				return false;
			}
		}
	}
	// Create a function that will receive data sent from the server
	ajaxRequest.onreadystatechange = function(){
		if(ajaxRequest.readyState == 4){
			var ajaxDisplay = document.getElementById('info');
			ajaxDisplay.innerHTML = ajaxRequest.responseText;
		}
	}
		 
	var queryString = "?companyid=" + resid + "&ms=" + new Date().getTime();
	ajaxRequest.open("GET", "alternate.php" + queryString, true);
	ajaxRequest.send(null); 

}

function Seasons(companyid,month,year,path) {
		document.getElementById('info').style.display = 'block';
	var ajaxRequest;  // The variable that makes Ajax possible!
	try{
		// Opera 8.0+, Firefox, Safari
		ajaxRequest = new XMLHttpRequest();
	} catch (e){
		// Internet Explorer Browsers
		try{
			ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try{
				ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e){
				// Something went wrong
				alert("Your browser cannot support this site. Please upgrade.");
				return false;
			}
		}
	}
	// Create a function that will receive data sent from the server
	ajaxRequest.onreadystatechange = function(){
		if(ajaxRequest.readyState == 4){
			var ajaxDisplay = document.getElementById('calendar');
			ajaxDisplay.innerHTML = ajaxRequest.responseText;
		}
	}
		 
	var queryString = "?companyid=" + companyid + "&m=" + month + "&y=" + year + "&ms=" + new Date().getTime();
	ajaxRequest.open("GET", "cal.php" + queryString, true);
	ajaxRequest.send(null); 

}

function ChangeRes(resid,sub1,sub2,resourceid,reserveid) {
//		document.getElementById('info').style.display = 'none';
	var ajaxRequest;  // The variable that makes Ajax possible!
	try{
		// Opera 8.0+, Firefox, Safari
		ajaxRequest = new XMLHttpRequest();
	} catch (e){
		// Internet Explorer Browsers
		try{
			ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try{
				ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e){
				// Something went wrong
				alert("Your browser cannot support this site. Please upgrade.");
				return false;
			}
		}
	}
	// Create a function that will receive data sent from the server
	ajaxRequest.onreadystatechange = function(){
		if(ajaxRequest.readyState == 4){
			var ajaxDisplay = document.getElementById('info');
			ajaxDisplay.innerHTML = ajaxRequest.responseText;
		StrtWorkflow(reserveid);
		setTimeout('location.reload(true);',500);
		}
	}
		 
	var queryString = "?resid=" + resid + "&reserveid=" + reserveid  + "&resourceid=" + resourceid + "&sub1=" + sub1 + "&sub2=" + sub2 + "&ms=" + new Date().getTime();
	ajaxRequest.open("GET", "changeres.php" + queryString, true);
	ajaxRequest.send(null);
 

}

function engageMaps(id,path) {
	var ajaxDisplay = document.getElementById('mapper');
	ajaxDisplay.innerHTML = "<iframe src='"+path+"/map.php?id=" + id + "' frameborder=0 scrolling=no width=610 height=460></iframe>";

}

function showyoutube(vidcode) {
	var ajaxDisplay = document.getElementById('youtube');
	ajaxDisplay.innerHTML = "<center><object width='425' height='355'><param name='movie'value='http://www.youtube.com/v/" + vidcode + 
	"&rel=1'></param><param name='wmode' value='transparent'></param><embed src='http://www.youtube.com/v/" + vidcode + 
	"&rel=1' type='application/x-shockwave-flash' wmode='transparent' width='425' height='355'></embed></object>";

}
						 
function sendtobook(){
document.write("<META HTTP-EQUIV='Refresh' CONTENT='0; URL=../book2.php'>");

}

function redirPage (id,pageid) {
	ajaxFunction(id,pageid,'info');
	document.getElementById('info').style.display = 'none';	   
	var redirtext="";
	setTimeout("sendtobook();",1250);
}

function checkTask()
{					 
var task = document.getElementById('task').value;
	if(task == 1){
		document.getElementById('tele').style.display = 'block';
	}
	if(task == 2){
		document.getElementById('tele').style.display = 'none';
	}
document.getElementById('rtask').value=task;
document.getElementById('ntask').value=task;
}	  
							  
function ajaxFunction(resid,pageid,divid){
	var ajaxRequest;  // The variable that makes Ajax possible!
	try{
		// Opera 8.0+, Firefox, Safari
		ajaxRequest = new XMLHttpRequest();
	} catch (e){
		// Internet Explorer Browsers
		try{
			ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try{
				ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e){
				// Something went wrong
				alert("Your browser cannot support this site. Please upgrade.");
				return false;
			}
		}
	}
	// Create a function that will receive data sent from the server
	ajaxRequest.onreadystatechange = function(){
		if(ajaxRequest.readyState == 4){
			var ajaxDisplay = document.getElementById(divid);
			ajaxDisplay.innerHTML = ajaxRequest.responseText;
		}
	}
		 
	var queryString = "?companyid=" + resid + "&ms=" + new Date().getTime();
	ajaxRequest.open("GET", pageid+".php" + queryString, true);
	ajaxRequest.send(null); 
}																

function loginFunction(page){
	var ajaxRequest;  // The variable that makes Ajax possible!
	try{
		// Opera 8.0+, Firefox, Safari
		ajaxRequest = new XMLHttpRequest();
	} catch (e){
		// Internet Explorer Browsers
		try{
			ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try{
				ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e){
				// Something went wrong
				alert("Your browser cannot support this site. Please upgrade.");
				return false;
			}
		}
	}
	// Create a function that will receive data sent from the server
	ajaxRequest.onreadystatechange = function(){
		if(ajaxRequest.readyState == 4){
			var ajaxDisplay = document.getElementById(page);
			ajaxDisplay.innerHTML = ajaxRequest.responseText;
			if (document.getElementById('salt') != null) {
				postLogin(page,username,pass);
				}
		}
	}
	var username = document.getElementById('email').value;
	var pass = document.getElementById('password').value;
	var queryString = "?companyid=2&username=" + username +"&ms=" + new Date().getTime();
	ajaxRequest.open("GET", "login.php" + queryString, true);
	ajaxRequest.send(null); 
}

function postLogin(page,username,pass){
	var ajaxRequest;  // The variable that makes Ajax possible!
	try{
		// Opera 8.0+, Firefox, Safari
		ajaxRequest = new XMLHttpRequest();
	} catch (e){
		// Internet Explorer Browsers
		try{
			ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try{
				ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e){
				// Something went wrong
				alert("Your browser cannot support this site. Please upgrade.");
				return false;
			}
		}
	}
	// Create a function that will receive data sent from the server
	ajaxRequest.onreadystatechange = function(){
		if(ajaxRequest.readyState == 4){
			var ajaxDisplay = document.getElementById(page);
			ajaxDisplay.innerHTML = ajaxRequest.responseText;
		}
	}
	if (document.getElementById('salt') != null) {
		var salt = document.getElementById('salt').value;
		var authid = document.getElementById('authid').value;
		pass=sha1Hash(salt+pass);
		pass=sha1Hash(pass+authid);
		var queryString = "?companyid=1&username=" + username + "&pass=" + pass + "&ms=" + new Date().getTime();
		ajaxRequest.open("GET", "login.php" + queryString, true);
		ajaxRequest.send(null); 
	}
}	
	
function addpack(){
	var ajaxRequest;  // The variable that makes Ajax possible!
	try{
		// Opera 8.0+, Firefox, Safari
		ajaxRequest = new XMLHttpRequest();
	} catch (e){
		// Internet Explorer Browsers
		try{
			ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try{
				ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e){
				// Something went wrong
				alert("Your browser cannot support this site. Please upgrade.");
				return false;
			}
		}
	}
	// Create a function that will receive data sent from the server
	ajaxRequest.onreadystatechange = function(){
		if(ajaxRequest.readyState == 4){
			var ajaxDisplay = document.getElementById('info');
			ajaxDisplay.innerHTML = ajaxRequest.responseText;
			ajaxFunction('','login','login');
		}
	}
	var packname = document.getElementById('packname').value;
	var packnights = document.getElementById('packnights').value;
	var packtype = document.getElementById('packtype').value;
	var packcurr = document.getElementById('packcurr').value;
	var packdesc = document.getElementById('packdesc').value;
	var queryString = "?packname=" + packname + "&packnights=" + packnights + "&packtype=" + packtype + "&packcurr=" + packcurr + "&packdesc=" + packdesc + "&ms=" + new Date().getTime();
	ajaxRequest.open("GET", "admin/savepack.php" + queryString, true);
	ajaxRequest.send(null); 
}																

function customizeBooking(resid,pageid,divid){
	var ajaxRequest;  // The variable that makes Ajax possible!
	try{
		// Opera 8.0+, Firefox, Safari
		ajaxRequest = new XMLHttpRequest();
	} catch (e){
		// Internet Explorer Browsers
		try{
			ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try{
				ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e){
				// Something went wrong
				alert("Your browser cannot support this site. Please upgrade.");
				return false;
			}
		}
	}
	// Create a function that will receive data sent from the server
	ajaxRequest.onreadystatechange = function(){
		if(ajaxRequest.readyState == 4){
			var ajaxDisplay = document.getElementById(divid);
			ajaxDisplay.innerHTML = ajaxRequest.responseText;
			ajaxFunction('','login','login');
		}
	}
	var date = document.getElementById('actdate').value;
	var queryString = "?companyid=" + resid + "&date1=" + date + "&ms=" + new Date().getTime();
	ajaxRequest.open("GET", pageid+".php" + queryString, true);
	ajaxRequest.send(null); 
}																

function resHeader(resortname) {
	var reshead = document.getElementById('reshead');
	reshead.innerHTML = resortname;
		
}

function initAccordion() {
	setTimeout('var Accordion1 = new Spry.Widget.Accordion("Accordion1")',1250);		
}


function resetInfo() {
	var ajaxDisplay = document.getElementById('info');
	ajaxDisplay.innerHTML = "<table width='560'><tr><td><center>Loading...<br><img src='images/ajax-loader.gif'></center></td></tr></table>";	 
}

function expand(div,size) {
	var divid = document.getElementById(div);
	divid.style.height = size;
}

function advice() {
	var ajaxRequest;  // The variable that makes Ajax possible!
	var ajaxDisplay = document.getElementById('main');
	ajaxDisplay.value = "You can now customize your booking by clicking on the item on the right or book a new component by adjusting the left.";
		
}

function changeField(field,value) {
	var fielder = document.getElementById(field);
	fielder.value = value;
		
}

function chiframe(iframe1URL)
{
parent.FRAME1.location.href=iframe1URL
}	  

function highlightRow(colour)
{					 
var fielder = document.getElementById('actdate').value;
var actionrow = document.getElementById(fielder);
	actionrow.style.backgroundColor=colour;
}	  
							  
function searchSwap() {
	document.getElementById('main-extend').style.display = 'none';
	document.getElementById('research').style.display = 'none';
	var ajaxDisplay = document.getElementById('holding');
	ajaxDisplay.innerHTML = "<table width='700'><tr><td width='450'><div id='main'></div></td><td width='300' valign='top'><div id='tillslip'></div></td></tr></table>";	 
	getResults('search','main','','');
	ajaxFunction('','tillslip','tillslip');
}

function taginfores(resid,resname) {
	var ajaxDisplay = document.getElementById('main-extend');
	ajaxDisplay.innerHTML = "<img src='images/arrow_yellow.gif'><span class='tagheader'>"+resname+"</span><div id='TabbedPanels1' class='TabbedPanels'>"
     +" <ul class='TabbedPanelsTabGroup'>"
     +"   <li class='TabbedPanelsTab' tabindex='0'>General Info</li>"
     +"   <li class='TabbedPanelsTab' tabindex='0'>Photos</li>"
     +" </ul>"
     +" <div class='TabbedPanelsContentGroup'>"
     +"   <div class='TabbedPanelsContent' id='taginfo'>"
     +"   </div>"
     +"   <div class='TabbedPanelsContent' id='tagphoto'>"		 
     +"   </div>"
     +" </div>"
    +"</div>";
	var TabbedPanels1 = new Spry.Widget.TabbedPanels("TabbedPanels1");
	ajaxFunction(resid,'taginfo','taginfo');
	document.getElementById('info').style.display = 'none';
	ajaxFunction(resid,'taggalleryc','tagphoto');
}

function taginfo2(resid,resname) {
	var ajaxDisplay = document.getElementById('main-extend');
	ajaxDisplay.innerHTML = "<img src='images/arrow_yellow.gif'><span class='tagheader'>"+resname+"</span><div id='TabbedPanels1' class='TabbedPanels'>"
     +" <ul class='TabbedPanelsTabGroup'>"
     +"   <li class='TabbedPanelsTab' tabindex='0'>General Info</li>"
     +"   <li class='TabbedPanelsTab' tabindex='0'>Photos</li>"
     +" </ul>"
     +" <div class='TabbedPanelsContentGroup'>"
     +"   <div class='TabbedPanelsContent' id='taginfo'>"
     +"   </div>"
     +"   <div class='TabbedPanelsContent' id='tagphoto'>"		 
     +"   </div>"
     +" </div>"
    +"</div>";
	var TabbedPanels1 = new Spry.Widget.TabbedPanels("TabbedPanels1");
	ajaxFunction(resid,'taginfo','taginfo');
	document.getElementById('info').style.display = 'none';
	ajaxFunction(resid,'taggallery','tagphoto');
}

function resinfo(resid,resname) {

	var ajaxDisplay = document.getElementById('main-extend');
	ajaxDisplay.innerHTML = "<img src='images/arrow_yellow.gif'><span class='tagheader'>"+resname+"</span><div id='TabbedPanels1' class='TabbedPanels'>"
     +" <ul class='TabbedPanelsTabGroup'>"
     +"   <li class='TabbedPanelsTab' tabindex='0'>General Info</li>"
     +"   <li class='TabbedPanelsTab' tabindex='0'>Photos</li>"
     +" </ul>"
     +" <div class='TabbedPanelsContentGroup'>"
     +"   <div class='TabbedPanelsContent' id='taginfo'>"
     +"   </div>"
     +"   <div class='TabbedPanelsContent' id='tagphoto'>"		 
     +"   </div>"
     +" </div>"
    +"</div>";
	ajaxFunction(resid,'taginfores','taginfo');
	document.getElementById('info').style.display = 'none';
	ajaxFunction(resid,'taggalleryc','tagphoto');
	setTimeout("var TabbedPanels1 = new Spry.Widget.TabbedPanels('TabbedPanels1')",250);
}

function Packupdate(packid){
document.getElementById('date1').value=document.getElementById('date3').value;
setTimeout("infoWindow(" +packid+ ",'packdetail','info')",50);	
}
function taginfo(resid,resname) {
	ajaxFunction(resid,'tagfull','main-extend');
/*	ajaxFunction(resid,'taginfo','taginfo');
	document.getElementById('info').style.display = 'none';
	ajaxFunction(resid,'taggallery','tagphoto');*/
	setTimeout("var TabbedPanels1 = new Spry.Widget.TabbedPanels('TabbedPanels1')",250);
	var currtitle=document.title;
	document.title=currtitle + ' | ' + resname;
	ajaxTracker._trackEvent('Select',resname);
}

function updateTabs(filter) {
//	document.getElementById('').style.display = 'block';
	getResults('search','main',filter,'');
//	document.getElementById('loading').style.display = 'none';
}

function getResults(pageid,divid,filter,range){
	var ajaxRequest;  // The variable that makes Ajax possible!
	var ajaxDisplay = document.getElementById(divid);
	resetDiv(divid);	
	try{
		// Opera 8.0+, Firefox, Safari
		ajaxRequest = new XMLHttpRequest();
	} catch (e){
		// Internet Explorer Browsers
		try{
			ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try{
				ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e){
				// Something went wrong
				alert("Your browser cannot support this site. Please upgrade.");
				return false;
			}
		}
	}
	// Create a function that will receive data sent from the server
	ajaxRequest.onreadystatechange = function(){
		if(ajaxRequest.readyState == 4){
			var ajaxDisplay = document.getElementById(divid);
			ajaxDisplay.innerHTML = ajaxRequest.responseText;	 
			ajaxFunction('','tillslip','tillslip');
			ajaxFunction('','login','login');
		}
	}
	var date1 = document.getElementById('date1').value;
	var adults = document.getElementById('adults').value;
	var nights = document.getElementById('nights').value;
	var country = document.getElementById('country').value;
	var stater = document.getElementById('stater').value;
	var terms = document.getElementById('terms').value;
	var stars = document.getElementById('stars').value;
	var lowprice = document.getElementById('lowprice').value;
	var price = document.getElementById('price').value;
	var showact = document.getElementById('showact').checked;
	var showacc = document.getElementById('showacc').checked;
	var showpac = document.getElementById('showpac').checked;
	var showspe = document.getElementById('showspe').checked;
	var queryString = "?date1=" + date1 + "&nights=" + nights + "&adults=" + adults + "&stars=" + stars + 
					"&country=" + country + "&terms=" + terms + "&stater=" + stater + "&lowprice=" + lowprice + 
					"&price=" + price + "&showact=" + showact + "&showacc=" + showacc + "&showpac=" + showpac + 
					"&showspe=" + showspe + "&filter=" + filter + "&range=" + range +"&ms=" + new Date().getTime();
	ajaxRequest.open("GET", pageid+".php" + queryString, true);
	ajaxRequest.send(null); 
}	

function infoWindow(companyid,pageid,divid){
	var ajaxRequest;  // The variable that makes Ajax possible!
	var ajaxDisplay = document.getElementById(divid);
	document.getElementById(divid).style.display = 'block';
	ajaxDisplay.innerHTML = "<center>Loading...<br><img src='images/ajax-loader.gif'></center>";	 
	try{
		// Opera 8.0+, Firefox, Safari
		ajaxRequest = new XMLHttpRequest();
	} catch (e){
		// Internet Explorer Browsers
		try{
			ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try{
				ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e){
				// Something went wrong
				alert("Your browser cannot support this site. Please upgrade.");
				return false;
			}
		}
	}
	// Create a function that will receive data sent from the server
	ajaxRequest.onreadystatechange = function(){
		if(ajaxRequest.readyState == 4){
			var ajaxDisplay = document.getElementById(divid);
			ajaxDisplay.innerHTML = ajaxRequest.responseText;
			ajaxFunction('','login','login');
			var TabbedPanels1 = new Spry.Widget.TabbedPanels("TabbedPanels1");
//			ajaxFunction(companyid,'seasons','seasons');
		}
	}
	var date1 = document.getElementById('date1').value;
	var actdate = document.getElementById('actdate').value;
	var adults = document.getElementById('adults').value;
	var nights = document.getElementById('nights').value;
	var queryString = "?date1=" + date1 + "&nights=" + nights + "&adults=" + adults + "&actdate=" + actdate + "&companyid=" + companyid + "&ms=" + new Date().getTime();
	ajaxRequest.open("GET", pageid+".php" + queryString, true);
	ajaxRequest.send(null); 
}	

function infoWindowExt(resourceid,sub1,sub2,pageid,divid){
	var ajaxRequest;  // The variable that makes Ajax possible!
	var ajaxDisplay = document.getElementById(divid);
	document.getElementById(divid).style.display = 'block';
	ajaxDisplay.innerHTML = "<center>Loading...<br><img src='images/ajax-loader.gif'></center>";	 
	try{
		// Opera 8.0+, Firefox, Safari
		ajaxRequest = new XMLHttpRequest();
	} catch (e){
		// Internet Explorer Browsers
		try{
			ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try{
				ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e){
				// Something went wrong
				alert("Your browser cannot support this site. Please upgrade.");
				return false;
			}
		}
	}
	// Create a function that will receive data sent from the server
	ajaxRequest.onreadystatechange = function(){
		if(ajaxRequest.readyState == 4){
			var ajaxDisplay = document.getElementById(divid);
			ajaxDisplay.innerHTML = ajaxRequest.responseText;
			ajaxFunction('','login','login');
			var TabbedPanels1 = new Spry.Widget.TabbedPanels("TabbedPanels1");
		}
	}
	var date1 = document.getElementById('date1').value;
	var actdate = document.getElementById('actdate').value;
	var adults = document.getElementById('adults').value;
	var nights = document.getElementById('nights').value;
	var queryString = "?date1=" + date1 + "&nights=" + nights + "&adults=" + adults + "&actdate=" + actdate + "&resourceid=" + resourceid + "&sub1=" + sub1 + 
	"&sub2=" + sub2 + "&ms=" + new Date().getTime();
	ajaxRequest.open("GET", pageid+".php" + queryString, true);
	ajaxRequest.send(null); 
}	
function tagGallery(companyid,pageid,divid){
	var ajaxRequest;  // The variable that makes Ajax possible!
	try{
		// Opera 8.0+, Firefox, Safari
		ajaxRequest = new XMLHttpRequest();
	} catch (e){
		// Internet Explorer Browsers
		try{
			ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try{
				ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e){
				// Something went wrong
				alert("Your browser cannot support this site. Please upgrade.");
				return false;
			}
		}
	}
	// Create a function that will receive data sent from the server
	ajaxRequest.onreadystatechange = function(){
		if(ajaxRequest.readyState == 4){
			document.getElementById(divid).style.display = 'block';
			var ajaxDisplay = document.getElementById(divid);
			ajaxDisplay.innerHTML = ajaxRequest.responseText;
		}
	}
	var queryString = "?companyid=" + companyid + "&ms=" + new Date().getTime();
	ajaxRequest.open("GET", pageid+".php" + queryString, true);
	ajaxRequest.send(null); 
}

function ReserveIt(ResourceID,type,sub1,sub2,timing,doubles,singles){
	var ajaxRequest;  // The variable that makes Ajax possible!
	try{
		// Opera 8.0+, Firefox, Safari
		ajaxRequest = new XMLHttpRequest();
	} catch (e){
		// Internet Explorer Browsers
		try{
			ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try{
				ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e){
				// Something went wrong
				alert("Your browser cannot support this site. Please upgrade.");
				return false;
			}
		}
	}
	// Create a function that will receive data sent from the server
	ajaxRequest.onreadystatechange = function(){
		if(ajaxRequest.readyState == 4){
			ajaxFunction('0','tillslip','tillslip');
		}
	}
	var date1 = document.getElementById('date1').value;
	var adults = document.getElementById('adults').value;
	var nights = document.getElementById('nights').value;
	var queryString = "?date1=" + date1 + "&nights=" + nights + "&adults=" + adults + "&ResourceID=" + ResourceID + "&ResourceTypeID=" + type + 
					"&timing=" + timing + "&sub1=" + sub1 + "&sub2=" + sub2 + "&doubles=" + doubles + "&singles=" + singles + "&ms=" + new Date().getTime();
	ajaxRequest.open("GET", "reserve.php" + queryString, true);
	ajaxRequest.send(null); 
}	

function customizeReserveIt(ResourceID,ResourceTypeID,sub1,sub2,timing){
	var ajaxRequest;  // The variable that makes Ajax possible!
	try{
		// Opera 8.0+, Firefox, Safari
		ajaxRequest = new XMLHttpRequest();
	} catch (e){
		// Internet Explorer Browsers
		try{
			ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try{
				ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e){
				// Something went wrong
				alert("Your browser cannot support this site. Please upgrade.");
				return false;
			}
		}
	}
	// Create a function that will receive data sent from the server
	ajaxRequest.onreadystatechange = function(){
		if(ajaxRequest.readyState == 4){
			updateTabs('search');
		}
	}
	var date1 = document.getElementById('date2').value;
	var adults = document.getElementById('adults').value;
	var nights = document.getElementById('nights').value;
	var queryString = "?date1=" + date1 + "&nights=" + nights + "&adults=" + adults + "&sub1=" + sub1 + "&sub2=" + sub2 + "&ResourceID=" + ResourceID + "&ResourceTypeID=" + ResourceTypeID + "&timing=" + timing + "&ms=" + new Date().getTime();
	ajaxRequest.open("GET", "reserve.php" + queryString, true);
	ajaxRequest.send(null); 
}	


function ReserveTransfer(resourceid,resid1,resid2,start,end,distance){
	var ajaxRequest;  // The variable that makes Ajax possible!
	try{
		// Opera 8.0+, Firefox, Safari
		ajaxRequest = new XMLHttpRequest();
	} catch (e){
		// Internet Explorer Browsers
		try{
			ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try{
				ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e){
				// Something went wrong
				alert("Your browser cannot support this site. Please upgrade.");
				return false;
			}
		}
	}
	// Create a function that will receive data sent from the server
	ajaxRequest.onreadystatechange = function(){
		if(ajaxRequest.readyState == 4){
			ajaxFunction('0','tillslip','tillslip');
		}
	}
	var date1 = document.getElementById('date1').value;
	var adults = document.getElementById('adults').value;
	var queryString = "?date1=" + date1 + "&adults=" + adults + "&resourceid=" + resourceid + "&id1=" + resid1  + "&id2=" + resid2 + "&ResourceTypeID=3&start=" + start + "&end=" + end + "&distance=" + distance + "&ms=" + new Date().getTime();
	ajaxRequest.open("GET", "reserve.php" + queryString, true);
	ajaxRequest.send(null); 
}	

function RemoveIt(resholdid){
	var ajaxRequest;  // The variable that makes Ajax possible!
	try{
		// Opera 8.0+, Firefox, Safari
		ajaxRequest = new XMLHttpRequest();
	} catch (e){
		// Internet Explorer Browsers
		try{
			ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try{
				ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e){
				// Something went wrong
				alert("Your browser cannot support this site. Please upgrade.");
				return false;
			}
		}
	}
	// Create a function that will receive data sent from the server
	ajaxRequest.onreadystatechange = function(){
		if(ajaxRequest.readyState == 4){
			ajaxFunction('0','tillslip','tillslip');
			updateTabs('search');
			ajaxFunction('','login','login');
		}
	}
	var queryString = "?id=" + resholdid +  "&ms=" + new Date().getTime();
	ajaxRequest.open("GET", "remove.php" + queryString, true);
	ajaxRequest.send(null); 
}	

function ChangeNights(id,change,adults,children){
	var ajaxRequest;  // The variable that makes Ajax possible!
	try{
		// Opera 8.0+, Firefox, Safari
		ajaxRequest = new XMLHttpRequest();
	} catch (e){
		// Internet Explorer Browsers
		try{
			ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try{
				ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e){
				// Something went wrong
				alert("Your browser cannot support this site. Please upgrade.");
				return false;
			}
		}
	}
	// Create a function that will receive data sent from the server
	ajaxRequest.onreadystatechange = function(){
		if(ajaxRequest.readyState == 4){
//			var ajaxDisplay = document.getElementById('resResults');
//			ajaxDisplay.innerHTML = ajaxRequest.responseText;
			ajaxFunction('0','tillslip','tillslip');
			ajaxFunction(id,'customize','info');	  
			updateTabs('search');
			ajaxFunction('','login','login');
			
		}
	}
	var queryString = "?resholdid=" + id +  "&change=" + change +  "&adults=" + adults +  "&children=" + children +  "&ms=" + new Date().getTime();
	ajaxRequest.open("GET", "changedays.php" + queryString, true);
	ajaxRequest.send(null); 
}	

function boardChange(id,subtype){
	var ajaxRequest;  // The variable that makes Ajax possible!
	try{
		// Opera 8.0+, Firefox, Safari
		ajaxRequest = new XMLHttpRequest();
	} catch (e){
		// Internet Explorer Browsers
		try{
			ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try{
				ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e){
				// Something went wrong
				alert("Your browser cannot support this site. Please upgrade.");
				return false;
			}
		}
	}
	// Create a function that will receive data sent from the server
	ajaxRequest.onreadystatechange = function(){
		if(ajaxRequest.readyState == 4){
//			var ajaxDisplay = document.getElementById('resResults');
//			ajaxDisplay.innerHTML = ajaxRequest.responseText;
			ajaxFunction(id,'customize','info');
			ajaxFunction(id,'tillslip','tillslip');
		}
	}
	var queryString = "?resholdid=" + id +  "&subtype=" + subtype + "&ms=" + new Date().getTime();
	ajaxRequest.open("GET", "changeboard.php" + queryString, true);
	ajaxRequest.send(null); 
}	

function roomChange(id,subtype){
	var ajaxRequest;  // The variable that makes Ajax possible!
	try{
		// Opera 8.0+, Firefox, Safari
		ajaxRequest = new XMLHttpRequest();
	} catch (e){
		// Internet Explorer Browsers
		try{
			ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try{
				ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e){
				// Something went wrong
				alert("Your browser cannot support this site. Please upgrade.");
				return false;
			}
		}
	}
	// Create a function that will receive data sent from the server
	ajaxRequest.onreadystatechange = function(){
		if(ajaxRequest.readyState == 4){
//			var ajaxDisplay = document.getElementById('resResults');
//			ajaxDisplay.innerHTML = ajaxRequest.responseText;
			ajaxFunction(id,'customize','info');
			ajaxFunction(id,'tillslip','tillslip');
		}
	}
	var queryString = "?resholdid=" + id +  "&subtype=" + subtype + "&ms=" + new Date().getTime();
	ajaxRequest.open("GET", "changeroom.php" + queryString, true);
	ajaxRequest.send(null); 
}	

function changeStart(){
	var ajaxRequest;  // The variable that makes Ajax possible!
	try{
		// Opera 8.0+, Firefox, Safari
		ajaxRequest = new XMLHttpRequest();
	} catch (e){
		// Internet Explorer Browsers
		try{
			ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try{
				ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e){
				// Something went wrong
				alert("Your browser cannot support this site. Please upgrade.");
				return false;
			}
		}
	}
	// Create a function that will receive data sent from the server
	ajaxRequest.onreadystatechange = function(){
		if(ajaxRequest.readyState == 4){
			ajaxFunction('','tillslip','tillslip');
		}
	}
		 
	var date1 = document.getElementById('tilldate').value;
	var queryString = "?date1=" + date1 + "&ms=" + new Date().getTime();
	ajaxRequest.open("GET", "changestart.php" + queryString, true);
	ajaxRequest.send(null); 
}	 

function stateList(defaulter){
	var ajaxRequest;  // The variable that makes Ajax possible!
	try{
		// Opera 8.0+, Firefox, Safari
		ajaxRequest = new XMLHttpRequest();
	} catch (e){
		// Internet Explorer Browsers
		try{
			ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try{
				ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e){
				// Something went wrong
				alert("Your browser cannot support this site. Please upgrade.");
				return false;
			}
		}
	}
	// Create a function that will receive data sent from the server
	ajaxRequest.onreadystatechange = function(){
		if(ajaxRequest.readyState == 4){
			var ajaxDisplay = document.getElementById('states');
			ajaxDisplay.innerHTML = ajaxRequest.responseText;
		}
	}
		 
	var country = document.getElementById('country').value;
	var queryString = "?country=" + country + "&default=" + defaulter + "&ms=" + new Date().getTime();
	ajaxRequest.open("GET", "states.php" + queryString, true);
	ajaxRequest.send(null); 
}	 

function frontDivs(terms,pageid,divid){
	var ajaxRequest;  // The variable that makes Ajax possible!
	try{
		// Opera 8.0+, Firefox, Safari
		ajaxRequest = new XMLHttpRequest();
	} catch (e){
		// Internet Explorer Browsers
		try{
			ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try{
				ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e){
				// Something went wrong
				alert("Your browser cannot support this site. Please upgrade.");
				return false;
			}
		}
	}
	// Create a function that will receive data sent from the server
	ajaxRequest.onreadystatechange = function(){
		if(ajaxRequest.readyState == 4){
			var ajaxDisplay = document.getElementById(divid);
			ajaxDisplay.innerHTML = ajaxRequest.responseText;
		}
	}
		 
	var queryString = "?nights=0&adults=2&terms=" + terms + "&ms=" + new Date().getTime();
	ajaxRequest.open("GET", pageid+".php" + queryString, true);
	ajaxRequest.send(null); 
}																

function swapSettings(fielder) {												
	var live=fielder+"live";
	curvalue=document.getElementById(fielder).value;
	if (curvalue=='on') { curvalue.value='off';}
	if (curvalue=='off') { curvalue.value='on';}
	updateTabs('search');
}							 

function retrieveItin(id) {
window.location.href='book.php';
setTimeout("document.getElementById('info').style.display = 'block';",500);
ajaxFunction('','customer/index','info');
ajaxFunction(id,'retrieve','infocontent');
setTimeout("document.getElementById('info').style.display = 'block';",500);
}
 
function sha1Hash(msg)
{
    // constants [§4.2.1]
    var K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];


    // PREPROCESSING 
 
    msg += String.fromCharCode(0x80); // add trailing '1' bit to string [§5.1.1]

    // convert string msg into 512-bit/16-integer blocks arrays of ints [§5.2.1]
    var l = Math.ceil(msg.length/4) + 2;  // long enough to contain msg plus 2-word length
    var N = Math.ceil(l/16);              // in N 16-int blocks
    var M = new Array(N);
    for (var i=0; i<N; i++) {
        M[i] = new Array(16);
        for (var j=0; j<16; j++) {  // encode 4 chars per integer, big-endian encoding
            M[i][j] = (msg.charCodeAt(i*64+j*4)<<24) | (msg.charCodeAt(i*64+j*4+1)<<16) | 
                      (msg.charCodeAt(i*64+j*4+2)<<8) | (msg.charCodeAt(i*64+j*4+3));
        }
    }
    // add length (in bits) into final pair of 32-bit integers (big-endian) [5.1.1]
    // note: most significant word would be ((len-1)*8 >>> 32, but since JS converts
    // bitwise-op args to 32 bits, we need to simulate this by arithmetic operators
    M[N-1][14] = ((msg.length-1)*8) / Math.pow(2, 32); M[N-1][14] = Math.floor(M[N-1][14])
    M[N-1][15] = ((msg.length-1)*8) & 0xffffffff;

    // set initial hash value [§5.3.1]
    var H0 = 0x67452301;
    var H1 = 0xefcdab89;
    var H2 = 0x98badcfe;
    var H3 = 0x10325476;
    var H4 = 0xc3d2e1f0;

    // HASH COMPUTATION [§6.1.2]

    var W = new Array(80); var a, b, c, d, e;
    for (var i=0; i<N; i++) {

        // 1 - prepare message schedule 'W'
        for (var t=0;  t<16; t++) W[t] = M[i][t];
        for (var t=16; t<80; t++) W[t] = ROTL(W[t-3] ^ W[t-8] ^ W[t-14] ^ W[t-16], 1);

        // 2 - initialise five working variables a, b, c, d, e with previous hash value
        a = H0; b = H1; c = H2; d = H3; e = H4;

        // 3 - main loop
        for (var t=0; t<80; t++) {
            var s = Math.floor(t/20); // seq for blocks of 'f' functions and 'K' constants
            var T = (ROTL(a,5) + f(s,b,c,d) + e + K[s] + W[t]) & 0xffffffff;
            e = d;
            d = c;
            c = ROTL(b, 30);
            b = a;
            a = T;
        }

        // 4 - compute the new intermediate hash value
        H0 = (H0+a) & 0xffffffff;  // note 'addition modulo 2^32'
        H1 = (H1+b) & 0xffffffff; 
        H2 = (H2+c) & 0xffffffff; 
        H3 = (H3+d) & 0xffffffff; 
        H4 = (H4+e) & 0xffffffff;
    }

    return H0.toHexStr() + H1.toHexStr() + H2.toHexStr() + H3.toHexStr() + H4.toHexStr();
}

//
// function 'f' [§4.1.1]
//
function f(s, x, y, z) 
{
    switch (s) {
    case 0: return (x & y) ^ (~x & z);           // Ch()
    case 1: return x ^ y ^ z;                    // Parity()
    case 2: return (x & y) ^ (x & z) ^ (y & z);  // Maj()
    case 3: return x ^ y ^ z;                    // Parity()
    }
}

//
// rotate left (circular left shift) value x by n positions [§3.2.5]
//
function ROTL(x, n)
{
    return (x<<n) | (x>>>(32-n));
}

//
// extend Number class with a tailored hex-string method 
//   (note toString(16) is implementation-dependant, and 
//   in IE returns signed numbers when used on full words)
//
Number.prototype.toHexStr = function()
{
    var s="", v;
    for (var i=7; i>=0; i--) { v = (this>>>(i*4)) & 0xf; s += v.toString(16); }
    return s;
}