function ajaxRequest()
{
  var activexmodes=["Msxml2.XMLHTTP", "Microsoft.XMLHTTP"] //activeX versions to check for in IE
  if (window.ActiveXObject)
  {                                            //Test for support for ActiveXObject in IE first (as XMLHttpRequest in IE7 is broken)
    for (var i=0; i<activexmodes.length; i++)
    {
      try
      {
        return new ActiveXObject(activexmodes[i])
      } catch(e) {
        //suppress error
      }
     }
  } else if (window.XMLHttpRequest) { // if Mozilla, Safari etc
    return new XMLHttpRequest()
  } else {
    return false
  }
}

function castVote( trigger, optId, divId, uriPath ) 
{
  var mygetrequest = new ajaxRequest();
  mygetrequest.onreadystatechange=function()
  {
    if (mygetrequest.readyState==4)
    {
	  if (mygetrequest.status==200 || window.location.href.indexOf("http")==-1)
	  {
	    document.getElementById( divId ).innerHTML = 
	      ( mygetrequest.responseText == '1' ) 
	    	? 'Your vote has been recorded' 
	    	: '<span style="color: #f00;">Your vote could not be recorded. Please try again later.</span>';
	  } else {
		  document.getElementById( divId ).innerHTML = '<span style="color: #f00;">An error occured. Please try again later.</a>';
	  }
	}
  }
  
  var opt = encodeURIComponent(document.getElementById( optId ).value);
  mygetrequest.open("GET", uriPath + opt, true);
  mygetrequest.send(null);
  document.getElementById( trigger ).style.display = 'none';
}

function getWeather( optId, divId, uriPath ) 
{
  var mygetrequest = new ajaxRequest();
  mygetrequest.onreadystatechange=function()
  {
    if (mygetrequest.readyState==4)
    {
	  if (mygetrequest.status==200 || window.location.href.indexOf("http")==-1)
	  {
	    document.getElementById( divId ).innerHTML = mygetrequest.responseText;
	  } else {
		document.getElementById( divId ).innerHTML = '<span style="color: #f00;">An error occured. Please try again later.</a>';
	  }
	}
  }
  
  var opt = encodeURIComponent(document.getElementById( optId ).value);
  mygetrequest.open("GET", uriPath + opt, true);
  mygetrequest.send(null);
}

function newsletterSusbcribe( trigger, emailValue, divId, uriPath ) 
{
  var mygetrequest = new ajaxRequest();
  mygetrequest.onreadystatechange=function()
  {
    if (mygetrequest.readyState==4)
    {
	  if (mygetrequest.status==200 || window.location.href.indexOf("http")==-1)
	  {
		if (mygetrequest.responseText == '1')
		{
	      document.getElementById( divId ).innerHTML = 'You have successfully subscribed to our newsletter!';
		} else if (mygetrequest.responseText == '2') {
          document.getElementById( divId ).innerHTML = 'You are already subscribed to our newsletter!';
		} else {
          document.getElementById( divId ).innerHTML = '<span style="color: #f00;">We could not subscribe you to our newsletter. Please try again later.</span>';
		}
	  } else {
		  document.getElementById( divId ).innerHTML = '<span style="color: #f00;">An error has occured. Please try again later.</a>';
	  }
	}
  }
  
  var email = encodeURIComponent(document.getElementById( emailValue ).value);
  mygetrequest.open("GET", uriPath + email, true);
  mygetrequest.send(null);
  document.getElementById( trigger ).style.display = 'none';
}

