/* 
 ============================================================================
	Copyright Michael Leahy 2008. Used with Permission.                             
	May not be duplicated or reproduced.
	MINIMUM BROWSER CHECK - PC: IE6+/Firefox1+/Safari3+/Netscape7+
	MINIMUM BROWSER CHECK - MAC: Firefox1+/Safari3+
 ============================================================================ 
//*/

// ============================================================ FUNCTIONS: NAV CONTROLS ============================================================ //
	
	// ==================== GLOBAL SETTINGS ==================== //
	var snavSliderSpeed = 5; // Move Sub Nav: Lower = Faster
	var snavSliderIncr = 10; // Move Sub Nav: Higher = Faster
	var snavSliderExitX = true; // Exit Sub Nav: Mouseout Left or Right
	var snavSliderExitY = false; // Exit Sub Nav: Mouseout Up or Down
	var snavParentOpenHL = false; // Set True to enable standing hover for Parent Nav Item Slider Open
	
	var snavDefWidth = 143; // Parent Nav Item Width (hint: viewable navigation item width)
	var snavDefWidthPadLeft = 9; // Parent Nav Item Width - Padding on Left (hint: viewable navigation item width)
	var snavDefHeight = 22; // Parent Nav Item Height
	var snavExtraDivCount = 3; // Number of Non-Navigational DIVs in Sub Nav
	var snavDivHeight = 25.5; // Sub Nav DIV Height
	var snavExtraDivHeight = 28; // Height Non-Navigational DIVs in Sub Nav
	// ==================== GLOBAL SETTINGS ==================== //
	
	// !!!!!!!!!!!!!!!!!!!! DO NOT MODIFY BELOW HERE !!!!!!!!!!!!!!!!!!!! //
	
	// ==================== GLOBAL CONTROLS ==================== //
	var navIsHome = false; // Home Nav State
	var snavActiveObj = ''; // Sub Nav ID
	var snavOpenObj = new Array(); // Sub Nav Open IDs
	var snavParentObj = ''; // Sub Nav Parent Nav Object
	var snavOpenParentObj = new Array(); // Sub Nav Parent Nav Open Objects
	var snavIsActive = false; // Sub Nav Movement State
	var snavTimer = ''; 
	var mouseXY = new Object();
	
	var IE = document.all?true:false;
		if (IE) snavSliderIncr = snavSliderIncr + 5; // IE Timing is Slower than Other Browsers
		if (!IE) document.captureEvents(Event.MOUSEMOVE);
	
	document.onmousemove = snavExit; //get_mouseXY;
	// ==================== GLOBAL CONTROLS ==================== //
	
	
	function navMouseState(oObj) {
		if (oObj.className == '') {
			if (oObj.getElementsByTagName('a')[0].className == 'navHome') navIsHome = true;
					
			oObj.className = 'navBGHover';
			oObj.getElementsByTagName('a')[0].className = 'navHover';
			
			if (oObj.getElementsByTagName('img')) oObj.getElementsByTagName('img')[0].src = oObj.getElementsByTagName('img')[0].src.replace(/(.*).png/gi, '$1-ovr.png');
		} else {
			oObj.className = '';
			
			if (navIsHome) {
				navIsHome = false;
				oObj.getElementsByTagName('a')[0].className = 'navHome';
			} else oObj.getElementsByTagName('a')[0].className = 'nav';
			
			if (oObj.getElementsByTagName('img')) oObj.getElementsByTagName('img')[0].src = oObj.getElementsByTagName('img')[0].src.replace(/(.*)-dwn.png/gi, '$1.png');
			if (oObj.getElementsByTagName('img')) oObj.getElementsByTagName('img')[0].src = oObj.getElementsByTagName('img')[0].src.replace(/(.*)-ovr.png/gi, '$1.png');
		}
	}
	
	function snavMouseState(oObj) {
		if (oObj.className == 'snavItem') {
			oObj.className = 'snavItem navBGHover';
			oObj.getElementsByTagName('a')[0].className = 'navHover';
		} else {
			oObj.className = 'snavItem';
			oObj.getElementsByTagName('a')[0].className = 'nav';
		}
	}
	
	function snavParentMouseOver(oObj, oStand) {
		snavParentMouseState(oObj,true); // Must be called to work with array controls (Simplifies HTML Navigation)
		
		if (snavParentOpenHL) return;
			
		oObj.className = 'navBGHover';
		if (oObj.getElementsByTagName('a')) oObj.getElementsByTagName('a')[0].className = 'navHover';
		if (oObj.getElementsByTagName('img')) oObj.getElementsByTagName('img')[0].src = oObj.getElementsByTagName('img')[0].src.replace(/(.*)-dwn.png/gi, '$1-ovr.png');
	}	
	
	function snavParentMouseOut(oObj, oStand) {
		if (snavParentOpenHL) return; 
		
		oObj.className = 'snavParentHover';
		if (oObj.getElementsByTagName('a')) oObj.getElementsByTagName('a')[0].className = 'nav';
		if (oObj.getElementsByTagName('img')) oObj.getElementsByTagName('img')[0].src = oObj.getElementsByTagName('img')[0].src.replace(/(.*)-ovr.png/gi, '$1-dwn.png');
	}
	
	function snavParentMouseState(oObj, oOpen) {
		if (oOpen) {
			var exits = snavParentObjectArr(oObj);
			if (exits) return;
			
			navMouseState(oObj);
			snavParentObj = oObj;
		} else {
			navMouseState(oObj);
			if (snavParentObj == oObj) snavParentObj = '';
		}
	}
		
	function snavControl(oObj, oOpen) {
		if (snavIsActive && oOpen) return;
		if (oOpen && snavActiveObj == '') { snavActiveObj = oObj; }
		if (oOpen) snavObjectArr(oObj);
		
		var maxheight = Math.round((document.getElementById(oObj).getElementsByTagName('div').length - snavExtraDivCount) * snavDivHeight) + snavExtraDivHeight;
			if (!oOpen) maxheight = snavDefHeight;
		
		snavSlider(oObj, maxheight, oOpen);
	}
	
	function snavExit(oEvent) {
		get_mouseXY(oEvent);
		
		if (!snavIsActive && (snavActiveObj != '' || snavOpenObj.length > 0)) {
			var snavObj = document.getElementById(snavActiveObj);
				if (!snavObj) return;
			var objW = snavDefWidth;
			var objH = snavObj.clientHeight;
				if (objH == 0) objH = snavObj.offsetHeight;
			var objXY = get_XYcoordinates(snavActiveObj);
			
			if (snavSliderExitX) { 
				if (mouseXY.x < (objXY.x + snavDefWidthPadLeft) || mouseXY.x > ((objXY.x + snavDefWidthPadLeft) + objW)) {
					//snavControl(snavActiveObj, false);
					for (var i=0; i<snavOpenObj.length; i++) { snavControl(snavOpenObj[i], false); }
				}
			}
			if (snavSliderExitY) { if (mouseXY.y < objXY.y || mouseXY.y > (objXY.y + objH)) snavControl(snavActiveObj, false); }
		}
	}
		
	function snavSlider(oObj, oMaxHeight, oOpen) {
		var snavObj = document.getElementById(oObj);
		var curheight = snavObj.clientHeight;
			if (curheight == 0) curheight = snavObj.offsetHeight;
		
		if (oOpen) {
			if (curheight + snavSliderIncr < oMaxHeight) {
				snavObj.style.height = (curheight + snavSliderIncr)+'px';
				snavIsActive = true;
				snavIsOpen = true;
				snavTimer = setTimeout("snavSlider('"+oObj+"',"+oMaxHeight+",true)",snavSliderSpeed);
			} else {
				snavObj.style.height = oMaxHeight+'px';
				snavIsActive = false;
				//clearTimeout(snavTimer);
			}
		} else {
			if (curheight - snavSliderIncr > snavDefHeight) {
				snavObj.style.height = (curheight - snavSliderIncr)+'px';
				snavIsActive = true;
				snavTimer = setTimeout("snavSlider('"+oObj+"',"+oMaxHeight+",false)",snavSliderSpeed);
			} else {
				snavObj.style.height = snavDefHeight+'px';
				snavActiveObj = '';
				for (var i=0; i<snavOpenObj.length; i++) { if (snavOpenObj[i] == oObj) { var pos = i; snavOpenObj.splice(i,1); break; } }
				
				//* Disabled to de-activate the standing highlight for Parent Nav
				snavParentMouseState(snavOpenParentObj[pos],false);
					snavOpenParentObj.splice(pos,1);
				//*/
				
				snavIsActive = false;
				//clearTimeout(snavTimer);
			}
		}
	}
	
	function snavObjectArr(oObjID) {
		var exists = false;
		for (var i=0; i<snavOpenObj.length; i++) { if (snavOpenObj[i] == oObjID) exists = true; }

		if (!exists) snavOpenObj.push(oObjID);
	}
	
	function snavParentObjectArr(oObj) {
		var exists = false;
		for (var i=0; i<snavOpenParentObj.length; i++) { if (snavOpenParentObj[i] == oObj) exists = true; }

		if (!exists) snavOpenParentObj.push(oObj);
		
		return exists;
	}
	
