if(document.images){
	preloadImage = new Image();
	preloadImage.src = "/images/tooltip_green_bottom.gif";
	preloadImage = new Image();
	preloadImage.src = "/images/tooltip_red_top.gif";
	preloadImage = new Image();
	preloadImage.src = "/images/load.gif";
	preloadImage = new Image();
	preloadImage.src = "/images/loading_gallery.gif";
}


var g = false;
var divid = '';
var appearAfterDiv;
var currentCount=0;
var questionType=0;

function expandCollapse(div){
	if(g==false){
		g=true;
		if($(div).style.display=='none'){
			new Effect.SlideDown($(div),{duration: .5, afterFinish: function (){
					g=false;
					$(div+'_toggle').className='collapse';
				}
			});
		}else{
			new Effect.SlideUp($(div),{duration: .5, afterFinish: function (){
					g=false;
					$(div+'_toggle').className='expand';
				}
			});
		}
	}
}

function addBookmark(title, url){
	if (window.sidebar) {
		window.sidebar.addPanel(title, url,"");
	}else if( document.all ) {
		window.external.AddFavorite( url, title);
	}else if( window.opera && window.print ) {
		return true;
	}
}

function checkMaxLength(element, maxLength) {
	var currentLength = element.value.length;
	if (currentLength > maxLength){
		element.value=element.value.substr(0, maxLength);
	}
	
	$(element.id +'_max').innerHTML=currentLength;
}

function homePageFade(fade1, fade2, fade3){
	var div1=2;
	var div2=2;
	var div3=2;
	var album = { 
		startup: function() { 
			new PeriodicalExecuter(album.cycle, 7)
		}, 
		cycle: function() {
		
			// adventure
			new Effect.Appear(fade1+div1, {duration: 1,queue: 'end',fps: 50, afterFinish: function() { 
					div1=(div1==1 ? 2 : 1);
										
			      	new Effect.Fade(fade1+div1, {
						duration: 1,
						fps: 50,
						afterFinish: function() { 
							new Ajax.Updater(fade1+div1,'/inc/image.php?fade_type='+fade1, {
								asynchronous: true
							})
						}
		     		});
				}
			});
			
     		// sightseeing
     		new Effect.Appear(fade2+div2, {duration: 1,queue: 'end',fps: 50, afterFinish: function() { 
					div2=(div2==1 ? 2 : 1);
     		
     				new Effect.Fade(fade2+div2, {
						duration: 1,
						fps: 50,
						afterFinish: function() { 
							new Ajax.Updater(fade2+div2,'/inc/image.php?fade_type='+fade2, {
								asynchronous: true
							})
						}
		     		});     		
     		
     			}
     		});
     		
     		// accommodation
     		new Effect.Appear(fade3+div3, {duration: 1,queue: 'end',fps: 50, afterFinish: function() { 
     				div3=(div3==1 ? 2 : 1);
     		
     				new Effect.Fade(fade3+div3, {
						duration: 1,
						fps: 50,
						afterFinish: function() { 
							new Ajax.Updater(fade3+div3,'/inc/image.php?fade_type='+fade3, {
								asynchronous: true
							})
						}
		     		});
     			}     		
     		});
     		
     		// end
		} 
	}
	
	window.onload = album.startup
}

var dropdown = function(id){
	
	$(id+'_link').onclick = function() {
		new Effect.Appear(id, { queue: { position: 'end', scope: id, limit: 6 }, duration: 0 });
		//new Effect.Fade(id, { queue: { position: 'end', scope: id, limit: 2 }, delay: 2, duration: .2 });
		return false;
	};
	
	$(id+'_link').onmouseout = function() {
		//$(id+'_link').className='main';
		new Effect.Fade(id, { queue: { position: 'end', scope: id, limit: 6 }, delay: .5, duration: .2 });
		
	};
	
	$(id).onmouseout = function() {
		//$(id+'_link').className='main';
		new Effect.Fade(id, { queue: { position: 'end', scope: id, limit: 6 }, delay: .5, duration: .2 });
		
	};
	
	$(id).onmouseover = function() {
		//$(id+'_link').className='active';
		var queue = Effect.Queues.get(id);
		queue.each(function(effect) { effect.cancel(); });
	};

};

var webcamChange = function(webcam){	
	new Ajax.Updater('tabbed_div','/inc/tabbed_webcams.php?webcam='+webcam, {
		asynchronous: true
	})
};

