
	function doInit()
	{
		resetFields();
	}

	function showError(obj,divname,str)
	{
		if (document.layers) 
		{
			obj[divname].document.open();
			obj[divname].document.write(str);
			obj[divname].document.close();	
		}
		else if (!document.all && document.getElementById)
		{
			document.getElementById(divname).innerHTML = str;
		}
		else
		{
			document.all[divname].innerHTML = str;
		}
	}	

	function resetFields()
	{
		var i = 0;
		
		if (document.all)
		{
			for (i = 0 ; i < document.all.length; i++)
			{
				if (document.all[i].id != '')
					document.all[i].style.visibility = "hidden";
			}
		}
		else
		{
			for (i = 0 ; i < document.layers.length; i++)
			{
				if (document.layers[i].id != '')
					document.layers[i].visibility = "hide";
			}
		}
		
	}
	
	function fieldLength(s,maxlen,minlen,bRequired)
	{
		str = new String(s);
		str = trim(str);
		
		if (str.length == 0 && !bRequired)
		{
			return true;
		}
						
		if (str.length <= maxlen && str.length >= minlen)
		{
			return true;
		}
			
		return false;
	}
	
	function trim(strText) 
	{ 
	    // this will get rid of leading spaces 
	    while (strText.substring(0,1) == ' ') 
	        strText = strText.substring(1, strText.length);
	
	    // this will get rid of trailing spaces 
	    while (strText.substring(strText.length-1,strText.length) == ' ')
	        strText = strText.substring(0, strText.length-1);
	
	   return strText;
	} 

	
	function fieldNumeric(s)
	{	
		if (!fieldPresent(s))
			return true;
				
		var sResult = parseInt(s, 10);
		if (sResult.toString() == "NaN") return false;
			
		return true;		
	}
	
	function fieldPresent(s)
	{	
	   var str = new String(s);
	   for (i = 0 ; i < str.length ; i++)
	   {
	   		if (str.charAt(i) != ' ')
				return true;
			
	   }	  
	   return false;
	}
	
	function isEmailAddr(email)
	{
		 return PerformSimpleValidation(email, /^[\w-_.]*[\w-_.]\@[\w].+[\w]+[\w]$/ );
	}
	
	function hasSpecialChars(s)
	{
		 return !PerformSimpleValidation(s, /^[0-9a-zA-Z\_]+$/ );
	}
	
	function showObject(obj,divname) 
	{
		if (!document.all && document.getElementById)
		{ 
			document.getElementById(divname).visibility = "show";
		}
		else if (document.layers)
		{
			obj[divname].visibility = "show";
		}
		else if (document.all) 
		{
			document.all[divname].style.visibility = "visible";
		}
	}

	function hideObject(obj) 
	{
		if (!document.all) obj.visibility = "hide";
		else if (document.all) obj.style.visibility = "hidden";
	}
	
	
	// overly simplistic test for IE
	isIE = (document.all ? true : false);
	// both IE5 and NS6 are DOM-compliant (well, sort of...)
	isDOM = (document.getElementById ? true : false);

	// get the true offset of anything on NS4, IE4/5 & NS6, even if it's in a table!
	function getAbsX(elt) { return (elt.x) ? elt.x : getAbsPos(elt,"Left"); }
	function getAbsY(elt) { return (elt.y) ? elt.y : getAbsPos(elt,"Top"); }
	function getAbsPos(elt,which) {
	 iPos = 0;

	 while (elt != null) {
	  iPos += elt["offset" + which];
	  elt = elt.offsetParent;
	 }
	
	 return iPos;
	}

	function getDivStyle(divname) {
	 var style;
	 if (isDOM) { style = document.getElementById(divname).style; }
	 else { style = isIE ? document.all[divname].style
	                     : document.layers[divname]; } // NS4
	 return style;
	}
	
	function shrinkImage(name,divMsg)
	{
		if (document.all && document.all[divMsg].innerHTML == '') 
		{
			document.images[name].height = 1;
		}
	}
	
	function shrinkImages()
	{
		var i;

		if (!document.all && !document.getElementById) return;			
		for (i = 0 ; i < document.images.length; i++)
		{				
			var imgname = document.images[i].name;

			// get images that handle showing errors
			if (imgname.indexOf('error') != -1) 
			{
				// populate first guy with error from server
				var divname = imgname.substring(0,imgname.length-3);

				if (!document.all && document.getElementById)
				{
					// the div name is the image name - "pos"
					if (document.getElementById(divname).innerHTML != '') 
					{
						handleError(document.getElementById(divname),document.getElementById(divname).innerHTML,document.images[i].name);
					}
					else
					{
						document.images[i].height = 1;
					}								
				}
				else
				{
					if (document.all[divname].innerHTML != '') 
					{
						handleError(document.all[divname],document.all[divname].innerHTML,document.images[i].name);
					}
					else
					{
						document.images[i].height = 1;
					}
				}				
			}
		}
	}

	function hideElement(divname) {
	 getDivStyle(divname).visibility = 'hidden';
	}

	// annoying detail: IE and NS6 store elt.top and elt.left as strings.
	function moveBy(elt,deltaX,deltaY) {
	 elt.left = parseInt(elt.left) + deltaX;
	 elt.top = parseInt(elt.top) + deltaY;
	}

	function toggleVisible(divname) {
	 divstyle = getDivStyle(divname);
	 if (divstyle.visibility == 'visible' || divstyle.visibility == 'show') {
	   divstyle.visibility = 'hidden';
	 } else {
	   fixPosition(divname);
	   divstyle.visibility = 'visible';
	 }
	}

	function setPosition(elt,positionername,isPlacedUnder) {
		
	 var positioner;
	 if (isIE) {
	  positioner = document.all[positionername];
	 } else {
	  if (isDOM) {
	    positioner = document.getElementById(positionername);	    
	  } else {
	    // not IE, not DOM (probably NS4)
	    // if the positioner is inside a netscape4 layer this will *not* find it.
	    // I should write a finder function which will recurse through all layers
	    // until it finds the named image...
	    
	    positioner = document.images[positionername];
	  }
	 }
	 
	 elt.left = getAbsX(positioner);
	 elt.top = getAbsY(positioner) + (isPlacedUnder ? positioner.height : 0); 
	}

	// fixPosition() attaches the element named eltname
	// to an image named eltname+'Pos'
	//
	function fixOnePosition(divname) {
		divstyle = getDivStyle(divname);
		positionerImgName = divname + 'pos';
		// hint: try setting isPlacedUnder to false
		isPlacedUnder = false;
		if (isPlacedUnder) {
			 setPosition(divstyle,positionerImgName,true);
		} else {
			 setPosition(divstyle,positionerImgName,false)
		}
	}
	
	function fixPosition(divname,positioner)
	{
		divstyle = getDivStyle(divname);
		positionerImgName = positioner;
		// hint: try setting isPlacedUnder to false
		isPlacedUnder = false;
		if (isPlacedUnder) {
			 setPosition(divstyle,positionerImgName,true);
		} else {
			 setPosition(divstyle,positionerImgName,false)
		}
	}
	
	function getOccurencesOf(outerstring,innerstring)
	{
		var i;
		var cnt;
		cnt = 0;
		i = 0;
		
		while ((i = outerstring.toUpperCase().indexOf(innerstring.toUpperCase(),i+1)) != -1)
		{
			++cnt;
			if ((i+1) > outerstring.length)
			{
				break;
			}
		}
		return cnt;
	}
	
	function handleError(obj,msg,positioner)
	{		
		var dheight;
		fixPositions(obj.id,positioner);
		showError(obj,obj.id,'<font color="red" size="2">' + msg + '</font>');
		showObject(obj, obj.id);
		// look for both
		dheight = 15 * getOccurencesOf(obj.innerHTML,"<br/>");
		if (dheight == 0) dheight = 15 * getOccurencesOf(obj.innerHTML,"<br>");
		if (dheight == 0) dheight = 1;
		document.images[positioner].height = dheight;
	}

	function redirectWithVehicleID() {
		var number = document.forms[0].Vehicle_Select.selectedIndex;
		document.forms[0].Vehicle_Info.value = document.forms[0].Vehicle_Select.options[number].value;
		document.forms[0].mode.value = 'get';
		document.forms[0].submit();
		//location.href = 'edituserprofile.asp?vid=' + document.form.Vehicle_Select.options[number].value;
	}