function sendFeedback( trigger, messageValue, divId, uriPath ) 
{
  if (document.getElementById( messageValue ).value == 'Write your message here' || document.getElementById( messageValue ).value == '' )
  {
	  alert('Please write a message before you click the "Send Message" button!');
	  return false
  }
  var mypostrequest = new ajaxRequest();
  mypostrequest.onreadystatechange=function()
  {
    if (mypostrequest.readyState==4)
    {
	  if (mypostrequest.status==200 || window.location.href.indexOf("http")==-1)
	  {
		if (mypostrequest.responseText == '1')
		{
		  var msg = 'Your message have been sent to us! We will be reading ';
		  msg = msg + 'it in the next few hours. We want to assure you that we value your opinions ';
		  msg = msg + 'and that we will make everything in our powers for our website to become the ';
		  msg = msg + 'most pleasant and enjoyable experience for our users.';
	      document.getElementById( divId ).innerHTML = msg; 
		} else {
          document.getElementById( divId ).innerHTML = '<span style="color: #f00;">Your message could not be delivered. For the time beeing, we only allow one message a day for each user. Please try again later.</span>';
		}
	  } else {
		  document.getElementById( divId ).innerHTML = '<span style="color: #f00;">Your message could not be delivered. For the time beeing, we only allow one message a day for each user. Please try again later.</span>';
	  }
	}
  }
  
  var feedback = encodeURIComponent(document.getElementById( messageValue ).value);
  var parameters="msg="+feedback

  mypostrequest.open("POST", uriPath, true)
  mypostrequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded")
  mypostrequest.send(parameters)
  
  document.getElementById( trigger ).style.display = 'none';
}

function submitSearchDeals ( prefix )
{
	var errors = false;
	var formObj = document.getElementById('dealSearchForm');
	formObj.action = prefix + 'deals.html';
	if ( document.getElementById( prefix + '_al' ).value != 'eg: Spain' && document.getElementById( prefix + '_al' ).value != '' )
	{
		document.getElementById('al').value = document.getElementById( prefix + '_al' ).value;
	} else {
		alert( 'You have to enter your destination');
		errors = true;
	}
	
	if ( document.getElementById( prefix + '_hp' ) && document.getElementById( prefix + '_checkhp' ) )
	{
		var hpObj = document.getElementById( prefix + '_hp' );
		var checkhpObj = document.getElementById( prefix + '_checkhp' );
		if ( checkhpObj.checked )
		{
			if ( hpObj.value == 'eg: Holiday Inn' || hpObj.value == '' )
			{
				alert( 'You have to write the name of your preffered hotel first, or untick the preffered hotel checkbox' )
				errors = true;
			} else {
				document.getElementById('hp').value = hpObj.value;
			}
		}
	} else {
		document.getElementById('hp').value = '';
	}
	if ( dlObj = document.getElementById( prefix + '_dl' ) )
	{
		if ( dlObj.value != 'eg: London' && dlObj.value != '' )
		{
			document.getElementById('dl').value = dlObj.value;
		} else {
			document.getElementById('dl').value = '';
		}
	} else {
		document.getElementById('dl').value = '';
	}

	if ( dummyFormObj = document.getElementById( prefix + 'DummyForm' ) )
	{
		var radioName = prefix + '_sr';
		if ( dummyFormObj.elements[radioName] )
		{
			document.getElementById('sr').value = '';
			for ( i=0; i < dummyFormObj.elements[radioName].length; i++ )
			{
				if ( dummyFormObj.elements[radioName][i].checked )
				{
					document.getElementById('sr').value = dummyFormObj.elements[radioName][i].value;
				}
			}
		} else {
			document.getElementById('sr').value = '';
		}
		var radioName = prefix + '_lt';
		if ( dummyFormObj.elements[radioName] )
		{
			document.getElementById('lt').value = '';
			for ( i=0; i < dummyFormObj.elements[radioName].length; i++ )
			{
				if ( dummyFormObj.elements[radioName][i].checked )
				{
					document.getElementById('lt').value = dummyFormObj.elements[radioName][i].value;
				}
			}
		} else {
			document.getElementById('lt').value = '';
		}
		var radioName = prefix + '_ht';
		if ( dummyFormObj.elements[radioName] )
		{
			document.getElementById('ht').value = '';
			for ( i=0; i < dummyFormObj.elements[radioName].length; i++ )
			{
				if ( dummyFormObj.elements[radioName][i].checked )
				{
					document.getElementById('ht').value = dummyFormObj.elements[radioName][i].value;
				}
			}
		} else {
			document.getElementById('ht').value = '';
		}
		var radioName = prefix + '_ft';
		if ( dummyFormObj.elements[radioName] )
		{
			document.getElementById('ft').value = '';
			for ( i=0; i < dummyFormObj.elements[radioName].length; i++ )
			{
				if ( dummyFormObj.elements[radioName][i].checked )
				{
					document.getElementById('ft').value = dummyFormObj.elements[radioName][i].value;
				}
			}
		} else {
			document.getElementById('ft').value = '';
		}
	}
	
	if ( ! errors )
	{
		formObj.submit();
	}

}

