
function goToRequest(id) {
	window.location = '/requests/add/' + id;
}

function getElement(elementID) 	{
	    if (document.getElementById) {
		 return(document.getElementById(elementID));
	    	}
	    else if (document.layers) {
		return(document.layers[elementID]);
	    	}
	    else if (document.all) {
		 return(document.all[elementID]);
		}
	}

//used to show/hide div on same page (e.g. Business Ops > Learn More)
function toggleDiv(divid) {
//	var thisDiv = document.getElementById( divid );
	var thisDiv = getElement( divid );
	
	if ( thisDiv.style.display == "none" || thisDiv.style.display == "") {
		thisDiv.style.display = "block";
	} else {
		thisDiv.style.display = "none";
	}
}

//switch image (use for onmouseover/onmouseout)
function img_change(imgid,newimg){
	var img = getElement(imgid);
	img.src=newimg;
}

//switch background image (use for onmouseover/onmouseout for button hiliting)
function bg_change(butid,newbg){
	var i = getElement(butid);
	i.style.backgroundImage = "url('"+newbg+"')";
}




function nbParticipant(nbEl, componentId) {
	var numberOfParticipant = Number(nbEl.options[nbEl.selectedIndex].value);
	getElement('participants' + componentId).className = '';
	dayOfTrip = getElement('day_of_trip' + componentId).options[getElement('day_of_trip' + componentId).selectedIndex].value - 1;
	if (numberOfParticipant < groupSize) {
		var i =0;
		var nbOfPart = 0;
		while (i < groupSize) {
			var travEl = getElement('traveler' + componentId + '-' + i);

			if ((departureday[i] >= dayOfTrip) && (arrivalday[i] <= dayOfTrip)) {
				if (nbOfPart < numberOfParticipant) {
					travEl.checked = true;
					nbOfPart++;
					}
				else {
					travEl.checked = false;
					}
				}
			else {
				travEl.disabled = true;
				}
			i++;
			}
		}
	}

function clickTraveler(chkBox, componentId) {
	
	if(chkBox.checked) {
		getElement('TripComponentNumber_of_participant' + componentId).selectedIndex++;
		}
	else {
		getElement('TripComponentNumber_of_participant' + componentId).selectedIndex--;
		}

	}

function calculateAmount(componentId) {
	if (getElement('day_of_trip' + componentId)) {
		var dayOfTripEl =  getElement('day_of_trip' + componentId);
		var dayOfTrip = dayOfTripEl.options[dayOfTripEl.selectedIndex].value-1;
		
		var nbParticipant = participants[dayOfTrip];
		//alert(dayOfTrip);
		//alert(nbParticipant);
		}
	
	
	if (getElement('number' + componentId)) {
		var numberEl =  getElement('number' + componentId);
		var numberOfUnit = numberEl.options[numberEl.selectedIndex].value;
		}
	else {
		var numberOfUnit = 1;
	}
	if (getElement('number2' + componentId)) {
		var number2El =  getElement('number2' + componentId);
		var numberOfUnit2 = number2El.options[number2El.selectedIndex].value;
		}
	else {
		var numberOfUnit2 = 1;
		}
	
	var total = Math.round((numberOfUnit * numberOfUnit2 * getElement('amount' + componentId).innerHTML) *100)/100;
	var totalPerPerson = Math.round((total / nbParticipant) *100) / 100;
	personPerUnit = Math.round((nbParticipant / numberOfUnit) * 10) / 10; 
	if (getElement('total' + componentId)) {
		getElement('total' + componentId).innerHTML = total;
		}
	if (getElement('totalPerPerson' + componentId)) {
		getElement('totalPerPerson' + componentId).innerHTML = totalPerPerson;
		}
	if (getElement('personPerUnit' + componentId)) {
		getElement('personPerUnit' + componentId).innerHTML = personPerUnit;
		}
	}

