

	
	//public variables 
	//for future use
	

	//Functions & Procedures 
	 
	   
	   
	    function getPlatform()
	   {
	      var agent = navigator.userAgent.toLowerCase();
	      var is_mac = (agent.indexOf("mac") != -1);

	      if(is_mac)
	      {
	        frm.Platform.value="MAC"
	      }
	      else
	      {
			frm.Platform.value = "PC"
	      }
	   }
	   
	   function checkAlpha(theEvent, theElement)
	   {
	      var agent = navigator.userAgent.toLowerCase();
	      var is_mac = (agent.indexOf("mac") != -1);

	      if(!is_mac)
	      {
	         if(navigator.appName != "Netscape")
	         {
	            var charCode = theEvent.keyCode;

	            // check for proper characters
	            if((charCode > 31) && (charCode < 48 || charCode > 57))
	            {
	               return true
	            }
	         }
	      }
	      return false
	   }
	   
	   function checkNumeric(theEvent, theElement)
	   {
	      var agent = navigator.userAgent.toLowerCase();
	      var is_mac = (agent.indexOf("mac") != -1);

	      if(!is_mac)
	      {
	         if(navigator.appName != "Netscape")
	         {
	            var charCode = theEvent.keyCode;

	            // check for proper characters
	            if((charCode > 31) && (charCode < 48 || charCode > 57))
	            {
	               return false
	            }
	         }
	      }
	      return true
	   }
	  
	function isEmail(string) {

		if (!string) return false;
		var iChars = "*|,\":<>[]{}`\';()&$#%";

		for (var i = 0; i < string.length; i++) {
		   if (iChars.indexOf(string.charAt(i)) != -1)
		      return false;
		
		}
		//make sure u find an '@' and '.' character in there
		if (string.indexOf("@") == -1 || string.indexOf(".") == -1 ){
		      return false; 
		   }        	
		return true;
	}      
	
	//***** this function needs to be converted to javascript
	//Function IsEmail(sCheckEmail)
	 //   Dim sEmail, nAtLoc
	  //  IsEmail = True
	   // sEmail = Trim(sCheckEmail)
	    //nAtLoc = InStr(1, sEmail, "@") 'Location of "@"

	
	    //If Not (nAtLoc > 1 And (InStrRev(sEmail, ".") > nAtLoc + 1)) Then
	      //  '"@" must exist, and last "." in string must follow the "@"
	        //IsEmail = False
	    //ElseIf InStr(nAtLoc + 1, sEmail, "@") > nAtLoc Then
	      //  'String can't have more than one "@"
	        //IsEmail = False
	    //ElseIf Mid(sEmail, nAtLoc + 1, 1) = "." Then
	      //  'String can't have "." immediately following "@"
	        //IsEmail = False
	    //ElseIf InStr(1, Right(sEmail, 2), ".") > 0 Then
	      //  'String must have at least a two-character top-level domain.
	        //IsEmail = False
	    //End If
	//End Function
     

	   function checkCANZip(objPostalCode)
	   {
	      var agent = navigator.userAgent.toLowerCase();
	      var is_mac = (agent.indexOf("mac") != -1);

	      if(!is_mac)
	      {
	         if(navigator.appName != "Netscape")
	         {
	            

	            // check for proper mask
	            if(mask (objPostalCode.value,"?#? #?#" ) == 1)
	            {
	               return true
	            }
	         }
	      }
			alert ("Canadian Postal Codes Must be In The Format A#A #A#. Please Try Again")
			objPostalCode.focus()
	      return false
	   }
	   
	   //These Functions are all used to support string mask testing
	   
				   function mask (InString, Mask)  {
				   //E.G var Ret = mask ("(800) 555-1212", "(###) ###-####")
				   //1 = Match
				   //0 = No Match
				   //INPUTS:
				   //Mask Character  Meaning 
					//# Character at this position must be a number 
					//? Character at this position must be an alphabetic character 
					//! Character at this position must be number or alphabetic character 
					//* Character at this position can be anything 

				LenStr = InString.length;
				LenMsk = Mask.length;
				if ((LenStr==0) || (LenMsk==0))
					return(0);
				if (LenStr!=LenMsk)
					return(0);
				TempString=""
				for (Count=0; Count<=InString.length; Count++)  {
					StrChar = InString.substring(Count, Count+1);
					MskChar = Mask.substring(Count, Count+1);
					if (MskChar=='#') {
						if(!isNumberChar(StrChar))
							return(0);
					}
					else if (MskChar=='?') {
						if(!isAlphabeticChar(StrChar))
							return(0);
					}
					else if (MskChar=='!') {
						if(!isNumOrChar(StrChar))
							return(0);
					}
					else if (MskChar=='*') {
					}
					else {
						if (MskChar!=StrChar) 
							return(0);
					}
				}
				return (1);
			}

			function isAlphabeticChar (InString)  {
				if(InString.length!=1) 
					return (false);
				InString=InString.toLowerCase();
				RefString="abcdefghijklmnopqrstuvwxyz";
				if (RefString.indexOf (InString.toLowerCase(), 0)==-1) 
					return (false);
				return (true);
			}

			function isNumberChar (InString)  {
				if(InString.length!=1) 
					return (false);
				RefString="1234567890";
				if (RefString.indexOf (InString, 0)==-1) 
					return (false);
				return (true);
			}

			function isNumOrChar (InString)  {
				if(InString.length!=1) 
					return (false);
				InString=InString.toLowerCase();
				RefString="1234567890abcdefghijklmnopqrstuvwxyz";
				if (RefString.indexOf (InString, 0)==-1)  
					return (false);
				return (true);
			}
	   //End Functions for Mask function support - 
	   
			
		function trimAll( strValue ) {
		/************************************************
		DESCRIPTION: Removes leading and trailing spaces.

		PARAMETERS: Source string from which spaces will
		  be removed;

		RETURNS: Source string with whitespaces removed.
		*************************************************/ 
		 var objRegExp = /^(\s*)$/;

		    //check for all spaces
		    if(objRegExp.test(strValue)) {
		       strValue = strValue.replace(objRegExp, '');
		       if( strValue.length == 0)
		          return strValue;
		    }
		    
		   //check for leading & trailing spaces
		   objRegExp = /^(\s*)([\W\w]*)(\b\s*$)/;
		   if(objRegExp.test(strValue)) {
		       //remove leading and trailing whitespace characters
		       strValue = strValue.replace(objRegExp, '$2');
		    }
		  return strValue;
		}

	
	function validateNotEmpty( strValue ) {
		/************************************************
		DESCRIPTION: Validates that a string is not all
		  blank (whitespace) characters.
		    
		PARAMETERS:
		   strValue - String to be tested for validity
		   
		RETURNS:
		   True if valid, otherwise false.
		*************************************************/
		   var strTemp = strValue;
		   strTemp = trimAll(strTemp);
		   if(strTemp.length > 0){
		     return true;
		   }  
		   return false;
		}

