var BAD_EMAIL =					"Please enter a valid email address."
var REQUIREDFIELD =				"Required field"
var NAME_LABEL =				"Name"
var PHONE_LABEL =				"Phone"
var DETAILS_LABEL =				"Details"
var MUST_NOT_EXCEED =			"no debe exceder"
var CHARACTERS =				"characters"
var YOU_HAVE_ENTERED =			"You have entered"
var BAD_ZIPCODE_US =			"Please enter a 5-digit zip code."
var NO_LINKS =					"No links in fields please."
var THANK_YOU_FOR_CONTACTING =	"Thank you for contacting"
var PROBLEM =					"There was a problem submitting the form.\nPlease make sure there are no links in your content."
var THANK_YOU_FOR_SUBSCRIBING =	"Thank you for subscribing"
/*	MISC	*/

function secure_url () {
	return window.location.href.search(/^https/) != -1
}

function showFlash (width, height, URL) {
	var s = secure_url ? "s" : ""

	//DON'T KNOW IF ALIGN NECESSARY
	document.write('<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http' + s + '://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 EMBED
	//document.write('<param name="bgcolor" value="#ffffff" />')

	//THE EMBED STATEMENT HAS PROPERTIES MATCHING ALL OF THE ABOVE PARAMS, 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 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 preload_specific_images() {
	var i
	for (i = 0; i < preloads.length; i++)
		preloads[i] = "'http://www.onejerusalem.org/img/" + preloads[i] + "'"
	eval("MM_preloadImages(" + preloads.join(",") + ")")
}

if (typeof preloads != "undefined")
	loadAttacher(preload_specific_images)

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

function isVar (myVar) {
	return typeof myVar != "undefined"
}

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

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)
	}
}

//	OBJECT DISPLAYED IF PARENT CLICKED ON

function hide_and_seek (myID) {
	myStyle = document.getElementById(myID).style
	myStyle.display = myStyle.display == "" ? "none" : ""
}

/*	INPUT OBJECT RELATED FUNCTIONS	*/

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 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 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"
			else if (myElements[i].getAttribute("type") == "submit")
				myElements[i].className += " button"
			else if (myElements[i].getAttribute("type") == "file")
				myElements[i].className += " file"
			myElements[i].className = myElements[i].className.replace(/^ /, "")
		}
	}
}

/*	STRING RELATED FUNCTIONS	*/

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

//	THIS FUNCTION FOR CHECKING FOR EMPTY FIELDS WHEN THE LABEL IS INSIDE THE FIELD
//	TAKES INTO ACCOUNT SITUATIONS LIKE: 1. *NAME, 2. *[NAME], 3. NAME:

function reallyEmpty (id, actualLabel) {
	baseLabel = actualLabel.replace(/(^\*|:$)/g, "")
	baseLabel = baseLabel.replace(/(^[\[\(]|[\]\)]$)/g, "")
	inputText = getValue(id)
	return inputText == actualLabel || inputText == baseLabel || empty(inputText) ? (REQUIREDFIELD + ": " + baseLabel) : ""
}

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 doEncrypt (myString) {
	var result = "";
	var i;
	for (i = 0; i < myString.length; i++)
		result += "&#" + myString.charCodeAt(i) + ";";
	return result;
}

function doMailto (to) {
	mailto = doEncrypt("mailto:");
	email = doEncrypt(to);
	anchorText = to
	extra = ""
	subject = ""
	if (doMailto.arguments.length >= 2 && doMailto.arguments[1] != "")
		subject = doEncrypt("?subject=" + doMailto.arguments[1]);
	else
		subject = ""
	if (doMailto.arguments.length >= 3 && doMailto.arguments[2] != "")
		anchorText = doMailto.arguments[2];
	else
		anchorText = to
	if (doMailto.arguments.length == 4 && doMailto.arguments[3] != "")
		extra = doMailto.arguments[3];
	else
		extra = ""
	return '<a extra href="' + mailto + email + subject + '">' + anchorText + "</a>"
}

