var chooser = '';
var customSelected = '';

function setCalStyle(){
	var cells = $('calendar').getElementsByTagName('td');
	for(i=0;i<cells.length;i++){
		resetCellStyle(cells[i]);
	}
}

function resetCellStyle(cell){
	switch(cell.getAttribute('day_type')){
		case 'start_day':
			cell.className = 'start_date';
			switch(cell.getAttribute('start_type')){
				case 'pending':
					switch(cell.getAttribute('day_fill')){
						case 'start':
							cell.className = ' start_pending';
							break;
						case 'end':
							cell.className += ' end_pending';
							break;						
					}					
					break;
				case 'unav':
					switch(cell.getAttribute('day_fill')){
						case 'start':
							cell.className = ' start_unavailable';
							break;
						case 'end':
							cell.className += ' end_unavailable';
							break;						
					}
					break;
				default:
					cell.className = 'start_date';
					break;
			}
			cell.onclick = function(){
				if(checkNumberGuests()){
					setStartDate(this);
					chooser.submit();
				}
			};
			break;
		case 'unav':
			switch(cell.getAttribute('day_fill')){
				case 'start':
					cell.className = 'start_unavailable bg_white';
					break;
				case 'end':
					cell.className = 'end_unavailable bg_white';
					break;
				default:
					cell.className = 'unavailable';
					break;
			}
			break;
		case 'pendunav':
			cell.className = 'end_unavailable bg_orange';
			break;
		case 'unavpend':
			cell.className = 'start_unavailable bg_orange';
			break;
		case 'pending':
			switch(cell.getAttribute('day_fill')){
				case 'start':
					cell.className = 'start_pending bg_white';
					break;
				case 'end':
					cell.className = 'end_pending bg_white';
					break;
				default:
					cell.className = 'pending';
					break;
			}
			break;
		case 'custom_pick_unav':
			switch(cell.getAttribute('day_fill')){
				case 'start':
					cell.className = 'start_unavailable bg_darkgreen';
					cell.onclick = function(){
						if(checkNumberGuests()){
							setCustomDate(this);
						}
					}
					break;
				case 'end':
					cell.className = 'end_unavailable bg_darkgreen';
					cell.onclick = function(){
						if(checkNumberGuests()){
							setCustomDate(this);
						}
					}
					break;
				default:
					cell.className = 'unavailable';
					break;
			}
			break;
		case 'custom_pick_pending':
	
			switch(cell.getAttribute('day_fill')){
				case 'start':
					cell.className = 'start_pending bg_darkgreen';
					cell.onclick = function(){
						if(checkNumberGuests()){
							setCustomDate(this);
						}
					}
					break;
				case 'end':
					cell.className = 'end_pending bg_darkgreen';
					cell.onclick = function(){
						if(checkNumberGuests()){
							setCustomDate(this);
						}
					}
					break;
				default:
					cell.className = 'pending';
					break;
			}
			break;
		case 'custom_pick':
			cell.className = 'start_date';
			cell.onclick = function(){
				if(checkNumberGuests()){
					setCustomDate(this);
				}
			};
			break;
		case 'next_month':
			cell.className = 'next_month';
			break;
		case 'std':
			cell.className = '';
			break;
	}
}

function checkNumberGuests(){
	var isok = true;
	if(chooser.adults.value == 0){
		alert('Please select at least 1 adult!');
		isok = false;
	}
	if(parseInt(chooser.adults.value) + parseInt(chooser.children.value) > 12){
		alert('You have selected too many visitors. There is a maximum of 12 spaces!');
		isok = false;
	}
	return isok;
}

function showToolTip(e,text){
/*	if(text != ''){
		e = e || window.event;
		//if(document.all)e = event;
		//var pos = mouseCoords(e);
		var eleTarget = e.srcElement||e.target;
		var pos = getPosition(eleTarget);
		var obj = document.getElementById('tooltip');
		obj.innerHTML = text;
		obj.style.display = 'block';
		var st = Math.max(document.body.scrollTop,document.documentElement.scrollTop);
		if(navigator.userAgent.toLowerCase().indexOf('safari')>=0)st=10; 
		//var leftPos = e.clientX;
		//var leftPos = pos.x;
		//if(leftPos < 0)leftPos = 0;
		//obj.style.left = leftPos + 'px';
		//obj.style.left = pos.x + 10 + 'px';
		//obj.style.top = e.clientY - obj.offsetHeight -1 + st + 60 + 'px';
		//obj.style.top = pos.y - obj.offsetHeight -1 + st + 50 + 'px';
		
		obj.style.left = '0px';
		obj.style.top  = '0px';
		//obj.style.left = pos.x + 'px';
		//obj.style.top	 = pos.y + eleTarget.offsetHeight + st + 'px'; 
	}
	return true;*/
}