//******** Primarily Used on Portfolio Pages *****//

var hndlPop
function NewWindow(mypage, myname, w, h, scroll) {
var winl = (screen.width - w) / 2;
var wint = (screen.height - h) / 2;
winprops = 'height='+h+',width='+w+',top='+wint+',left='+winl+',scrollbars=1'+scroll+',resizable'
hndlPop = window.open(mypage, myname, winprops)
if (parseInt(navigator.appVersion) >= 4) { hndlPop.window.focus(); }
}



ns4 = (document.layers)? true:false;
ie4 = (document.all)? true:false; 


function writeit(id,text)
{
var x
	if (document.getElementById)
	{
		x = document.getElementById(id);
		x.innerHTML = text;
	}
	else if (document.all)
	{
		x = document.all[id];
		x.innerHTML = text;
	}
	else if (document.layers)
	{
		x = document.layers[id];
		text2 = '<P CLASS="testclass">' + text + '</P>';
		x.document.open();
		x.document.write(text2);
		x.document.close();
	}
}



function layerWrite(id,nestref,text) {
	if (ns4) {
		if (nestref) var lyr = eval('document.'+nestref+'.document.'+id+'.document')
		else var lyr = document.layers[id].document
		lyr.open()

		lyr.write(text)
		lyr.close()
		//alert ("netsuck processing")
	}
	else if (ie4) document.all[id].innerHTML = text
}

function showIcon(strPath,strIcon,strDesc) {
var strZoomIcon = strPath + "zoom_"+strIcon;
var strImageCode = "<a href=javascript:NewWindow('/zoom_big_icon.asp?uDesc=" + escape(strDesc) + "&strZoomIcon=" + strZoomIcon + "','Zoomed',550,450)><img src='" + strPath + strIcon + "' width='300' height='213' border='0' alt='Click Me to Zoom'></a>";

//writeit('uDesc',strDesc);

layerWrite('uDesc',null,strDesc);
layerWrite('bigImage',null,strImageCode); 
//determine if a zoomed icon pop-up is already open. if so, load the moused over zoomed image in it.

}

function refreshIcon(strPath,strIcon,strDesc) {
if (hndlPop && !hndlPop.closed) {NewWindow('/zoom_big_icon.asp?uDesc=" + escape(strDesc) + "&strZoomIcon=" + strZoomIcon + "','Zoomed',550,450); } 

}

