var gsSearchChars

var isNS4 = (document.layers) ? true : false;
var isIE4 = (document.all && !document.getElementById) ? true : false;
var isIE5 = (document.all && document.getElementById) ? true : false;
var isNS6 = (!document.all && document.getElementById) ? true : false;

function showError(sErrMsg){
	var filename="popupError.asp?ErrorMessage="+sErrMsg
	var w = window.open(filename,"myName",'toolbar=no,location=no,directories=no,status=yes,menubar=yes,resizable=no,copyhistory=no,scrollbars=yes,width=575,height=323');
	w.focus();
}
	
function createMessage(pCaption,pMsgText){			
	var sErrMsg=""
	if(pCaption!="") sErrMsg="<u><b>"+pCaption+"</b></u><br>"
	sErrMsg=sErrMsg+pMsgText+"<br>"
	return sErrMsg 
}

function getList(pData,pCtrl){
	var iCtr
	var aData
	if(pData!=''){
		var aData=pData.split("|")
		for(iCtr=0;iCtr<aData.length;iCtr++){
			AddToOptionList(pCtrl,aData[iCtr],aData[iCtr])
		}
	}
}

function generateXML(){	
	var sXMLSearchString=""
	gsSearchChars=""
	sXMLSearchString="<Search>"
	sXMLSearchString=sXMLSearchString+"<UID></UID>"
	sXMLSearchString=sXMLSearchString+"<UserName></UserName>"
	sXMLSearchString=sXMLSearchString+"<SID></SID>"
	if(document.layers){	
		var lColl=document.forms[0].elements
		sXMLSearchString=sXMLSearchString+generateFieldXML(lColl)
	} else {
		var lColl=getLayerArray("Input")  
		sXMLSearchString=sXMLSearchString+generateFieldXML(lColl)
		lColl=getLayerArray("Select") 
		sXMLSearchString=sXMLSearchString+generateFieldXML(lColl)
		lColl=getLayerArray("TextArea") 
		sXMLSearchString=sXMLSearchString+generateFieldXML(lColl)		
	}
	sXMLSearchString=sXMLSearchString+"<Sort></Sort>"
	sXMLSearchString=sXMLSearchString+"</Search>"
	return sXMLSearchString;
}

function generateFieldXML(pColl){
	var lColl = pColl
	var lCtr
	var sCtrlPrefix=""
	var sFieldName=""
	var sXMLString=""
	var sCtrlValue=""
		
	for (lCtr=0; lCtr<lColl.length; lCtr++) {
		if(typeof(lColl[lCtr].id)=='undefined') {
			sCtrlPrefix=lColl[lCtr].name.substr(0,3) //for NN4
			sFieldName=lColl[lCtr].name.substr(3)
		} else {
			sCtrlPrefix=lColl[lCtr].id.substr(0,3)
			sFieldName=lColl[lCtr].id.substr(3)
		}
		if(sCtrlPrefix=='tSF' || sCtrlPrefix=='lSF' || sCtrlPrefix=='hSF'){
			sCtrlValue=lColl[lCtr].value
			sXMLString=sXMLString+createXMLTags(sFieldName,sCtrlValue)
		}
	}	
	return sXMLString;
}

function createXMLTags(pTagName,pTagValue){
	var sXmlTag
	if(pTagValue==null) pTagValue="" 
	if(pTagValue=="" && pTagValue.length==0){
		sXmlTag="<"+pTagName+"/>"
	} else {
		pTagValue=pTagValue.replace("&","&amp;")
		sXmlTag="<"+pTagName+">"+pTagValue+"</"+pTagName+">"
	}
	return sXmlTag;
}

function writeLayer(layerID,txt){
	var ly
	if(document.all){
		ly=document.all[layerID]
		if(typeof(ly)=='object') ly.innerHTML=txt
		return;
	}
	if(document.getElementById){
		ly=document.getElementById(layerID) 
		if(typeof(ly)=='object') ly.innerHTML=txt
		return;
	}	
	if(document.layers){
		ly = document.layers[layerID]
		if(typeof(ly)=='object') {
			ly.document.open();
			ly.document.write(txt);
			ly.document.close();
		}
    }
}

function styleLayer(layerID,stylValue){
	if(document.getElementById){
		document.getElementById(layerID).style.visibility=stylValue
		return;
	}
	if(document.all){
		document.all[layerID].style.visibility=stylValue
		return;
	}
	if(document.layers){	
		var stylVal = (stylValue=='hidden') ? "hide" : "show";
		var ly = eval("document."+layerID)
		ly.visibility=stylVal
	}
}

function getLayer(layerID){
	if(document.getElementById){
		return document.getElementById(layerID)
	}
	if(document.all){
		return document.all[layerID]
	}
	if(document.layers){	
		return document.layers[layerID]
	}
}

