// Set Ajax Pro default settings and handlers
if(typeof AjaxPro != "undefined" && AjaxPro !== null){ 
        AjaxPro.timeoutPeriod = 60000; // 1 minute (in milliseconds). The default value is 10 seconds (set in core.ashx)
        AjaxPro.onTimeout = function(b,res){ 
                // log the timeout
                //alert('timeout'); 
        } 
        AjaxPro.onLoading = function(b){ 
                // this would be a good place to display the spinner (instead of setting it explicitly after each AjaxPro async call)
                //timer.insert();
        } 
        AjaxPro.onError = function(res){ 
                // log the timeout
                //alert('error'); 
        }  
}

//Delegate Functions
var cE = {
	$:function (type){
		return document.createElement(type);
	}
};


var popup = function(url,name,features){
	window.open(url,name,features)
}

var newUser;
var fromAccessible;
var user1;
var sendLogin;

//This is the pre-login for users coming from the manage bookings
var preLogin = function(){
	$(".info-panel .form-panel").animate({opacity:"hide",height:"toggle"},1, function(){updateIntro("login",true)});
	updatePersonDetails();
	$("#change-dates h2").empty().append("Search hotels");
	$(".form-info .footer").hide();
	setInD();
	findHotels();
}

function callback_login_amend(res){

    var ajaxUser = res.value;
	if (ajaxUser != null){
		document.location.href="ManageBookings.aspx";	
	}
}





function callback_login(res){

    var ajaxUser = res.value;
    
    if (ajaxUser == null){
        // Login failed so display appropriate error message
		timer.remove();
		
		if(document.getElementById("login_warn")){
			document.getElementById("login_warn").innerHTML="Your email and password have not found a match";
		}
		else{
			var err = cE.$("div");
			err.className="warn";
			err.id="login_warn";
			err.appendChild(document.createTextNode("Your email and password have not found a match"));
			document.getElementById("form-club-login").appendChild(err);
			
		}
		document.getElementById("login-button").disabled=false;
		
		
        return;
    }
	    
	user1 = ajaxUser;

    $(".info-panel .form-panel").animate({opacity:"hide",height:"toggle"},750, function(){updateIntro("login")});

	
    updatePersonDetails();
}

var login = function(){
	
	document.getElementById("login-button").disabled=true;
	
	var submittable = false;
	
	var fclub = $("input[@name='club']:checked").val()
	var femail = document.getElementById("club-email");
	var fpassword = document.getElementById("club-password");
	var fbusinessCodeType = $("input[@name='businessCodeType']:checked").val()

	if(!fclub){
		var err = cE.$("div");
		err.id="clubnumberID";
		err.className="warn";
		err.appendChild(document.createTextNode("Please tell us if you have previously booked"));
		if(!document.getElementById("clubnumberID")){document.getElementById("form-club-member").appendChild(err);}
		document.getElementById("login-button").disabled=false;
	}
	else{

		if(fclub=="yes"){
		
			if(femail.value=="" || fpassword.value==""){
				
				if(document.getElementById("clubnumberID")){
					document.getElementById("form-club-member").removeChild(document.getElementById("clubnumberID"));
				}
				
				
				if(document.getElementById("login_warn")){
					document.getElementById("login_warn").innerHTML="Please give us you username and password";
				}
				else{
					var err = cE.$("div");
					err.className="warn";
					err.id="login_warn";
					err.appendChild(document.createTextNode("Please give us you username and password"));
					document.getElementById("form-club-login").appendChild(err);			
				}
				document.getElementById("login-button").disabled=false;

			}
			else{
			var submittable = true;	
			}
		
		}
		else{
		var submittable = true;	
		}
		
	}

	
	if(!fbusinessCodeType){fbusinessCodeType="0";}
	
	var fbusinessCodeValue;
	if(document.getElementById("businessCodeValue")){
		fbusinessCodeValue = document.getElementById("businessCodeValue").value;
	}
	
	if(submittable==true){
	    // Try to log user in if email and password have been supplied
	    if (fclub == 'yes'){
	        AjaxProxy.Login(femail.value, fpassword.value, callback_login);
	        // Show wait timer
			
			timer.insert();
			
	        return;
	    }
		else{
			AjaxProxy.GetNewUser(fbusinessCodeValue, fbusinessCodeType, callback_login);
	        // Show wait timer
			
			timer.insert();

			//Set the new user variable to "true" this is used when sending the new person object to the backend
			newUser = true;
			
			
			return;
		}
		
		
		//Create new person object
		user1 = new Person();
	
			
		$(".info-panel .form-panel").animate({opacity:"hide",height:"toggle"},750, function(){updateIntro("login")});
		updatePersonDetails();		

	}

}

var updatePersonDetails = function(){

	document.getElementById("change-dates-button").className="";

	var ftitle = document.getElementById("ftitle");
	var ffirstname = document.getElementById("ffirstname");
	var flastname = document.getElementById("flastname");
	var faddress1 = document.getElementById("faddress1");
	var faddress2 = document.getElementById("faddress2");
	var faddress3 = document.getElementById("faddress3");
	var faddress4 = document.getElementById("faddress4");
	var fcity = document.getElementById("fcity");
	var fpostcode = document.getElementById("fpostcode");
	var fcountry = document.getElementById("fcountry");
	var femail = document.getElementById("femail");
	var ftelephone = document.getElementById("ftelephone");
	
	
	if(user1.OperaId!=null){

		
		for(i=0;i<ftitle.length;i++){
			if(ftitle.options[i].value==user1.Title){
				ftitle.options[i].selected="selected";
			}
			
		}
		ftitle.disabled="disabled";
		ffirstname.value=user1.FirstName;
		ffirstname.disabled="disabled";
		flastname.value=user1.LastName;
		flastname.disabled="disabled";
		
		if(user1.Address!=null){
		
			if(user1.Address.AddressLines[0]){
			faddress1.value=user1.Address.AddressLines[0];
			}
			
			if(user1.Address.AddressLines[1]){
			faddress2.value=user1.Address.AddressLines[1];
			}
			
			if(user1.Address.AddressLines[2]){
			faddress3.value=user1.Address.AddressLines[2];
			}
			
			if(user1.Address.AddressLines[3]){
			faddress4.value=user1.Address.AddressLines[3];
			}
			
			faddress1.disabled="disabled";
			faddress2.disabled="disabled";
			faddress3.disabled="disabled";
			faddress4.disabled="disabled";
			
			if(user1.Address.City){
			fcity.value=user1.Address.City;
			}
			
			fcity.disabled="disabled";
			
			if(user1.Address.PostCode){
			fpostcode.value=user1.Address.PostCode;
			}
			
			fpostcode.disabled="disabled";
			
			for(i=0;i<fcountry.length;i++){
				if(fcountry.options[i].value==user1.Address.CountryCode){
					fcountry.options[i].selected="selected";
				}	
			}
			
			fcountry.disabled="disabled";
		
		}
		
	femail.value=user1.EmailAddress;
	femail.disabled="disabled";
	ftelephone.value=user1.TelephoneNumber;
	ftelephone.disabled="disabled";
	
	document.getElementById("field-email").className="hide";
	document.getElementById("field-newsletter").className="hide";
	document.getElementById("field-password").className="hide";
	document.getElementById("field-repeat-password").className="hide";		
		
		
	
	}
	


}

var updateIntro = function(type,pre){

	timer.remove();
	

	var introPanel = $(".info-panel .form-panel");
	var fieldsets = introPanel[0].getElementsByTagName("fieldset");
	for(i=0;i<fieldsets.length;i++){
		fieldsets[i].className="hide";	
	}
	buildIntro();
	$(".info-panel .form-panel").animate({opacity:"show",height:"toggle"},750);

	
			
	if(fromAccessible==true){
		$("#change-dates").animate({opacity:"show",height:"toggle"},750);
		$("#change-dates h2").empty().append("Find a hotel");
	}
	else{
		//Only do the find hotels if this isn't prelogin (IE not from the manage booking page)
		if(pre!=true){
			findHotels();
		}		
	}
	


}



