/*

browserType				return browser type: ie, ff, safari. (For anything else, returns FF!)
MM_preloadImages		Preload images, for situations like mouseover version of image
showFlash				Display flash object. Specify width, height, URL.
						NOTE: extra benefit: using this code solves IE problem of having to click on a flash object to activate it.
doBookmark				For bookmarking a page. [Note that this fails when running on local machine, so don't worry!]
						NOTE: works on IE and FF, but not on Safari.
getValue				return value of object, by ID
setValue				set value of object, by ID
found					true/false: does string contain substring?
empty					true/false: is object's value efectively empty?
isObject				true/false: does object with this ID exists?
isnull					true/false: is argument null? [function looks useful, but I haven't used it yet.]
removeWhiteSpace		remove extra spaces: 1. at beginning, 2. at end, 3. more than 1 consecutive
simpleCheck				check whether field, by id, contains pattern, return appropriate error messages
duplicate_stateChanged	Helper function for checkDup
checkDup				Use AJAX to check availability of selected email/username.
validate_email			email validation
validate_email			email validation -- also ensures email unique in system
validate_emailList		email validation for list of emails
checkAvailability		Call to checkDup to pre-check whether selection is a duplicate
validate_emailConfirm	ensure emails match
validate_user_password	called by the following two
validate_password		password validation: 1. At least 6 characters. 2. Numbers and letters only.
validate_username		username validation: 1. At least 6 characters. 2. Numbers and letters only.
validate_passwordConfirmensure passwords match
validate_genericPhone	phone validation. Simply ensures contains at least 9 digits.
						Problematic to get more specific, because each country has different format.
validate_zipcode		zipcode validation: checks for US and Canada only. Use global variable to indicate whether or not required.
						ASSUMES: presence of object with id "country"
mod10					helper function for validate_ccNumber
validate_ccNumber		credit card number validation
						ASSUMES: presence of object with id "ccType"
badCCcode				helper function for validate_ccCode
validate_ccCode			validate 3-digit credit card code (4-digits for amex). Use global variable to indicate whether or not required.
						ASSUMES: presence of object with id "ccType"
						NOTE: not clear that this field is really all that critical
checkFields				loop and check all fields in a form. Assumes submit button has id of formSubmitButton.
numbersOnly				ensure user types in digits only for number field
FFcheckKey				helper function: No-paste: Prevent control-v on FF
SafaricheckKey			helper function: No-paste: Prevent control-v on Safari (doesn't work on keydown, so I had to kludge it on keyup!)
MScheckKey				helper function: No-paste: Prevent control-v on MS
FFnoPaste				helper function: No-paste: Prevent right-click on FF
MSnoPaste				helper function: No-paste: Prevent right-click on FF
noPaste					No-paste: Put all of the above together, for confirm fields
loadAttacher			Attach "onload", for ie, ff, safari
touchDown				If someone puts cursor in text field, remove default text
leaveField				If someone leaves text field without typing anything, restore default text
setInputs				Function that allows input sub-types to have classes, like input.text.
GetXmlHttpObject		Create object for AJAX. The code I borrowed has a separate clause for ie, but for me, the first clause works fine for ie!
						NOTE: Ezequiel may have found something better, something to do with portability.
createCookie			save cookie
readCookie				get cookie value
eraseCookie				erase cookie

NOTES:

1. FOR MOST VALIDATION FUNCTIONS, NO ERROR RETURNED IF FIELD IS EMPTY.
2. I HAD A URL VALIDATION FUNCTION, BUT DON'T KNOW IF IT WAS CORRECT. ANYWAY, ARE THERE ANY CHARACTERS, BESIDES SPACE, THAT ARE INVALID FOR URL?
3. I'D LIKE TO HAVE A GENERIC TEXT FIELD FUNCTION, BUT IT ALWAYS SEEMS TO GIVE ME PROBLEMS, IN THAT PEOPLE TELL ME THAT THEIR INPUT IS REJECTED.

*/