var tabbed = function(tabbedArray){	
	var link;
	var scope='tabbed';
	
	for(t=0; t<tabbedArray.length; t++){
		id=tabbedArray[t];
		
		var tabbed_div=$('tabbed_div');
		tabbed_div.style.display='none';
		
		$(id).onclick = function() {
			link=this.id;
			tabbed_div.innerHTML='';
			
			var queue = Effect.Queues.get(scope);
			queue.each(function(effect) { effect.cancel(); });
			tabbedArray.each(function(alink){$(alink).removeClassName('active');});
			
			$(link).addClassName('active');
			
			new Effect.Appear('tabbed_div', { queue: { position: 'end', scope: scope, limit: 6 }, duration: 0,
				afterFinish: function() {
					new Ajax.Updater('tabbed_div','/inc/'+link+'.php', {
						asynchronous: true
					})
				}
			});
			return false;
		};
		
		$(id).onmouseout = function() {
			link=this.id;
			new Effect.Fade('tabbed_div', { queue: { position: 'end', scope: scope, limit: 6 }, delay: .5, duration: .2,
				afterFinish: function() {
					$(link).removeClassName('active');
				}
			});			
		};
		
		$('tabbed_div').onmouseout = function() {
			new Effect.Fade('tabbed_div', { queue: { position: 'end', scope: scope, limit: 6 }, delay: .5, duration: .2,
				afterFinish: function() {
					$(link).removeClassName('active');
				}			
			});			
		};
		
		$('tabbed_div').onmouseover = function() {
			var queue = Effect.Queues.get(scope);
			queue.each(function(effect) { effect.cancel(); });
		};
	}
};

function pageFade(fade_type){
	var div1=2;
	var album = { 
		startup: function() { 
			new PeriodicalExecuter(album.cycle, 7)
		}, 
		cycle: function() {
		
			// adventure
			new Effect.Appear(fade_type+div1, {duration: 1,queue: 'end',fps: 50, afterFinish: function() { 
					div1=(div1==1 ? 2 : 1);
										
			      	new Effect.Fade(fade_type+div1, {
						duration: 1,
						fps: 50,
						afterFinish: function() { 
							new Ajax.Updater(fade_type+div1,'/inc/image.php?nolink=1&fade_type='+fade_type, {
								asynchronous: true
							})
						}
		     		});
				}
			});	
     		// end
		} 
	}
	
	window.onload = album.startup
}

function bannerFade(num){
	var div=1;
	var banner = { 
		cycle: function() {
			new Effect.Fade('banner'+div, {
				duration: .5,
				queue: 'end',
				fps: 50,
				afterFinish: function() { 
					div=(div==num ? 1 : (div+1));
										
			      	new Effect.Appear('banner'+div, {
						duration: 1,
						fps: 50
		     		})
				}
			});
		} 
	}
	
	new PeriodicalExecuter(banner.cycle, 15);
}

function formPost(div, url, form, getpost){
	if(g == false){
		g = true;
		
		var url = '/inc/'+url;
		var pars = Form.serialize($(form));
		
		new Ajax.Updater(
			div,
			url,
			{
			method: (getpost=='get' ? 'get' : 'post'),
			parameters: pars,
			evalScripts: true,
			onLoading: function() {
				loading(div, 1);
			},
			onComplete: function(t) {
				g=false;
				external();
			},
			onLoaded: function() {
				loading(div, 0);
			}
		});
	}
	
	return false;
}

function areaRefresh(div, url, highlight, remove){
	if(g == false){
		g = true;
		
		var url = '/inc/'+ url +'.php' + remove;
	
		new Ajax.Updater(
			div,
			url,
			{
			method: 'get',
			onLoading: function() {
				loading(div, 1);
			},
			onComplete: function(t) {
				g=false;
			},
			onLoaded: function() {
				loading(div, 0);
				if(highlight==1){
					new Effect.Highlight(div, {startcolor:'#edf4e3', endcolor:'#ffffff', duration: 1.5})
				}
			}
		});
	}
	
	return false;
}

function areaSlide(div){
	new Effect.BlindUp(div,{queue: 'end',delay: .5, duration: 1});
}