var resetIntro = function(){
	var introPanel = $(".info-panel .form-panel");
	var fieldsets = introPanel[0].getElementsByTagName("fieldset");
	for(i=0;i<fieldsets.length;i++){
		fieldsets[i].className="";
	}
	
	$("#form-club-login").hide();
	$("#form-other-member-number").hide();
	var radios = introPanel[0].getElementsByTagName("input");
	for(i=0;i<radios.length;i++){
		radios[i].checked=false;	
	}
	
	
	
	var loginWelcome = document.getElementById("login-welcome");
	introPanel[0].removeChild(loginWelcome);
	
	$(".info-panel .form-panel").animate({opacity:"show",height:"toggle"},750);
	
}



var buildIntro = function(){

	$("#form-club-login").hide();
	$("#form-other-member-number").hide();

	var div1 = document.createElement("div");
	div1.id="login-welcome";

	var p1 = document.createElement("p");
	var p2 = document.createElement("p");	
	var p3 = document.createElement("p");
	var a3 = document.createElement("a");
	
	//If the user is logged in and has a rate type (IATA etc)
	if(user1.OperaId && user1.BusinessCode){
		p1.appendChild(document.createTextNode("Welcome back "+user1.FirstName+" "+user1.LastName+"."));
		a3.appendChild(document.createTextNode("Not "+user1.FirstName+" "+user1.LastName+"?"));
		a3.href="#";
		a3.onclick=function(){
			endSession();
			
			$(".info-panel .form-panel").animate({opacity:"hide",height:"toggle"},750, function(){resetIntro();});
			return false;
		}
		p3.appendChild(a3);	
		div1.appendChild(p1);
		div1.appendChild(p2);
		div1.appendChild(p3);		
		
	}
	if(user1.OperaId && !user1.BusinessCode){
		p1.appendChild(document.createTextNode("Welcome back "+user1.FirstName+" "+user1.LastName+"."));
		a3.appendChild(document.createTextNode("Not "+user1.FirstName+" "+user1.LastName+"?"));
		a3.href="#";
		a3.onclick=function(){
			endSession();
			$(".info-panel .form-panel").animate({opacity:"hide",height:"toggle"},750, function(){resetIntro();});
			return false;
		}
		p3.appendChild(a3);	
		div1.appendChild(p1);
		div1.appendChild(p3);		
		
	}
	
	if(!user1.OperaId && user1.BusinessCode){
		//p1.appendChild(document.createTextNode("Your "+user1.BusinessCode.Value+" has been applied."));
		div1.appendChild(p1);
	}
	if(!user1.OperaId && !user1.BusinessCode){
		p1.appendChild(document.createTextNode("Select a hotel from the list below."));
		div1.appendChild(p1);
	}

	var introPanel = $(".info-panel .form-panel");
	introPanel[0].appendChild(div1);

}










//Timer wait graphic
var timer = {
	
	insert : function(type){
		
		var targ = $(".info-panel");
		
		if(type=="res"){
			$("#step3 .content").addClass("waiting");
			targ = $("#step3 .content");
		}
		else{
			$(".info-panel").addClass("waiting");	
		}
		
		var timer = cE.$("img");
		timer.className="timer";
		timer.id="timer";
		timer.src=dir+"images/timer.gif"
		targ[0].appendChild(timer);
	},
	
	remove : function(type){
		var timer = document.getElementById("timer");
		if(timer){
			var targ = $(".info-panel");
			if(type=="res"){
				$("#step3 .content").removeClass("waiting");
				targ = $("#step3 .content");
			}
			else{
				$(".info-panel").removeClass("waiting");	
			}
			
			targ[0].removeChild(timer);
		}
	}
	
}











//LOCAL RESERVATION object
var Reservation = new Object();
//Search criteria
Reservation.range="";
Reservation.rangeName="";
Reservation.CheckInDate="";
Reservation.CheckOutDate="";
Reservation.nights="";
Reservation.amount="";
Reservation.NumGuestsPerRoom="";
//Hotel info
Reservation.Code="";
Reservation.roomCode="";
Reservation.rateCode="";
Reservation.rooms = new Array();
Reservation.AddOns = new Array();
Reservation.CreditCards = new Array();
//Person/Payment Info
Reservation.Payment = new Object();
//Previous booking ID
Reservation.prevbooking = "";




var roomAmount;
var searchRange;
var numNights;
//Variable to store the selected room code;
var roomCode;

//Set reservation object to search criteria
var initReservation = function(){	
	
	/*Reservation.range=document.getElementById("search_range").value;
	Reservation.rangeName=document.getElementById("search_range_name").value;
	Reservation.CheckInDate=document.getElementById("search_checkin").value;
	Reservation.CheckOutDate=document.getElementById("search_checkout").value;
	Reservation.nights=document.getElementById("search_nights").value;
	Reservation.amount=document.getElementById("search_rooms").value;
	Reservation.NumGuestsPerRoom=document.getElementById("search_adults").value;
	Reservation.prevbooking=document.getElementById("search_prevbooking").value;*/

	updateSummary();


}





//FORMAT DATES - formates dates for the summary
var formatDate = function(d){
	var date = d.split("/");
	var months = ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];
	var currentMonth = parseInt(date[1],10);
	var year = date[2].substring(2,4);
	var str = date[0] + " " + months[currentMonth-1] + " " + year;
	return str;
}

//FORMAT DATES - formates dates for the confirmation
var formatDateAlt = function(d){
	var day = d.getDay();
	var month = d.getMonth();
	var date = d.getDate();
	var year = d.getFullYear();
	
	var months = ["January","February","March","April","May","June","July","August","September","October","November","December"];
	var days = ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];
	
	var dateStr = days[day] + " " + date + " " + months[month] + " " + year;
	return dateStr;
}




//UPDATE SUMMARY - updates the summary info based on the search criteria
var updateSummary = function(){

	$(".form-info .footer").show();
	
	if(Reservation.range!=""){

	var divClear = cE.$("div");
	divClear.className="clear";
	var dl = cE.$("dl");
	var dtR = cE.$("dt");
	dtR.innerHTML = "No. of Rooms:"
	var ddR = cE.$("dd");
	ddR.innerHTML = Reservation.amount + " rooms";

	var dtA = cE.$("dt");
	dtA.innerHTML = "No. of Adults:";
	var ddA = cE.$("dd");
	ddA.innerHTML = Reservation.NumGuestsPerRoom + " (per room)";
	
	var dtL = cE.$("dt");
	dtL.innerHTML = "Location:";
	var ddL = cE.$("dd");
	ddL.innerHTML = Reservation.rangeName;
	var dtN = cE.$("dt");
	dtN.innerHTML = "No. of Nights:";
	var ddN = cE.$("dd");
	ddN.innerHTML = Reservation.nights + " nights";
	var dtF = cE.$("dt");
	dtF.innerHTML = "Booking Dates:";
	var ddF = cE.$("dd");
	ddF.innerHTML = formatDate(Reservation.CheckInDate) + " - " + formatDate(Reservation.CheckOutDate);

	dl.appendChild(dtR);
	dl.appendChild(ddR);
	dl.appendChild(dtA);
	dl.appendChild(ddA);
	dl.appendChild(dtL);
	dl.appendChild(ddL);
	dl.appendChild(dtN);
	dl.appendChild(ddN);
	dl.appendChild(dtF);
	dl.appendChild(ddF);
	
	divClear.appendChild(dl);

	//document.getElementById("summary").innerHTML = "";
	//document.getElementById("summary").appendChild(divClear);
	
	$(".form-info").fadeIn();
	
	
	$("#change-dates h2").empty().append("Change your dates");
	
	}
	else{
		fromAccessible=true;
	}
}