function getPosition(e){
 var left = 0;
 var top  = 0;
 
 while (e.offsetParent){
  left += e.offsetLeft - e.scrollLeft;
  top  += e.offsetTop - e.scrollTop;
  e     = e.offsetParent;
 }
 
 left += e.offsetLeft - e.scrollLeft;
 top  += e.offsetTop - e.scrollTop;
 
 return {x:left, y:top};
}
	
function hideToolTip()
{
/*	document.getElementById('tooltip').style.display = 'none';
	return true;*/
}

function mouseCoords(ev){
 if(ev.pageX || ev.pageY){
  return {x:ev.pageX, y:ev.pageY};
 }
 return {
  x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,
  y:ev.clientY + document.body.scrollTop  - document.body.clientTop
 };
}

function ordinalSuffix(mday){
	switch(parseInt(mday)){
		case 1:
		case 21:
		case 31:
			return 'st';break;
		case 2:
		case 22:
			return 'nd';break;
		case 3:
		case 23:
			return 'rd';break;
		default:
			return 'th';break;
	}
}

function formatDate(y,m,d){
	var months = Array('January','February','March','April','May','June','July','August','September','October','November','December');
	var days = Array('Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday');
	
	var myDate = new Date();
	myDate.setFullYear(y,m-1,d);
	
	var dayOfWeek = days[myDate.getDay()-1];
	var month = months[myDate.getMonth()];
	return dayOfWeek+' '+myDate.getDate()+ordinalSuffix(myDate.getDate())+' '+month+', '+myDate.getFullYear();
}

function setStartDate(cell){
	var y = cell.getAttribute('cal_year');
	var m = cell.getAttribute('cal_month');
	var d = cell.getAttribute('cal_day');
	chooser.startDate.value = y+'-'+m+'-'+d;
	if(chooser.breakType.value == 4){
		chooser.displayStart.value = formatDate(y,m,d);
	}else{
		chooser.submit();
	}
}

function setEndDate(cell){
	var y = cell.getAttribute('cal_year');
	var m = cell.getAttribute('cal_month');
	var d = cell.getAttribute('cal_day');
	chooser.endDate.value = y+'-'+m+'-'+d;
	chooser.displayEnd.value = formatDate(y,m,d);
}

function setCustomDate(cell){
	if(chooser.startDate.value == ''){
		setStartDate(cell);
		$('cd_1').innerHTML = '1. Start Date&nbsp;: '+chooser.displayStart.value;
		$('cd_2').className = 'cd_enabled';
	}else if(chooser.endDate.value == ''){
		setEndDate(cell);
		$('cd_2').innerHTML = '2. End Date&nbsp;&nbsp;&nbsp;: '+chooser.displayEnd.value;
		$('cd_3').className = 'cd_enabled';
		$('submit_custom').style.display = 'block';
	}
}