function requireHotel(CheckBox) {
	if (CheckBox.checked) {
		var hotelCategoryId = getElement('TripHotelCategoryId').options[getElement('TripHotelCategoryId').selectedIndex].value;
		var numberOfRoom = getElement('TripNumberOfHotelRoom').options[getElement('TripNumberOfHotelRoom').selectedIndex].value;
		if (!numberOfRoom) {
			alert('You must select the number of hotel room you want');
			getElement('TripNumberOfHotelRoom').focus();
			CheckBox.checked = false;
			return false;
		}
		
		new Ajax.Updater('editHotel','/trips/add_hotel/' + hotelCategoryId + '/' + numberOfRoom, {asynchronous:true, evalScripts:true, requestHeaders:['X-Update', 'editHotel']});
		new Ajax.Updater('hotel_list','/trips/hotel_list/' + getElement('TripHotelCategoryId').options[getElement('TripHotelCategoryId').selectedIndex].value, {asynchronous:true, evalScripts:true, requestHeaders:['X-Update', 'hotel_list']});
		waiting('hotel_list');
		waiting('editHotel');
		}
	else {
		new Ajax.Updater('editHotel','/trips/remove_hotel/', {asynchronous:true, evalScripts:true, requestHeaders:['X-Update', 'editHotel']});
		//getElement('hotel_list').innerHTML = '';
		}
	}


var currentNumberOfRoom = 0;
function changeNumberOfRoom(selectEl) {
	var newNumberOfRoom = selectEl.options[selectEl.selectedIndex].value;
	CheckBox = getElement('TripRequireHotel');
	if (CheckBox.checked) {
		if (currentNumberOfRoom != newNumberOfRoom) {
			if (currentNumberOfRoom > newNumberOfRoom) {
			 	numberOfRoomToRemove = currentNumberOfRoom - newNumberOfRoom;  
			 	if (numberOfRoomToRemove == 1) {
			 		confirmation = confirm('Remove the last room in the list ? (you can also remove them by clicking on the "remove" link on the right side in the list)'); 
			 		}
				else {			 	
				 	confirmation = confirm('Remove the last ' + numberOfRoomToRemove + ' rooms in the list ? (you can also remove them by clicking on the "remove" link on the right side in the list)');
					}
				if (confirmation) {
					new Ajax.Updater('editHotel','/trips/remove_rooms/' +  numberOfRoomToRemove, {asynchronous:true, evalScripts:true, requestHeaders:['X-Update', 'editHotel']});
					waiting('editHotel');
					currentNumberOfRoom = currentNumberOfRoom - numberOfRoomToRemove;
					}
			 	}
			else {
			 	numberOfRoomToAdd = newNumberOfRoom - currentNumberOfRoom;  
			 	if (numberOfRoomToAdd == 1) {
			 		confirmation = confirm('Add one room ?'); 
			 		}
				else {			 	
				 	confirmation = confirm('Add ' + numberOfRoomToAdd + ' rooms ?');
					}
				if (confirmation) {
					new Ajax.Updater('editHotel','/trips/add_rooms/' +  numberOfRoomToAdd, {asynchronous:true, evalScripts:true, requestHeaders:['X-Update', 'editHotel']});
					waiting('editHotel');
					currentNumberOfRoom = currentNumberOfRoom + numberOfRoomToAdd;
					}
				}
			}
		}
	}

var groupSize = 0;
var participants = new Array();
var dayOfTrip = 1;
var departureday = new Array();
var arrivalday = new Array();

function addSomeone() {
	groupSize++;
	var newRow = getElement('groupTable').insertRow(-1);
	newRow.id = 'traveler' +groupSize;
	new Ajax.Updater('traveler' + groupSize,'/trips/add_traveler/' + groupSize, {asynchronous:true, evalScripts:true, requestHeaders:['X-Update', 'traveler' + groupSize]});
	//getElement('endOfGroup').scrollTo();
	newRow.focus();
	}

function switchDate(selectEl, tripComponentId) {
	var dayOfTrip = selectEl.options[selectEl.selectedIndex].value;
	new Ajax.Updater('content','/trips/modify_componentdayoftrip/' + dayOfTrip + '/' + tripComponentId, {asynchronous:true, evalScripts:true, requestHeaders:['X-Update', 'content']});
	waiting('content');
	}

function pulsePrice() {
	new Effect.Pulsate('price_summary', {duration : 1.5, from: 0.5, pulses: 4}); 
	}