//	FIELD VALIDATION

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 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 validate_email (id) {
	return simpleCheck(id, /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,})+$/, BAD_EMAIL)
}

function validate_emailList (id) {
	originalValue = document.getElementById(id).value
	document.getElementById(id).value = document.getElementById(id).value.
		replace(/;/g, ",").
		replace(/[, ]+/g, ",").
		replace(/(^[ ,]*|[ ,]*$)/g, "")
	emailList = document.getElementById(id).value.split(",")
	if (emailList.length > 10) {
		document.getElementById(id).value = originalValue
		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) {
			document.getElementById(id).value = originalValue
			return "The e-mail address '" + emailList[i] + "' is not a valid e-mail address.\nPlease check your entry and try again."
	}
	return ""
}

function validate_empty_zipcode (id) {
	return found(getValue(id), /^\d{5}$/) ? "" : BAD_ZIPCODE_US
}

function validate_textarea_max (id, name, max_chars) {
	return getValue(id).length > max_chars ? (name + " must not exceed " + max_chars +
		" characters. (You have entered " + getValue(id).length + ".)") : ""
}

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 (checkFields.arguments.length == 1)
		return invalidField == ""
	if (invalidField != "") {
		alert(message == "" ? REQUIREDFIELD + ": " + fieldLabels[i] : message)
		document.getElementById(invalidField).focus()
		return false
	}
	if (isObject("formSubmitButton"))
		document.getElementById("formSubmitButton").disabled = true
	else if (isObject("submitTD"))
		setTimeout("disableButton()", 10)
	return true
}

function checkForm (myFunc) {
	fieldIDs = Array();
	fieldLabels = Array();
	fieldRequireds = Array();
	fieldValidations = Array();

	myFunc()
	var i
	for (i = 0; i < fieldIDs.length; i++)
		if (getValue(fieldIDs[i]).search(/(https?:\/\/|href=)/) != -1) {
			alert(NO_LINKS)
			document.getElementById(fieldIDs[i]).focus()
			return false
		}
	if (!checkFields())
		return false
	return true
}