var BAD_EMAIL =				"Please enter a valid email address."
var BAD_EMAILMATCH =		"The two emails you have entered do not match."
var PASSWORD =				"Password"
var USERNAME =				"Username"
var BAD_USERPASSWORD_SMALL =" must contain at least six characters."
var BAD_USERPASSWORD_CHARS =" may contain numbers and letters only."
var BAD_PASSWORDMATCH =		"The two passwords you have entered do not match."
var NOPASTE =				"You may not paste into this field. Please type in the information."
var BAD_PHONE =				"Please enter a valid phone number."
var BAD_ZIPCODE_US =		"Please enter a 5-digit zip code."
var BAD_ZIPCODE_CANADA =	"Please enter a postal code, in the form 'M8M 3N3'."
var ZIP_REQUIRED =			true
var BAD_CCNUMBER =			"Please enter a valid credit card number."
var BAD_CCCODE1 =			"Please enter a "
var BAD_CCCODE2 =			"-digit security code."
var REQUIRED =				"Required Field"
var NOFAVORITES =			"Your browser does not support automatic bookmarking. You must bookmark this page manually."
var HEBREWSTRING =			""
for (i = 1488; i <= 1514; i++)
	HEBREWSTRING += String.fromCharCode(i)

function browserType () {
	if (found(navigator.appName, "Microsoft"))
		return "IE"
	if (navigator.userAgent.search(/Chrome/i) != -1)
		return "Google"
	if (navigator.userAgent.search(/Safari/i) != -1)
		return "Safari"
	if (navigator.userAgent.search(/Firefox/i) != -1)
		return "FF"
	return "FF"
}

function MM_preloadImages () { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function showFlash (width, height, URL) {
	//DON'T KNOW IF ALIGN NECESSARY
	document.write('<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" width="' + width + '" height="' + height + '" align="middle">')
	document.write('<param name="movie" value="' + URL + '" />')
	document.write('<param name="quality" value="high" />')
	//THIS NEXT ONE SO THAT DROPDOWN MENUS HANGING OVER FLASH DON'T DISAPPEAR
	document.write('<param name="wmode" value="opaque">')
	//DON'T KNOW WHAT THIS DOES
	document.write('<param name="allowScriptAccess" value="sameDomain" />')
	//DON'T KNOW IF NECESSARY, BUT IT CAUSED THE FLASH IN ALIYAH JOB CENTER TO DISAPPEAR, SO DISABLING IT -- ALSO REMOVED bgcolor="#ffffff" FROM FINAL EMBED
	//document.write('<param name="bgcolor" value="#ffffff" />')
	//THE EMBED STATEMENT HAS ONE PROPERTY MATCHING EVERYTHING ABOVE, PLUS TYPE AND PLUGINSPAGE
	document.write('<embed width="' + width + '" height="' + height + '" align="middle" src="' + URL + '" quality="high" wmode="opaque" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />')
	document.write('</object>')
}

function doBookmark () {
	if (browserType() == "IE")
		window.external.AddFavorite(window.location.href, document.title)
	else if (window.sidebar)
		window.sidebar.addPanel(document.title, window.location.href, "")
	else
		alert(NOFAVORITES)
}

function getValue (id) {
	return document.getElementById(id).value
}

function setValue (id, value) {
	document.getElementById(id).value = value
}

function found (haystack, needle) {
	return haystack.search(needle) != -1
}

function empty (value) {
	return found(value, /^\s*$/)
}

function isObject (myID) {
	return (document.getElementById(myID) + "").search(/^\[object.*\]$/) != -1
}

function isnull (arg) {
	arg = arg + '';
	return (arg == '' || arg == 'null' || arg == 'undefined')
}

function removeWhiteSpace (myObject) {
	setValue(myObject.id, myObject.value.replace(/(^ *| *$)/g, "").replace(/ +/g, " "))
}

function simpleCheck (id, pattern, message) {
	myValue = getValue(id)
	if (empty(myValue))
		return ""
	return found(myValue, pattern) ? "" : message
}

function checkDup (field, table) {
	xmlHttp = GetXmlHttpObject()
	if (xmlHttp == null) {
		return "Your browser does not support AJAX!"
	}
	myValue = getValue(field)
	var url = "/library/duplicateCheck.php?table=" + table + "&field=" + field + "&value=" + myValue + "&id=" + id
	xmlHttp.open("GET" , url , false)
	try {
		xmlHttp.send()
	}
	catch (e) {
		xmlHttp.send(null)
	}
	return xmlHttp.responseText == 0 ? "" : "The " + field + " '" + myValue + "' already exists in our system. Please choose another."
}

function validate_email (id) {
	return simpleCheck(id, /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,})+$/, BAD_EMAIL)
}

