var daysinmonth = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
var weekdays = new Array("Sun","Mon","Tue","Wed","Thu","Fri","Sat","Sun");
var monthnames = new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
var DAYS_IN_WEEK=7;
var openingHours = new Array();
var showQ = false;

YAHOO.util.Event.addListener(window,'load',function(e){setupBookingForm();})

function PadNumber(number, numzeros)
{
	var returnValue = '';
	var numberLength;
	numberLength = (number + '').length;
	for(var i=1;i<=(numzeros-numberLength);i++)
	{
		returnValue += '0';
	}
	returnValue += (number+'');
	return returnValue;
}

function setupBookingForm()
{


	SetupDatePicker('p');
	SetupDatePicker('d');
	
	if ($('widelink1') != null)
	{
	
		Event.observe('widelink1','click',function(e) { location.href='hire.aspx?c=1';});
		Event.observe('widelink1','mouseover',new Function("ToggleCatColOn('widelink1');")); 
		Event.observe('widelink1','mouseout',new Function("ToggleCatColOff('widelink1');")); 
		Event.observe('widelink2','click',function(e) { location.href='usedvehicles.aspx';});
		Event.observe('widelink2','mouseover',new Function("ToggleCatColOn('widelink2');")); 
		Event.observe('widelink2','mouseout',new Function("ToggleCatColOff('widelink2');")); 

	}
	
}

function SetupDatePicker(calName)
{
	SetMonthDays(calName);
	
	var mindate = new Date();
	
	var maxdate = new Date();
	maxdate.setFullYear(maxdate.getFullYear(),maxdate.getMonth()+12,1);
	maxdate.setDate(maxdate.getDate()-1);
	
	YAHOO.util.Event.addListener($(calName + 'month'),'change',function(e){SetMonthDays(calName)})
	YAHOO.util.Event.addListener($(calName + 'date'),'change',function(e){SetWeekDay(calName)})
	cal1 = new YAHOO.widget.Calendar(calName + 'calendar',calName + 'cal',	{mindate: mindate, 
                                                          maxdate: maxdate}); 
	
	cal1.selectEvent.subscribe(function(s,d)
	{
		if (!toggling)
		{
		ToggleCalendar(calName,null);
	
	
		var year = d[0][0][0];
		var month = d[0][0][1];
		
		if (year > (new Date()).getFullYear())
				month += 12;
		
		$(calName + 'month').value = month;		
		
		SetMonthDays(calName);
		
		$(calName + 'date').value = d[0][0][2];
		SetWeekDay(calName);
		}
	});

	
	
	cal1.render(); 	
	
	calendars[calName]=cal1;
	YAHOO.util.Event.addListener($(calName + 'callink'),'click',function(e){ToggleCalendar(calName,e)})
}

var toggling = false;

function ToggleCalendar(calName,e)
{


	var cal = $(calName + 'cal');
	if (calName == 'p')
		$('dcal').className = '';
	else
		$('pcal').className = '';
		
	if (cal.className == 'show')
	{
		cal.className = '';
	}
	else
	{
		if (!toggling)
		{
		toggling=true;
		var theCalendar = calendars[calName];
		var tyear = (new Date()).getFullYear();
		var tmonth = $F(calName + 'month')*1;
		var tday = $F(calName + 'date')*1;
	
		if (tmonth > 12)
		{
			tmonth -= 12;
			tyear++;
		}
		
		var selDate = new Date();
		selDate.setFullYear(tyear,tmonth-1,tday);
		
		theCalendar.setMonth(tmonth-1);
		theCalendar.setYear(tyear);
		theCalendar.select(selDate);
		theCalendar.render();
		
		cal.className = 'show';
		toggling=false;
		}
	}
	
	if (e != null)
		preventDefault(e);

}