//	FOR AJAX

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 fix_url (url) {
	if (window.location.href.search(/^http:\/\/www\./) != -1 && url.search(/^http:\/\/www\./) == -1) {
		url = url.replace(/^http:\/\//, "http://www.")
	}
	if (window.location.href.search(/^http:\/\/www\./) == -1 && url.search(/^http:\/\/www\./) != -1) {
		url = url.replace(/^http:\/\/www\./, "http://")
	}
	return url
}

//	FOR SUBSCRIPTION TO PHP LIST

function subscribe (params) {
	if (
		isObject("subscribe_email")
		&&
		(empty(getValue("subscribe_email")) || validate_email("subscribe_email") != "")
	) {
		alert(BAD_EMAIL)
		document.getElementById("subscribe_email").focus()
		return
	}
	xmlHttp = GetXmlHttpObject()
	if (xmlHttp == null) {
		alert("Your browser does not support AJAX!")
		return
	}
	if (isObject("submitContainer") && isObject("wait")) {
		document.getElementById("submitContainer").style.display = "none"
		document.getElementById("wait").style.display = ""
	}
	var url = "http://www.onejerusalem.org/process_subscribe.php"
	url = fix_url(url)
	xmlHttp.onreadystatechange = subscribe_stateChanged
	xmlHttp.open("POST" , url , true)
	xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded;charset=UTF-8;")
	xmlHttp.send(params)
}

function subscribe_stateChanged () { 
	if (xmlHttp.readyState == 4) {
		if (xmlHttp.responseText.search(/^(OK){1,2}$/) != -1) {
			alert(THANK_YOU_FOR_SUBSCRIBING)
			if (isObject("submitContainer") && isObject("wait")) {
				document.getElementById("wait").style.display = "none"
				document.getElementById("submitContainer").style.display = ""
			}
		}
		else
			document.getElementById("resultDiv").innerHTML = xmlHttp.responseText
	}
}

//	CONTACT	FORM

var contact_wait = -1

function process_contact (params) {
	xmlHttp = GetXmlHttpObject()
	if (xmlHttp == null) {
		alert("Your browser does not support AJAX!")
		return
	}
	if (contact_wait != -1) {
		document.getElementById(contact_wait + "submitContainer").style.display = "none"
		document.getElementById(contact_wait + "wait").style.display = ""
	}
	var url = "http://www.onejerusalem.org/process_contact.php"
	url = fix_url(url)
	xmlHttp.onreadystatechange = contact_stateChanged
	xmlHttp.open("POST" , url , true)
	xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded;charset=UTF-8;")
	xmlHttp.send(params)
}

function contact_stateChanged () { 
	if (xmlHttp.readyState == 4) {
		if (xmlHttp.responseText.search(/CONTACTOK/) != -1) {
			blogName = "Israel News | By One Jerusalem".replace(/\(.*\)$/, "")
			alert(THANK_YOU_FOR_CONTACTING + " " + blogName + ", Israel News By One Jerusalem.")
			pageTracker._trackPageview("/Contact Us Submission");
			if (contact_wait != -1) {
				document.getElementById(contact_wait + "submitContainer").style.display = ""
				document.getElementById(contact_wait + "wait").style.display = "none"
			}
		}
		else if (xmlHttp.responseText.search(/^NOGOOD$/) != -1) {
			alert(PROBLEM)
		}
		else
			document.getElementById("resultDiv").innerHTML = xmlHttp.responseText
	}
}

//	RESIZING VIDEOS

function resize_object (myObject, myProperty, newWidth) {
	currentWidth = parseInt(myProperty.width)
	currentHeight = parseInt(myProperty.height)
	newHeight = newWidth / currentWidth * currentHeight
	myProperty.width = newWidth
	myProperty.height = newHeight
}

function resize_video (myID, newWidth) {
	myParent = document.getElementById(myID)
	if (browserType() == "IE") {
		myInner = myParent.innerHTML.replace(/[\r\n]/g, " ")
		if (myInner.search(/<object.*>.*<embed.*>.*<\/object>/i) != -1) {
			myInner = myInner.replace(/<\/?object.*?>/ig, " ")
			myParent.innerHTML = myInner
		}
	}
	resize_object_type(myParent, newWidth, "object")
	resize_object_type(myParent, newWidth, "embed")
	document.getElementById(myID).style.display = ""
}

function resize_object_type (myParent, newWidth, objectType) {
	myObjects = myParent.getElementsByTagName(objectType)
	var i
	for (i = 0; i < myObjects.length; i++) {
		currentObject = myObjects[i]
		if (objectType == "embed")
			currentObject.wmode = "transparent"
		if (!isnull(currentObject.style.width)) {
			resize_object(currentObject, currentObject.style, newWidth)
		}
		else if (!isnull(currentObject.width)) {
			resize_object(currentObject, currentObject, newWidth)
		}
	}
}


var BAD_EMAILMATCH =		"The two emails you have entered do not match."
var NAME =					"Name"
var WAIT =					"Please wait"
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)

/*	FUNCTIONS USEFUL IN MANY CONTEXTS	*/

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 checkDup (field, table) {
	xmlHttp = GetXmlHttpObject()
	if (xmlHttp == null) {
		return "Your browser does not support AJAX!"
	}
	myValue = getValue(field)
	var url = "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 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))
}

function disableButton () {
	document.getElementById("waitTD").style.display = ""
	document.getElementById("submitTD").style.display = "none"
	wait_loadingDots()
}

var nWaitDots = 1
function wait_loadingDots () {
	nWaitDots++
	if (nWaitDots > 4)
		nWaitDots = 1
	var myString = ""
	var i
	for (i = 0; i < nWaitDots; i++)
		myString += ". "
	document.getElementById("waitDots").innerHTML = myString
	setTimeout("wait_loadingDots()", 300)
}

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 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 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
}

var popupWindow

