function ff_createPopupFrame( argHeight ) {
	document.writeln('<DIV id=oDivPopup style="position:absolute; height:' + argHeight + 'px; width:95%; display:none; background-Color:#000000; border-style:outset">')
	document.writeln('<div style="text-align:right;width:100%;color:#FFFFFF;font-Weight:bold;cursor:pointer" onClick="ff_closePopup()">Close</div>')
	document.writeln('<center><IFRAME name=oFramePopup id=oFramePopup style="width:98%; height:' + (argHeight-30) + 'px; background-Color:#FFFFFF" src="/utilities/blank.html"></IFRAME></center>')
	document.writeln('</DIV>')
}

function ff_closePopup() {
	oDivPopup.style.display = "none"
	document.getElementById("oFramePopup").src = "/utilities/blank.html"
	
	try {
		postClosePopup()
	} catch(e) {}
}

function ff_showPopup( argSrc ) {	
	oDivPopup.style.top = (document.body.clientHeight - parseInt(oDivPopup.style.height)) / 2 + document.body.scrollTop
	oDivPopup.style.left = "20px"
	
	oDivPopup.style.display = ''

	document.getElementById("oFramePopup").src = argSrc
}

function isDemoMember( argValue ) {
	return argValue == "aKLMN" || argValue == "aijklbyzABcabcddmnopeGHIJfefgh"
}
	
function isCompleteInput( oObj, oObj2 ) {
	if( oObj.value.length == oObj.maxLength )
		oObj2.focus()
}

function getXMLString( oXML ) {
	if( window.ActiveXObject )
		return oXML.xml
	else
		return (new XMLSerializer()).serializeToString( oXML )
}

function populateFormXMLData( argForm, argDiv, argExclude, argFieldSuffix, argPostCommand, argMoreDataCommand ) {
	if( argDiv.innerHTML == "" )
		return
		
	var l_oXML, l_oNodes, l_iTemp = 1, l_sName, i, l_iNextFill = 0
	
	if( argExclude > 1 )
		l_iTemp = argExclude
	
	l_oXML = loadXMLString( argDiv.innerHTML )

	l_oNodes = l_oXML.documentElement.getElementsByTagName("rows")
	
	for( var h=0; h<l_oNodes.length; h++ ) {	
		if( h > 0 ) {
			if( argMoreDataCommand )
				eval( argMoreDataCommand )
		}
			
		i = l_iNextFill

		while( i<argForm.elements.length - l_iTemp ) {
			if( argForm.elements[ i ].name != "" ) {
				if( (argForm.elements[ i ].tagName == "INPUT" && argForm.elements[ i ].type != "button") || argForm.elements[ i ].tagName == "SELECT" || argForm.elements[ i ].tagName == "TEXTAREA" ) {
					l_sName = argForm.elements[ i ].name.toLowerCase()
					if( argFieldSuffix > 0 )
						l_sName = l_sName.substring( 0, 8 )

					if( argForm.elements[ i ].type != "checkbox" )
						argForm.elements[ i ].value = getAttributeValue( l_oNodes[ h ], l_sName )
						
					l_iNextFill++
				}
			}
			
			i++
		}
		
		if( argPostCommand )
			eval( argPostCommand )
	}
}

function getAttributeValue( argNode, argName ) {
	var l_sTemp = argNode.getAttribute( argName )
	
	if( l_sTemp != null )
		return l_sTemp
	else
		return ""
}

function loadXMLString( argValue ) {
	if (window.ActiveXObject) {
	  var oXML = new ActiveXObject("Microsoft.XMLDOM")
	  oXML.async = false
	  oXML.loadXML( argValue )
	}
	else {
	  var ff_parser = new DOMParser()
	  var oXML = ff_parser.parseFromString( argValue, "text/xml" )
	}
	
	return oXML
}
 
function validate(argForm) {
	for (var i=0; i<argForm.elements.length; i++) {
		with(argForm.elements[i]) {
			if( className == "clsRequired" ) {
				if ( value == "" || value == "mm/dd/yyyy") {
					alert(title + " is required.")
					markError( argForm.elements[i] )
					
					return false
				}
		    }

			if( tagName == "TEXTAREA" ) {
				try {
					if( value.length > maxLength ) {
						alert( title + " exceeded " + maxLength + " chararacters. Please shorten your input." )
						markError( argForm.elements[i] )

						return false
					}
				} catch(e) {}
			}
			else if (tagName != "SELECT") {
				if( alt == "date" && value != "" ) {
					value = cf_RTrim( value )
					if (value == "mm/dd/yyyy")
						value = ""
					else if ( !isValidDate(value) ) {
						alert(title + " is invalid. Format must be in mm/dd/yyyy")
						markError( argForm.elements[i] )

						return false
					}
				}
				else if( alt == "year" && value != "" ) {
					value = cf_RTrim( value )
					if ( value.length != 4 ) {
						alert(title + " is invalid. Input must have 4 digits")
						markError( argForm.elements[i] )

						return false
					}
				}
				else if( alt == "number" && value != "" ) {
					value = cf_RTrim( value )
					if ( !isValidNumber(value) ) {
						alert(title + " is invalid. Format must be in numeric")
						markError( argForm.elements[i] )

						return false
					}
				}
				else if ( alt == "email"  && value != "" ) {
					value = cf_RTrim( value )
					if ( !isValidEmail(value) ) {
						alert(title + " is invalid.")
						markError( argForm.elements[i] )
						
						return false
					}
				}
				else if ( alt == "phone"  && value != "" ) {
					value = stripPhone(value)
					if( value.length != 10 ) {
						alert( title + " must have ten digits (1234567890)." )
						markError( argForm.elements[i] )

						return false
					}
				}
				else if ( alt == "ssn"  && value != "" ) {
					value = stripPhone(value)
					if( value.length != 9 ) {
						alert( title + " must have 9 digits (123456789)." )
						markError( argForm.elements[i] )

						return false
					}
				}
			}
		}
	}

	return true
}

