
/* navigation menu - using "son of suckerfish" code */

sfHover = function() {
	var sfEls = document.getElementById("nav").getElementsByTagName("LI");
	for (var i=0; i<sfEls.length; i++) {
		sfEls[i].onmouseover=function() {
			//this.className+=" sfhover";
			this.className = "sfhover";
			if(document.all)_hideDropdowns();
		}
		sfEls[i].onmouseout=function() {
			//this.className=this.className.replace(new RegExp(" sfhover\\b"), "");
			this.className = "";
			if(document.all)_unhideDropdowns();
		}
	}
}

_hideDropdowns = function()
{
	var dropdowns = document.getElementsByTagName("SELECT");
	for (var i = 0 ; i < dropdowns.length ; i ++)
	{
		dropdowns[i].style.visibility = "hidden";
	} 
}
_unhideDropdowns = function()
{
	var dropdowns = document.getElementsByTagName("SELECT");
	for (var i = 0 ; i < dropdowns.length ; i ++)
	{
		dropdowns[i].style.visibility = "visible";
	}
}

if (window.addEventListener) window.addEventListener("load", sfHover, false);
else
if (window.attachEvent) window.attachEvent("onload", sfHover);	


/* javascript for popup */

initpopup = function()
{
	var elements = document.getElementsByTagName("DIV");
	for ( var i = 0 ; i < elements.length ; i ++ )
	{
		if ( elements[i].className == "popup" )
		{
			elements[i].onmouseover = function()
			{
				this.className = "popup_show";
			}
			elements[i].onmouseout = function()
			{
				this.className = "popup";
			}
		}
	}
}

if (window.addEventListener) window.addEventListener("load", initpopup, false);
else
if (window.attachEvent) window.attachEvent("onload", initpopup);

/* javascript for form validation */

function Validator( form )
{
	this.form = form;
	this.validate = function( parameters )
	{
		var name = parameters.name;
		var field = this.form.elements[ parameters.field != undefined ? parameters.field : name ];
		var mandatory = parameters.mandatory != undefined  && parameters.mandatory;
		var syntax = parameters.syntax != undefined ? parameters.syntax : "none";		
		var max = parameters.max != undefined ? parameters.max : -1;		
		if ( field.type == "text" || field.type == "password" || field.type == "textarea" )
		{
			field.value = this._trim( field.value );
			try
			{
				if ( mandatory && field.value == "" )
				{
					var message = "Please enter a value for " + name;					
					throw new Error( message );
				}
				if ( max != -1 && field.value.length > max )
				{
					var message = "Please enter no more than " + max + " number of characters for " + name;				
					throw new Error( message );
				}
				if ( syntax == "date" && !this._isValidDate( field.value ) )
				{
					var message = "Please enter a valid date for " + name;
					throw new Error( message );
				}
				if ( syntax == "number" && !this._isValidNumber( field.value ) )
				{
					var message = "Please enter a valid number for " + name;
					throw new Error( message );
				}
				if ( syntax == "percent" && !this._isValidPercentage( field.value ) )
				{
					var message = "Please enter a valid percentage for " + name;
					throw new Error( message );
				}
				if ( syntax == "email" && !this._isValidEmail( field.value ) )
				{
					var message = "Please enter a valid email address for " + name;
					throw new Error( message );
				}
			}
			catch ( e )
			{
				if ( parameters.beforeAlert != undefined )
				{
					eval( parameters.beforeAlert );
				}			
				alert( e.message );
				field.focus();
				throw e;
			}
		}
		else
		if ( field.type == "select-one" )
		{
			try
			{
				if ( mandatory && field.options[ field.selectedIndex ].value == "" )
				{
					var message = "Please select a value for " + name;					
					throw new Error( message );
				}
			}
			catch ( e )
			{
				if ( parameters.beforeAlert != undefined )
				{
					eval( parameters.beforeAlert );
				}			
				alert( e.message );
				field.focus();
				throw e;
			}
		}
		else
		if ( field.type == "hidden" )
		{
			// not checking involved for this project
		}
		else
		{
			var message = "Unresolved field type: " + field.type
			alert( message );
			throw new Error( message );
		}
	}
	this._trim = function( s )
	{
		while ( s.charAt( 0 ) == " " )
		{
			s = s.replace( s. charAt( 0 ),"" );
		}

		while ( s.charAt( s.length - 1 ) == " " )
		{
			s = s.substring( 0, s.length - 1 );
		}
		return s;
	}
	this._isValidDate = function( s )
	{
		if ( s == "" )
		{
			return true;
		}
		var parts = s.split( "/" );
		if ( parts.length != 3 )
		{
			return false;
		}
		for ( var i = 0 ; i < parts.length ; i ++ )
		{
			if ( parts[ i ].charAt( 0 ) == "0" )
			{
				parts[ i ] = parts[ i ].substring( 1 );
			}
		}
		var year = parseInt( parts[ 2 ] );
		var month = parseInt( parts[ 1 ] ) - 1;
		var day = parseInt( parts[ 0 ] );		
		var date = new Date( year, month, day );		
		return date.getFullYear() == year && date.getMonth() == month && date.getDate() == day;
	}
	this._isValidNumber = function( s )
	{
		for ( var i = 0 ; i < s.length ; i ++ )
		{
			if ( "0123456789".indexOf( s.charAt( i ) ) == -1 )
			{
				return false;
			}
		}
		return true;
	}
	this._isValidPercentage = function( s )
	{
		if ( s == "" ) return true;
		if ( !this._isValidNumber( s ) ) return false;
		var percent = parseInt( s );
		if ( percent < 0 || percent > 100 ) return false;
		return true;
	}
	this._isValidEmail = function( s )
	{
		return /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(s);
	}
}

/* tracker */
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
try{ 
var pageTracker = _gat._getTracker('UA-4652258-1');
pageTracker._trackPageview();
} catch(err) {} 



