// --- [start /site/portal_skins/DEFAULT/errorBubbleScripts.js] ---
// Setup the error bubble tags
var errorCont = document.createElement("div");
var errorInrCont = document.createElement("div");
var errorMsgCont = document.createElement("div");
var errorImg = document.createElement("img");
var errorMsg = document.createElement("div");
var errorOk = document.createElement("div");
var errorOkLink = document.createElement("a");
var errorOkStrong = document.createElement("strong");
var errorOkImg = document.createElement("img");

// Setup the attributes of the new tags
errorCont.setAttribute('id','errorBubbleContainer');
errorInrCont.setAttribute('id','errorBubbleInnerContainer');
errorMsgCont.setAttribute('id','errorBubbleMessageContainer');
errorImg.setAttribute('src','http://cdn.lastminute.com/site/ico_primary_error.gif?skin=lastminute');
errorImg.setAttribute('alt','Error:');
errorMsg.setAttribute('id','errorBubbleMessage');
errorOk.setAttribute('id','errorBubbleOK');
errorOkLink.setAttribute('href','javascript:hideError()');
errorOkLink.setAttribute('className','text_highlight'); //for ie
errorOkLink.setAttribute('class','text_highlight');    
errorOkImg.setAttribute('src','http://cdn.lastminute.com/site/ico_primary_arrow_right.gif?skin=lastminute');
errorOkImg.setAttribute('alt','');

// Add the error bubble to the DOM
node = document.getElementById('submit');
node.appendChild(errorCont);
node = document.getElementById('errorBubbleContainer');
node.appendChild(errorInrCont);
node = document.getElementById('errorBubbleInnerContainer');
node.appendChild(errorMsgCont);
node = document.getElementById('errorBubbleMessageContainer');
node.appendChild(errorImg);
node.appendChild(errorMsg);
node = document.getElementById('errorBubbleInnerContainer');
node.appendChild(errorOk);
node = document.getElementById('errorBubbleOK');
node.appendChild(errorOkLink);
node = node.firstChild;
node.appendChild(errorOkStrong);
node = node.firstChild;
text = document.createTextNode('OK ');
node.appendChild(text);
node = document.getElementById('errorBubbleOK');
node = node.firstChild;
node.appendChild(errorOkImg);

// validateForm is called from the search form
function validateForm(){
  e = document.getElementById('destination');
	if (e.options) {
		if (e.options[e.selectedIndex].value=='None') {
			displayError('destination');
			return false;
		}
	}
	if (e.type=='text'){
		if (e.value==''){
			displayError('destination');
			return false;
		}
	}
	if( !validatePassengers() ) {
		displayError('passengers');
		return false;
	}
	if( !validateDates()) {
		displayError('dates');
		return false;
	}	
	if( !validateDPDates() ) {
		if ( document.getElementById('dp_search') ){
			displayError('dpDates');
			return false;
		}
	}
	if( !validateDestDep() ) {
		displayError('destdep');
		return false;
	}

	if (document.getElementById('dp_search')) {
		return checkEndecaDestinations();
	}

	else {return true;}

  
}

// validatePassengers is called from validateForm
function validatePassengers() {
	var adults = document.getElementById('adults');
	var seniors = document.getElementById('seniors');
	var children = document.getElementById('child');
	var infants = document.getElementById('infants');
	var total = 0;
	if( adults && adults.value ) {
		total += parseInt(adults.value);
	}
	if( seniors && seniors.value ) {
		total += parseInt(seniors.value);
	}
	if( children && children.value ) {
		total += parseInt(children.value);
	}
	if( infants && infants.value ) {
		total += parseInt(infants.value);
	}
	return( total <= 9 );
}