function getLayerArray(pTag){
	if(document.getElementById){
		return document.getElementsByTagName(pTag)
	}
	if(document.all){
		return document.all.tags(pTag)
	}
	if(document.layers){	
		return document.forms[0].elements
	}
}

function doMouseEvents(pEvt, pCtrl){
	if(!isNS4) {
		if(pEvt==0) { //mouseout
			pCtrl.style.textDecoration="none"
		} else pCtrl.style.textDecoration="underline"
	}
}

function emailCheck (emailStr) {
	/* The following pattern is used to check if the entered e-mail address
	fits the user@domain format.  It also is used to separate the username
	from the domain. */
	var emailPat=/^(.+)@(.+)$/

	/* The following string represents the pattern for matching all special
	characters.  We don't want to allow special characters in the address. 
	These characters include ( ) < > @ , ; : \ " . [ ]    */
	var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"

	/* The following string represents the range of characters allowed in a 
	username or domainname.  It really states which chars aren't allowed. */
	var validChars="\[^\\s" + specialChars + "\]"

	/* The following pattern applies if the "user" is a quoted string (in
	which case, there are no rules about which characters are allowed
	and which aren't; anything goes).  E.g. "jiminy cricket"@disney.com
	is a legal e-mail address. */
	var quotedUser="(\"[^\"]*\")"

	/* The following pattern applies for domains that are IP addresses,
	rather than symbolic names.  E.g. joe@[123.124.233.4] is a legal
	e-mail address. NOTE: The square brackets are required. */
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/

	/* The following string represents an atom (basically a series of
	non-special characters.) */
	var atom=validChars + '+'

	/* The following string represents one word in the typical username.
	For example, in john.doe@somewhere.com, john and doe are words.
	Basically, a word is either an atom or quoted string. */
	var word="(" + atom + "|" + quotedUser + ")"

	// The following pattern describes the structure of the user
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$")

	/* The following pattern describes the structure of a normal symbolic
	domain, as opposed to ipDomainPat, shown above. */
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")

	/* Finally, let's start trying to figure out if the supplied address is
	valid. */

	/* Begin with the coarse pattern to simply break up user@domain into
	different pieces that are easy to analyze. */
	var matchArray=emailStr.match(emailPat)
	if (matchArray==null) {
	/* Too many/few @'s or something; basically, this address doesn't
		even fit the general mould of a valid e-mail address. */
		alert("Email address seems incorrect (check @ and .'s)")
		return false
	}
	var user=matchArray[1]
	var domain=matchArray[2]

	// See if "user" is valid 
	if (user.match(userPat)==null) {
		// user is not valid
		//alert("The username doesn't seem to be valid.")
		alert("Email address seems incorrect (check @ and .'s)")
		return false
	}

	/* if the e-mail address is at an IP address (as opposed to a symbolic
	host name) make sure the IP address is valid. */
	var IPArray=domain.match(ipDomainPat)
	if (IPArray!=null) {
		// this is an IP address
		for (var i=1;i<=4;i++) {
			if (IPArray[i]>255) {
				//alert("Destination IP address is invalid!")
				alert("Email address seems incorrect (check @ and .'s)")
			return false
			}
		}
		return true
	}

	// Domain is symbolic name
	var domainArray=domain.match(domainPat)
	if (domainArray==null) {
		//alert("The domain name doesn't seem to be valid.")
		alert("Email address seems incorrect (check @ and .'s)")
		return false
	}

	/* domain name seems valid, but now make sure that it ends in a
	three-letter word (like com, edu, gov) or a two-letter word,
	representing country (uk, nl), and that there's a hostname preceding 
	the domain or country. */

	/* Now we need to break up the domain to get a count of how many atoms
	it consists of. */
	var atomPat=new RegExp(atom,"g")
	var domArr=domain.match(atomPat)
	var len=domArr.length
	if (domArr[domArr.length-1].length<2 || 
		domArr[domArr.length-1].length>3) {
	// the address must end in a two letter or three letter word.
	//alert("The address must end in a three-letter domain, or two letter country.")
	alert("Email address seems incorrect (check @ and .'s)")
	return false
	}

	// Make sure there's a host name preceding the domain.
	if (len<2) {
	var errStr="This address is missing a hostname!"
	//alert(errStr)
	alert("Email address seems incorrect (check @ and .'s)")
	return false
	}

	// If we've gotten this far, everything's valid!
	return true;
}


/*function checkLayer(layerID,stylValue,oper){
	if(document.getElementById){
		return eval("document.getElementById(layerID).style.visibility"+oper+stylValue)
	}
	if(document.all){
		return eval("document.all[layerID].style.visibility"+oper+stylValue)
	}
	if(document.layers){	
		var stylVal = (stylValue=='hidden') ? "hide" : "show";
		var ly = eval("document."+layerID)
		ly.visibility=stylVal
	}
}*/