function SetMonthDays(calName)
{

	var thisYear = (new Date()).getFullYear();
	var thisMonth = new Date();
	thisMonth.setDate(1);
	var selMonth = 	$F(calName + 'month');
	if (selMonth > 12)
	{
		selMonth = selMonth - 12;
		thisMonth.setFullYear(thisYear + 1);
	}
	thisMonth.setMonth(selMonth-1);
	
	if (((thisMonth.getFullYear() % 4 == 0) && (thisMonth.getFullYear() % 100 != 0)) || (thisMonth.getFullYear() % 400 == 0))
		daysinmonth[1]=29;
	else
		daysinmonth[1]=28;
		
	var daysthismonth = daysinmonth[thisMonth.getMonth()];
	
	var daySel = $(calName + 'date');
	var oldValue = 1;
	
	if ($F(daySel) != '')
		oldValue = $F(daySel);
	daySel.options.length = 0;
	for(var i=0;i<daysthismonth;i++)
		daySel.options[i] = new Option(i+1,i+1);
	if (oldValue > daySel.options.length)
		oldValue = daySel.options.length;
	daySel.selectedIndex = oldValue - 1;
	
	SetWeekDay(calName);
	
}

function SetWeekDay(calName)
{
	var selectedDate = new Date();
	selectedDate.setDate($F(calName + 'date'));
	var newMonth = $F(calName + 'month');
	if (newMonth > 12)
	{
		newMonth = newMonth - 12;
		selectedDate.setFullYear(selectedDate.getFullYear() + 1);
	}
	selectedDate.setMonth(newMonth - 1);
	$(calName + 'day').value = weekdays[selectedDate.getDay()];
	
	var currentDay = selectedDate.getDay();
	var timeSel = $(calName + 'time');
	var timeSelVal = $F(calName + 'time');
	
	timeSel.length = 0;
	timeSel.options[0] = new Option('---','');
	var itemId = 0;
	
	if ((openingHours[currentDay][0] == '' || openingHours[currentDay][2] == ''))
	{
		timeSel.options[1] = new Option('Closed','');
	}
	else
	{
		for (var i=openingHours[currentDay][0];i<=openingHours[currentDay][2];i++)
		{
			if ((i==openingHours[currentDay][0] && openingHours[currentDay][1] == 0) || i > openingHours[currentDay][0])
			{
				itemId++;
				timeSel.options[itemId] = new Option(PadNumber(i,2) + ":00",PadNumber(i,2) + ":00");
			}
			if (((i==openingHours[currentDay][2] && openingHours[currentDay][3] >= 30) || i < openingHours[currentDay][2]) && !(i == openingHours[currentDay][0] && openingHours[currentDay][1] > 30))
			{
				itemId++;
				timeSel.options[itemId] = new Option(PadNumber(i,2) + ":30",PadNumber(i,2) + ":30");
			}			
		}
	}
	timeSel.value = timeSelVal;
}

var numCar = 0;
var selId = 0;
var quote;

function getPostString()
{
var numDriv = 0;

for(var i=0;i<($('extradriver').getElementsByTagName('li').length);i++)
{
	if ($F('driver' + i) != undefined)
	{
		numDriv = $F('driver' + i);
	}
}

var extras = '';
/*for(var i=0;i<($('extraItems').getElementsByTagName('li').length);i++)
		{
			if ($F('extra' + i) != undefined)
			{
				extras += ',' + $F('extra' + i);
			}
		}

if (extras.charAt(0) == ',')
	extras = extras.substr(1,extras.length);

*/
			
var post = '&pdate=' + $F('pdate') + '&pmonth=' + $F('pmonth') + '&ptime=' + $F('ptime');
post += '&ddate=' + $F('ddate') + '&dmonth=' + $F('dmonth') + '&dtime=' + $F('dtime');
post += '&vehicletype=' + $F('vehicletype') + '&numdrivers=' + numDriv + '&driverAge=' + $F('driverAge') + '&extras=' + extras;

return post;
}

