	///////////////////////////////////////////////////////
	// global variables

		var staticDomain = "/Home/StaticRedirect.aspx?path=";
		
		var logoutPage = "/logout.aspx";
		var currencyPage = "/Home/converter/ucc-input.htm";
		
		var sellPage = staticDomain + "/productcomparison.htm";
		var panelPage = staticDomain + "/zsample.htm";		

	///////////////////////////////////////////////////////
	// global back button behavior
	
		function goBack() {
			if (document.forms[0].BackPage.value == '')
				window.history.back();
			else
				location = document.forms[0].BackPage.value;
		}	
	
	///////////////////////////////////////////////////////
	// image buttons
	
		function imgOn(imgName, imgSrc) {
			if (!imgSrc) imgSrc = imgName;
			if (document.images) document[imgName].src = eval(imgSrc + "1.src");
		}

		function imgOff(imgName, imgSrc) {
			if (!imgSrc) imgSrc = imgName;		
			if (document.images) document[imgName].src = eval(imgSrc + "0.src");
		}

		function rolltextimage(imgsrc) {
			if (document.images) document['rolltext'].src = eval(imgsrc + "2.src");
		}
	
	///////////////////////////////////////////////////////
	// mouseover highlights
	
		function doSelect( row ){
			row.bgColor = "#FFFFCC";
		}
		
		function doDeselect( row ){
			row.bgColor = "#FFFFFF";
		}
			
	///////////////////////////////////////////////////////
	// nicely formatted date

		function niceDate(offset) {
			var d = new Date();
			with (d) setDate(getDate()+offset);
			
			var monthname = new Array("January","February","March","April","May","June","July","August","September","October","November","December");
			
			var dateString = "";
			dateString += monthname[d.getMonth()] + " ";
			dateString += d.getDate() + ", ";
			dateString += d.getFullYear();
			
			return dateString;
		}

	///////////////////////////////////////////////////////
	// client-side email syntax validation
	
		function EmailSyntaxValidator(str) {
 			var account=false;
			var domain=false;
			var extension = false;
			var inp = str;
			var isValid = false;
			inp = reverseText(inp)
			if (inp.indexOf("@") > 0 && inp.indexOf(".") > 0)	
			{
				account = valEAccount(reverseText(inp.substring(inp.indexOf("@") +1 , inp.length)));
				domain  = DomainValidate(reverseText(inp.substring(0, inp.indexOf("@"))));
				extension = ExtensionValidate(reverseText(inp.substring(0, inp.indexOf("@"))));
			}

			if (account == true && domain == true && extension == true)	
				isValid = true;
			else
				isValid = false;
				
			return isValid;	
		}	

		/*
		 Will reverse the text.
		 Author : Sudhakar & Sunil
		 Date : 08/06/2004
		*/	
		function reverseText(sStr) {
			text = "";
			str = sStr;
			i = 0;
			while (i <= (str.length - 1)) {
				text = str.substring(i, i+1) + text;
				i++;
			}

			return text;
		}

		function ascii_value (c) {
				c = c.charAt (0);
				var i=-1;
				if(c!="")
  				for (i = 0; i < 256; ++ i)
				{
					var h = i.toString (16);
					if (h.length == 1)
						h = "0" + h;
					h = "%" + h;
					h = unescape (h);
					if (h == c)
						break;
				}
				return i;
		}

		// this function is used to check domain part of an Email.
		function DomainValidate(pVal) {
			var inp = pVal;
			var isValid = true;
			if (inp != "")
			{

			if(inp.indexOf(".") > 0)
				{ 
			var col_array=inp.split(".");
			var part_num=0;
			var result =""; 

			while (part_num < col_array.length-1)
			{
			  
 			if (col_array[part_num].length > 0 && valChar(pVal, "-") == true)
 			{
 				// "-" should not be the first or last character.
			for (i = 0; i < col_array[part_num].length; ++ i)
				{
				//checking for the valid characters of domain.
				result = ascii_value (col_array[part_num].charAt(i));
				if (!((result >= 65 && result <=91) || (result >= 97 && result <= 122) || (result >= 48 && result <= 57) || (result == 45)))
				{
					isValid= false;
					part_num = col_array.length;
					break;
				}		
				}
			}else{
				isValid= false;
				part_num=col_array.length; 		  
				}	
				part_num+=1;
			}
			}
			else
			isValid = false;	
			}
			
			return isValid;
		}

		// this function is used to check extension part of an Email.
		function ExtensionValidate(pVal) {
			var inp = pVal;
			var isValid = true;
			
			if (inp != "")
			{
			if(inp.indexOf(".") > 0)
				{ 
			var col_array=inp.split(".");
			var part_num=col_array.length -1;
			var result =""; 
			//Extension must exceed 6 characters.
			if (col_array[part_num].length < 7 && col_array[part_num].length > 0)
			{	
			for (i = 0; i < col_array[part_num].length; ++ i)
				{
				//here we are checking the valid characters of extension.
				result = ascii_value (col_array[part_num].charAt(i));
				if (!((result >= 65 && result <= 91) || (result >= 97 && result <= 122)))
				{
					isValid= false;
					part_num = col_array.length;
					break;
				}		
				
				}
			}
			else
			{
				isValid = false;	
			}	
			}
			else
				{
			isValid = false;	
				}
			}
			
			return isValid;
		}

		// this function is used to check account part of an Email.
		function valEAccount(pVal)
		{
			var isValid = true;
			//"." should not be the first or last character of the account.
			isValid = valChar(pVal, ".");    	
		   
			if (isValid != false)
				isValid = valChar(pVal, "_");    	
			if (isValid != false)	
				isValid = valChar(pVal, "'");    	
		   
			if (isValid == true)
			{
 				for (i = 0; i < pVal.length; ++ i)
					{
					// checking for the valid account charaters.
					result = ascii_value (pVal.charAt(i));
					if( result <= 32 || result >= 127 ) // DC 09/08 any displayable 7-bit ASCII character is valid (RFC 822)
					// if (!((result >= 65 && result <=91) || (result >= 97 && result <= 122) || (result >= 48 && result <= 57) || (result == 46) || (result == 95) || (result == 39))) // DC 09/08 this range (P007) is too narrow
					{
					return false;
					}		
				}
			} else
				return false;
				
			return true;
		}

		// validate character position
		function valChar(actStr, findStr) {
			var isValid = true;
			if((actStr.indexOf(findStr) == 0) || (actStr.indexOf(findStr) == actStr.length-1))
        			isValid = false;
			if((reverseText(actStr).indexOf(findStr) == 0) || (reverseText(actStr).indexOf(findStr) == actStr.length-1))
					isValid = false;
			if(actStr.indexOf(findStr+findStr) >= 0)
        			isValid = false;
        			
			return isValid;    	
		}

	///////////////////////////////////////////////////////
	// rightnow
	
	function rightnow(optionalSpecificArticleNumber){
		var baseSupportLink = '/Home/support/help.zgi?formmail=false';
		var launchArticle = baseSupportLink;
		
		if (optionalSpecificArticleNumber) { 
		
			launchArticle = baseSupportLink + '&p_faqid=' + optionalSpecificArticleNumber;
		
		} else {
			switch(document.location.pathname) {
				case '/Create/survey-edit-element.zgi' :
				case '/Create/survey-element.zgi' :
					//   in survey design/question edit,
					//   a specific RN article needs to be displayed ONLY IF
					//   a yes/no question is being edited
					var prvProject = top.prvRun.prvProject;
					var prvPage = prvProject.prvCurrentPage;
					var prvElements = prvPage.prvElements;
					var questionNr = 0;
					
					if (document.location.search.substr(1,1)*0 == 0)
						questionNr = document.location.search.substr(1,1)*1;
					
					if (prvElements[questionNr].prvType == 'yesno')
						launchArticle = baseSupportLink + '&p_faqid=214';
						
					    var win = launchCenter(launchArticle, '' ,581, 800);
		                return false;	
					break;
			}				
		}
		
        var win = launchCenter(launchArticle, '' ,581, 800);
		return false;
	}	
	
	function supportHelp()
	{
	   var accessLevel = getcookie('access%5Flevel');
	    if (accessLevel == 0)
	    {
	        launchCenter('/Home/support/help.zgi?formmail=false&2=support_home_b', '', 581, 800);
	    }
	    else if (accessLevel >= 1)
	    {
	        launchCenter('/Home/support/help.zgi?formmail=false&2=support_home_p', '', 581, 800);
	    }
	}
	
	function launchKBSearch()
	{
	    var searchText = document.getElementById('p_search_text').value;
	    launchCenter('/Home/support/help.zgi?formmail=false&p_search_type=answers.search_nl&p_new_search=1&p_search_text=' + searchText,'',581,800);
	}
	
	function captureKBSearch(e)
	{
        var code;
        if (!e) var e = window.event;
        if (e.keyCode) code = e.keyCode;
        else if (e.which) code = e.which;
        
        if (code == 13)
           launchKBSearch();
	}

    function getcookie(cookiename) {
        var cookiestring=""+document.cookie;
         var index1=cookiestring.indexOf(cookiename);
         if (index1==-1 || cookiename=="") return ""; 
         var index2=cookiestring.indexOf('&',index1);
         if (index2==-1) index2=cookiestring.length; 
         return unescape(cookiestring.substring(index1+cookiename.length+1,index2));
    }

    function Logout()
    	{
			if (confirm("Are you sure you would like to logout?")) 
				top.location = '/logout.aspx';
		}
		
	function launchCenter(url, name, height, width) {
		var str = "menubar=yes,status=yes,titlebar=yes,directories=no,copyhistory=no,resizable=yes,scrollbars=yes,toolbar=yes,location=yes" + ",height=" + height + ",width=" + width;
		if (window.screen) {
			var ah = screen.availHeight - 30;
			var aw = screen.availWidth - 10;

			var xc = (aw - width) / 2;
			var yc = (ah - height) / 2;

			str += ",left=" + xc;
			str += ",top=" + yc;
		}
		return window.open(url, name, str);
	}

	///////////////////////////////////////////////////////
	// zSample

		function zSample(type){
			pophelp=window.open( panelPage,'','menubar=no,toolbar=no,location=no,directories=no,status=no,scrollbars=yes,resizable=1,copyhistory=no,width=640,height=550,top=5,left=5');
			if (type==1) {
				imgOff('rollsample');
				rolltextimage('rollsample');
			}
			
			return false;
		}

		function zoompanel() {
			pophelp=window.open( panelPage,'','menubar=no,toolbar=no,location=no,directories=no,status=no,scrollbars=yes,resizable=1,copyhistory=no,width=640,height=550,top=5,left=5');	
		}

	///////////////////////////////////////////////////////
	// logout
	
		function goLogout(){
			if (confirm("Are you sure you want to logout?")) top.location = logoutPage;
		}

	///////////////////////////////////////////////////////
	// currency converter
	
		function currency(){
			window.open( currencyPage,'','status=yes,scrollbars=yes,resizable=yes,copyhistory=no,width=660,height=400');
			return false;
		}

	///////////////////////////////////////////////////////
	// currency converter

		function sell(OverRide) {
			if (typeof(OverRide) == "undefined") {
				sellPage += "?upgrade=" + top.name;
			} else {
				sellPage = staticDomain + "/" + OverRide + "&upgrade=" + top.name;
			}
			
			var win = launchCenter(sellPage, '' ,581, 800);
			win.opener = top;
		}

	///////////////////////////////////////////////////////
	// display time
		
        function getTimeStamp( sqlTimeStamp, getTimeZone) {        
		  if ( sqlTimeStamp == '') return '';	
		    return( sqlTimeStamp );
		}
		
		function get_friendly_date( date_processed ) {
		  var str, str1 = "";
		  var prcd = new Date( date_processed );
		  str1 = prcd.getYear() + '';
		  if (str1.length > 2)
		    str1 = str1.substring(2,4);
			str = format2(prcd.getMonth()+1) + '/' + format2(prcd.getDate()) + '/' + format2(str1)
		    return(str); 
		}