function validate_email_noDups_company (id) {
	if (simpleCheck(id, /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,})+$/, BAD_EMAIL) != "")
		return BAD_EMAIL
	return checkDup("email", "company")
}

function validate_email_noDups_jobSeeker (id) {
	if (simpleCheck(id, /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,})+$/, BAD_EMAIL) != "")
		return BAD_EMAIL
	return checkDup("email", "jobSeeker")
}

function validate_emailList (id) {
	document.getElementById(id).value = document.getElementById(id).value.
		replace(/;/g, ",").
		replace(/[, ]+/g, ",").
		replace(/(^[ ,]*|[ ,]*$)/g, "")
	emailList = document.getElementById(id).value.split(",")
	if (emailList.length > 10)
		return "You have entered more than 10 email addresses.\nPlease check this entry and try again."
	for (i = 0; i < emailList.length; i++)
		if (emailList[i].search(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,})+$/) == -1)
			return "The e-mail address '" + emailList[i] + "' is not a valid e-mail address.\nPlease check your entry and try again."
	return ""
}

function checkAvailability (field, validation) {
	if ((result = eval("validate_" + validation + "('" + field + "')")) == "") {
		alert("The " + field + " '" + document.getElementById(field).value + "' is available.")
	}
	else {
		alert(result)
		document.getElementById(field).focus()
	}
}

function validate_emailConfirm (id) {
	return getValue(id) == getValue("email") ? "" : BAD_EMAILMATCH
}

function validate_user_password (id, errorField) {
	myValue = getValue(id)
	if (empty(myValue))
		return ""
	if (myValue.length < 6)
		return errorField + BAD_USERPASSWORD_SMALL
	return simpleCheck(id, /^[a-zA-Z0-9]*$/, errorField + BAD_USERPASSWORD_CHARS)
}

function validate_password (id) {
	return validate_user_password(id, PASSWORD)
}

function validate_username (id) {
	if ((result = validate_user_password(id, USERNAME)) != "")
		return result
	return checkDup("username")
}

function validate_passwordConfirm (id) {
	return getValue(id) == getValue("password") ? "" : BAD_PASSWORDMATCH
}

function validate_genericPhone (id) {
	return simpleCheck(id, /(\d.*){9}/, BAD_PHONE)
}

function validate_zipcode (id) {
	myValue = getValue(id)
	if (!ZIP_REQUIRED && empty(myValue))
		return
	country = getValue("country")
	if (country == "United States")
		return found(myValue, /^\d{5}$/) ? "" : BAD_ZIPCODE_US
	if (country == "Canada")
		return found(myValue, /^[a-zA-Z]\d[a-zA-Z]\s?\d[a-zA-Z]\d$/) ? "" : BAD_ZIPCODE_CANADA
	return ""
}

function mod10 (ccNumber) {
	var ary = new Array(ccNumber.length)
	var i = 0, sum = 0
	for (i = 0; i < ccNumber.length; i++)
		ary[i] = parseInt(ccNumber.charAt(i))
	for (i = ary.length - 2; i >= 0; i -= 2) {
		ary[i] *= 2
		if (ary[i] > 9)
			ary[i] -= 9
	}
	for (i = 0; i < ary.length; i++)
		sum += ary[i]
	return sum % 10 == 0
}

function validate_ccNumber (id) {
	//http://www.sitepoint.com/article/card-validation-class-php
	/*	VALID CC #'s:
		VISA:		4444333322221111
		DISCOVER:	6011111111111117
		MC:			5123456789012346
		AMEX:		343434343434343
		DINERS:		30569309025904
	*/

	myValue = getValue(id)
	if (empty(myValue))
		return ""
	testValue = myValue.replace(/[ \-]/g, "")
	switch (getValue("ccType")) {
	case "Visa":
		pattern = /^4\d{12}(\d{3})?$/
		break
	case "Discover":
		pattern = /^6011\d{12}?$/
		break
	case "Mastercard":
		pattern = /^5[1-5]\d{14}$/
		break
	case "American Express":
		pattern = /^3[47]\d{13}?$/
		break
	case "Diners Club":
		pattern = /^3(0[0-5]|[68]\d)\d{11}$/
		break
	case "Isracard":	//CHECKED HERE TO AVOID MOD10
		pattern = /^\d{8}$/
		if (found(testValue, pattern)) {
			setValue(id, testValue)
			return ""
		}
		return BAD_CCNUMBER
		break
	}
	if (found(testValue, pattern) && mod10(testValue)) {
		setValue(id, testValue)
		return ""
	}
	return BAD_CCNUMBER
}