var ajaxRequestedHotel = null;
var ajaxAlternativeHotels = null;		

//FIND HOTELS - uses the hidden fields from the homepage search
var findHotels = function(package){
	
	//Set current hotel to 0, to make sure the first hotel has the right "first" class.
	hotelCount=0;
	
	var targ = $("#step1 .items");
	var panels = $("#step1 .panel");
	
	$("#change-dates fieldset").animate({opacity:"hide",height:"toggle"},750);

	$("#step1 .items").slideUp("fast",function(){

		$("#step1 .items").empty();
		/*if(panels && panels.length>0){
			for(h=0;h<panels.length;h++){
					targ[0].removeChild(panels[h]);
			}
		}*/	
		
		
		var businessCodeValue;
		if(user1.BusinessCode){
			businessCodeValue=user1.BusinessCode.Value
		}
		
		// AJAX CALL
		if (Reservation.range != "LON"){
			
			// clear out existing regional availability
			ajaxAlternativeHotels = null;
		    // do an availability check for a specifc hotel
		    AjaxProxy.CheckHotelAvailability(Reservation.range, Reservation.CheckInDate, Reservation.CheckOutDate, Reservation.NumGuestsPerRoom, Reservation.amount, businessCodeValue, callback_requested);
			timer.insert();
	
		}
		else{

			//clear out existing requested hotel
			ajaxRequestedHotel = null;
			
		    // do a regional availability check
		   AjaxProxy.CheckRegionalAvailability(Reservation.CheckInDate, Reservation.CheckOutDate, Reservation.NumGuestsPerRoom, Reservation.amount, businessCodeValue, callback_regional);
		   
		   timer.insert();
		   
		}
		


		
	});

};


function callback_requested(result){
	
		var businessCodeValue;
		if(user1.BusinessCode){
			businessCodeValue=user1.BusinessCode.Value
		}
		
		var package=false;
	
		ajaxRequestedHotel=result.value;

		var targ = $("#step1 .items");
		var panels = $("#step1 .panel");

		if (ajaxRequestedHotel == null){
			//No availability for requested hotel
			//No availability panel
			var divPanel = cE.$("div");
			divPanel.className="panel no-availability first clear";
			var divContent = cE.$("div");
			divContent.className="content";
			var p = cE.$("p");
			p.innerHTML = "Unfortunately there is no availability for the hotel you searched for, please either search for another hotel or select from the alternative hotels below.";
			divContent.appendChild(p);
			divPanel.appendChild(divContent);
			targ[0].appendChild(divPanel);
			
			// Now try regional availability
			AjaxProxy.CheckRegionalAvailability(Reservation.CheckInDate, Reservation.CheckOutDate, Reservation.NumGuestsPerRoom, Reservation.amount, businessCodeValue, callback_regional);
		}
		else{
			targ[0].appendChild(newHotel(ajaxRequestedHotel,package,null,true));	
		
		
			fcFunctions.hotelSetup({
				section : ".section",
				top : ".header",
				content : ".panel",
				roomToggle : ".hide-show",
				rooms : ".more"
			});
			
		}

		timer.remove();
		//Hide all package radio buttons
		$("#step1 .more form .package-options").hide();
	
		setTimeout("showHotels()",500);	
	
}





function callback_regional(result){
	
		var package=false;
	
		ajaxAlternativeHotels=result.value;

		var targ = $("#step1 .items");
		var panels = $("#step1 .panel");

		
		//If there are alternative hotels then draw those out
		if(ajaxAlternativeHotels !=null && ajaxAlternativeHotels.length>0){
			for(h=0;h<ajaxAlternativeHotels.length;h++){
				targ[0].appendChild(newHotel(ajaxAlternativeHotels[h],package,"","","Show rooms"));	
			}
			
			fcFunctions.hotelSetup({
				section : ".section",
				top : ".header",
				content : ".panel",
				roomToggle : ".hide-show",
				rooms : ".more"
			});			
		}
		
		timer.remove();
		//Hide all package radio buttons
		$("#step1 .more form .package-options").hide();
	
		setTimeout("showHotels()",250);	
	
}



function showHotels(){

	$("#step1 .items .panel").animate({opacity:0},1,function(){											 
		$("#step1 .items").slideDown(function(){
			$("#step1 .items .panel").animate({opacity:1},500);								  
		});																		 
	})

}


var packages = function(o,a){
	
	var pOptions = "#step1 #"+o.Code+"-hotel .package-options";

	if(a=="packages"){
		package=true;
		document.getElementById(o.Code+"-tools-rooms").className="first";
		document.getElementById(o.Code+"-tools-packages").className="selected";	
		$(pOptions).slideDown();
		
		
		var packagePlans = getPackageRoomPlans(o);
		var roomRates = packageRoomRates(o,packagePlans[0].Code);
		//Load all the new rooms into a new array and then rebuild
		var newPackageRooms = new Array();
		for(var i=0;i<roomRates.length;i++){
			newPackageRooms[i] = new Object(); 
			newPackageRooms[i].hotel = o;
			newPackageRooms[i].roomRates = roomRates[i];	
		}
		reBuildRooms(o,newPackageRooms,true,packagePlans[0].Description);
		
	}
	else{
		document.getElementById(o.Code+"-tools-rooms").className="selected first";
		document.getElementById(o.Code+"-tools-packages").className="";	
		$(pOptions).slideUp();
		
		document.getElementById(o.Code+"-packages-0").checked=true;
		
		var roomRates = getRoomRates(o);
		
		//Load all the new rooms into a new array and then rebuild
		var newPackageRooms = new Array();
		for(var i=0;i<roomRates.length;i++){
			newPackageRooms[i] = new Object(); 
			newPackageRooms[i].hotel = o;
			newPackageRooms[i].roomRates = roomRates[i];
			//divMoreField.appendChild(newRoom(o,roomRates[i],existing));	
		}
		reBuildRooms(o,newPackageRooms);		
		
	}
	
	return false;
	
}





//GET ROOM RATES - AJAX call to get RoomRates
var getRoomRates = function(o){
	//AJAX CALL
	return AjaxProxy.GetRoomOnlyRoomRates(o).value;
};

//FIND ROOM FROM OBJECT BASED ON ROOMRATE
var findRoom = function(o,roomRate){

	for(var i=0;i<o.Rooms.length;i++){
		if(o.Rooms[i].Code == roomRate.RoomTypeCode){
			return o.Rooms[i];	
		}	
	}

}

//FIND RATEPLAN FROM OBJECT BASED ON ROOMRATE
var findRatePlan = function(o,roomRate){

	for(var i=0;i<o.RatePlans.length;i++){
		if(o.RatePlans[i].Code == roomRate.RatePlanCode){
			return o.RatePlans[i];	
		}	
	}
}


//--------------FOR PACKAGES-------------------------

//GET ROOM RATES FOR PACKAGES - AJAX call to get RoomRates for packages
var getPackageRoomPlans = function(o){
	//AJAX CALL
	return AjaxProxy.GetRatePlanPackages(o).value;
};

//GET ROOM RATES FOR SELECTED PACKAGE
var packageRoomRates = function(o,ratePlan){
	//AJAX CALL
	return AjaxProxy.GetRatePlanRoomRates(o,ratePlan).value;
}/**/








