// JScript File

function createCookie(name,value,days)
{
	var date = new Date();
	var expires = "";
	
	if (days)
	{	
		date.setTime(date.getTime()+(days*24*60*60*1000));	
		expires = "; expires="+date.toGMTString();
	}
		
	document.cookie = name +"="+ value + expires +"; path=/";
}

function readCookie(name)
{
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++)
	{
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name)
{
	if (readCookie(name) != null)
	{
		createCookie(name,"",-1);
	}
	
}

function addToFavs(productID)  {
	var currentShortlistProps, msg = "";
	currentShortlistProps = readCookie("shortlistProps");
	if (currentShortlistProps != null)  {
		if (currentShortlistProps.indexOf("|" + productID + "|") > -1) msg = "exists";
		else currentShortlistProps = currentShortlistProps + productID + "|";
		}
	else currentShortlistProps = "|" + productID + "|";
	createCookie("shortlistProps",currentShortlistProps,90);
	// open popup confirmation
	popup('add-to-favourites.aspx?xml=1&productid=' + productID + '&msg=' + msg, 'AddToShortList', '530', '545', 'no');
	}

function hotelNumbers(theForm) {
	var productId = theForm.productID.value;
	var children = "";
	if(theForm.roomChild != null){
		children = theForm.roomChild.value;
	}
	else{
		children = "0";
	}
	var singleRoom = theForm.roomSingle.value;
	var doubleRoom = theForm.roomDouble.value;
	var tripleRoom = "";
	if(theForm.roomTriple != null){
		tripleRoom = theForm.roomTriple.value;
	}
	else{
		tripleRoom = "0";
	}
	
	var figures = readCookie("hotelNumbers");
	
	if(figures != null){
		if(figures.indexOf(productId) > -1){
			alert("The product have already been added to your basket");
		}
		else{
			figures = figures + "," + productId + "|" + children + "|" + singleRoom + "|" + doubleRoom + "|" + tripleRoom + ","; 
			figures = figures.substring(0,parseInt(figures.length - 1));
			createCookie("hotelNumbers",figures);
		}
	}
	else{
		figures = productId + "|" + children + "|" + singleRoom + "|" + doubleRoom + "|" + tripleRoom + ",";
		figures = figures.substring(0,parseInt(figures.length - 1));
		createCookie("hotelNumbers",figures);
	}	
}


function setCookieDetails(varProductID, varArrivalDay, varArrivalMonth, varArrivalYear, varDuration, varType, roomC, roomD, roomS, roomT) {
	
	var valueToStore = "";
	
	/* check the tyoe of item being saved - different items have different values */
	switch (varType) {
		case "hotel":
			/* hotels have rooms stored in a specific order in the cookie:
			children, double, single, triple
			the choice for this was arbitrary (actually alphabetical but for no real reason) */
			valueToStore = varProductID + "|" + varArrivalDay + "|" + varArrivalMonth + "|" + varArrivalYear + "|" + varDuration + "|" + roomC + "|" + roomD + "|" + roomS + "|" + roomT;
		break;
		
		case "flight":
			/* this is still to be confirmed as the final settings for the flight cookie */
			valueToStore = varProductID + "|" + varArrivalDay + "|" + varArrivalMonth + "|" + varArrivalYear + "|" + varDuration;
		break;
		
		default:
			/* this should never happen but assume its a hotel - later may need escorted tours added */
			valueToStore = varProductID + "|" + varArrivalDay + "|" + varArrivalMonth + "|" + varArrivalYear + "|" + varDuration + "|" + roomC + "|" + roomD + "|" + roomS + "|" + roomT;
	}
	
	createCookie("basketID" + varProductID,valueToStore,90);
	
}