function getQuote()
{

var post = getPostString();
	new Ajax.Request("ajax.aspx?a=q",{asynchronous:true, method:'post',postBody:post,onSuccess:function(t)
			{
				var resp = t.responseXML;
				
				if (resp.getElementsByTagName('error').length > 0)
				{
					Element.update($('quoteresults'),'');
					$('quoteintro').style.display='none';
					var er = resp.getElementsByTagName('error')[0].getElementsByTagName('item');
					var err = ''
					for(var i=0;i<er.length;i++)
						err += er[i].firstChild.nodeValue;
					$('errorText').innerHTML = err;
					$('error').className = 'error';
					$('selectedvehicle').className = 'hidden';
					$('getquote').className = 'getquote xtoppad';
				}
				else
				{
					Element.update($('quoteresults'),'');
					$('quoteintro').style.display='';
					var r = resp.getElementsByTagName('response')[0].getElementsByTagName('vehicle');
					quote = r;
					var html = '';
					numCar = r.length;
										
					for(var i=0;i<r.length;i++)
					{
						var id = r[i].attributes.getNamedItem('id').value;

						var picUrl;
						
						if (r[i].getElementsByTagName('url')[0].firstChild != null)
						 picUrl = r[i].getElementsByTagName('url')[0].firstChild.nodeValue;
						
						html += '<div class="car" id="car' + id + '"><img src="' + picUrl + '" width="121" height="78" />' 
						html += '<h4>' + r[i].getElementsByTagName('name')[0].firstChild.nodeValue + '</h4>';
						html += '<h3>&pound;' + formatNumber(r[i].getElementsByTagName('quote')[0].firstChild.nodeValue * 1,2,',','.','','','-','') + '</h3>';
						html += '</div>'
						
						YAHOO.util.Event.addListener('car' + id,'mouseover',new Function('carHover(' + id + ');'));
						YAHOO.util.Event.addListener('car' + id,'mouseout',new Function('carOut(' + id + ');'));
						YAHOO.util.Event.addListener('car' + id,'click',new Function('selCar(' + id + ');'));
					}

					
					$('error').className = 'error hidden';
					
					Element.update($('quoteresults'),html);
			
					showQuote();		
					doSIFR();
				
					if (showQ)
					{	
					selCar(selId);
					}
					
				}
			
			}
			, onFailure: function(t)
			{
					
			alert(t.status + ' - ' + t.statusText);	
			}
		}
		);
}

function doSIFR()
{
cochin = {
  src: 'sifr.swf'
};
sIFR.prefetch(cochin);
sIFR.activate();
sIFR.replace(cochin, {
  selector: 'h1,h2,div.pricesummary',
  forceWidth: '1',
  fitExactly: true,
  wmode: 'transparent',
  linkColor: '#3a6ed0',
 css: ['.sIFR-root{color:#3A6ED0} a{text-decoration:none;color:#3a63d0} a:hover{color:#3a63d0}']
});
}

function carHover(id)
{
	if ($('car' + id).className != 'selected')
		$('car' + id).className = 'car hover';
}

function carOut(id)
{
	if ($('car' + id).className != 'selected')
		$('car' + id).className = 'car';
}
function selCar(id)
{
	
	var items = $('quoteresults').getElementsByTagName('div');
	for (var i=0;i<items.length;i++)
		if (items[i].id == 'car' + id)
			items[i].className = 'selected';
		else
			items[i].className = '';
			
	selId = id;
	
	var html = '';
	numCar = quote.length;
	for(var i=0;i<quote.length;i++)
	{
		if (id == quote[i].attributes.getNamedItem('id').value)
		{
		var mileageday = quote[i].getElementsByTagName('mileage')[0].getAttribute('day');
		var mileageweek = quote[i].getElementsByTagName('mileage')[0].getAttribute('week');
		var insuranceexcess;
		var numpeople = quote[i].getElementsByTagName('capacity')[0].getAttribute('num') * 1;
		var lgcases = quote[i].getElementsByTagName('capacity')[0].getAttribute('large') * 1;
		var smcases  = quote[i].getElementsByTagName('capacity')[0].getAttribute('small') * 1;
		
		if (quote[i].getElementsByTagName('excess')[0].firstChild != null)
			insuranceexcess = quote[i].getElementsByTagName('excess')[0].firstChild.nodeValue;
			
		html = '';
			var url = '';
			
			if ( quote[i].getElementsByTagName('urllarge')[0].firstChild != null)
				url = quote[i].getElementsByTagName('urllarge')[0].firstChild.nodeValue;
			
			html += '<img src="' + url + '" width="350" height="225" />';
			html +=  '<div>';
			html += '<h2>' + quote[i].getElementsByTagName('name')[0].firstChild.nodeValue + '</h2>';
			html += '<h3>&pound;' + formatNumber(quote[i].getElementsByTagName('quote')[0].firstChild.nodeValue * 1,2,',','.','','','-','') + '</h3>';
			html += '<div class="cap toppad">';


			for (var m=0;m<numpeople;m++)
			{
			html += '<img src="images/smperson.gif" width="13" height="22" />';
			}
			
			for (var j=0;j<lgcases;j++)
			{
			html += '<img src="images/smlargecase.gif" width="23" height="18" />';
			}
			for (var k=0;k<smcases;k++)
			{
			html += '<img src="images/smsmallcase.gif" width="21" height="18" />';
			}
			
			html += '</div>';
			
			html +='<input type="button" id="BookNow" class="button" onclick="MakeBooking();" value="Book Now" />';
			html += '</div>';
			
			$('selveh').innerHTML = html;
			
			$('selectedvehicle').className = '';
			
			doSIFR();
			
			
		}
	}
	

}