var reBuildRooms = function(o,rooms,packages,pckgeDesc){

	//alert(rooms.length);
	var newRooms = new Array();
	for(i=0;i<rooms.length;i++){
		newRooms[i] = newRoom(rooms[i].hotel,rooms[i].roomRates,packages);
	}
	
	var $fo = "#"+o.Code+"-form fieldset";
	var targ = $($fo);
	var $foOption = "#"+o.Code+"-form .option";
	var currentRooms = $($foOption);
	for(i=0;i<currentRooms.length;i++){
		if(document.getElementById("package-description")){
		targ[0].removeChild(document.getElementById("package-description"));
		}
		targ[0].removeChild(currentRooms[i]);
	}	
	
	if(pckgeDesc){
		var pDesc = cE.$("p");
		pDesc.innerHTML = pckgeDesc;
		pDesc.id="package-description";
		targ[0].appendChild(pDesc);
	}	
	
	for(i=0;i<newRooms.length;i++){
		//targ[0].insertBefore(rooms[i],book[0]);
		targ[0].appendChild(newRooms[i]);
	}


}




var nospecials = false;
//FIND SPECIALS - finds the "make it special" items based on the hotel selection
var findSpecials = function(){
	var specials = $("#step2 .items .specials");
	var upsell = document.getElementById("specials");
	var targ = $("#step2 .items .panel");	
	
	for(j=0;j<specials.length;j++){
		upsell.removeChild(specials[j]);	
	}

	
    if(ajaxRequestedHotel != null){
		if(ajaxRequestedHotel.Code==Reservation.Code){
			
			//commented out the code that checks to see if there are addons
			//if(ajaxRequestedHotel.AddOns.length==0){
			//	var nospecials=true;	
			//}
			//else{
				for(var i=0;i<ajaxRequestedHotel.AddOns.length;i++){
					upsell.appendChild(newUpsell(ajaxRequestedHotel.AddOns[i],Reservation.Code));	
				}
			//}
		}	
	}
	else{
		if(ajaxAlternativeHotels != null && ajaxAlternativeHotels.length>0){
			for(var h=0;h<ajaxAlternativeHotels.length;h++){
				
				if(ajaxAlternativeHotels[h].Code==Reservation.Code){
					//if(ajaxAlternativeHotels[h].AddOns.length==0){
					//	var nospecials=true;	
					//}
					//else{
						for(var i=0;i<ajaxAlternativeHotels[h].AddOns.length;i++){
							upsell.appendChild(newUpsell(ajaxAlternativeHotels[h].AddOns[i],Reservation.Code));	
						}
					//}
				}			
				
			}
		
		}		
	}
	

	

	getCreditCards();


	$("#step2 .items .panel").animate({opacity:0},1);
	setTimeout("showSpecials()",500);
	
};
var showSpecials = function(specials){
	
	//Commented out the code for skipping the addons section if unavailable
	//if(specials==true){
	//	$("#step2").fadeOut();
	//	$("#step3 .items").slideDown(function(){
	//		$("#step3 .items .panel").animate({opacity:1},500);								  
	//	});	
		
	//}
	//else{
	
		$("#step2 .items").slideDown(function(){
			$("#step2 .items .panel").animate({opacity:1},500);								  
		});																		 

	//}
}







//STORE SPECIALS - stores the specials in the res object
var storeSpecials = function(){
	
	var fo = document.getElementById("form-addons");
	
	var addons = fo.getElementsByTagName("input");
	var upsells = new Array();
	var k = 0;
	for(i=0;i<addons.length;i++){
		if(addons[i].className=="radio"){
			if(addons[i].value==1 && addons[i].checked==true){
				upsells[k] = new Addon(addons[i].name,addons[i].value,addons[i].desc)
				k++;
			}
		}	
	}

	Reservation.AddOns = upsells;

	$("#step2 .items .panel").animate({opacity:0},500,function(){
		$("#step2 .items").slideUp(function(){
			
			
			$("#step3 .items .panel").animate({opacity:0},1,function(){											 
				$("#step3 .items").slideDown(function(){
					$("#step3 .items .panel").animate({opacity:1},500);								  
				});																		 
			})
			
											
		});								  
	});	

	
};



var getCreditCards = function(){
	
	//Populate credit card drop down from hotel object
	var co = document.getElementById("fcard");
	co.innerHTML="";
	for(i=0;i<Reservation.CreditCards.length;i++){
		var opt = cE.$("option");
		opt.value=Reservation.CreditCards[i].Code;
		opt.innerHTML=Reservation.CreditCards[i].Name;
		co.appendChild(opt);
	}
	
	
}







//STORE HOTEL - stores the hotel details in the res object
var storeHotel = function(){
	
};







//SEND HOTELS to backend (once a room has been selected. The upsells should be returned
var sendHotels = function(val){

	//Need to disable other hotels at this point

	//NEED TO STORE THE HOTEL DETAILS SO FAR IN THE RES OBJECT
	storeHotel();
	
	
	$("#step1 .items .panel").animate({opacity:0},500,function(){
		$("#step1 .items").slideUp(function(){findSpecials(val);});								  
	});	
	
	//$("#step2").find(".items").slideDown();

	

};







//SEND RESERVATION to backend
var sendReservation = function(btn){
	
	btn.disabled=true;
	
	var valid = formValidation("form-details");
	
	Reservation.Payment.CardType = document.getElementById("fcard").options[document.getElementById("fcard").selectedIndex].value;
	Reservation.Payment.CardNum = document.getElementById("fccnumber").value;
	Reservation.Payment.ExpiryDate = document.getElementById("fexpiry-month").value + "/"+document.getElementById("fexpiry-year").value;
	Reservation.Comment = document.getElementById("frequests").value;

	if(valid==true){
		
		
		if(newUser==true){
			
			var ftitle = document.getElementById("ftitle");
			var ffirstname = document.getElementById("ffirstname");
			var flastname = document.getElementById("flastname");
			var faddress1 = document.getElementById("faddress1");
			var faddress2 = document.getElementById("faddress2");
			var faddress3 = document.getElementById("faddress3");
			var faddress4 = document.getElementById("faddress4");
			var fcity = document.getElementById("fcity");
			var fpostcode = document.getElementById("fpostcode");
			var fcountry = document.getElementById("fcountry");
			var femail = document.getElementById("femail");
			var ftelephone = document.getElementById("ftelephone");
			var newsletter = document.getElementById("fnewsletter");
			var fpassword = document.getElementById("fpassword");
			var fpassword2 = document.getElementById("frepeatpassword");
			
			
			user1.EmailAddress=femail.value;
			user1.Title=ftitle.options[ftitle.selectedIndex].value;
			user1.FirstName=ffirstname.value;
			user1.LastName=flastname.value;
			user1.Address.AddressLines[0]=faddress1.value;
			user1.Address.AddressLines[1]=faddress2.value;
			user1.Address.AddressLines[2]=faddress3.value;
			user1.Address.AddressLines[3]=faddress4.value;
			user1.Address.City=fcity.value;
			user1.Address.PostCode=fpostcode.value;
			user1.Address.CountryCode=fcountry.options[fcountry.selectedIndex].value;
			user1.Password=fpassword.value;
			user1.TelephoneNumber=ftelephone.value;
			user1.NewsLetterOptIn=newsletter.checked;

			
			
			AjaxProxy.CreateNewUser(user1, callback_newuser);
			
			timer.insert("res");
			
			return
				
			
		}
		else{
			//alert("send res object to backend");
			AjaxProxy.MakeReservation(Reservation, user1.OperaId, callback_sendres);

	       	timer.insert("res");
			
			return;
			
		
		}
		
		
	}
	else{
	btn.disabled=false;	
	}

	return false;
};






