﻿// JScript File

// Major version of Flash required
var requiredMajorVersion = 8;
// Minor version of Flash required
var requiredMinorVersion = 0;
// Minor version of Flash required
var requiredRevision = 0;

// Version check for the Flash Player that has the ability to start Player Product Install (6.0r65)
var hasProductInstall = DetectFlashVer(6, 0, 65);

// Version check based upon the values defined in globals
var hasReqestedVersion = DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision);

var currentDiv = "";
var currentTab;
var showClass = "showMe";
var hideClass = "hideMe";
var timerID = 0;

//used to page articles or for tab paging.
function changeDiv(divName, noScroll)
{
	if(currentDiv != divName)
	{
		var currentDivObject = document.getElementById(currentDiv);
		var newDivObject = document.getElementById(divName);
		
		var currentClassName = currentDivObject.className;
		var newClassName = newDivObject.className;
		
		currentClassName = currentClassName.replace(showClass, hideClass);
		newClassName = newClassName.replace(hideClass, showClass);
		
		currentDivObject.className = currentClassName;
		newDivObject.className = newClassName;
		
		if(!noScroll)
		{
			window.scrollTo(0, 192);
		}
		
		currentDiv = divName;
	}
}

//used to generate paging navigation for articles.
function generatePaging(numPages)
{
	for(i = 0; i <= numPages - 1; i++)
	{
		var pagingString = "";
		var page = document.getElementById("Page" + (i + 1));
		//window.alert(page.id);
		pagingString += "<br />"
		pagingString += '<p class="centerAlign">'
		if(i != numPages - 1)
		{
			pagingString += "<strong>Continue</strong>"
			pagingString += "<br />"
		}
		
		for(j = 0; j <= numPages - 1; j++)
		{
			if(j == i)
			{
				pagingString += (j + 1) + " | ";
			}
			else
			{
				pagingString += "<a href=\"javascript:changeDiv('Page" + (j + 1) + "');\" class=\"blueLink\">" + (j + 1) + "</a> | ";
			}
		}
		
		if(i != numPages - 1)
		{
			pagingString += "<a href=\"javascript:changeDiv('Page" + (i + 2) + "');\" class=\"blueLink\">Next&gt;</a>"
		}
		else
		{
			pagingString += "Next&gt;"
		}
				
		pagingString += "</p>"
		
		page.innerHTML += pagingString;
	}
	
	return;
}

//used for mouseovers
function swapNavImg(navImage, imageURL)
{
	navImage.src = imageURL;
}

//used to show sub menu blocks
function showSub(subArray)
{
	hideSub(currentArray);
	currentArray = subArray;
	for(var i = 0; i <= subArray.length - 1; i++)
	{
		subArray[i].style.display = "";
	}
}

//clears the timer when another menu item with sub menu's is moused over.
function killTimer(timerID)
{
	clearTimeout(timerID);
}

//sets a timeout for closing the sub menu
function setNavCloseTimer(subArray)
{
	timerID  = setTimeout(function(){hideSub(subArray);}, 100);
	return timerID;
}

//closes the sub menu.
function hideSub(subArray)
{
	for(var i = 0; i <= subArray.length - 1; i++)
	{
		subArray[i].style.display = "none";
	}
}

//Clears text box when user clicks in.
function swapText(tBox, action, defaultText)
{
	if(action == "focus")
	{
		if(tBox.value == defaultText)
		{
			tBox.value = "";
		}
	}
	else
	{
		if(tBox.value == "")
		{
			tBox.value = defaultText;
		}
	}
}

//Used for changing tab and page on tabed interface.
function swapTabs(clickedTab, nextDiv, noScroll)
{
	var clickedTabSrc = "";
	var currentTabSrc = "";
	if(clickedTab != currentTab)
	{
		clickedTabSrc = clickedTab.src;
		currentTabSrc = currentTab.src;
		
		clickedTabSrc = clickedTabSrc.replace("_off", "_on");
		currentTabSrc = currentTabSrc.replace("_on", "_off");
		
		clickedTab.src = clickedTabSrc;
		currentTab.src = currentTabSrc;
		
		currentTab = clickedTab;
		
		changeDiv(nextDiv, noScroll);
	}
}

// Removes leading whitespaces
function LTrim(value) 
{
	var re = /\s*((\S+\s*)*)/;
	return value.replace(re, "$1");
}

// Removes ending whitespaces
function RTrim(value) 
{
	var re = /((\s*\S+)*)\s*/;
	return value.replace(re, "$1");
}

// Removes leading and ending whitespaces
function trim(value)
{
	return LTrim(RTrim(value));
}

// clears textbox value, usually used for the onFocus event
function clearQty(textField, defValue)
{
	if(textField.value == defValue)
	{
		textField.value = "";
	}
}

//adds a defaut value, usually use for the onBlur event
function addZeroQty(textField, defValue)
{
	if (textField.value == "")
	{
		textField.value = defValue;
	}
}

//used as a counter to limit user input in a text field.
function textCounter(field, maxlimit, labelName)
{
	var countLabel = document.getElementById(labelName);
	
	if (field.value.length > maxlimit) // if too long...trim it!
	{
		field.value = field.value.substring(0, maxlimit);
	}

	countLabel.innerHTML = "characters left: " + (maxlimit - field.value.length);
}