function MakeBooking()
{
var book = getPostString() + "&v_id=" + selId;
location.href = 'booking.aspx?id=1'+ book;

}

function showQuote()
{
if (showQ)
{
	$('quote').className = '';
	$('getquote').className = 'hidden';
	doSIFR();
}
}

function SetupQuote()
{
	if ($('doQuote') != null) // check to make sure we're on the quote page
	{
		YAHOO.util.Event.addListener('pdate','change',function(e){getQuote();});
		YAHOO.util.Event.addListener('pmonth','change',function(e){getQuote();});
		YAHOO.util.Event.addListener('ptime','change',function(e){getQuote();});
		YAHOO.util.Event.addListener('ddate','change',function(e){getQuote();});
		YAHOO.util.Event.addListener('dmonth','change',function(e){getQuote();});
		YAHOO.util.Event.addListener('dtime','change',function(e){getQuote();});
		YAHOO.util.Event.addListener('vehicletype','change',function(e){getQuote();});
		YAHOO.util.Event.addListener('driverAge','change',function(e){getQuote();});
		
		for(var i=0;i<($('extradriver').getElementsByTagName('li').length);i++)
		{
			YAHOO.util.Event.addListener('driver' + i,'click',function(e){getQuote();});
		}
		
		YAHOO.util.Event.addListener('getquote','click',function(e){showQ=true;showQuote();});
		
		/*for(var i=0;i<($('extraItems').getElementsByTagName('li').length);i++)
		{
			YAHOO.util.Event.addListener('extra' + i,'change',function(e){getQuote();});
		}*/
		
		// check to see if the form has been submitted
		var qs = new Querystring();
		if (qs.get("check","0") == "1")
		{
			$('pmonth').value = qs.get("pmonth","1");
			$('dmonth').value = qs.get("dmonth","1");
			
			SetMonthDays('p');
			SetMonthDays('d');
			
			$('pdate').value = qs.get("pdate","1");
			$('ddate').value = qs.get("ddate","1");
			SetWeekDay('p');
			SetWeekDay('d');
			
			$('dtime').value = qs.get("dtime");
			$('ptime').value = qs.get("ptime","1");
			
			$('vehicletype').value = qs.get("vehicletype","1");
			
			$('driverAge').value = qs.get("driverAge");
			
			selId = qs.get("v_id","0");
			
			$('driver' + qs.get("numdrivers","0")).checked = true;
			
			if (qs.get("vcheck","0") == "1")
			{
			showQ = true;			
			}
			
			getQuote();
			
			if (qs.get("numdrivers")!=null)
			{
				showQuote();					
			}
			
		}
	}
	else
	{
		
	
		$('pmonth').selectedIndex = 0;
		SetMonthDays('p');
		$('pdate').value = (new Date()).getDate();
		
		$('dmonth').selectedIndex = 0;
		SetMonthDays('d');
		$('ddate').value = (new Date()).getDate();
		
		SetWeekDay('p');
		SetWeekDay('d');
	}
}

YAHOO.util.Event.addListener(window,'load',function(e){SetupQuote(); preventDefault(e);});

function Querystring()
{
// get the query string, ignore the ? at the front.
	var querystring=location.search.substring(1,location.search.length);

// parse out name/value pairs separated via &
	var args = querystring.split('&');

// split out each name = value pair
	for (var i=0;i<args.length;i++)
	{
		var pair = args[i].split('=');

		// Fix broken unescaping
		temp = unescape(pair[0]).split('+');
		name = temp.join(' ');

		temp = unescape(pair[1]).split('+');
		value = temp.join(' ');

		this[name]=value;
	}

	this.get=Querystring_get;
}


function Querystring_get(strKey,strDefault)
{
	var value=this[strKey];
	if (value==null)
	{
		value=strDefault;
	}

	return value;
}