function callback_newuser(res){
	
			var userResult = res.value;
			if(userResult.SuccessFlag){

				newUser=false;
				user1.OperaId=userResult.OperaId;
				
				//alert("send new user object to backend");
				AjaxProxy.MakeReservation(Reservation, userResult.OperaId, callback_newuser_sendres);
			   	return;
			}
			else{
				timer.remove("res");
				var err = document.getElementById("confirmation-error");
				err.className="warn";
				var h1 = cE.$("h3");
				h1.innerHTML = "There has been an error in creating the user";
				var p1 = cE.$("p");
				p1.innerHTML = userResult.ErrorMessage;
				err.appendChild(h1);
				err.appendChild(p1);
				document.getElementById("confirm-button").disabled=false;
			}
}










function callback_newuser_sendres(res){
	
	var result=res.value;
			var ftitle = document.getElementById("ftitle");
			var ffirstname = document.getElementById("ffirstname");
			var flastname = document.getElementById("flastname");
			var faddress1 = document.getElementById("faddress1");
			var faddress2 = document.getElementById("faddress2");
			var faddress3 = document.getElementById("faddress3");
			var faddress4 = document.getElementById("faddress4");
			var fcity = document.getElementById("fcity");
			var fpostcode = document.getElementById("fpostcode");
			var fcountry = document.getElementById("fcountry");
			var femail = document.getElementById("femail");
			var ftelephone = document.getElementById("ftelephone");
			var newsletter = document.getElementById("fnewsletter");
			var fpassword = document.getElementById("fpassword");
			var fpassword2 = document.getElementById("frepeatpassword");
			
	if (result.SuccessFlag) {  
				   	//alert("send new res to backend");
					var err = document.getElementById("confirmation-error");
					err.innerHTML ="";
				   	
					
					
					var targ = $("#step4").find(".content");
					targ[0].appendChild(newConfirmation(result.ReservationDetails));
				
				
					$("#step3 .items .panel").animate({opacity:0},500,function(){
						$("#step3 .items").slideUp(function(){
							
							
							$("#step4 .items .panel").animate({opacity:0},1,function(){											 
								$("#step4 .items").slideDown(function(){
									$("#step4 .items .panel").animate({opacity:1},500);								  
								});																		 
							})
							
															
						});								  
					});	
				
					timer.remove("res");
							

				
				
						
		$("#step1 .heading h2").stop().unbind("click");
		$("#step2 .heading h2").stop().unbind("click");
		$("#step3 .heading h2").stop().unbind("click");
		$("#step4 .heading h2").stop().unbind("click");
		
		$(".form-info .footer").hide();
		
		$("#step1 .heading h2").attr("style","cursor:default;");
		$("#step2 .heading h2").attr("style","cursor:default;");
		$("#step3 .heading h2").attr("style","cursor:default;");
		$("#step4 .heading h2").attr("style","cursor:default;");
				
					ftitle.disabled=true;
					ffirstname.disabled=true;
					flastname.disabled=true;
					faddress1.disabled=true;
					faddress2.disabled=true;
					faddress3.disabled=true;
					faddress4.disabled=true;
					fcity.disabled=true;
					fpostcode.disabled=true;
					fcountry.disabled=true;
					femail.disabled=true;
					ftelephone.disabled=true;
					fpassword.disabled=true;
					fpassword2.disabled=true;				
				}
				else {
					
					timer.remove("res");
					
					var err = document.getElementById("confirmation-error");
					err.className="warn";
					var h1 = cE.$("h3");
					h1.innerHTML = "There has been an error in sending the reservation";
					var p1 = cE.$("p");
					p1.innerHTML = result.ErrorMessage
					err.appendChild(h1);
					err.appendChild(p1);
					document.getElementById("confirm-button").disabled=false;
				
				}
				
				//Log the user in
				//AjaxProxy.Login(document.getElementById("femail").value, document.getElementById("fpassword").value);		
	
	
}






function callback_sendres(res){

	var result = res.value;
	
	timer.remove("res");
	
	if (result.SuccessFlag) {  
	   
		var err = document.getElementById("confirmation-error");
		err.innerHTML ="";
	   
		var targ = $("#step4").find(".content");
		targ[0].appendChild(newConfirmation(result.ReservationDetails));

		$("#step3 .items .panel").animate({opacity:0},500,function(){
			$("#step3 .items").slideUp(function(){
				
				
				$("#step4 .items .panel").animate({opacity:0},1,function(){											 
					$("#step4 .items").slideDown(function(){
						$("#step4 .items .panel").animate({opacity:1},500);								  
					});																		 
				})
				
												
			});								  
		});	
		
		$("#step1 .heading h2").stop().unbind("click");
		$("#step2 .heading h2").stop().unbind("click");
		$("#step3 .heading h2").stop().unbind("click");
		$("#step4 .heading h2").stop().unbind("click");
		
		$(".form-info .footer").hide();
		
		$("#step1 .heading h2").attr("style","cursor:default;");
		$("#step2 .heading h2").attr("style","cursor:default;");
		$("#step3 .heading h2").attr("style","cursor:default;");
		$("#step4 .heading h2").attr("style","cursor:default;");
		
		
		//Confirmation tracking code
		/*if (typeof(ROIID) + '' != 'undefined') {
			gt_cid=document.getElementById("_tracking_customerId").value;
			TrackEvent(document.getElementById("_tracking_siteId").value, result.ReservationDetails.TotalCharge.Amount, result.ReservationDetails.ConfirmationNumber);
		}*/
		

	}
	else {
		
		var err = document.getElementById("confirmation-error");
		err.className="warn";
		var h1 = cE.$("h3");
		h1.innerHTML = "There has been an error";
		var p1 = cE.$("p");
		p1.innerHTML = result.ErrorMessage
		err.appendChild(h1);
		err.appendChild(p1);
		document.getElementById("confirm-button").disabled=false;
	
	}
			
}



















var checkField = function(f,msg){
	if(f.value==""){
		submittable = false;
		document.getElementById(f.id+"_warn").className="warn";
		document.getElementById(f.id+"_warn").innerHTML = msg;
	}
	else{
		document.getElementById(f.id+"_warn").className="warnEmpty";
		document.getElementById(f.id+"_warn").innerHTML = "";
	}	
}


