// JavaScript Document
function refreshBooking(bookingRef) {
	new Ajax.Updater('basket', '/class/plugins/eyesleepinnBasket.php', {asynchronous:true, evalScripts:true, parameters: {bookingRef: bookingRef}});
}

function addBookingOption(bookingRef, standard, family, single, date, nights, adults, children) {
	new Ajax.Updater('basket', '/class/plugins/eyesleepinnBasket.php', {asynchronous:true, evalScripts:true, parameters: {bookingRef: bookingRef, type: 'room', standard:standard, family:family, single:single, date:date, nights:nights, adults:adults, children:children},onSuccess: function(transport){ bookingstages.next(); }});
}
function addBookingExtra(bookingRef, extraID, extraDesc, extraPrice) {
	new Ajax.Updater('basket', '/class/plugins/eyesleepinnBasket.php', {asynchronous:true, evalScripts:true, parameters: {bookingRef: bookingRef, type: 'extra', extraID:extraID, extraDesc:extraDesc, extraPrice:extraPrice}});
}
function convertDisabled(bookingRef, bookingID, toDisabled) {
	new Ajax.Updater('basket', '/class/plugins/eyesleepinnBasket.php', {asynchronous:true, evalScripts:true, parameters: {bookingRef: bookingRef, bookingID: bookingID, toDisabled: toDisabled}});
}
function removeBookingElement(bookingRef, tempID) {
	new Ajax.Updater('basket', '/class/plugins/eyesleepinnBasket.php', {asynchronous:true, evalScripts:true, parameters: {bookingRef: bookingRef, tempID:tempID}});
}
function sendEmail(bookingRef, email) {
	new Ajax.Request('/oncms/plugins/boxes/eyesleepinn/generateEmail.php',
	  {
		method:'post',
		parameters: {bookingRef: bookingRef, email: email}
	  });	
}

function confirmBooking() {
	new Ajax.Updater('slide-1-5', '/class/plugins/eyesleepinnConfirm.php', {asynchronous:true, evalScripts:true, parameters: {
					 firstName: $('firstName').value,
					 surname: $('surname').value,
					 address1: $('address1').value,
					 address2: $('address2').value,
					 town: $('town').value,
					 county: $('county').value,
					 postcode: $('postcode').value,
					 country: $('country').value,
					 email: $('email').value,
					 phone: $('phone').value,
					 cardType: $('cardType').value,
					 cardName: $('cardName').value,
					 cardNumber: $('cardNumber').value,
					 startMonth: $('startMonth').value,
					 startYear: $('startYear').value,
					 expMonth: $('expMonth').value,
					 expYear: $('expYear').value,
					 issueNumber: $('issueNumber').value,
					 cvv: $('cvv').value,
					 bookingRef: $('bookingRef').value},
					 onSuccess: function(transport){
						bookingstages.next();
						$('basket').innerHTML="";
				}});
}

function validateDetails() {
	var elements=["firstName", "surname", "address1", "town", "county", "postcode", "email", "phone"];
	var error=0;
	for(i=0;i<elements.length;i++) {
		if ($(elements[i]).value=='') {
			$(elements[i]).className='formfieldalert';
			error=error+1;
			} else {
			$(elements[i]).className='';
			}
		}
	var emailerror=0;
	var at="@"
	var dot="."
	var str = $('email').value;
	var lat=str.indexOf(at)
	var lstr=str.length
	var ldot=str.indexOf(dot)
	if (str.indexOf(at)==-1){
		emailerror=emailerror+1;
	}
	if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
	   emailerror=emailerror+1;
	}
	if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
		emailerror=emailerror+1;
	}
	if (str.indexOf(at,(lat+1))!=-1){
		emailerror=emailerror+1;
	}
	if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
	   emailerror=emailerror+1;
	}
	if (str.indexOf(dot,(lat+2))==-1){
	   emailerror=emailerror+1;
	}	
	if (str.indexOf(" ")!=-1){
	   emailerror=emailerror+1;
	}
	if (emailerror>0) {
		$('email').className='formfieldalert';
		error=error+1;
		} else {
		$('email').className='';
		}	
if (error==0) {	return true; } else { return false; }
}