// ============================================================ FUNCTIONS: COORIDNATES ============================================================	//
	
	function get_mouseXY(e) {
		if (IE) {
			mouseXY.x = event.clientX + document.body.scrollLeft;
			mouseXY.y = event.clientY + document.body.scrollTop;
		} else {
			mouseXY.x = e.pageX
			mouseXY.y = e.pageY
		}
	}
	
	function get_XYcoordinates(element) {
		var useWindow = false;
		var coordinates = new Object();
		var x = 0;
		var y = 0;
		var use_gebi = false;
		var use_css = false;
		var use_layers = false;
		
		if (document.getElementById) use_gebi = true;
		else if (document.all) use_css = true;
		else if (document.layers) use_layers = true;
		
		if (use_gebi && document.all) {
			x = get_Xposition(document.all[element]);
			y = get_Yposition(document.all[element]);
		} else if (use_gebi) {
			x = get_Xposition(document.getElementById(element));
			y = get_Yposition(document.getElementById(element));
		} else if (use_css) {
			x = get_Xposition(document.all[element]);
			y = get_Yposition(document.all[element]);
		} else if (use_layers) {
			var found = 0;
			for (var i=0; i<document.anchors.length; i++) {
				if (document.anchors[i].name==element) {
					found = 1; 
					break;
				}
			}
	
			if (found == 0) {
				coordinates.x = 0;
				coordinates.y = 0;
				return coordinates;
			}
			
			x = document.anchors[i].x;
			y = document.anchors[i].y;
		} else {
			coordinates.x = 0;
			coordinates.y = 0;
			return coordinates;
		}
		
		coordinates.x = x;
		coordinates.y = y;
		return coordinates;
	}
	
	function get_Xposition (element) {
		var ol = element.offsetLeft;
		while ((element = element.offsetParent) != null) {
			ol += element.offsetLeft;
		}
		return ol;
	}
	
	function get_Yposition (element) {
		var ot = element.offsetTop;
		while((element = element.offsetParent) != null) {
			ot += element.offsetTop;
		}
		return ot;
	}