function loading(div, action){
	if($(div+'_loading2')){
		twins=true;
	}else{
		twins=false;
	}
	
	if(action==1){
		loadingC='<img src="/images/load.gif" width="16" height="16" alt="Loading" />';
		$(div+'_loading').style.display='block';
		if(twins){
			$(div+'_loading2').style.display='block';
		}
	}else{
		loadingC='';
		$(div+'_loading').style.display='none';
		if(twins){
			$(div+'_loading2').style.display='none';
		}
	}
	$(div+'_loading').innerHTML=loadingC;
	
	if(twins){
		$(div+'_loading2').innerHTML=loadingC;
	}
}

function website(url){
	newWindow = window.open(url, '_blank','');
	newWindow.focus();
}

function popup(url){
	popupWindow = window.open(url, '_blank', 'location=no,menubar=no,width=500,height=520,toolbar=no,scrollbars=yes,resizable=no');
	popupWindow.focus();
}

function external(){
	if (!document.getElementsByTagName){ return; }
	var anchors = document.getElementsByTagName('a');

	for (var i=0; i<anchors.length; i++){
		var anchor = anchors[i];
		
		var relAttribute = String(anchor.getAttribute('rel'));
		
		if (anchor.getAttribute('href') && (relAttribute=='external')){
			anchor.onclick = function() {
				website(this);
				return false;
			};
		}else if (anchor.getAttribute('href') && (relAttribute=='popup')){
			anchor.onclick = function() {
				popup(this);
				return false;
			};
		}
	}
}




function attachFAQs(){
	if (!document.getElementsByTagName){ return; }
	var anchors = document.getElementsByTagName('a');

	for (var i=0; i<anchors.length; i++){
		var anchor = anchors[i];
		
		var relAttribute = String(anchor.getAttribute('rel'));
		
		if (anchor.getAttribute('href') && (relAttribute=='faq')){
			anchor.onclick = function() {
				setActive(this);
				appearToggle(this);
				return false;
			};
		}
	}
}

function setActive(id){
	if(g==false){
		if (!document.getElementsByTagName){ return; }
		var anchors = document.getElementsByTagName('a');

		for (var i=0; i<anchors.length; i++){
			var anchor = anchors[i];
		
			var relAttribute = String(anchor.getAttribute('rel'));
				
			if (anchor.getAttribute('href') && (relAttribute=='faq')){
				anchor.className='';
				$(anchor.id+'_div').innerHTML='';
				$(anchor.id+'_div').style.display='none';
			}
		}
	
		id.className='active';
	}
}

function appearToggle(faq){
	if(g == false){
		g = true;
		var pars = 'faq='+faq.id;
				
		var linkurl='/inc/display_faqs.php';

		faq.blur();
				
		var appearAfterDiv=faq.id+'_div';
		
		$(appearAfterDiv).innerHTML='';
		$(appearAfterDiv).style.display='none';
			
		var myAjax = new Ajax.Updater(
			appearAfterDiv,
			linkurl,
				{
				method: 'get',
				parameters: pars,
				evalScripts: true,
				onComplete: function(t) {
					new Effect.Appear(appearAfterDiv,{queue: 'end',duration: .5, afterFinish: external});
					g = false;
				}
			});
	}
}



function checkForm(theForm){
	if(theForm==0){
		var checkThese=new Array(
			'name|Name',
			'email_address|Email address',
			'message|Your message',
			'verify|Verification code'
		);
	}else if(theForm==1){
		var checkThese=new Array(
			'email|Email address',
			'password|Password'
		);
	
	}else if(theForm==2){
		var checkThese=new Array(
			'company_id|Company ID Number'
		);
	
	}else if(theForm==3){
		var checkThese=new Array(
			'name|Name',
			'address1|Address line 1',
			'town_city|Town/City',
			'postcode|Postcode',
			'email|Your email address'
		);
		
		if($('delivery_address').checked==true){
			var checkTheseDelivery=new Array(
				'address1_delivery|Address line 1',
				'town_city_delivery|Town/City',
				'postcode_delivery|Postcode'
			);

			checkThese=checkThese.concat(checkTheseDelivery);
		}
		
		var checkTheseCC=new Array(
			'closest_town|',
			'card_name|Name on Card',
			'card_number|Card Number',
			'cvv|CVV'
		);
		
		checkThese=checkThese.concat(checkTheseCC);
	}
	return checkLoop(checkThese);
}

function toggleDelivery(){
	if($('delivery_address_div').className=='shown'){
		$('delivery_address_div').className='hidden'
	}else{
		$('delivery_address_div').className='shown'
	}
}


/* shopping bag */