function urlEncode(str)
{
	var ms = "%25#23 20?3F<3C>3E{7B}7D[5B]5D|7C^5E~7E`60"
	var msi = 0
	var i,c,rs,ts
	while (msi < ms.length)
	{
		c = ms.charAt(msi)
		rs = ms.substring(++msi, msi +2)
		msi += 2
		i = 0
		while (true)
		{
			i = str.indexOf(c, i)
			if (i == -1) break
			ts = str.substring(0, i)
			str = ts+"%"+rs+str.substring(++i, str.length)
		}
	}
	return str
}


function goto_port(lstPort){
var sel_index = lstPort.selectedIndex;
var sel_item_text = lstPort.options[sel_index].text;
var sel_item_value = lstPort.options[sel_index].value;
var nextPage = "/portfolio.asp?sub=projects&Proj=" + sel_item_value;  
//this function reloads the page to a new portfolio project
//input: list box object
//alert ("The Value Selected on The List Box is: " + sel_item_value)

//make sure there is a value before changing pages
if (sel_item_value != "")
   {
      document.location.href = nextPage
   }

}

//  End -->
function changeSelected(lstPort,strDirection) {
//input: list box object
//input: direction string ('+' = fwd, '-' = prev)
var sel_index = lstPort.selectedIndex;
var sel_length = lstPort.options.length;
var sel_next_index = sel_index;

//alert ("Length is" + sel_length);

if (strDirection=='-') {sel_next_index-- }
else {sel_next_index++};
//alert ("Selected nxt index is " + sel_next_index );



//if user clicks previous on first item, go to last item
// if user click next on last item go to first item
if (sel_next_index < 0) {sel_next_index = (sel_length - 1)}
else {
	if (sel_next_index == sel_length) {sel_next_index = 0}
	}

lstPort.selectedIndex = sel_next_index;
//alert ("Selected index is " + lstPort.selectedIndex );
goto_port(lstPort);
}

//this function prevents right clicks
function right(e) {
if (navigator.appName == 'Netscape' && 
(e.which == 3 || e.which == 2))
return false;
else if (navigator.appName == 'Microsoft Internet Explorer' && 
(event.button == 2 || event.button == 3)) {
alert("Secured Page - Right Click Not Available.");
return false;
}
return true;
}
//include this <script> code in the page where u don't want right clicks
//document.onmousedown=right;
//document.onmouseup=right;
//if (document.layers) window.captureEvents(Event.MOUSEDOWN);
//if (document.layers) window.captureEvents(Event.MOUSEUP);
//window.onmousedown=right;
//window.onmouseup=right;



//These Functions are all used to support string mask testing
	   
				   function mask (InString, Mask)  {
				   //E.G var Ret = mask ("(800) 555-1212", "(###) ###-####")
				   //1 = Match
				   //0 = No Match
				   //INPUTS:
				   //Mask Character  Meaning 
					//# Character at this position must be a number 
					//? Character at this position must be an alphabetic character 
					//! Character at this position must be number or alphabetic character 
					//* Character at this position can be anything 

				LenStr = InString.length;
				LenMsk = Mask.length;
				if ((LenStr==0) || (LenMsk==0))
					return(0);
				if (LenStr!=LenMsk)
					return(0);
				TempString=""
				for (Count=0; Count<=InString.length; Count++)  {
					StrChar = InString.substring(Count, Count+1);
					MskChar = Mask.substring(Count, Count+1);
					if (MskChar=='#') {
						if(!isNumberChar(StrChar))
							return(0);
					}
					else if (MskChar=='?') {
						if(!isAlphabeticChar(StrChar))
							return(0);
					}
					else if (MskChar=='!') {
						if(!isNumOrChar(StrChar))
							return(0);
					}
					else if (MskChar=='*') {
					}
					else {
						if (MskChar!=StrChar) 
							return(0);
					}
				}
				return (1);
			}

			function isAlphabeticChar (InString)  {
				if(InString.length!=1) 
					return (false);
				InString=InString.toLowerCase();
				RefString="abcdefghijklmnopqrstuvwxyz";
				if (RefString.indexOf (InString.toLowerCase(), 0)==-1) 
					return (false);
				return (true);
			}

			function isNumberChar (InString)  {
				if(InString.length!=1) 
					return (false);
				RefString="1234567890";
				if (RefString.indexOf (InString, 0)==-1) 
					return (false);
				return (true);
			}

			function isNumOrChar (InString)  {
				if(InString.length!=1) 
					return (false);
				InString=InString.toLowerCase();
				RefString="1234567890abcdefghijklmnopqrstuvwxyz";
				if (RefString.indexOf (InString, 0)==-1)  
					return (false);
				return (true);
			}
	   //End Functions for Mask function support - 