var submittable;
//FORM VALIDATION
var formValidation = function(id){

	submittable = true;

	var validEmail = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	var validPostCode = /^[a-zA-Z]{1,2}[a-zA-Z0-9]{1,2}[ ]?[0-9]{1}[a-zA-Z]{2}$/;
	var validMonth = /[0-9]{2}/;
	var validYear = /[2][0][0-9]{2}/;

	var fo = document.getElementById(id);
	
	
	var title = document.getElementById("ftitle");
	var firstname = document.getElementById("ffirstname");
	var lastname = document.getElementById("flastname");
	var addr1 = document.getElementById("faddress1");
	var addr2 = document.getElementById("faddress2");
	var addr3 = document.getElementById("faddress3");
	var addr4 = document.getElementById("faddress4");
	var city = document.getElementById("fcity");
	var postcode = document.getElementById("fpostcode");
	var country = document.getElementById("fcountry");
	var email = document.getElementById("femail");
	var telephone = document.getElementById("ftelephone");
	var newsletter = document.getElementById("fnewsletter");
	var payBy = document.getElementById("fcard");
	var cardNo = document.getElementById("fccnumber");
	var expiryMonth = document.getElementById("fexpiry-month");
	var expiryYear = document.getElementById("fexpiry-year");
	var password = document.getElementById("fpassword");
	var confirmPassword = document.getElementById("frepeatpassword");
	var terms = document.getElementById("fterms");
	
	
	//Check to see if a room has been selected
	if(Reservation.Code=="" || Reservation.roomCode==""){
		submittable = false;
		document.getElementById("general_warn").className="warn";
		document.getElementById("general_warn").innerHTML = "Please select a hotel and room";
	}
	else{
		document.getElementById("general_warn").className="warnEmpty";
		document.getElementById("general_warn").innerHTML = "";
	}
	
	
	//Check Country
	if(title.selectedIndex==0){
		submittable = false;
		document.getElementById(title.id+"_warn").className="warn";
		document.getElementById(title.id+"_warn").innerHTML = "Please select your title";
	}
	else{
		document.getElementById(title.id+"_warn").className="warnEmpty";
		document.getElementById(title.id+"_warn").innerHTML = "";
	}
	
	//Check First Name
	checkField(firstname,"Please enter your first name");
	
	//Check Last Name
	checkField(lastname,"Please enter your last name");
	
	//Check Address
	checkField(addr1,"Please enter your address");
	
	//Check City
	checkField(city,"Please enter your city");

	//Check Postcode
	checkField(postcode,"Please enter your postcode");
	/*result = validPostCode.test(postcode.value);
	if(result==false){
		submittable = false;
		document.getElementById(postcode.id+"_warn").className="warn";
		document.getElementById(postcode.id+"_warn").innerHTML = "Please enter a valid postcode";	
	}
	else{
		document.getElementById(postcode.id+"_warn").className="warnEmpty";
		document.getElementById(postcode.id+"_warn").innerHTML = "";
	}*/
		
	//Check Country
	if(country.selectedIndex==0){
		submittable = false;
		document.getElementById(country.id+"_warn").className="warn";
		document.getElementById(country.id+"_warn").innerHTML = "Please select your country";
	}
	else{
		document.getElementById(country.id+"_warn").className="warnEmpty";
		document.getElementById(country.id+"_warn").innerHTML = "";
	}
	
	//Check Card Number
	checkField(cardNo,"Please enter you credit card number");
	
	//Check Expiry
	if(expiryMonth.value=="" || expiryYear.value==""){
		submittable = false;
		document.getElementById(expiryMonth.id+"_warn").className="warn";
		document.getElementById(expiryMonth.id+"_warn").innerHTML = "Please enter your expiry month and year";	
	}
	else{
		
		expiryMonthResult = validMonth.test(expiryMonth.value);
		expiryYearResult = validYear.test(expiryYear.value);
		
		if(expiryMonthResult==false || expiryYearResult==false){
			submittable = false;
			document.getElementById(expiryMonth.id+"_warn").className="warn";
			document.getElementById(expiryMonth.id+"_warn").innerHTML = "Please enter a valid expiry month and year";		
		}
		else{
			document.getElementById(expiryMonth.id+"_warn").className="warnEmpty";
			document.getElementById(expiryMonth.id+"_warn").innerHTML = "";			
		}
		

	}
	
	
	//Check telephone
	checkField(telephone,"Please enter your telephone number");
	
	if(newUser==true){
		//Check Email
		checkField(email);
		result = validEmail.test(email.value);
		if(result==false){
			submittable = false;
			document.getElementById(email.id+"_warn").className="warn";
			document.getElementById(email.id+"_warn").innerHTML = "Please enter a valid email address";	
		}
		else{
			document.getElementById(email.id+"_warn").className="warnEmpty";
			document.getElementById(email.id+"_warn").innerHTML = "";
		}
			
		//Check Password
		checkField(password,"Please supply us with a password");
		
		//Check Confirm Password
		checkField(confirmPassword,"Please confirm your password");
		
		if(password.value!="" && confirmPassword.value!=""){
			if(password.value!=confirmPassword.value){
				submittable = false;
				document.getElementById(confirmPassword.id+"_warn").className="warn";
				document.getElementById(confirmPassword.id+"_warn").innerHTML = "Please make sure your passwords match";	
			}
			else{
				document.getElementById(confirmPassword.id+"_warn").className="warnEmpty";
				document.getElementById(confirmPassword.id+"_warn").innerHTML = "";
			}
		}
	}
	
	
	//Check terms
	if(terms.checked==false){
		submittable = false;
		document.getElementById(terms.id+"_warn").className="warn";
		document.getElementById(terms.id+"_warn").innerHTML = "Please make sure you have read the terms and conditions";
	}
	else{
		document.getElementById(terms.id+"_warn").className="warnEmpty";
		document.getElementById(terms.id+"_warn").innerHTML = "";
	}
	
	
	return submittable;
	
};







//END SESSION
var endSession = function(){
	
	document.getElementById("login-button").disabled=false;
	var logoutresult = AjaxProxy.Logout().value;
	if(logoutresult==true){
		
		//Update Header
		$("#step1 .header h2").empty().append("Choose your room");
		$("#step1 .header .tools").show();
		
		//Empty Step 1
		var targ = $("#step1 .items");
		var panels = $("#step1 .panel");
	
		$("#step1 .items").slideUp("fast",function(){
			
			for(h=0;h<panels.length;h++){
				targ[0].removeChild(panels[h]);	
			}			
			
		});
		
		
		//Empty Step 2
		$("#step2 .items").slideUp("fast",function(){
			
			$("#step2 .items #specials").empty();			
			
		});
		
		//var targ2 = $("#step2 .items .panel");
		
		//for(j=0;j<specials.length;j++){
			//targ2[0].removeChild(specials[j]);	
		//}
		
		//Empty Step 3
		document.getElementById("ffirstname").value="";
		document.getElementById("flastname").value="";
		document.getElementById("faddress1").value="";
		document.getElementById("faddress2").value="";
		document.getElementById("faddress3").value="";
		document.getElementById("faddress4").value="";
		document.getElementById("fcity").value="";
		document.getElementById("fpostcode").value="";
		document.getElementById("fcountry").selectedIndex=0;
		document.getElementById("femail").value="";
		document.getElementById("ftelephone").value="";
		
		
		document.getElementById("field-email").className="field clear";
		
		document.getElementById("ftitle").disabled=false;
		document.getElementById("ffirstname").disabled=false;
		document.getElementById("flastname").disabled=false;
		document.getElementById("faddress1").disabled=false;
		document.getElementById("faddress2").disabled=false;
		document.getElementById("faddress3").disabled=false;
		document.getElementById("faddress4").disabled=false;
		document.getElementById("fcity").disabled=false;
		document.getElementById("fpostcode").disabled=false;
		document.getElementById("fcountry").disabled=false;
		document.getElementById("femail").disabled=false;
		document.getElementById("ftelephone").disabled=false;
		
		$("#step3 .items").slideUp("fast");
		
		
		//Empty Step 4
		$("#step4 .items").slideUp("fast",function(){
			$("#step4").find(".content").empty();
		});
		
		//Hide change dates button
		document.getElementById("change-dates-button").className="hide";
		
		//Close dates panel if open
		$("#change-dates").animate({opacity:"hide",height:"toggle"},750);

	}


};


















var countries;
var userLoggedIn;