function setupLocationInfo( location , divId ) {
	var divContent = '';

	divContent = '<h1 style="margin: 0; padding: 0; font-size: 16px; font-weight: bold;">' + location + '</h1><br />';
	divContent = divContent + '<a href="/hoteldeals.html?al=' + encodeURIComponent(location) + '" title="Hotels in ' + location + '">Hotels in ' + location + '</a><br />';
	divContent = divContent + '<a href="/holidaydeals.html?al=' + encodeURIComponent(location) + '" title="Holidays in ' + location + '">Holidays in ' + location + '</a><br />';
	divContent = divContent + '<a href="/flightdeals.html?al=' + encodeURIComponent(location) + '" title="Flights to ' + location + '">Flights to ' + location + '</a><br />';
	divContent = divContent + '<a href="/search.html?sq=car+rental+in+' + encodeURIComponent(location) + '&ss=1" title="Car rental in ' + location + '">Car rental in ' + location + '</a><br />';
	divContent = divContent + '<a href="/search.html?sq=travel+to+' + encodeURIComponent(location) + '&ss=1" title="Travel to ' + location + '">Travel to ' + location + '</a><br />';

	document.getElementById( divId ).innerHTML = divContent; 
}


      function preloadImages() { 
        var d=document; 
        if(d.images){
          if(!d.MM_p) 
            d.MM_p=new Array();
          var i,j=d.MM_p.length,b=preloadImages.arguments; 
          for(i=0; i<b.length; i++)
            if (b[i].indexOf("#")!=0){
              d.MM_p[j]=new Image; 
              d.MM_p[j++].src=b[i];
            }
        }
      }
      function externalLinks() {
        if (!document.getElementsByTagName) return;
        var anchors = document.getElementsByTagName("a");
        for (var i=0; i<anchors.length; i++) {
          var anchor = anchors[i];
          if (anchor.getAttribute("href") && anchor.getAttribute("rel") == "external")
            anchor.target = "_blank";
        }
      }
      function init() {
        externalLinks();
      }
      window.onload = init;
      
      
      
//**********************************  Slider **********************************//
      var SLIDETIMER = 3;
      var SLIDESPEED = 5;
      var SCROLLTIMER = 3;
      var SCROLLSPEED = 5;
      var CURRENTSECTION = 1;
      var MAXSECTIONS = 6;

      function nextSlide(id,sectionprefix,prefix,timer) {
        CURRENTSECTION = (CURRENTSECTION+1 <= MAXSECTIONS) ? CURRENTSECTION+1 : CURRENTSECTION ;
        slideContent(sectionprefix+CURRENTSECTION,prefix,timer);
      }
      function prevSlide(id,sectionprefix,prefix,timer) {
        CURRENTSECTION = (CURRENTSECTION-1 >= 1) ? CURRENTSECTION-1 : CURRENTSECTION ;
        slideContent(sectionprefix+CURRENTSECTION,prefix,timer);
      }

      function slideContent(id,prefix,timer) {
        var div = document.getElementById(id);
        var slider = div.parentNode;
        clearInterval(slider.timer);
        slider.section = parseInt(id.replace(/\D/g,''));
        slider.target = div.offsetLeft;
        slider.style.left = slider.style.left || '0px';
        slider.current = slider.style.left.replace('px','');
        slider.direction = (Math.abs(slider.current) > slider.target) ? 1 : -1;
        slider.timer = setInterval( function() { slideAnimate(slider,prefix,timer) }, SLIDETIMER);
      }

      function slideAnimate(slider,prefix,timer) {
        var curr = Math.abs(slider.current);
        var tar = Math.abs(slider.target);
        var dir = slider.direction;
        if((tar - curr <= SLIDESPEED && dir == -1) || (curr - tar <= SLIDESPEED && dir == 1)) {
          slider.style.left = (slider.target * -1)-1 + 'px';
          clearInterval(slider.timer);
        } else {
      	  var pos = (dir == 1) ? parseInt(slider.current) + SLIDESPEED : slider.current - SLIDESPEED;
          slider.current = pos;
          slider.style.left = pos + 'px';
        }
      }
