$(document).ready(gh_initialise);

function gh_initialise(){

	// Menu Rollovers
	var elementArray = $("#TopMenuHolder a");
	for(var i = 0; i < elementArray.length; i++){

		var pattern = new RegExp("(^| )" + "NoHover" + "( |$)");
		if(!pattern.test(elementArray[i].className)){

			// Work out the two image states and store them now!
			var imageArray = $(elementArray[i]).find("img");
			if(imageArray.length > 0){
				// Off Image
				imageArray[0].imageOff = imageArray[0].src;
				// On Image
				imageArray[0].imageOn = Menu_getHoverImage(imageArray[0].src);
				// Add Event Handlers
				$(elementArray[i]).hover(Menu_Hover, Menu_MouseOut);
			}
		}
	}

	// Dropdown Menus
	$('#MainMenu li').hover(
			function(){
//				$(this).find('.SubMenu').css("visibility","visible");
				$(this).find('.SubMenu').fadeIn(100);
			},
			function(){
//				$(this).find('.SubMenu').css("visibility","hidden");
				$(this).find('.SubMenu').fadeOut(500);
			}
	);


	// Homepage Request Callback fields
	$('#rc_name').focus(function(){setField($(this));})
	$('#rc_phone').focus(function(){setField($(this));})

	// Date Picker
	$.datepicker.setDefaults({dateFormat: 'dd/mm/yy'});
	$('#qh_fromDate').datepicker({beforeShow: qq_setRange});
	$('#qh_toDate').datepicker({beforeShow: qq_setRange});
	$('#dateSelectFrom').click(function(){$('#qh_fromDate').focus();});
	$('#dateSelectTo').click(function(){$('#qh_toDate').focus();});
	// Date Restrictions
	
	// Quick Quote Change Dates Button
	$('#qqChangeDates').click(function(){
		$('#QuickBoxForm').attr('action','/basket/');
		$('#qqCmd').val('changeDates');
		$('#qqCmd2').val('setDates');
		$('#QuickBoxForm').submit();
	   });

	// Quickquote drop-downs
	$('#qh_productType').change(qq_loadSecondaryList);
	// Initial Load in case primary is defined
	qq_loadSecondaryList();
	
	// Print Page Button
	$('.LinkButton_PrintPage').click(function(){window.print();});
	
	$('.Button').val("");
	
} // end initialiser

function qq_setRange(input){
///	http://stackoverflow.com/questions/330737/jquery-datepicker-2-inputs-textboxes-and-restricting-range
	var min = new Date();
	min.setDate(min.getDate()+1);
	var dateMin = min;
	var dateMax = null;

	if(input.id == "qh_fromDate"){
		if($("#qh_toDate").datepicker("getDate") != null){
		dateMax = $("#qh_toDate").datepicker("getDate");
		}
	}
	if(input.id == "qh_toDate"){
		if($("#qh_fromDate").datepicker("getDate") != null){
		dateMin = $("#qh_fromDate").datepicker("getDate");
		}
	}

	return {minDate: dateMin, maxDate: dateMax};

} // end qq_setRange

function qq_loadSecondaryList(){
	// Empty 
		$('#qh_product').empty();
		// Refill
		$('#qh_product').append('<option value="">Please Select</option>');
		
		// Get Select Box Value
		var drp = document.getElementById("qh_productType");
		var id = drp.options[drp.selectedIndex].value;
		if(id){
			for(var i in productLists[id]){
				if($('#qq_selectedSecondaryCat').val() == i){
					$('#qh_product').append('<option value="' + i + '" selected>' + productLists[id][i] + '</option>');
				}else{
					$('#qh_product').append('<option value="' + i + '">' + productLists[id][i] + '</option>');
				}
			}
		}
} // end qq_loadSecondaryList


function Menu_Hover(e){
	if(!e) var e = window.event;
	if(e.target) targ = e.target;
	else if (e.srcElement) targ = e.srcElement;

	// Get image state stored earlier and display
//	alert(targ.imageOn);
	targ.src = targ.imageOn;

//	alert(targ.imageOn);
} // end Menu_Hover

function Menu_MouseOut(e){
	if(!e) var e = window.event;
	if(e.target) targ = e.target;
	else if (e.srcElement) targ = e.srcElement;

	targ.src = targ.imageOff;
} // end Menu_MouseOut



function Menu_getHoverImage(myString){
	var myBits = myString.split(".");
	var extension = myBits.pop();

	// Check if this is already the hover version (for sites doing current page highlighting).
	if(myBits[myBits.length - 1].match(/_On$/)){
		return myString;
	}else{
		return myBits.join(".") + "_On." + extension;
	}
} // end Menu_getHoverImage

function setField(element){

	if(!element.beenSet){
		element.val("");	
	}
	element.beenSet = true;
} 