function validateCard() {
	var elements=["cardNumber", "cardName", "cvv"];
	var currentTime = new Date();
	var month=1+currentTime.getMonth();
	if(month<10) { month='0'+month; }
	var year=currentTime.getFullYear();
	var error=0;
	var spaceFix = / /gi;
	$('cardNumber').value=$('cardNumber').value.replace(spaceFix,"");
	for(i=0;i<elements.length;i++) {
		if ($(elements[i]).value=='') {
			$(elements[i]).className='formfieldalert';
			error=error+1;
			} else {
			$(elements[i]).className='';
			}
		}
		if ($('cardNumber').value.length<15 || isNaN($('cardNumber').value)){ 
			error=error+1;
			$('cardNumber').className='formfieldalert';
			} else {
			$('cardNumber').className='';	
			}	
		if ($('cvv').value.length<3 || isNaN($('cvv').value)){  
			error=error+1;
			$('cvv').className='formfieldalert';	
			} else {
			$('cvv').className='';	
			}
		if (($('expMonth').value<month)&&($('expYear').value<=year)) {
			alert('Month is '+month+' ExpMonth is '+$('expMonth').value);
			alert('Year is '+year+' ExpYear is '+$('expYear').value);
			$('expMonth').className='formfieldalert';
			$('expYear').className='formfieldalert';
			error=error+1;
			} else {
			$('expMonth').className='';
			$('expYear').className='';
			}
			
		if(checkCC($('cardNumber').value)) {
			$('cardNumber').className='';
			} else {
			$('cardNumber').className='formfieldalert';
			error=error+1;
			}
		if (($('startMonth').value==''||$('startYear').value=='')&&$('issueNumber').value==''&&$('cardType').value=='maestro') {
			$('startMonth').className='formfieldalert';
			$('startYear').className='formfieldalert';
			$('issueNumber').className='formfieldalert';
			error=error+1;
			} else {
			$('startMonth').className='';
			$('startYear').className='';
			$('issueNumber').className='';
			}
if (error==0) { $('cardErrorAlert').hide(); return true; } else { $('cardErrorAlert').appear(); return false; }
}

function checkCC(cardNumber)
{
	if(cardNumber=="") { 
		return false; 
		}
	else {
		var number = cardNumber.replace(/\s+/g, '') ;
		if(number.match(/\D/)){
			return false ;
		}
		number = number.split('').reverse().join('') ;
		var digits = '';
		for(var i = 0; i < number.length; i++){
			digits += '' + ((i%2) ?
				number.charAt(i) * 2 :
				number.charAt(i)) ;
		}
		var sum = 0 ;
		for (var i = 0; i < digits.length; i++){
			sum += (digits.charAt(i) * 1) ;
		}
		return (sum % 10) ? false : true ;
		}
}

function XML_HTTP_Util() {
	this.sendRequest = function(url,async,callback,callbackargs)
	{
	var req = this.createXMLHTTPObject();
	if (!req) callback.call(this,false,callbackargs);
	req.ref = this;
	req.open("GET",url,async);
	req.setRequestHeader('User-Agent','XMLHTTP/1.0');
	req.onreadystatechange = function()
	{
	if (req.readyState != 4) return;
	if (req.status != 200 && req.status != 304)
	{
	//alert("HTTP error " + req.status);
	callback.call(this.ref,false,callbackargs);
	}
	else
	{
	callback.call(this.ref,req,callbackargs);
	}
	}
	if (req.readyState == 4) return;
	req.send(null);
	}
	this.createXMLHTTPObject = function()
	{
	var xmlhttp = false;
	for (var i=0;i<this.XMLHttpFactories.length;i++)
	{
	try
	{
	xmlhttp = this.XMLHttpFactories[i]();
	}
	catch(e)
	{
	continue;
	}
	break;
	}
	return xmlhttp;
	}
	this.XMLHttpFactories = [
	function() {return new XMLHttpRequest()},
	function() {return new ActiveXObject("Msxml2.XMLHTTP")},
	function() {return new ActiveXObject("Msxml3.XMLHTTP")},
	function() {return new ActiveXObject("Microsoft.XMLHTTP")}
	];
}