function markError(oObj) {
	try {
		oObj.style.backgroundColor = "#FCC32C"
		oObj.focus()
	} catch(e) {}
}

function isValidNumber(argValue) {	
	return !isNaN( argValue.replace( /,/g, "" ) )
}

function isValidEmail(argValue) {
	if (argValue == "")
		return true

	argValue = argValue.toLowerCase()
	
	if (argValue.indexOf("@") < 1)
		return false

	if (argValue.indexOf(".") < 1)
		return false
	else if( argValue.indexOf(".info") > 1 || argValue.substring( argValue.length-3 ) == ".us" )
		return true
	else if ( argValue.indexOf(".") > (argValue.length - 2) )
		return false

	return true
}

function stripPhone(argValue) {
	argValue = argValue.replace("(", "")
	argValue = argValue.replace(")", "")
	argValue = argValue.replace(" ", "")
	argValue = argValue.replace("-", "")

	return argValue
}

function isValidDate(argValue) {
	if( argValue.indexOf( "/" ) < 1 )
		return false
		
	var lo_Date = new Date(argValue)
	var li_month = lo_Date.getMonth()
	var li_day = lo_Date.getDay()
	var li_year = lo_Date.getFullYear()
	var li_maxDay
	
	if( isNaN(li_month) )
		return false
	if( isNaN(li_day) )
		return false
	if( isNaN(li_year) )
		return false
	else if( li_year > 2078 || li_year < 1900 )
		return false
		
	if( li_month == 0 || li_month == 2 || li_month == 4 || li_month == 6 || li_month == 7 || li_month == 9 || li_month == 11 )
		li_maxDay = 31
	else if( li_month == 1 && (li_year % 4) == 0 )
		li_maxDay = 29
	else if( li_month == 1 )
		li_maxDay = 28
		
	if( li_day > li_maxDay )
		return false
		
	return true
}

function generateStates(oObj) {
	var ddv_sStates = "AK,AL,AR,AZ,CA,CO,CT,DC,DE,FL,GA,HI,IA,ID,IL,IN,KS,KY,LA,MA,MD,ME,MI,MN,MO,MS,MT,NC,ND,NE,"
	ddv_sStates += "NH,NJ,NM,NV,NY,OH,OK,OR,PA,RI,SC,SD,TN,TX,UT,VA,VT,WA,WI,WV,WY,OO"
	var DDV_temp

	var ARR_STATES = ddv_sStates.split(",")

	if (oObj) {
		for (var i=0; i<ARR_STATES.length; i++) {
			oObj.options[i+1] = new Option(ARR_STATES[i], ARR_STATES[i])
		}

		oObj.length = i + 1
	}
}

function nullNum( argValue ) {
	try {
		argValue = argValue.replace( /,/g, "" )
		
		if( isNaN(argValue) || argValue == "" )
			return 0
		else
			return parseFloat( argValue )
	} catch(e) {
		return 0
	}
}

function cf_onkeyup() {
	if( this.value != "" )
		this.value = cf_formatNumber(this.value)
}

function cf_formatNumber( argValue, decimal, argSign ) {
	var iTemp, sSign = ""
	var sTemp = new String( argValue )
	sTemp = sTemp.replace( /,/g, "" )
	
	if( !decimal )
		decimal = 0
		
	iTemp = Math.pow( 10, decimal )	
	iTemp = Math.round( sTemp * iTemp ) / iTemp
	
	if( iTemp < 0 ) {
		iTemp *= -1
		sSign = "-"
	}
		
	sTemp = new String( iTemp )
	var arrTemp = sTemp.split( "." )
	
	sTemp = ""
	while( arrTemp[0].length > 3 ) {				
		sTemp = "," + arrTemp[0].substring( arrTemp[0].length-3, arrTemp[0].length ) + sTemp
		arrTemp[0] = arrTemp[0].substring( 0, arrTemp[0].length-3 )
	}
	
	sTemp = arrTemp[0] + sTemp
	if( arrTemp.length > 1 )
		sTemp += "." + arrTemp[1]
		
	switch( argSign ) {
		case "$":
			sTemp = "$" + sTemp
			break;
		case "%":
			sTemp += "%"
			break;
	}
		
	return sSign + sTemp		
}

function cf_LTrim(argValue, argFind) {
	if( !argFind )
		argFind = " "
		
	while( argValue.charAt(0) == argFind )
		argValue = argValue.substring( 1 )

	return argValue
}

function cf_RTrim(argValue, argFind) {
	if( !argFind )
		argFind = " "
	
	while( argValue.charAt( argValue.length-1 ) == argFind )
		argValue = argValue.substring( 0, argValue.length-1 )

	return argValue
}