// common js functions
// 
// Copyright (c) 2004 Tribal DDB Canada
// James Marshall www.tribalddb.ca
// 
// v3.01

var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};
BrowserDetect.init();





// image swapping

function swapToImg( id, img ) {
	document.getElementById( id ).src = img;
}

function swap( id, img ) {
	document.getElementById( id ).src = img.src;
}

function handleMO(btype)
		{
			document.getElementById( btype ).src = "images/menu/" + btype + "_f2.gif";
		}

		function handleMout(btype)
		{
			document.getElementById( btype ).src = "images/menu/" + btype + ".gif";
		}

function isNumeric(alphaField, errMsg ) {
	if (isNaN(alphaField.value)==false  && alphaField.value > 0)
	{
		return true;
	}else{
		alert(errMsg);
		alphaField.focus();
		alphaField.select();
		return false;
	}
}

function isNumericMaxLength(alphaField, errMsg, maxLength ) {
	if (isNaN(alphaField.value)==false  && alphaField.value > 0 && alphaField.value.length <= maxLength )
	{
		return true;
	}else{
		alert(errMsg);
		alphaField.focus();
		alphaField.select();
		return false;
	}
}


function isName( alphaField, errMsg ) {
	if ( alphaField.value.match(/^[A-Za-z\'\- ]+$/) )
	{
		return true;
	}else{
		alert(errMsg);
		alphaField.focus();
		alphaField.select();
		return false;
	}
}

function isEmail( alphaField, errMsg ) {
	if ( alphaField.value.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) != -1 ) {
		return true;
	} else {
		alert(errMsg);
		alphaField.focus();
		alphaField.select();
		return false;
	}
}

function isEmailMulti( alphaField, errMsg ) {
	// email addresses separated by commas
	if ( alphaField.value.search(/^(\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+(,( )?)?)+$/) != -1 ) {
		return true;
	} else {
		alert(errMsg);
		alphaField.focus();
		alphaField.select();
		return false;
	}
}


function isEmpty( alphaField, errMsg ) {
	// email addresses separated by commas
	if ( alphaField.value != "") {
		return true;
	} else {
		alert(errMsg);
		alphaField.focus();
		alphaField.select();
		return false;
	}
}

function hasValues( alphaField, errMsg ) {
	// email addresses separated by commas
	if ( alphaField.value == "") {
		return false;
	} else {
		alert(errMsg);
		alphaField.focus();
		alphaField.select();
		return true;
	}
}


function isSelectEmpty( alphaField, errMsg ) {
	// email addresses separated by commas
	if ( alphaField.value != "") {
		return true;
	} else {
		alert(errMsg);
		alphaField.focus();
		return false;
	}
}

function isSelectEmpty2( alphaField, errMsg ) {
	// email addresses separated by commas

	if ( alphaField.value != "") {
		return true;
	//		alert(alphaField.value);
	} else {
		//alert(errMsg);
	//	alphaField.focus();
//	alert("flase");
		return false;
	}
}

function isDate(year, month, day) {
	// month argument must be in the range 1 - 12
	month = month - 1; // javascript month range : 0- 11
	var tempDate = new Date(year,month,day);
	if( (tempDate.getYear() == year) && (month == tempDate.getMonth()) && (day == tempDate.getDate()) )
	{
		return true;
	}
	else
	{
		return false;
	}
}

function isAdminDate( alphaField, errMsg ) {
	// 4+2+1 digit
	if( alphaField.value.match(/^\d\d\d\d\-\d\d\-\d\d$/) )
	{
	return true;
	}else{
	alert(errMsg);
	alphaField.focus();
	alphaField.select();
	return false;
	}
}


function isPhone( alphaField, errMsg ) {
	// 3+3+4 digit
	if( alphaField.value.match(/^\d\d\d\-\d\d\d\-\d\d\d\d$/) )
	{
	return true;
	}else{
	alert(errMsg);
	alphaField.focus();
	alphaField.select();
	return false;
	}
}

function isPhoneStr( alphaField, errMsg ) {
	// 3+3+4 digit
	if( alphaField.match(/^\d\d\d\-\d\d\d\-\d\d\d\d$/) )
	{
	return true;
	}else{
	alert(errMsg);
	alphaField.focus();
	alphaField.select();
	return false;
	}
}

function fixPhone( phone ) {
	var num = phone.value;
	var newnum = "";
	var output = "";
	// strip out non-numbers
	for ( var i = 0; i < num.length; i++ )
		if ( num.charAt( i ).match(/\d/) )
			newnum += num.charAt( i );
	if ( newnum ) {
		// rebuild number with hyphen
		for ( var i = 0; i < newnum.length; i++ ) {
			if ( i == 3 || i == 6 )
				output += "-";
			else if ( i == 10 )
				output += " ";
			output += newnum.charAt( i )
		}
	}
	// return value
	phone.value = output;
}


function isZipOrPC(alphaField, errMsg ) {
	// 5 digit zips
	if( alphaField.value.match(/^\d\d\d\d\d$/) )
	{
		return true;
		}
	// 5+4 digit zips
	if( ( alphaField.value.match(/^\d\d\d\d\d\d\d\d\d$/) ) || ( alphaField.value.match(/^\d\d\d\d\d\-\d\d\d\d$/) ) )
	{
		return true;
	}else{	
	
		pc=alphaField.value;
			if( ( pc.match(/^[A-Za-z]\d[A-Za-z]\d[A-Za-z]\d$/) ) || ( pc.match(/^[A-Za-z]\d[A-Za-z] \d[A-Za-z]\d$/) ) )
			{
				return true;
			}else{
				alert(errMsg);
				alphaField.focus();
				alphaField.select();
				return false;
			}
	}
}

function isZipOrPC2(alphaField ) {
	// 5 digit zips
	if( alphaField.value.match(/^\d\d\d\d\d$/) )
	{
		return true;
		}
	// 5+4 digit zips
	if( ( alphaField.value.match(/^\d\d\d\d\d\d\d\d\d$/) ) || ( alphaField.value.match(/^\d\d\d\d\d\-\d\d\d\d$/) ) )
	{
		return true;
	}else{	
	
		pc=alphaField.value;
			if( ( pc.match(/^[A-Za-z]\d[A-Za-z]\d[A-Za-z]\d$/) ) || ( pc.match(/^[A-Za-z]\d[A-Za-z] \d[A-Za-z]\d$/) ) )
			{
				return true;
			}else{
//alert("asdfa");
	//			alphaField.focus();
		//		alphaField.select();
				return false;
			}
	}
}


function isZip( alphaField, errMsg ) {
	// 5 digit zips
	if( alphaField.value.match(/^\d\d\d\d\d$/) )
	{
		return true;
		}
	// 5+4 digit zips
	if( ( alphaField.value.match(/^\d\d\d\d\d\d\d\d\d$/) ) || ( alphaField.value.match(/^\d\d\d\d\d\-\d\d\d\d$/) ) )
	{
		return true;
	}else{	
	alert(errMsg);
	alphaField.focus();
	alphaField.select();
	return false;
	}
}

function isPostalCode( alphaField, errMsg ) {
	// canadian postal codes (6 or 7 characters)
		pc=alphaField.value;
		if( ( pc.match(/^[A-Za-z]\d[A-Za-z]\d[A-Za-z]\d$/) ) || ( pc.match(/^[A-Za-z]\d[A-Za-z] \d[A-Za-z]\d$/) ) )
		{
		return true;
		}else{
		alert(errMsg);
		alphaField.focus();
		alphaField.select();
		return false;
		}
}

function fixPostalCode( pc ) {
	var newpc = "";
	var output = "";
	// strip out non-alphanumeric
	for ( var i = 0; i < pc.value.length; i++ )
		if ( pc.value.charAt( i ).match(/\w/) )
			newpc += pc.value.charAt( i );
	if ( newpc ) {
		// rebuild number with space
		for ( var i = 0; i < 6; i++ ) {
			output += newpc.charAt( i )
			if ( i == 2 )
				output += " ";
		}
	}
	// return value in uppercase
	pc.value = output.toUpperCase();
}



// popup windows
function popup( url, name, w, h ) {
	var x = (screen.width - w) / 2;
	var y = (screen.availHeight - h) / 2;
	var page = window.open(url,name,"toolbar=no,location=no,directories=no,status=no,menubar=no,resizable=no,scrollbars=no,width=" + w + ",height=" + h + ",screenX=" + x + ",screenY=" + y + ",top=" + y + ",left=" + x + "");
	
	if(page == null)
	{
	    alert("Please turn off your popup blocker");
	}else{
	    page.focus();
	}
	return page;
}

// popup windows
function popupScroll( url, name, w, h ) {
	var x = (screen.width - w) / 2;
	var y = (screen.availHeight - h) / 2;
	var page = window.open(url,name,"toolbar=no,location=no,directories=no,status=no,menubar=no,resizable=no,scrollbars=yes,width=" + w + ",height=" + h + ",screenX=" + x + ",screenY=" + y + ",top=" + y + ",left=" + x + "");
	page.focus();
	return page;
}


function trim(strToTrim) 
{
	return strToTrim.replace(/^(\s+)?(.*\S)(\s+)?$/, '$2');
}

function checkAlphaNumeric(alphaField, illegalChars)
	{
				for(var j=0; j< alphaField.length; j++)
					{
					theChar = alphaField.charAt(j);

						if(illegalChars.indexOf(theChar) > -1)
						{
							return false;
						} 
					}
				return true;
			}

			function validateAlphaNumeric(alphaField, minLength, maxLength, errorMsg)
			{
			illegalChars="\"()\\";
			alphaValue = trim(alphaField.value);
			
			if(((alphaValue.length > 0) && (!checkAlphaNumeric(alphaValue,illegalChars)) || (alphaValue.length > maxLength) || (alphaValue.length < minLength))){
				
					if(alphaValue.length < minLength)
					{
					alert(errorMsg);
					}else{
					alert(errorMsg + "(" + illegalChars + ")" );
					}
				
				alphaField.focus();
				alphaField.select();
				return false;
				}else{
				return true;
				}
			}

		function validateDDChosen(ddName, errorMsg)
		{
			if(ddName.selectedIndex == -1)
			{
			alert(errorMsg);
			ddName.focus();
			return false;
			}else{
			return true;
			}
		}

var req;
var msg;

// return the value of the radio button that is checked
// return an empty string if none are checked, or
// there are no radio buttons

function getCheckedValue(radioObj) {
	if(!radioObj)
		return "";
	var radioLength = radioObj.length;
	if(radioLength == undefined)
		if(radioObj.checked)
			return radioObj.value;
		else
			return "";
	for(var i = 0; i < radioLength; i++) {
		if(radioObj[i].checked) {
			return radioObj[i].value;
		}
	}
	return "";
}

//***************************************
// Simple Ajax Code, does get or post on passed Query String

var request = new Array(3) 

 if (window.XMLHttpRequest)
     {
        request[0] = new window.XMLHttpRequest();
        request[1] = new window.XMLHttpRequest();
        request[2] = new window.XMLHttpRequest();
        request[3] = new window.XMLHttpRequest();

    } else if (window.ActiveXObject) 
    {
        request[0] = new ActiveXObject("Microsoft.XMLHTTP");
        request[1] = new ActiveXObject("Microsoft.XMLHTTP");
        request[2] = new ActiveXObject("Microsoft.XMLHTTP");
        request[3] = new ActiveXObject("Microsoft.XMLHTTP");
    } 

function Ajax2Function(serverFunction, url, formStr, callBackFunction,requestId) 
{ 
		request[requestId].onreadystatechange = eval(callBackFunction);

				if(serverFunction=="POST")
				{
					request[requestId].open("POST", url, true);
					request[requestId].setRequestHeader('Content-Type','application/x-www-form-urlencoded');
					request[requestId].setRequestHeader("Content-length", formStr.length);
					request[requestId].setRequestHeader("Connection", "close");
					request[requestId].send(formStr);
				}else{       
					request[requestId].open("GET", url+"?"+formStr, true);
					request[requestId].send(null);
    			}
}

//*** Creates a new XMLHttpRequest and assigns to the correct id 
function requestReset(id)
{
if (window.XMLHttpRequest)
     {
        request[id] = new window.XMLHttpRequest();

    } else if (window.ActiveXObject) 
    {
        request[id] = new ActiveXObject("Microsoft.XMLHTTP");
    } 
}

// *** Strips out javascript from between tags and executes it
function processInlineJavascript(response)
{
    var re = /<script.*?>([\s\S]*?)<\//igm;
     while (match = re.exec(response)) { 
       eval(match[1]); 
     }
}


function sendToFriend()
{
	if(document.getElementById("send2friendbox").style.display=="block")
	{
	document.getElementById("send2friendbox").style.display="none";
	}else{
	document.getElementById("send2friendbox").style.display="block";	
	}
}

function overForType( typeid ) {	
	if(document.getElementById("explanationForType"+typeid).style.display=="block")
	{
		document.getElementById("explanationForType"+typeid).style.display="none";
	} else {		
		document.getElementById("explanationForType"+typeid).style.display="block";	
	}
	
}

function doEmail(traveltype)
{
form = 	document.getElementById("form1");
if( !isName(form.yourname, "Plesae enter your name") ) return false;	
if( !isEmail(form.youremail, "Plesae enter a valid email address") ) return false;
if( !isName(form.friendname, "Plesae enter your friends name") ) return false;
if( !isEmail(form.friendemail, "Plesae enter a valid email address") ) return false;

//$_GET["yourname"]) && isset($_GET["friendname"]) && isset($_GET["friendemail"]) && isset($_GET["parkid"])
Ajax2Function("GET","ajaxCmd.php","CMD=sendToFriend&yourname="+form.yourname.value+"&friendname="+form.friendname.value+"&friendemail="+form.friendemail.value+"&youremail="+form.youremail.value,"send2friendCallback",1); 
}

function send2friendCallback()
{
	 if (request[1].readyState == 4)
	 {
		document.getElementById("send2friendbox").style.display="none";
		requestReset(1);
	}
}


function soundLikeYou(value)
{
		Ajax2Function("GET","ajaxCmd.php","CMD=setscore&score="+value,"callBackStub",1); 
}

function callBackStub()
{
	 if (request[1].readyState == 4)
	 {
		requestReset(1);
	}
}

function whyPopup()
{
	popup( "whyPopUp.html", "sdffs", 525, 625 )
}