function openGallery() {
	window.open ('http://www.welksandiego.com/default.asp?idno=12274','mywindow','status=1,toolbar=1,width=580,height=530');
}


// ============================================================ FUNCTIONS: BOOKING DEVICE ============================================================
	function load_calendarFrame(oField) {
		var load_calendar = false;
		
		switch(BrowserDetect.browser) {
			case "Explorer":
				if (BrowserDetect.version >= 5) {load_calendar = true;} break;
			//case "Firefox":
				 //if (BrowserDetect.version >= 1) {load_calendar = true;} break;
			//case "Netscape":
				//if (BrowserDetect.version >= 7) {load_calendar = true;} break;
		}
		
		if (load_calendar) {
			document.write('<a id="btn_calendar" name="btn_calendar" href="javascript:getCalendar();"><img src="/assets/images/icon_calendar.gif" width="20" height="15" alt="Click to view a Calendar" border="0" /></a>');
			document.write('<div id="div_calendar" style="position:absolute; left:0px; top:0px; width:210px; height:195px; visibility:hidden; z-index:1;">');
				document.write('<IFRAME unselectable="on" id="dlg_calendar" name="dlg_calendar" src="/dlg_calendar.asp" width="100%" height="100%" marginheight="0" marginwidth="0" frameBorder="0" noResize scrolling="no"></IFRAME>');
			document.write('</div>');
		} else {
			document.write('&nbsp;');
		}
	}
	
	function setBook_days(oForm, oMonth) {
		var cur = oForm.day.options[oForm.day.selectedIndex].value;
		var num = 31;
		
		if (oMonth == 4 || oMonth == 6 || oMonth == 9 || oMonth == 11) num = 30;
		
		if (oMonth == 2) {							
			var year = oForm.year.options[oForm.year.selectedIndex].value;
			var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
			
			if (!isleap) num = 28;
			else num = 29;
		}
		
		oForm.day.options.length = 0;
		for (var i=0; i<num; i++) {
			oForm.day.options[i] = new Option(i+1,i+1);
			if (i+1 == cur) oForm.day.selectedIndex = i;
		}
	}
		
	function setBook_months(oForm) {
		//*
		var year = oForm.year.options[oForm.year.selectedIndex].value;
		var cur_date = new Date();
		
		oForm.month.options.length = 0;
		
		if (year > cur_date.getYear()) {
			for (var i=0; i<12; i++) oForm.month.options[i] = new Option(getBook_monthName(i+1),i+1);
		} else {
			for (var i=cur_date.getMonth(); i<12; i++) {
				oForm.month.options[i] = new Option(getBook_monthName(i+1),i+1);
			}
		}
		//*/
	}
	
	function getBook_monthName(oMonth) {
		switch (oMonth) {
			case 1:
				return "Jan"; break;
			case 2:
				return "Feb"; break;
			case 3:
				return "Mar"; break;
			case 4:
				return "Apr"; break;
			case 5:
				return "May"; break;
			case 6:
				return "Jun"; break;
			case 7:
				return "Jul"; break;
			case 8:
				return "Aug"; break;
			case 9:
				return "Sep"; break;
			case 10:
				return "Oct"; break;
			case 11:
				return "Nov"; break;
			case 12:
				return "Dec"; break;
		}
	}
	
	function closeCalendar() {
		document.getElementById('div_calendar').style.visibility = "hidden";
	}
	
	function getCalendar(oDate) {
		var bookingForm = document.forms['bookingForm'];
		var checkin = bookingForm.month.value+"/"+bookingForm.day.value+"/"+bookingForm.year.value;
		document.getElementById('dlg_calendar').src = "/dlg_calendar.asp?the_date="+checkin+"&start_date="+oDate;
		
		var div_calendar = document.getElementById('div_calendar');
		div_calendar.style.left = get_XYcoordinates('btn_calendar').x-194;
		div_calendar.style.top = get_XYcoordinates('btn_calendar').y+5;
		div_calendar.style.visibility = "visible";
	}
	
	function selectCalendar(oDate) {
		var bookingForm = document.forms['bookingForm'];
		var cur_date = new Date();
		var date_array = new Array();
		date_array = oDate.split("/");
				
		for(var i=0; i<bookingForm.year.length; i++)
			if (bookingForm.year.options[i].value == date_array[2]) bookingForm.year.selectedIndex = i;
		
		setBook_months(bookingForm);
		bookingForm.month.selectedIndex = date_array[0]-1;
		bookingForm.day.selectedIndex = date_array[1]-1;
		
		closeCalendar();
	}
	
	function get_XYcoordinates(element) {
		var useWindow = false;
		var coordinates = new Object();
		var x = 0;
		var y = 0;
		var use_gebi = false;
		var use_css = false;
		var use_layers = false;
		
		if (document.getElementById) use_gebi = true;
		else if (document.all) use_css = true;
		else if (document.layers) use_layers = true;
		
		if (use_gebi && document.all) {
			x = get_Xposition(document.all[element]);
			y = get_Yposition(document.all[element]);
		} else if (use_gebi) {
			x = get_Xposition(document.getElementById(element));
			y = get_Yposition(document.getElementById(element));
		} else if (use_css) {
			x = get_Xposition(document.all[element]);
			y = get_Yposition(document.all[element]);
		} else if (use_layers) {
			var found = 0;
			for (var i=0; i<document.anchors.length; i++) {
				if (document.anchors[i].name==element) {
					found = 1; 
					break;
				}
			}
	
			if (found == 0) {
				coordinates.x = 0;
				coordinates.y = 0;
				return coordinates;
			}
			
			x = document.anchors[i].x;
			y = document.anchors[i].y;
		} else {
			coordinates.x = 0;
			coordinates.y = 0;
			return coordinates;
		}
		
		coordinates.x = x;
		coordinates.y = y;
		return coordinates;
	}
	
	function get_Xposition (element) {
		var ol = element.offsetLeft;
		while ((element = element.offsetParent) != null) {
			ol += element.offsetLeft;
		}
		return ol;
	}
	
	function get_Yposition (element) {
		var ot = element.offsetTop;
		while((element = element.offsetParent) != null) {
			ot += element.offsetTop;
		}
		return ot;
	}