function addToBasketAlt(productid,startdate,price,duration,pricebandid,apricebandid,bpricebandid,producttype) {

	var currentBasketInfo = readCookie("basketIds");
	var minibasketelement = "" ;
			
	if(currentBasketInfo != null){
		
		currentBasketInfo = currentBasketInfo + "," + productid + "|" + startdate + "|" + "0" + "|" + duration + "|" + pricebandid + "|" + ",";
		currentBasketInfo = currentBasketInfo.substring(0,parseInt(currentBasketInfo.length - 1));
		minibasketelement = productid + "|" + pricebandid + "|" + apricebandid + "|" + bpricebandid + "|" + ",";
		minibasketelement = minibasketelement.substring(0,parseInt(minibasketelement.length - 1));
		createCookie("minibasket",minibasketelement);
		createCookie("basketIds",currentBasketInfo);
		window.location = "mini-basket.aspx"
	}
	else {
		currentBasketInfo = productid + "|" + startdate + "|" + "0" + "|" + duration + "|" + pricebandid + "|" + ",";
		currentBasketInfo = currentBasketInfo.substring(0,parseInt(currentBasketInfo.length - 1));
		minibasketelement = productid + "|" + pricebandid + "|" + apricebandid + "|" + bpricebandid + "|" + ",";
		minibasketelement = minibasketelement.substring(0,parseInt(minibasketelement.length - 1));

		createCookie("basketIds",currentBasketInfo);
		createCookie("minibasket",minibasketelement);
		window.location = "mini-basket.aspx";
	}
	
}

function addtoBasketHotel() {

// Need to calculate the price based on each day and the price range
// first lets get the date

var product = document.getElementById('productID').value;

var select1 = document.getElementById('arrivalDay');
var dtStartDay = select1.item(select1.selectedIndex).value ;
var select2 = document.getElementById('arrivalMonth');
var dtStartMonth = select2.item(select2.selectedIndex).text ;
var select3 = document.getElementById('arrivalYear');
var dtStartYear = select3.item(select3.selectedIndex).value ;

var dtstrStart = String(dtStartMonth) + " " + String(dtStartDay) + ", " + String(dtStartYear) ;
var dtstrforform = String(dtStartDay) + " " + String(dtStartMonth) + " " + String(dtStartYear) ;
var dtStart = new Date(dtstrStart);
var dtDaily = dtStart;


var totalprice = 0;
var intDuration = document.getElementById('duration').value;

var errorininput = false;

var errormessage = '';

if (intDuration == 0) {
	errormessage = errormessage + 'Please enter the duration of your stay\r';
	errorininput = true;
}

if (dtStartDay == 0 || dtStartMonth == 0 || dtStartYear == 0) {
	errormessage = errormessage + 'Please enter the date you intend to arrive\r';
	errorininput = true;
}

var select4 = document.getElementById('roomChild');
var numberofchildren = select4.item(select4.selectedIndex).value;
var select5 = document.getElementById('roomDouble');
var numberofdoubles = select5.item(select5.selectedIndex).value;
var select6 = document.getElementById('roomSingle');
var numberofsingles = select6.item(select6.selectedIndex).value;
var select7 = document.getElementById('roomTriple');
var numberoftriples = select7.item(select7.selectedIndex).value;


if (numberofchildren + numberofdoubles + numberofsingles + numberoftriples == 0) {
	errormessage = errormessage + 'Please select the rooms you require\r';
	errorininput = true;
}



if (errorininput == false) {

//loop through the duration 

for (i=0;i<intDuration;i++){
	//so we need to add i days to the start date to get the bookable day..
	dtDaily.setDate(dtStart.getDate()+i);
	
	//so for each of these which priceband are they in
	var pricerangeforday = pricerangedayisin(dtDaily);
	totalprice = totalprice + CalculateDayPrice(pricerangeforday);
}



	var currentBasketInfo = readCookie("basketIds");

	if(currentBasketInfo != null){
		
		currentBasketInfo = currentBasketInfo + "," + product + "|" + dtstrforform  + "|" + totalprice + "|" + intDuration + "|" + '' + "|" + numberofsingles + "|" + numberofdoubles + "|" + numberoftriples + "|" + numberofchildren + "|" + "," ;
		currentBasketInfo = currentBasketInfo.substring(0,parseInt(currentBasketInfo.length - 1));
		createCookie("basketIds",currentBasketInfo);
		window.location = "mini-basket.aspx";
	}
	else {

		currentBasketInfo = product + "|" + dtstrforform  + "|" + totalprice + "|" + intDuration + "|" + '' + "|" + numberofsingles + "|" + numberofdoubles + "|" + numberoftriples + "|" + numberofchildren + "|" + "," ;
		currentBasketInfo = currentBasketInfo.substring(0,parseInt(currentBasketInfo.length - 1));
		createCookie("basketIds",currentBasketInfo);
		window.location = "mini-basket.aspx";

	}

}

if (errorininput == true) {
	alert(errormessage);
}

}