function calculatePeoplePerRoom() {
	numberOfHotelRoomEl = getElement('TripNumberOfHotelRoom');
	numberOfPeopleEl = getElement('TripNumberOfPeople');
	numberOfRoom = numberOfHotelRoomEl.options[numberOfHotelRoomEl.selectedIndex].value;
	numberOfPeople = numberOfPeopleEl.options[numberOfPeopleEl.selectedIndex].value;
	
	if ((numberOfRoom != '') && (numberOfPeople != '')) {

		if ((numberOfRoom *1) > (numberOfPeople*1)) {
			content = '- <span style="color: #f00">You can\'t have more room than people</span>';
			}
		else {
			numberOfPeoplePerRoom = Math.round((numberOfPeople / numberOfRoom) * 10)/10;
			if (numberOfPeoplePerRoom  > 4) {
				numberOfPeoplePerRoom  = 4;
				}
			content = '- ' + numberOfPeoplePerRoom + ' occupant'+((numberOfPeoplePerRoom > 1) ? 's' :'' )+' per room';

			if ((Math.ceil((((numberOfPeople / numberOfRoom) > 4) ? 4 : numberOfPeople / numberOfRoom))  * numberOfRoom) < numberOfPeople) {
				peopleWithoutRoom = (numberOfPeople - (numberOfPeoplePerRoom * numberOfRoom))
				content = content + '<br/>- ' + numberOfRoom + ' room'+((numberOfRoom > 1) ? 's' :'' )+' with ' + numberOfPeoplePerRoom + ' occupant'+((numberOfPeoplePerRoom > 1) ? 's' :'' )+'<br/>- <span style="color: #f00">' + peopleWithoutRoom + ' person'+((peopleWithoutRoom > 1) ? 's' :'' )+' without room</span>';
				}
			else {
				maxNumber = Math.ceil(numberOfPeople / numberOfRoom);
				minNumber = Math.floor(numberOfPeople / numberOfRoom);
				minNumberIsFilling = minNumber * numberOfRoom;
				maxOccNumberOfRooms = numberOfPeople - minNumberIsFilling;
				minOccNumberOfRooms = numberOfRoom - maxOccNumberOfRooms;
				if (maxOccNumberOfRooms == 0) {
					maxOccNumberOfRooms = minOccNumberOfRooms;
				}
				content = content + '<br/>- ' + maxOccNumberOfRooms + ' room'+((maxOccNumberOfRooms > 1) ? 's' :'' )+' with ' + maxNumber + ' occupant'+((maxNumber > 1) ? 's' :'' );
				if (maxNumber != minNumber) {
					content = content + '<br/>- ' + minOccNumberOfRooms + ' room'+((minOccNumberOfRooms > 1) ? 's' :'' )+' with ' + minNumber + ' occupant'+((minNumber > 1) ? 's' :'' );
					}			
				}		
			}
		getElement('numberOfPeoplePerRoomDiv').innerHTML = content;
		}
	else {
		getElement('numberOfPeoplePerRoomDiv').innerHTML ='';
		}
	}

formhaschanged = false;

function formHasChanged() {
	if (getElement('saveButton')) {
		getElement('saveButton').className = 'highlightButton';
		getElement('saveButton').disabled = false;
		}
	formhaschanged = true;
	}
function checkChange() {
	if (formhaschanged) {
		confirmation = confirm('Leave without saving modifications ?');	
		if (confirmation) {
			return(true);
			formhaschanged = false;
			}
		else {
			return(false);
			}
		}
	else {
		return(true);
		}
	}




var currentTab = 0;
function switchTab(tabId) {
	if (currentTab) {
		getElement(currentTab).className = 'nothing';
		}
	getElement(tabId).className = 'current';
	currentTab = tabId;
	window.scrollTo(0,0);
	}


function switchPackage(packageId) {
	if (getElement('package' + currentPackage)) {
		getElement('package' + currentPackage).className = 'package';
		}
	getElement('package' + packageId).className = 'selectedPackage';
	currentPackage = packageId;
	getElement('TripPackageFlavourId').value = '';
	getElement('TripPackageId').value = packageId;
	formHasChanged();
	}


var currentFlavour = 0;
function switchFlavour(flavourId, formChanged) {
	if (getElement('flavour' + currentFlavour)) {
		getElement('flavour' + currentFlavour).className = 'nothing';
		}
	getElement('flavour' + flavourId).className = 'selected';
	currentFlavour = flavourId;
	getElement('TripPackageFlavourId').value = flavourId;
	if (formChanged) {formHasChanged(); }
	
	}


function showHideShowHotel() {
	if (checkBx.checked) {
		getElement('hotel').className = 'nothing';
		}
	else {
		getElement('hotel').className = 'hidden';
		}
	}

function waiting(elementId) {
	//alert(elementId);
	getElement(elementId).innerHTML = '<table width="100%" height="150"><tr><td valign="middle" align="center"><img src="/img/tripbuilder/loading.gif"/></td></tr></table>';
	}