//popup window that is fully functional.
function openWin(url, name)
{
	var myWin = window.open(url, name, '', true);
	myWin.focus();
}

//popup window that has limited functionality.
function popupWin(page, name, w, h, scroll)
{
	var winl = (screen.width - w) / 2;
	var wint = (screen.height - h) / 2;
	var winprop  = 'height='+h+',width='+w+',top='+wint+',left='+winl+',scrollbars='+scroll+',resizable=yes';
	win = window.open(page, name, winprop);
	win.focus();
	//return win;
}

//retrieves a querystring value based on a key passed in.
function queryString(key)
{
	var page = new PageQuery(window.location.search); 
	return unescape(page.getValue(key)); 
}

//A class used to retrieve queryString values.
//This class is used by the queryString function.
//To retrieve a querystring value by key, use queryString(key);
function PageQuery(q)
{
	if(q.length > 1)
	{
		this.q = q.substring(1, q.length);
	}
	else 
	{
		this.q = null;
	}
	
	this.keyValuePairs = new Array();
	
	if(q)
	{
		for(var i=0; i < this.q.split("&").length; i++)
		{
			this.keyValuePairs[i] = this.q.split("&")[i];
		}
	}
	
	this.getKeyValuePairs = function()
	{
		return this.keyValuePairs;
	}
	
	this.getValue = function(s)
	{
		for(var j=0; j < this.keyValuePairs.length; j++)
		{
			if(this.keyValuePairs[j].split("=")[0] == s)
			{
				return this.keyValuePairs[j].split("=")[1];
			}
		}
		return false;
	}
	
	this.getParameters = function()
	{
		var a = new Array(this.getLength());
		for(var j=0; j < this.keyValuePairs.length; j++)
		{
			a[j] = this.keyValuePairs[j].split("=")[0];
		}
		
		return a;
	}
	
	this.getLength = function()
	{
		return this.keyValuePairs.length;
	} 
}

function isEmpty(obj)
{ 
	if(obj)
	{
		if(0 == obj.value.length)return true; else return false;
	}
}

function isLength(len,obj)
{
	if(obj)
	{
		if(obj.value.length <= len) return true; else return false;
	}
}

function isNumeric(obj)
{
	window.alert("in func");
	if(obj)
	{ 
		var val = obj.value; var n = 0; 
		for(var i = 0; i < val.length; i++)
		{ 
			if((val.charCodeAt(i)>=48)&&(val.charCodeAt(i)<=57))
			{
				n++;
			}
			else
			{
				if(val.charCodeAt(i)==45)n++;
			}
		}
		if (n == val.length )return true; else return false;
	}
}

function isPostCode(formField)
{
    var str = formField.value;
    var str = trimAll(str);
    
    if (str.match(/^\d{5}$/))
    {
        return true;
    }
    
    if (str.match(/^\d{5}-\d{4}$/))
    {
        return true;
    }
    
    str = str.toUpperCase();
    
    if (str.match(/^[A-Z][0-9][A-Z][0-9][A-Z][0-9]$/))
    {
        return true;
    }
    
    if (str.match(/^[A-Z][0-9][A-Z][-\. ][0-9][A-Z][0-9]$/))
    {
        return true;
    }
    
    return false;
}


function trimAll(sString)
{
    while (sString.substring(0,1) == ' ')
    {
        sString = sString.substring(1, sString.length);
    }
    while (sString.substring(sString.length-1, sString.length) == ' ')
    {
        sString = sString.substring(0,sString.length-1);
    }
    return sString;
}

function isValidString(str)
{
	var InvalidChars="/\\|;:*?<>";
	for(i=0;i<str.length;i++)
	{
		for(j=0;j<InvalidChars.length;j++)
		{
			if(str.charAt(i)==InvalidChars.charAt(j))
			{
				return false;
			}
		}
	}
	return true;
}

function isValidEmail(str)
{
	if ((isValidString(str))&&(-1==str.indexOf(" ")))
	{
		
		if (str.length<6) return false;
		if (( -1 == str.indexOf("@"))||(-1 == str.indexOf(".")))
		{
			return false;
		}
		else
		{
			if ((0==str.indexOf("@"))||(str.indexOf("@")==str.length-1)) return false;
			if ((0==str.indexOf("."))||(str.indexOf(".")==str.length-1)) return false;
		}
		return true;
	}	
	else
	{
		return false;
	}
}

function setCookie(c_name, value, expiredays)
{
	var exdate = new Date();
	exdate.setDate(exdate.getDate() + expiredays);
	document.cookie = c_name + "=" + escape(value) + ((expiredays == null) ? "" : ";expires=" + exdate.toGMTString());
}

function getCookie(c_name)
{
	if (document.cookie.length > 0)
	{
		c_start = document.cookie.indexOf(c_name + "=");
		if (c_start != -1)
		{
			c_start = c_start + c_name.length + 1;
			c_end = document.cookie.indexOf(";", c_start);
			if (c_end == -1) c_end = document.cookie.length;
			return unescape(document.cookie.substring(c_start, c_end));
		}
	}
	return "";
}