function badCCcode (param) {
	return BAD_CCCODE1 + param +  BAD_CCCODE2
}

function validate_ccCode (id) {
	if (getValue("ccType") == "American Express") {
		param = 4
		pattern = /^\d{4}$/
	}
	else {
		param = 3
		pattern = /^\d{3}$/
	}
	return simpleCheck(id, pattern, badCCcode(param))
}

var debug = false

function checkFields () {
	var invalidField = ""
	var message = ""
	if (debug)
		alert("In checkfields")
	
	for (var i in fieldIDs) {
		if (debug)
			alert(i + ": " + fieldIDs[i])
		if (document.getElementById(fieldIDs[i])) {
			currentObject = document.getElementById(fieldIDs[i])
			if (currentObject.type == "text" || currentObject.type == "textArea")
				removeWhiteSpace(currentObject)
			if (!currentObject.disabled) {
				if (debug)
					alert("Req: " + fieldRequireds[i] + ". Valid: " + fieldValidations[i] + ". Value: " + currentObject.value)
				if ((fieldRequireds[i] && empty(currentObject.value)) ||
					(fieldValidations[i] &&
					(message = eval("validate_" + fieldValidations[i] + "('" + fieldIDs[i] + "')")) != "")) {
						invalidField = fieldIDs[i]
						break
				}
			}
		}
	}
	if (debug)
		alert("Out of loop")
	if (invalidField != "") {
		alert(message == "" ? REQUIRED + ": " + fieldLabels[i] : message)
		document.getElementById(invalidField).focus()
		return false
	}
	if (isObject("submitTd"))
		document.getElementById("submitTD").innerHTML = "Processing. Please wait..."
	return true
}

function numbersOnly (myField, e, decimal) {
	 var key, keyChar
	 if (window.event)
		 key = window.event.keyCode
	 else if (e)
		 key = e.which
	 else
		 return true
	 keyChar = String.fromCharCode(key)
	 // control keys
	 if ((key == null) || (key == 0) || (key == 8) || (key == 9) || (key == 13) || (key == 27))
		 return true
	 // numbers
	 else if (("0123456789").indexOf(keyChar) > -1)
		 return true
	// decimal point jump -- jump to the next field. code not working at this point.
	 else if (decimal && (keyChar == ".")) {
		myField.form.elements[decimal].focus()
		return false
	 }
	 else
		return false
}

function FFcheckKey (event) {
	if (event.which == 118 && event.ctrlKey == true) {
		alert(NOPASTE)
		event.preventDefault()
	}
}

function SafaricheckKey (event) {
	if (event.which == 86 && event.ctrlKey == true) {
		event.srcElement.value = ""
		alert(NOPASTE)
		event.preventDefault()
	}
}

function MScheckKey () {
	if (event.keyCode == 86 && event.ctrlKey) {
		alert(NOPASTE)
		return false
	}
	return true
}

function FFnoPaste (event) {
	alert(NOPASTE)
	event.preventDefault()
}

function MSnoPaste () {
	alert(NOPASTE)
	return false
}

function noPaste (myID) {
	myObject = document.getElementById(myID)
	if (browserType() == "IE") {
		myObject.onkeydown = MScheckKey
		myObject.oncontextmenu = MSnoPaste
	}
	else {
		if (browserType() == "Safari")
			myObject.addEventListener("keyup", SafaricheckKey, false)
		else
			myObject.addEventListener("keypress", FFcheckKey, true)
		myObject.addEventListener("contextmenu", FFnoPaste, true)
	}
}

function loadAttacher (loadFunc) {
	if (window.addEventListener) {
		window.addEventListener("load", loadFunc, false)
	}
	else if (document.addEventListener) {
		document.addEventListener("load", loadFunc, false)
	}
	else if (window.attachEvent) {
		window.attachEvent("onload", loadFunc)
	}
}

function touchdown (myInput, defaultText) {
	if (myInput.value == defaultText) {
		myInput.style.textAlign = "left"
		myInput.value = ""
	}
}

function leaveField (myInput, defaultText) {
	if (myInput.value == "") {
		myInput.value = defaultText
	}
}