var offsetxpoint= 5; //Customize x offset of tooltip
var offsetypoint= 5; //Customize y offset of tooltip
var ie=document.all;
var ns6=document.getElementById && !document.all;
var enabletip=false;
var tipobj= getElement("dhtmltooltip");

function ietruebody() {
	return ((document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body);
}

function dtexttip(elementId) {
	var tipobj= getElement("dhtmltooltip");
	var elementObj = getElement(elementId);
	if (ns6||ie) {
		tipobj.innerHTML= elementObj.innerHTML;
		enabletip=true;
		return false;
		}
	}

photoId = 1;

function ddrivetip(imgUrl, caption) {
	var tipobj= getElement("dhtmltooltip");
	if (ns6||ie)
		{
		if (caption) {
			tipobj.innerHTML= '<img src="'+imgUrl+'" id="photo'+photoId+'" /><div id="caption" class="caption">' +  caption + '</div>';
			getElement('photo'+photoId).onload = resizeCaption;
			photoId++;		
			}
		else {
			tipobj.innerHTML= '<img src="'+imgUrl+'"/>';
			}
		enabletip=true;
		return false;
		}
	}

function resizeCaption(e) {
	if (!e) var e = window.event;
	
	if (e.srcElement) {
		var node = e.srcElement;
		}
	else {
		var node = e.currentTarget;
		}
	getElement('caption').style.width = (node.width - 20) + 'px'; 
}

function positiontip(e)	{
	if (enabletip)
		{
		var tipobj= getElement("dhtmltooltip");
		var curX=(ns6)?e.pageX : event.clientX+ietruebody().scrollLeft;
		var curY=(ns6)?e.pageY : event.clientY+ietruebody().scrollTop;
		//Find out how close the mouse is to the corner of the window
		var rightedge=ie&&!window.opera? ietruebody().clientWidth-event.clientX-offsetxpoint : window.innerWidth-e.clientX-offsetxpoint-20
		var bottomedge=ie&&!window.opera? ietruebody().clientHeight-event.clientY-offsetypoint : window.innerHeight-e.clientY-offsetypoint-20

		var leftedge=(offsetxpoint<0)? offsetxpoint*(-1) : -1000
		//if the horizontal distance isnt enough to accomodate the width of the context menu
		if (rightedge<tipobj.offsetWidth)
		//move the horizontal position of the menu to the left by its width
			tipobj.style.left=ie? ietruebody().scrollLeft+event.clientX-tipobj.offsetWidth+"px" : window.pageXOffset+e.clientX-tipobj.offsetWidth+"px"
		else if (curX<leftedge)
			tipobj.style.left="5px"
		else

		//position the horizontal position of the menu where the mouse is positioned
			tipobj.style.left=curX+offsetxpoint+"px"
		//same concept with the vertical position
		if (bottomedge<tipobj.offsetHeight)
			tipobj.style.top=ie? ietruebody().scrollTop+event.clientY-tipobj.offsetHeight-offsetypoint+"px" : window.pageYOffset+e.clientY-tipobj.offsetHeight-offsetypoint+"px"
		else
			tipobj.style.top=curY+offsetypoint+"px"
			tipobj.style.visibility="visible"
		}
	}

function hidetexttip() {
	if (ns6||ie)
		{
		var tipobj= getElement("dhtmltooltip");
		enabletip=false
		tipobj.innerHTML = '';
		tipobj.style.visibility="hidden"
		tipobj.style.left="-1000px"
		tipobj.style.backgroundColor='black'
		tipobj.style.width=''
		tipobj.style.textAlign='left'
		tipobj.style.padding='5px'
		}
	}

function hideddrivetip() {
	if (ns6||ie)
		{
		var tipobj= getElement("dhtmltooltip");
		enabletip=false
		tipobj.style.visibility="hidden"
		tipobj.style.left="-1000px"
		tipobj.style.backgroundColor=''
		tipobj.style.width=''
		}
	}
document.onmousemove=positiontip;


//mini Build your Trip form - toggle Hotel div
function minitrip_toggleHotel(size) {
	checkBx = getElement('checkbox-'+size);
	if (checkBx.checked) {
		getElement('hotel-'+size).className = 'nothing';
	}
	else {
		getElement('hotel-'+size).className = 'hidden';
	}
}

//preload images
//usage: imgPreload( '01.gif', '02.gif' )
function imgPreload(){ 
  var args = imgPreload.arguments;
  document.imageArray = new Array(args.length);

  for(var i=0; i<args.length; i++){
    document.imageArray[i] = new Image;
    document.imageArray[i].src = args[i];
  }
}