function confirmAnswer(element, dropon, event){
	questionType=0;
	sendData(element.id, dropon.id);
}

function confirmAnswer2(element){
	questionType=1;
	
	id=String(element);
	id=id.replace('q', '');
	
	var answer=$('a'+id).options[$('a'+id).selectedIndex].value;
	
	if(answer==''){
		$('a'+id).className='alert';
		$('a'+id).focus();
	}else{
		sendData(element, answer);
	}
}

function sendData(id, answer){
	divid=id+'_item';
	
	id=String(id);
	id=id.replace('q', '');
	
	var url    = '/inc/answer.php';
	var rand   = Math.random(9999);
	var pars   = 'question=' + id + '&answer=' + answer + '&rand=' + rand;
	var myAjax = new Ajax.Request( url, {method: 'get', parameters: pars, onComplete: showResponse} );
}
	
function showResponse (originalRequest) {
	new Effect.DropOut(divid,{queue: 'end',duration: .5, afterFinish: refreshQuestions});
}
function refreshQuestions(){
	currentCount++;
	realCount++;
	
	if(currentCount==completeCount){
		var url    = '/inc/next.php';
		var myAjax = new Ajax.Request( url, {method: 'get', onLoading: showLoad, onComplete: showQuestions});
		
		currentCount=0;
	}else if(questionType==1){
		$('q' + realCount + '_item').style.display='inline';
	}
}
function showQuestions (originalRequest){
	$('questions').style.display='none';
	$('questions').innerHTML = originalRequest.responseText;
	
	new Effect.Appear('questions',{queue: 'end',delay: .5, duration: 1, afterFinish: hideLoad});
}
function showLoad(){
	loading(1);
}
function hideLoad(){
	loading(0);
}

function attachImages(){
	if (!document.getElementsByTagName){ return; }

	var anchors = document.getElementsByTagName('a');
	
	for (var i=0; i<anchors.length; i++){
		var anchor = anchors[i];
		
		var relAttribute = String(anchor.getAttribute('rel'));
				
		if (relAttribute=='enlarge'){
			anchor.onclick = function() {
				changeImage(this);
				return false;
			};
			
			Preloader.add(anchor.href);
		}
		
		if (relAttribute=='enlarge'){
			anchor.onmouseover = function() {
				changeImage(this);
				return false;
			};
		}
		
		if (relAttribute=='video'){
			anchor.onclick = function() {
				$('video').style.display='block';
				return false;
			};
		}
	}
	
	Preloader.load();
}

function changeImage(image){
	$('image').src=image.href;
}



function checkLoop(checkTheseArray){
	var elementType;
	var elementName;
	var elementDefault;
	var elementValue;
	var elementObject;
	var valuesArray;

	var email_regex = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,})+$/;
	for (var loop=0;loop<checkTheseArray.length;loop++){
		valuesArray=checkTheseArray[loop].split("|");
		
		elementObject=$(valuesArray[0]);
		elementDefault=valuesArray[1];

		elementType=elementObject.type;
		elementName=elementObject.name.toLowerCase();
		elementValue=elementObject.value;
		
		if((elementValue==""||elementValue==elementDefault)&&(elementType=="text" || elementType=="password")){
			elementObject.className='alert';
			elementObject.focus();
			return false;
		}else if((elementValue==""||elementValue==elementDefault)&&(elementType=="textarea")){
			elementObject.className='alert';
			elementObject.focus();
			return false;
		}else if((elementType=="select-one")&&(elementObject.options[elementObject.selectedIndex].value)==elementDefault){
			elementObject.className='alert';
			elementObject.focus();
			return false;
		}else if((elementName.toLowerCase().match("email"))&&(elementType=="text")&&(!email_regex.test(elementValue))){
			elementObject.className='alert';
			elementObject.focus();
			return false;
		}else if((elementObject.checked==false)&&(elementType=="checkbox")){
			elementObject.className='alert';
			elementObject.focus();
			return false;
		}else{
			if(elementType=="checkbox"){
				elementObject.className='';
			}else{
				elementObject.className='input';
			}
		}
	}
	return true;
}


function copyOnChange(object){
	if($("deliverySame").checked==true){
		if(object.id=='country'){
			$(object.id + "Del").selectedIndex=object.selectedIndex;
		}else{
			$(object.id + "Del").value=object.value;
		}
	}
}

// Operators area functions
function toggleDiv(div){
	if($(div).className=='shown'){
		$(div).className='hidden'
	}else{
		$(div).className='shown'
	}
}