function CalculateDayPrice (rangenumber){
	//need to get number of rooms
	var select4 = document.getElementById('roomChild');
	var numberofchildren = select4.item(select4.selectedIndex).value;
	var select5 = document.getElementById('roomDouble');
	var numberofdoubles = select5.item(select5.selectedIndex).value;
	var select6 = document.getElementById('roomSingle');
	var numberofsingles = select6.item(select6.selectedIndex).value;
	var select7 = document.getElementById('roomTriple');
	var numberoftriples = select7.item(select7.selectedIndex).value;

	var daychildprice = (document.getElementById('childprice'+rangenumber).value) * numberofchildren;
	var daydoubleprice = (document.getElementById('adultprice'+rangenumber).value) * numberofdoubles * 2;
	var daysinglesprice = (document.getElementById('singleprice'+rangenumber).value) * numberofsingles;
	var daytriplesprice = (document.getElementById('tripleprice'+rangenumber).value) * numberoftriples * 3;

	var totalforday = daychildprice + daydoubleprice + daysinglesprice + daytriplesprice; 
	return totalforday;
}



function pricerangedayisin (dtDayToCheck) {
	var numberofpriceranges = document.getElementById('countofpricebands').value;	
	var rangenumberoutput
	var i
	for (i=0;i<numberofpriceranges;i++){
		if (dtDayToCheck >= pricerangestarts(i+1) && dtDayToCheck <= pricerangeends(i+1)){
			rangenumberoutput = i+1
		}		
	} 
	return rangenumberoutput; 
}

function pricerangestarts(rangenumber){
	var rangeStarts = new Date(document.getElementById('pricebandStart'+rangenumber).value);
	return rangeStarts;
}

function pricerangeends(rangenumber){
	var rangeStarts = new Date(document.getElementById('pricebandEnd'+rangenumber).value);
	return rangeStarts;
}

function removeFromBasket (productid) {
    
    /* Author: Robert Kent
     * Decription: To allow customers to remove items from their baskets  
     * Date: 3rd November 2008  
     * product ids and details are part of a comma delimited array
     */
    var currentBasketInfo = readCookie("basketIds");
    
       if(currentBasketInfo.indexOf(productid) > -1) {
        var arrProducts = currentBasketInfo.split(",");
        var newCookieValue = currentBasketInfo
        for (i=0;i < arrProducts.length;i++){

            if (arrProducts[i].indexOf(productid)> -1) {
                //The product may be the begining of the string or in the middle or the last product and not have a comma 
                newCookieValue = newCookieValue.replace(arrProducts[i]+',', '');
                newCookieValue = newCookieValue.replace(","+arrProducts[i], '');
                newCookieValue = newCookieValue.replace(arrProducts[i], '');
            }
            else {
                //Do nothing, for the item with the product id that is in the basket
             }
        }
        //test to see if you have removed the last product
        //if so, delete the basket cookie
        if (newCookieValue.length==0){
        eraseCookie("basketIds");
        }
        //otherwise recreate the cookie with the product removed fromt he list
        else{
        createCookie("basketIds",newCookieValue);
        }
       //reload the window to show change in basket
       window.location.reload(true);
      }

}
  