function openPopupWindow (myWidth, myHeight) {
	myTop = screen.height / 2 - myHeight / 2
	myLeft = screen.width / 2 - myWidth / 2
	popupWindow = window.open("", "popupWindow", "top=" + myTop + ",left=" + myLeft + ",height=" + myHeight + ",width=" + myWidth + "," +
		"location=no,resizable=no,titlebar=no,menubar=no,scrollbars=no,toolbar=no")
	popupWindow.focus()
}

function validate_message (id) {
	return getValue(id).length > 500 ? "Message may not exceed 500 characters in length." : ""
}

function friend_stateChanged () { 
	if (xmlHttp.readyState == 4) {
		if (xmlHttp.responseText == "OK") {
			alert("Thank you. A link to this page has been sent.")
			didSave = true
		}
		else
			alert(xmlHttp.responseText)
	}
}

function recommend () {
	xmlHttp = GetXmlHttpObject()
	if (xmlHttp == null) {
		alert("Your browser does not support AJAX!")
		return
	}
	var url = "http://www.onejerusalem.org/mail.php"
	xmlHttp.onreadystatechange = friend_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 +
		"&url=" + window.location.href +
		"&title=" + document.title
	)
}

/*	FUNCTIONS SPECIFIC TO 1J	*/

/*	1. PETITION RELATED	*/

function updateCheckboxHidden_consolidated (myObject, myID) {
	document.getElementById(myID + "Value_consolidated").value = myObject.checked ? "yes" : "no"
}

function checkPetitionFields_consolidated () {
	if (getValue("petition_email").search(/^\s*$/) != -1 || validate_email("petition_email") != "") {
		alert(BAD_EMAIL)
		document.getElementById("petition_email").focus()
		return false
	}
	if (getValue("petition_name") == "Name" || getValue("petition_name").search(/^\s*$/) != -1) {
		alert(REQUIRED + ": " + NAME)
		document.getElementById("petition_name").focus()
		return false
	}
	if (document.getElementById("petition_country").selectedIndex == 0) {
		alert(REQUIRED + ": " + COUNTRY)
		document.getElementById("petition_country").focus()
		return false
	}
	myCheckboxes = document.getElementById("checkbox_parent").document.getElementsByTagName("input")
	var i
	var no_checked = true
	for (i = 0; i < myCheckboxes.length; i++) {
		if (myCheckboxes[i].type == "checkbox" && myCheckboxes[i].checked) {
			no_checked = false
			break
		}
	}
	if (no_checked) {
		alert(ONEOPTION)
		return false
	}
	document.getElementById("consolidated_submit_container").innerHTML = WAIT + "..."
	return true
}

/*	2. THREE FORMS ON THE SIDEBAR */

function make_internal_form (myDiv) {
	document.getElementById("act_now_area").innerHTML = document.getElementById(myDiv).innerHTML
}

function restore_icons () {
	document.getElementById("act_now_area").innerHTML = document.getElementById("icons_div").innerHTML
	sfHover()
}

var wait_div

function inner_wait_loadingDots () {
//	if (document.getElementById("xxxx").style.display == "none")
//		return
	nWaitDots++
	if (nWaitDots > 4)
		nWaitDots = 1
	var myString = ""
	var i
	for (i = 0; i < nWaitDots; i++)
		myString += ". "
	document.getElementById("waitDots_" + wait_div).innerHTML = myString
	setTimeout("inner_wait_loadingDots()", 300)
}

function generate_mail (submit_div, url, post_string) {
	document.getElementById("waitTD_" + submit_div).style.display = ""
	document.getElementById("submitTD_" + submit_div).style.display = "none"
	wait_div = submit_div
	inner_wait_loadingDots()
	xmlHttp = GetXmlHttpObject()
	if (xmlHttp == null) {
		alert("Your browser does not support AJAX!")
		return
	}
	xmlHttp.onreadystatechange = inner_form_stateChanged
	xmlHttp.open("POST" , url , true)
	xmlHttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded;charset=UTF-8;')
	xmlHttp.send(post_string)
}