function toggleSelectDiv(div, on){
	if(on==1){
		$(div).className='shown'
	}else{
		$(div).className='hidden'
	}
}

function sortList(list, con){
	url='/operators/inc/' + list + '.php';
	
	Sortable.create(list, {
		constraint: con,
		onUpdate: function(){
			/* Output to id="test"			
			new Ajax.Updater(
				'test',
				url,
				{
				method: 'post',
				parameters: Sortable.serialize(list),
				onComplete: function(t) {
					g=false;
				}
			});*/
			
			new Ajax.Request(
				url,
				{
				method: 'post',
				parameters: Sortable.serialize(list),
				onComplete: function(t) {
					g=false;
				}
			});
			
		}
	});
	
	if (!document.getElementsByTagName){ return; }

	var anchors = document.getElementsByTagName('a');
	
	for (var i=0; i<anchors.length; i++){
		var anchor = anchors[i];
		
		var relAttribute = String(anchor.getAttribute('rel'));
				
		if (relAttribute==list){	
			anchor.onclick = function() {
				removeFromList(this.id, list);
				return false;
			};
		}
	}
}

function insertFromTo(from, to){
	var fromValue=$(from).options[$(from).selectedIndex].value;
	
	$(to).value=fromValue;
}

function removeFromList(id, list){
	url='/operators/inc/' + list + '.php';
	
	id=id.replace('_a_', '_');
		
	var thelist = document.getElementById(list);
	var li = document.getElementById(id);
	thelist.removeChild(li);
		
	new Ajax.Request(
		url,
		{
		method: 'post',
		parameters: Sortable.serialize(list),
		onComplete: function(t) {
			g=false;
		}
	});
}

function createToolTip(title, content, id, tipclass, leftright){
	if(leftright==0){
		targetPos='topRight';
		tipPos='topLeft';
		xPos=5;
	}else{
		targetPos='topLeft';
		tipPos='topRight';
		xPos=-5;
	}

	
	if(leftright==2){
		new Tip(id, content, { className: tipclass, title: title});
	}else if(leftright==3){
		new Tip(id, content, { className: tipclass, title: title, offset: {x:xPos,y:40}});
	}else{
		new Tip(id, content, { className: tipclass, title: title, hook:{target: targetPos, tip: tipPos}, offset: {x:xPos,y:0}});
	}	
}

function days_between(date1, date2) {

    // The number of milliseconds in one day
    var ONE_DAY = (1000 * 60 * 60 * 24);

    // Convert both dates to milliseconds
    var date1_ms = date1.getTime();
    var date2_ms = date2.getTime();

	var difference_ms;
	 
    // Calculate the difference in milliseconds
    if(date1_ms<date2_ms){
		difference_ms = Math.abs(date1_ms - date2_ms);
	}else{
		difference_ms = 0;
	}
    
    // Convert back to days and return
    return Math.round(difference_ms/ONE_DAY);
}

function updateBudget(){
	var budget_from=$('budget_from').options[$('budget_from').selectedIndex].value;
	var budget_to=$('budget_to').options[$('budget_to').selectedIndex].value;
	
	if(budget_from=='Any'){
		$('budget_to_span').className='hidden'
	}else{
		$('budget_to_span').className='shown'
	}
}

function updateNights(){
	// Store the date of the next New Year's Day
	var checkin_date = new Date();
	
	var checkin_day=$('checkin_day').options[$('checkin_day').selectedIndex].value;
	var checkin_month=$('checkin_month').options[$('checkin_month').selectedIndex].value;
	var checkin_year=$('checkin_year').options[$('checkin_year').selectedIndex].value;
	
	checkin_date.setYear(checkin_year);
	checkin_date.setMonth(checkin_month);
	checkin_date.setDate(checkin_day);
	
	var checkout_date = new Date();
	
	var checkout_day=$('checkout_day').options[$('checkout_day').selectedIndex].value;
	var checkout_month=$('checkout_month').options[$('checkout_month').selectedIndex].value;
	var checkout_year=$('checkout_year').options[$('checkout_year').selectedIndex].value;
	
	checkout_date.setYear(checkout_year);
	checkout_date.setMonth(checkout_month);
	checkout_date.setDate(checkout_day);
		
	// Call the days_between function
	var days_left = days_between(checkin_date, checkout_date);
	
	$('nights').value=days_left;
}

//window.onload=external;