function setInputs () {
	var myElements = document.getElementsByTagName("input")
	var i
	for (i = 0; i < myElements.length; i++) {
		if (myElements[i].getAttribute("type")) {
			if (myElements[i].getAttribute("type") == "text")
				myElements[i].className = "text"
			else if (myElements[i].getAttribute("type") == "password")
				myElements[i].className = "password"
			else if (myElements[i].getAttribute("type") == "button")
				myElements[i].className = "button"
		}
	}
}

function GetXmlHttpObject () {
	var xmlHttp = null
	try {
		// Firefox, Opera 8.0+, Safari
		xmlHttp = new XMLHttpRequest()
	}
	catch (e) {
		// Internet Explorer
		try {
			xmlHttp = new ActiveXObject("Msxml2.XMLHTTP")
		}
		catch (e) {
			xmlHttp = new ActiveXObject("Microsoft.XMLHTTP")
		}
	}
	return xmlHttp
}

function validate_url (id) {
	return simpleCheck(id, /^http:\/\//, "URL must begin with 'http://'")
}

function validate_address (id) {
	return getValue(id).length > 200 ? "Address must not exceed 200 characters in length." : ""
}

/*	DON'T KNOW ABOUT THIS ONE	*/

function okay_text (fieldValue) {
	if(fieldValue == '')
		return true	
//	var RE = new RegExp("^[a-zA-Z0-9 ,\\.\\-\\/\\;\\:!@\\#\\%\\*\\?+=$\\&\\)\\(<>" + hebrewString + "]*$")
	var RE = new RegExp("[0-9A-Za-z\\d\\s\\t\\r\\n\\:\\;\\!\\@\\#\\%\\*\\+\\?\\-\\=\\$,&\\.\\'\"\\(\\)\\[\\]\\/ ²–ÌÀÌÀÀÆ®™•’“" + HEBREWSTRING + "]", "g")
		return (fieldValue.search(RE) != -1)
}

function handleNewline (myText) {
	return myText.replace(/###NEWLINE###/g, "\r\n")
}

function addField (myID, myLabel, myRequired, myValidate, myMax) {
	fieldIDs.push(myID)
	fieldLabels.push(myLabel)
	fieldRequireds.push(myRequired)
	fieldValidations.push(myValidate)
	if (isnull(document.getElementById(myID).getAttribute("name")))
		document.getElementById(myID).setAttribute("name", myID)
	if (myMax)
		document.getElementById(myID).setAttribute("maxLength", myMax)
}

function disableElements (parentTR, fieldType, myBoolean) {
	var myElements = document.getElementById(parentTR).getElementsByTagName(fieldType)
	for (var i = 0; i < myElements.length; i++)
		myElements[i].disabled = myBoolean
}

function checkDependentTR (parentID, childTR, firstField) {
	yesDisplay = browserType() == "IE" ? "block" : "table-row"
	parentElement = document.getElementById(parentID)
	if (parentElement.type.search(/select/i) != -1)
		myDisplay = parentElement.value == "Other" ? yesDisplay : "none"
	else
		myDisplay = parentElement.checked ? yesDisplay : "none"
	document.getElementById(childTR).style.display = myDisplay

	myBoolean = myDisplay == "none"
	disableElements(childTR, "input", myBoolean)
	disableElements(childTR, "textarea", myBoolean)
	disableElements(childTR, "select", myBoolean)

	if (myDisplay == yesDisplay)
		document.getElementById(firstField).focus()
}

function checkRadio (parentID, fieldLabel) {
	var myElements = document.getElementById(parentID).getElementsByTagName("input")
	for (i = 0; i < myElements.length; i++)
		if (myElements[i].checked)
			return ""
	return "Required Field: " + fieldLabel
}

function checkCheckbox (parentID, fieldLabel) {
	var myElements = document.getElementById(parentID).getElementsByTagName("input")
	for (i = 0; i < myElements.length; i++)
		if (myElements[i].checked)
			return ""
	return "Please select at least one " + fieldLabel
}

function reallyEmpty (id, defaultText, asterisk) {
	searchText = defaultText
	searchText = searchText.replace(/\(/, "\\(")
	searchText = searchText.replace(/\)/, "\\)")
	var myReg = new RegExp("^(\s*|" + (asterisk ? "\\*" : "") + searchText + ")$")
	return getValue(id).search(myReg) != -1 ? "Required Field: " + defaultText : ""
}

function createCookie (name, value, days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
		var expires = ";expires=" + date.toGMTString();
	}
	else
		var expires = "";
	document.cookie = name + "=" + value + expires + "; path=/";
}

function readCookie (name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i = 0; i < ca.length; i++) {
		var c = ca[i];
		while (c.charAt(0)==' ')
			c = c.substring(1, c.length);
		if (c.indexOf(nameEQ) == 0)
			return c.substring(nameEQ.length, c.length);
	}
	return null;
}