window.onload = function(){
	
	// Load countries
	//countries = AjaxProxy.GetCountries().value;
	
	initReservation();
	
	// NEW - Auto log in user
	//var res = AjaxProxy.GetUserFromSession();
	/*if (res.error == null){
	    user1 = res.value;
		$(".info-panel .form-panel").animate({opacity:"hide",height:"toggle"},1000, function(){preLogin()});
	}*/
	
	/*if(document.getElementById("search_prevbooking").value!=""){

			Reservation.Code = prevHotel.code;
			
			$("#intro button").click(function(){
				document.location.href="manage-booking.html";								  
			});
			$("#intro span").empty().append("Cancel changes");
			

			var step = $("#step0");
			step[0].className="section";
			$("#step0 h2").append(" : "+Reservation.CheckInDate+"-"+Reservation.CheckOutDate);
		
			//preLogin();
			//$("#step1 .header h2").empty().append("Your Booking");
			//$("#step1 .header .tools").hide();
		
			var targ = $("#step0 .items");
			targ[0].appendChild(newHotel(prevHotel,false,true));	
			
			fcFunctions.hotelSetup({
				section : ".section",
				top : ".header",
				content : ".panel",
				roomToggle : ".hide-show",
				rooms : ".more"
			});
		
		
			$("#step1 .items .panel").animate({opacity:0},1,function(){											 
				$("#step1 .items").slideDown(function(){
					$("#step1 .items .panel").animate({opacity:1},500);								  
				});																		 
			})

		
	}
	else{
		
	}*/
	
	
	
	/*fcFunctions.sectionInit({
		element : ".section",
		content : ".items",  
		panels : ".panel", 
		activeClass : "dtactive"
	});*/
	
	$("#step1 .headertitle").stop().bind("click", function(){
		
		if($("#step1 .items").is(":visible")){

			$("#step1 .items .panel").animate({opacity:0},500,function(){
				$("#step1 .items").slideUp();								  
			});			
			document.getElementById("imgstep1").src='images/arrow-right.png';
		}
		else{
			
			$("#step1 .items .panel").animate({opacity:0},1,function(){											 
				$("#step1 .items").slideDown(function(){
					$("#step1 .items .panel").animate({opacity:1},500);								  
				});																		 
			})
			document.getElementById("imgstep1").src='images/arrow-down.png';
		}

	});
	
	
	
	$("#step2 .headertitle").stop().bind("click", function(){
		
		if($("#step2 .items").is(":visible")){

			$("#step2 .items .panel").animate({opacity:0},500,function(){
				$("#step2 .items").slideUp();								  
			});			
			document.getElementById("imgstep2").src='images/arrow-right.png';
		}
		else{
			
			$("#step2 .items .panel").animate({opacity:0},1,function(){											 
				$("#step2 .items").slideDown(function(){
					$("#step2 .items .panel").animate({opacity:1},500);								  
				});																		 
			})
			document.getElementById("imgstep2").src='images/arrow-down.png';
		}

	});
	
	
	$("#step3 .headertitle").stop().bind("click", function(){
		
		if($("#step3 .items").is(":visible")){

			$("#step3 .items .panel").animate({opacity:0},500,function(){
				$("#step3 .items").slideUp();								  
			});			
			document.getElementById("imgstep3").src='images/arrow-right.png';
		}
		else{
			
			$("#step3 .items .panel").animate({opacity:0},1,function(){											 
				$("#step3 .items").slideDown(function(){
					$("#step3 .items .panel").animate({opacity:1},500);								  
				});																		 
			})
			document.getElementById("imgstep3").src='images/arrow-down.png';
		}

	});	
	
	$("#step4 .headertitle").stop().bind("click", function(){
		
		if($("#step4 .items").is(":visible")){

			$("#step4 .items .panel").animate({opacity:0},500,function(){
				$("#step4 .items").slideUp();								  
			});			
			document.getElementById("imgstep4").src='images/arrow-right.png';
		}
		else{
			
			$("#step4 .items .panel").animate({opacity:0},1,function(){											 
				$("#step4 .items").slideDown(function(){
					$("#step4 .items .panel").animate({opacity:1},500);								  
				});																		 
			})
			document.getElementById("imgstep4").src='images/arrow-down.png';
		}

	});
	/*This is my code start*/
	$("#step5 .headertitle").stop().bind("click", function(){
		
		if($("#step5 .items").is(":visible")){

			$("#step5 .items .panel").animate({opacity:0},500,function(){
				$("#step5 .items").slideUp();								  
			});			
			document.getElementById("imgstep5").src='images/arrow-right.png';
		}
		else{
			
			$("#step5 .items .panel").animate({opacity:0},1,function(){											 
				$("#step5 .items").slideDown(function(){
					$("#step5 .items .panel").animate({opacity:1},500);								  
				});																		 
			})
			document.getElementById("imgstep5").src='images/arrow-down.png';
		}

	});
	
	$("#step6 .headertitle").stop().bind("click", function(){
		
		if($("#step6 .items").is(":visible")){

			$("#step6 .items .panel").animate({opacity:0},500,function(){
				$("#step6 .items").slideUp();								  
			});			
			document.getElementById("imgstep6").src='images/arrow-right.png';
		}
		else{
			
			$("#step6 .items .panel").animate({opacity:0},1,function(){											 
				$("#step6 .items").slideDown(function(){
					$("#step6 .items .panel").animate({opacity:1},500);								  
				});																		 
			})
			document.getElementById("imgstep6").src='images/arrow-down.png';
		}

	});
	
	$("#step7 .headertitle").stop().bind("click", function(){
		
		if($("#step7 .items").is(":visible")){

			$("#step7 .items .panel").animate({opacity:0},500,function(){
				$("#step7 .items").slideUp();								  
			});			
			document.getElementById("imgstep7").src='images/arrow-right.png';
		}
		else{
			
			$("#step7 .items .panel").animate({opacity:0},1,function(){											 
				$("#step7 .items").slideDown(function(){
					$("#step7 .items .panel").animate({opacity:1},500);								  
				});																		 
			})
			document.getElementById("imgstep7").src='images/arrow-down.png';
		}

	});
	
	$("#step8 .headertitle").stop().bind("click", function(){
		
		if($("#step8 .items").is(":visible")){

			$("#step8 .items .panel").animate({opacity:0},500,function(){
				$("#step8 .items").slideUp();								  
			});			
			document.getElementById("imgstep8").src='images/arrow-right.png';
		}
		else{
			
			$("#step8 .items .panel").animate({opacity:0},1,function(){											 
				$("#step8 .items").slideDown(function(){
					$("#step8 .items .panel").animate({opacity:1},500);								  
				});																		 
			})
			document.getElementById("imgstep8").src='images/arrow-down.png';
		}

	});
	
	$("#step9 .headertitle").stop().bind("click", function(){
		
		if($("#step9 .items").is(":visible")){

			$("#step9 .items .panel").animate({opacity:0},500,function(){
				$("#step9 .items").slideUp();								  
			});			
			document.getElementById("imgstep9").src='images/arrow-right.png';
		}
		else{
			
			$("#step9 .items .panel").animate({opacity:0},1,function(){											 
				$("#step9 .items").slideDown(function(){
					$("#step9 .items .panel").animate({opacity:1},500);								  
				});																		 
			})
			document.getElementById("imgstep9").src='images/arrow-down.png';
		}

	});
	
	$("#step10 .headertitle").stop().bind("click", function(){
		
		if($("#step10 .items").is(":visible")){

			$("#step10 .items .panel").animate({opacity:0},500,function(){
				$("#step10 .items").slideUp();								  
			});			
			document.getElementById("imgstep10").src='images/arrow-right.png';
		}
		else{
			
			$("#step10 .items .panel").animate({opacity:0},1,function(){											 
				$("#step10 .items").slideDown(function(){
					$("#step10 .items .panel").animate({opacity:1},500);								  
				});																		 
			})
			document.getElementById("imgstep10").src='images/arrow-down.png';
		}

	});
	
	$("#step11 .headertitle").stop().bind("click", function(){
		
		if($("#step11 .items").is(":visible")){

			$("#step11 .items .panel").animate({opacity:0},500,function(){
				$("#step11 .items").slideUp();								  
			});			
			document.getElementById("imgstep11").src='images/arrow-right.png';
		}
		else{
			
			$("#step11 .items .panel").animate({opacity:0},1,function(){											 
				$("#step11 .items").slideDown(function(){
					$("#step11 .items .panel").animate({opacity:1},500);								  
				});																		 
			})
			document.getElementById("imgstep11").src='images/arrow-down.png';
		}

	});
	
	$("#step12 .headertitle").stop().bind("click", function(){
		
		if($("#step12 .items").is(":visible")){

			$("#step12 .items .panel").animate({opacity:0},500,function(){
				$("#step12 .items").slideUp();								  
			});			
			document.getElementById("imgstep12").src='images/arrow-right.png';
		}
		else{
			
			$("#step12 .items .panel").animate({opacity:0},1,function(){											 
				$("#step12 .items").slideDown(function(){
					$("#step12 .items .panel").animate({opacity:1},500);								  
				});																		 
			})
			document.getElementById("imgstep12").src='images/arrow-down.png';
		}

	});
	/*This is my code end*/
	
	

	
	
	
	
	
	fcFunctions.setup({
		section : ".section",
		top : ".header",
		content : ".items",
		roomToggle : ".hide-show",
		rooms : ".more"
	});
	
	//Setup dates
	if(f.$("nights")){
		f.$("nights").onchange = function(){setOutD();}
	}
	if(f.$("book_in_dd")){
		f.$("book_in_dd").onchange = function(){setOutD();}
	}
	if(f.$("book_out_dd")){
		f.$("book_out_dd").onchange = function(){setNights();}
	}
	if(f.$("hotel_name")){
		redirect.init();
	}
	
	//Set change dates default values

	populateCountries();
	updateChangeDates();
	
}