function validReturnDate(flag){
    function getDate(d,m,y,flag){
        var date = new Date();
        date.setMonth(0);
        date.setDate(d);
        date.setMonth(m);
        date.setYear(y)
        if(flag=='year'){
            return (date.getYear() < 1900)? date.getYear()+1900 : date.getYear();
        }else if(flag=='date'){
            return date;
        }else{
            return date.getTime();
        }
    };
    function getNumDay(t){
        return (t/1000/60/60/24)
    }
    function $(id){
        return document.getElementById(id)
    }
    var now = new Date()
    var months = [];
    var year = (now.getYear() < 1900)? now.getYear() + 1900 : now.getYear();
    var monthSelect = $('departureDateMonth');
    var startingMonth = new Number(monthSelect.options[0].value);
    var tempDate
    for(var i=0;i < monthSelect.options.length;i++){
        if(new Number(monthSelect.options[i].value) < startingMonth){
            tempDate = getDate(1,monthSelect.options[i].value,year+1, 'year')
        }else{
            tempDate = getDate(1,monthSelect.options[i].value,year, 'year')
        }
        months[monthSelect.options[i].value] = tempDate;
    }

    var dd = getDate($('departureDateDay').value, $('departureDateMonth').value-1, months[$('departureDateMonth').value], 'date');
    var rd = getDate($('returnDateDay').value, $('returnDateMonth').value-1, months[$('returnDateMonth').value], 'date');
    if(flag && ((flag=='dp') && rd <= dd) ){

     	return false
    }else if(rd < dd){

    	return false
    }else if(getNumDay(dd - now.getTime()) > 330){

    	return false
    }else if(getNumDay(dd - now.getTime()) < 0 ){
			return false
		}
    return true;
};

// validateDPDates is called from validateForm and checks that return date is not the same as or before the departure date.
function validateDPDates() {
	return validReturnDate('dp')
}

// validateDates is called from validateForm and checks that return date is not before the departure date.
function validateDates() {
	return validReturnDate()
}

// validateDestDep is called from validateForm
function validateDestDep() {
	dest = document.getElementById('destination');
	if (dest.options) {
		destValue = dest.options[dest.selectedIndex].value;
		dep = document.getElementById('departurePoint');
		if(dep.options) {
			depValue = dep.options[dep.selectedIndex].value;
			return depValue != destValue;
		}
	}
	return true;
}

// Display the error bubble with the appropriate error message
function displayError(errorType){
	error = document.getElementById('errorBubbleContainer');
	error.style.visibility = 'visible';
	switch(errorType){
		case 'destination':
			errorMsg = document.getElementById('errorBubbleMessage');
			errorMsg.innerHTML = 'Please <strong class=\"text_highlight\">select or enter your destination</strong>.'
			break;
		case 'passengers':
			errorMsg = document.getElementById('errorBubbleMessage');
			errorMsg.innerHTML = 'Please select less than 10 passengers - for larger groups please call 0871 222 5969.'
			break;
		case 'dates':
			errorMsg = document.getElementById('errorBubbleMessage');
			errorMsg.innerHTML = 'Sorry, cannot choose a return date that is before your departure date.  Please also note that we can only take flight bookings 330 days in advance.'
			break;			
		case 'dpDates':
			errorMsg = document.getElementById('errorBubbleMessage');
			errorMsg.innerHTML = 'Sorry, you must choose a return date that occurs after your departure date.  Please also note that we can only take flight bookings 330 days in advance.'
			break;
		case 'destdep':
			errorMsg = document.getElementById('errorBubbleMessage');
			errorMsg.innerHTML = 'Sorry, you seem to have selected the same destination and departure points.  Please change one and try again.'
			break;
		default:
			alert('Please ensure that you have filled out the search form correctly.');
			break;
	}
}

// Hide the error bubble
function hideError(){
  document.getElementById('errorBubbleContainer').style.visibility='hidden';
}
// --- [end prdpcthpb0507:4003 - /site/portal_skins/DEFAULT/errorBubbleScripts.js - Feb 9, 2010 2:45 pm GMT - akamai,pcth0412,pct0410 - @SzVvwqoQsAAAGekW9UAACBF - cache 1800 ] ---