function highlight(start,len,yn){
	var cn;
	var type = $('d'+start).getAttribute('day_type');
	var fill = '';
	switch(type){
		case 'start_day': cn = 'sel_date';break;
		case 'pending': 	cn = 'sel_date_pending';break;
		case 'unav': 			cn = 'sel_date_unavailable';break;
		case 'custom_pick_pending': 	cn = 'sel_date_pending';break;
		case 'custom_pick_unav': 			cn = 'sel_date_unavailable';break;
		case 'custom_pick': cn = 'sel_date';break;
	}

	if(len == 2 || len == 6){
		len += 1;
	}

	if(yn){
		for(i=start;i<=start+len;i++){
			if($('d'+i)){
				fill = $('d'+i).getAttribute('day_fill');
				daytype = $('d'+i).getAttribute('day_type');
				starttype = $('d'+i).getAttribute('start_type');
			
				//alert("fill = " + fill + ", daytype = " + daytype + ", starttype = " + starttype);
				
				if(fill == 'start'){				
					if(daytype == 'pending'){
						$('d'+i).className = (yn ? 'start_pending bg_green' : '');
					} else if(daytype == 'custom_pick_pending'){
						$('d'+i).className = (yn ? 'start_pending bg_green' : '');
					} else {
						$('d'+i).className = (yn ? 'start_unavailable bg_green' : '');
					}
				} else if (fill == 'end'){
					if(daytype == 'start_day'){
						if(starttype == 'pending'){
							$('d'+i).className = (yn ? 'end_pending bg_green' : '');				
						} else if (starttype == 'unav') {
							$('d'+i).className = (yn ? 'end_unavailable bg_green' : '');
						} else {
							$('d'+i).className = (yn ? cn : '');
						}
					} else if(daytype == 'pending'){
						$('d'+i).className = (yn ? 'end_pending bg_green' : '');
					} else if(daytype == 'custom_pick_pending'){
						$('d'+i).className = (yn ? 'end_pending bg_green' : '');
					} else {
						$('d'+i).className = (yn ? 'end_unavailable bg_green' : '');
					}
				} else {
					$('d'+i).className = (yn ? cn : '');
				}
			}
		}
	}else{
		for(i=start;i<=start+len;i++){
			if($('d'+i)){
				resetCellStyle($('d'+i));
			}
		}
	}	
}

function setBreakType(type){
	var displayCustom = false;
	chooser.type[type-1].checked = true;
	chooser.breakType.value = type;
	if(type == 4){ // custom
		displayCustom = true;
	}
	if($('custom_dates')){
		chooser.startDate.value = '';
		chooser.endDate.value = '';
		$('break_options_label').innerHTML = displayCustom ? 'Select Your Custom CMH Experience' : 'Select Your CMH Experience';
		displayCustomOptions(displayCustom);
	}
}

function displayCustomOptions(disp){
	var show = disp ? 'block' : 'none';
	$('break_options').style.display = disp ? 'none' : 'block';
	$('custom_dates').style.display = show;
	resetCustomOptions();
}

function resetCustomOptions(){
	$('cd_1').innerHTML = '1. Click to set a start date';
	$('cd_1').className = 'cd_enabled';
	$('cd_2').innerHTML = '2. Click to set an end date';	
	$('cd_2').className = 'cd_disabled';
	$('cd_3').innerHTML = '3. Click to continue to the booking form';	
	$('cd_3').className = 'cd_disabled';
	$('submit_custom').style.display = 'none';
}

function refreshCalendar(){
	var month;
	var year;
	if(chooser.my.value){
		var monthyear = chooser.my.value.split('|');
		month = monthyear[0];
		year 	= monthyear[1];
	}else{
		var curDate = new Date();
		month = curDate.getMonth()+1;
		year 	= curDate.getFullYear();
	}
	getCalendar(month,year);
}

function checkCustomBreak(){
	if(chooser.breakType.value == 4){
		if(chooser.startDate.value != '' && chooser.endDate.value != ''){
			checkAvailability(chooser.startDate.value,chooser.endDate.value);
			return false;
		}else{
			alert('Please select both a start date and end date for your custom Experience');
			return false;
		}
	}
}

function validateChoice(){
	if(chooser.breakType.value != '' && chooser.startDate.value != ''){
		return true;
	}else{
		alert('Please choose an available date to continue');
		return false;
	}
}

function validateDetails(){
	var msg = '';
	var form = '';
	if(form = document.forms['confirm_booking']){
		if(trim(form.name.value) == ''){
			msg += '"Name" is a required field\n';
		}
		if(trim(form.email.value) == ''){
			msg += '"Email" is a required field\n';
		}
		if(trim(form.postcode.value) == ''){
			msg += '"Postcode" is a required field\n';
		}		
		if(trim(form.tel1.value) == ''){
			msg += '"Daytime Number" is a required field\n';
		}		
		if(form.adults.value == 0 && form.children.value == 0){
			msg += 'You have supplied an invalid number of guests\n';
		}
		
		if(msg.length > 0){
			alert(msg);
			return false;
		}else{
			return true;
		}
	}
	return false;
}

function trim(str){
	return str.replace(/^\s+/g, '').replace(/\s+$/g, '');
}

window.onload = function(){
	if(chooser = document.forms['date_chooser']){
		refreshCalendar();
		setBreakType(chooser.breakType.value);
	}
}



