﻿
/* utilities */

var Utility =
{
	addEventHandler: function(target, eventName, handler)
	{
		if (target.addEventListener) 
		{
			target.addEventListener(eventName, handler, false);
		}
		else
		if (target.attachEvent)
		{
			target.attachEvent("on" + eventName, handler);
		}
	}
};

/* page utilities */

var Page =
{
	print: function(url)
	{
		window.open("/Pages/PrintPage.aspx?Page=" + escape(url), "_blank");
	},
	email: function(url)
	{
		window.location = '/Pages/EmailFriend.aspx?Page=' + escape(url);
	},
	setFontSize: function(fontSize)
	{
		var fontAccessibilityContents = document.getElementsByTagName("DIV");

		for (var i = 0 ; i < fontAccessibilityContents.length ; i ++)
		{
			if (fontAccessibilityContents[i].className.indexOf("font_resizable") != -1)
			{
				fontAccessibilityContents[i].style.fontSize = fontSize;
			}
		}
	}
};

/* 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);
	}
}

/* INITIALIZATION SCRIPT */

Utility.addEventHandler(window, "load", function() 
{	
	/* to make the variable font size works for IE browser */
	var divs = document.getElementsByTagName("DIV");
	for (var i = 0 ; i < divs.length ; i ++)
	{
		var div = divs[i];
		if (div.className == "ms-WPBody")
		{
			div.className = "";
		}
	}
} );



/* 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) {} 





//////////Count Down timer////////

////////// CONFIGURE THE COUNTDOWN SCRIPT HERE //////////////////

var month = '12';     //  '*' for next month, '0' for this month or 1 through 12 for the month 
var day = '25';       //  Offset for day of month day or + day  
var hour = '0';        //  0 through 23 for the hours of the day
var tz = '+8';         //  Offset for your timezone in hours from UTC
var lab = 'tzcd';    //  The id of the page entry where the timezone countdown is to show

//Sample:
//To countdown to Noon tomorrow - month = '0', day = '+1', hour = 12 
//To countdown to 4 p.m. today - month = '0', day = '+0', hour = 16 
//To countdown to Christmas - month = '12', day = '25', hour = 0

function start() {displayTZCountDown(setTZCountDown(month,day,hour,tz),lab);}

    // **    The start function can be changed if required   **
window.onload = start;

////////// DO NOT EDIT PAST THIS LINE //////////////////

function setTZCountDown(month,day,hour,tz) 
{
var toDate = new Date();
if (month == '*')toDate.setMonth(toDate.getMonth() + 1);
else if (month > 0) 
{ 
if (month <= toDate.getMonth())toDate.setYear(toDate.getYear() + 1);
toDate.setMonth(month-1);
}
if (day.substr(0,1) == '+') 
{var day1 = parseInt(day.substr(1));
toDate.setDate(toDate.getDate()+day1);
} 
else{toDate.setDate(day);
}
toDate.setHours(hour);
toDate.setMinutes(0-(tz*60));
toDate.setSeconds(0);
var fromDate = new Date();
fromDate.setMinutes(fromDate.getMinutes() + fromDate.getTimezoneOffset());
var diffDate = new Date(0);
diffDate.setMilliseconds(toDate - fromDate);
return Math.floor(diffDate.valueOf()/1000);
}
function displayTZCountDown(countdown,tzcd) 
{
if (countdown < 0) document.getElementById(tzcd).innerHTML = "Sorry, you are too late."; 
else {var secs = countdown % 60; 
if (secs < 10) secs = '0'+secs;
var countdown1 = (countdown - secs) / 60;
var mins = countdown1 % 60; 
if (mins < 10) mins = '0'+mins;
countdown1 = (countdown1 - mins) / 60;
var hours = countdown1 % 24;
var days = (countdown1 - hours) / 24;
document.getElementById(tzcd).innerHTML = days + " day" + (days == 1 ? '' : 's') + ' + ' +hours+ 'h : ' +mins+ 'm : '+secs+'s';
setTimeout('displayTZCountDown('+(countdown-1)+',\''+tzcd+'\');',999);
}
}

//End Count Down Timer//