function eraseCookie (name) {
	createCookie(name, "", -1);
}

//	NEXT THREE FUNCTIONS FOR BLOGS WITH SIGNUPS TO MAILING LIST

function join () {
	if (validate_email("top_email") != "") {
		alert("Please enter a valid email address.")
		document.getElementById("top_email").focus()
		return
	}
	submit_info("top_email")
}

function submit_info (email) {
	xmlHttp = GetXmlHttpObject()
	if (xmlHttp == null) {
		alert("Your browser does not support AJAX!")
		return
	}
	var url = "/subscribe.php"
	xmlHttp.onreadystatechange = subscribe_stateChanged
	xmlHttp.open("POST" , url , true)
	xmlHttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded;charset=UTF-8;')
	xmlHttp.send(
		"email=" + email
	)
}

function subscribe_stateChanged () { 
	if (xmlHttp.readyState == 4) {
		if (xmlHttp.responseText == "OK") {
			//alert("Thank you for signing up")
			document.getElementById("act_now_area").innerHTML = document.getElementById("thank_you_div").innerHTML
		}
		else
			alert(xmlHttp.responseText)
			//document.getElementById("show_ajax").innerHTML = xmlHttp.responseText
	}
}

//	NEXT TWO FUNCTIONS FOR BLOGS WITH VIDEOS

function resize (myID, newWidth) {
	myEmbeds = document.getElementById(myID).getElementsByTagName("embed")
	for (i = 0; i < myEmbeds.length; i++) {
		currentEmbed = myEmbeds[i]
		if (!isnull(currentEmbed.style.width)) {
			currentWidth = parseInt(currentEmbed.style.width)
			currentHeight = parseInt(currentEmbed.style.height)
			newHeight = newWidth / currentWidth * currentHeight
			currentEmbed.style.width = newWidth
			currentEmbed.style.height = newHeight
		}
		else if (!isnull(currentEmbed.width)) {
			currentWidth = parseInt(currentEmbed.width)
			currentHeight = parseInt(currentEmbed.height)
			newHeight = newWidth / currentWidth * currentHeight
			currentEmbed.width = newWidth
			currentEmbed.height = newHeight
		}
	}
	document.getElementById(myID).style.display = ""
}

function opaque (myID) {
	myEmbeds = document.getElementById(myID).getElementsByTagName("embed")
	for (i = 0; i < myEmbeds.length; i++) {
		currentEmbed = myEmbeds[i]
		currentEmbed.wmode = "transparent"
	}
}

//	NEXT TWO FUNCTION FOR BLOGS WITH REFER-A-FRIEND

function refer_friend () {
	if (empty(getValue("your_email")) || validate_email("your_email") != "") {
		alert("Please enter a valid email address.")
		document.getElementById("your_email").focus()
		return
	}
	if ((result = validate_emailList("friend_email")) != "") {
		alert(result)
		document.getElementById("friend_email").focus()
		return
	}

	xmlHttp = GetXmlHttpObject()
	if (xmlHttp == null) {
		alert("Your browser does not support AJAX!")
		return
	}
	var url = "/refer.php"
	xmlHttp.onreadystatechange = refer_stateChanged
	xmlHttp.open("POST" , url , true)
	xmlHttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded;charset=UTF-8;')
	xmlHttp.send("your_email=" + document.getElementById("your_email").value + "&friend_email=" + document.getElementById("friend_email").value)
}

function refer_stateChanged () { 
	if (xmlHttp.readyState == 4) {
		if (xmlHttp.responseText == "OK") {
			alert("Thank you for helping spread the word.")
		}
		else
			document.getElementById("show_ajax").innerHTML = xmlHttp.responseText
	}
}

function nChecked (myField) {
	var myElements = document.getElementById(myField + "_parent").getElementsByTagName("input")
	var nChecked = 0
	for (i = 0; i < myElements.length; i++)
		if (myElements[i].checked)
			nChecked++
	return nChecked
}