function inner_form_stateChanged () { 
	if (xmlHttp.readyState == 4) {
		if (xmlHttp.responseText == "OK") {
			document.getElementById("act_now_area").innerHTML = document.getElementById("thank_you_div").innerHTML
		}
		else
			alert(xmlHttp.responseText)
	}
}

function reset_fields () {
	fieldIDs = Array()
	fieldLabels = Array()
	fieldRequireds = Array()
	fieldValidations = Array()
}

function process_friend () {
	reset_fields()
	addField("fromEmail_friend", "Your Email", true, "email", 50)
	addField("fromName_friend", "Your Name", true, "", 50)
	addField("toEmail", "Friend's Email", true, "emailList", 250)
	addField("message_friend", "dummy", false, "message", "")
	if (checkFields())
		generate_mail("friend", "http://www.onejerusalem.org/process_tellFriend.php",
			"fromEmail=" + getValue("fromEmail_friend")
			+ "&fromName=" + getValue("fromName_friend")
			+ "&message=" + getValue("message_friend")
			+ "&toEmail=" + getValue("toEmail")
			+ "&url=" + getValue("url")
			+ "&title=" + getValue("title")
		)
}

function process_volunteer () {
	reset_fields()
	addField("fromEmail_volunteer", "Your Email", true, "email", 50)
	addField("fromName_volunteer", "Your Name", true, "", 50)
	addField("volunteer", "Volunteer for", false, "", "")
	addField("message_volunteer", "dummy", false, "message", "")
	if (checkFields())
		generate_mail("volunteer", "http://www.onejerusalem.org/sendMail.php",
			"subject=" + "OneJerusalem :: Volunteer"
			+ "&fromEmail=" + getValue("fromEmail_volunteer")
			+ "&fromName=" + getValue("fromName_volunteer")
			+ "&message=" + getValue("message_volunteer")
			+ "&volunteer=" + getValue("volunteer")
		)
}

function process_report () {
	reset_fields()
	addField("fromEmail_report", "Your Email", true, "email", 50)
	addField("fromName_report", "Your Name", true, "", 50)
	addField("youtube", "Youtube Link", true, "", 25)
	addField("message_report", "dummy", false, "message", "")
	if (checkFields())
		generate_mail("report", "http://www.onejerusalem.org/sendMail.php",
			"subject=" + "OneJerusalem :: Record & Report"
			+ "&fromEmail=" + getValue("fromEmail_report")
			+ "&fromName=" + getValue("fromName_report")
			+ "&message=" + getValue("message_report")
			+ "&youtube=" + getValue("youtube")
		)
}

/*	3. SUBCRIBE TO PHP LISTS	*/

function subscribe_stateChanged () { 
	if (xmlHttp.readyState == 4) {
		if (xmlHttp.responseText.search(/^(OK){1,2}$/) != -1) {
			alert("Thank you for signing.")
			didSave = true
		}
		else
			document.getElementById("resultDiv").innerHTML = xmlHttp.responseText
	}
}

function submit_info (email, name, language, religion, country, sendUpdateValue, sendJerusalemValue, sendTempleValue) {
	xmlHttp = GetXmlHttpObject()
	if (xmlHttp == null) {
		alert("Your browser does not support AJAX!")
		return
	}
	var url = "http://www.onejerusalem.org/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
		+ "&petition_name=" + name
		+ "&sCurrentLanguage=" + language
		+ "&foreign_religion=" + religion
		+ "&petition_country=" + country
		+ "&sendUpdateValue_consolidated=" + sendUpdateValue
		+ "&sendJerusalemValue_consolidated=" + sendJerusalemValue
		+ "&sendTempleValue_consolidated=" + sendTempleValue
	)
}

function join_now () {
	if (validate_email("top_email") != "") {
		alert("Please enter a valid email address.")
		document.getElementById("top_email").focus()
		return
	}
	submit_info(
		document.getElementById("top_email").value,
		"",
		"English",
		"",
		"",
		"yes",
		"no",
		"no"
	)
}