var updateChangeDates = function(){
	/*var foLocation = f.$("location");
	var foCheckIn = f.$("book_in_dd");
	var foNights = f.$("nights");
	var foCheckOut = f.$("book_out_dd");
	var foRooms = f.$("rooms");
	var foAdults = f.$("adults");
	
	foCheckIn.value=Reservation.CheckInDate;
	foCheckOut.value=Reservation.CheckOutDate;
	
	if(Reservation.nights!=""){foNights.value=Reservation.nights;}
	
	for(i=0;i<foLocation.length;i++)
	{
		if(foLocation.options[i].value==Reservation.range)
		{
			foLocation[i].selected="selected";	
		}
	}
	
	for(i=0;i<foRooms.length;i++)
	{
		if(foRooms.options[i].value==Reservation.amount)
		{
			foRooms[i].selected="selected";	
		}
	}
	
	for(i=0;i<foAdults.length;i++)
	{
		if(foAdults.options[i].value==Reservation.NumGuestsPerRoom)
		{
			foAdults[i].selected="selected";	
		}
	}
	
	
	//Setup Change Dates
	var changeDates = f.$("change-dates");
	changeDates.parentNode.onsubmit = function()
	{
		
		document.getElementById("search_range").value = foLocation.options[foLocation.selectedIndex].value;
		document.getElementById("search_range_name").value = foLocation.options[foLocation.selectedIndex].innerHTML;
		document.getElementById("search_checkin").value = foCheckIn.value;
		document.getElementById("search_checkout").value = foCheckOut.value;
		document.getElementById("search_nights").value = foNights.value;
		document.getElementById("search_rooms").value = foRooms.options[foRooms.selectedIndex].value;
		document.getElementById("search_adults").value = foAdults.options[foAdults.selectedIndex].value;

		initReservation();
		
		$("#change-dates").animate({opacity:"hide",height:"toggle"},750);
		
		findHotels();

		return false;
	}*/
	
}


var populateCountries = function(){

	//Populate country drop down
	var co = document.getElementById("fcountry");
	
	if(countries!=null){
		for(i=0;i<countries.length;i++){
			var opt = cE.$("option");
			opt.value=countries[i].Code;
			opt.innerHTML=countries[i].Name;
			co.appendChild(opt);
		}
	}
	

}





var fcFunctions = {

            sectionInit : function(o){
                        var $element = o.element;
                        var $content = o.content; 
                        var $panel = o.panels;             
                        var $activeClass = o.activeClass;
                        //$($element).find("h2").removeClass($activeClass).next($content).hide();                      
                        $($element).each(function (){
									   
									var $next = $(this).find($content);
									$(this).find("h2").attr("style","cursor:pointer;"); 		   
                                    $(this).find("h2").bind("click", function(){  
										
										
										var $openPanels = $next.find($panel);
										var $images = $openPanels.find("img");
										var $heading = $(this);
										if($next.is(":visible")){
											
												
											
												$openPanels.fadeOut("slow",function(){
													$next.slideUp()}
												);
											
										} else {
								
												
												
												$openPanels.fadeOut("fast",function(){						
													$next.slideDown(function(){
														$openPanels.fadeIn("slow")}
													)}
												);

										}                                               
                        		})
                        })
            } ,	
			
			sectionEnd : function(o){
 						var $element = o.element;
                        var $content = o.content; 
                        var $panel = o.panels;             
                        var $activeClass = o.activeClass;                    
                        $($element).each(function (){
									   
									var $next = $(this).find($content);
									$(this).find("h2").attr("style","cursor:pointer;"); 		   
                                    $(this).find("h2").unbind("click");
                        })
			} ,
	
			hotelSetup : function(o){
				
						var $_section = o.section;
						var $_top = o.top;
                        var $_content = o.content;
                        var $_roomToggle = o.roomToggle;
                        var $_rooms = o.rooms;  
						
						//*********** Function to show and hide the rooms for each hotel

						$("#step1").find($_content).each(function(){
																  
							var $_panelRooms = $(this).find($_rooms);
							

							if($(this).find($_roomToggle).find("a").find("span")[0]){
								if($(this).find($_roomToggle).find("a").find("span")[0].innerHTML == "Show rooms"){
								$_panelRooms.addClass("hide");
								}
							}

							$(this).find($_roomToggle).find("a").bind("click", function(){
								if($(this).find("span")[0].innerHTML == "Hide rooms"){													
									$_panelRooms.animate({opacity:"hide",height:"toggle"},750);
									$(this).find("span")[0].innerHTML = "Show rooms";
									$(this).find("img").attr("src",dir+"images/bookingform/icon-show.gif");
								}
								else{
									$_panelRooms.animate({opacity:"show",height:"toggle"},750);
									$(this).find("span")[0].innerHTML = "Hide rooms";
									$(this).find("img").attr("src",dir+"images/bookingform/icon-hide.gif");
								}
								return false;
							});
																  
						});
						//*********** End function
				
			},
            setup : function(o){
						
						var $_section = o.section;
						var $_top = o.top;
                        var $_content = o.content;
                        var $_roomToggle = o.roomToggle;
                        var $_rooms = o.rooms;                        
						
						
						
						//*********** Hide step 2, 3 and 4 from view
                        //$("#step1").find($_content).addClass("hide");
                        $("#step2").find($_content).hide();
						$("#step3").find($_content).hide();
						$("#step4").find($_content).hide();	


						
						//*********** Function to show/hide the club member login
						$("#form-club-member").find(":radio").each(function(){
						
							$(this).bind("click", function(){
								
								if($(this).val()=="yes"){
									$("#form-club-login").animate({opacity:"show",height:"toggle"},750);
								}
								else{
									$("#form-club-login").animate({opacity:"hide",height:"toggle"},750);
								}
							
							});
						
						});
						//*********** End function
						
						
						//*********** Function to show/hide the IATA number
						$("#form-other-member").find(":radio").each(function(){
						
							$(this).bind("click", function(){
							
								$("#form-other-member-number").animate({opacity:"show",height:"toggle"},750);
							
							
							});
						
						});
						//*********** End function
						
						
						//*********** Function to show/hide the change dates form
						$("#change-dates-button").bind("click", function(){
								
								if($("#change-dates").is(":visible")){
								$("#change-dates").animate({opacity:"hide",height:"toggle"},750);
								}
								else{
								$("#change-dates").animate({opacity:"show",height:"toggle"},750);
								}
								updateChangeDates();
						});
						//*********** End function

						
						
            }
}




