// set functions to work with a forms																			//
// writed by Leonid Volkov /leon@catom.com/, Minicy Catom Ltd. /www.catom.com/	//
// v. 2.2, jul. 20 2004		corrected 16 nov. 2004														//

/////////// standard trim function - clean spaces, tabs and new line symbols at the beginning and the end of the string ////////
function trim(str)
{
	var lead = 0, trail = str.length - 1;	
	while(str.charCodeAt(lead)  < 33) lead++;
	while(str.charCodeAt(trail)  < 33) trail--;
	return lead > trail ? '' : str.substring(lead, trail + 1);
}

////////// Check the Search forms //////////////
function checkSearch(frmObj)
{
	for (i=0; i<frmObj.length; i++)
	{
		if (frmObj[i].type.indexOf('text') == 0)
		{
			frmObj[i].value = trim(frmObj[i].value);
			if (frmObj[i].value.length == 0 || frmObj[i].value == 'Site Search' || frmObj[i].value == 'חיפוש באתר')
			{
				alert('Please type the keyword to search');
				frmObj[i].focus();
				frmObj[i].select();
				return false;
			}
		}
	}
	return true;
}

////////// Check the Login forms //////////////
function checkLogin(frmObj)
{
	for (i=0; i<frmObj.length; i++)
	{
		if (frmObj[i].type.indexOf('text') == 0 || frmObj[i].type.indexOf('password') == 0)
		{
			frmObj[i].value = trim(frmObj[i].value);
			if (frmObj[i].value.length == 0)
			{
				if (frmObj[i].type.indexOf('text') == 0)
				{
					alert('Please type the username');
					frmObj[i].focus();
					frmObj[i].select();
					return false;
				}
				else if (frmObj[i].type.indexOf('password') == 0)
				{
					alert('Please type the password');
					frmObj[i].focus();
					frmObj[i].select();
					return false;
				}
			}
		}
	}
	return true;
}

function loginManualSubmit(frmObj) { if (checkLogin(frmObj)) frmObj.submit(); }

////////// Check all other forms //////////////
function isValidEmail(strEmail)
{
	 if (strEmail.indexOf('@') <= 0 || strEmail.indexOf('.') <= 0) 
	{
		alert('!נא להכניס כתובת דואר תיקנית');
		return false;
	}
	return true;
}

function isValidPhone(strPhone) 
{
	var goodChars = "0123456789()-+\/ ";
	var i = 0;
	for (i =0; i < strPhone.length; i++)
	{
		if (goodChars.indexOf(strPhone.charAt(i)) == -1)
		{
			alert('!נא להכניס מספר טלפון תיקני');
			return false;
		} 
	}
	if (strPhone.length < 6)
	{
		alert('Please type a full phone number!');
		return false;
	}
	return true;
}

function isNumber(strNumber) 
{
	var goodChars = "0123456789 ";
	var i = 0;
	for (i =0; i < strNumber.length; i++)
	{
		if (goodChars.indexOf(strNumber.charAt(i)) == -1)
		{
			alert('Please type a valid number!');
			return false;
		} 
	}
	return true;
}

function isHumanName(strName) 
{
	var notGoodChars = "0123456789!@#$%^&*()_+=<>?/.,\|~`\"[]";
	var i = 0;
	for (i =0; i < strName.length; i++)
	{
		if (notGoodChars.indexOf(strName.charAt(i)) != -1)
		{
			alert('!בדוק את השדה');
			return false;
		} 
	}
	return true;
}

function isCompanyName(strName) 
{
	var notGoodChars = "0123456789!@#$%^&*()_+=<>?/.,\|~`\[]";
	var i = 0;
	for (i =0; i < strName.length; i++)
	{
		if (notGoodChars.indexOf(strName.charAt(i)) != -1)
		{
			alert('!בדוק את  השדה');
			return false;
		} 
	}
	return true;
}

function isValidCVFileName(fileName) 
{
	var strExt = fileName.substring(fileName.length - 4, fileName.length);
	strExt = strExt.toLowerCase();
	if (strExt != ".txt" && strExt != ".rtf" && strExt != ".doc" && strExt != ".pdf")
	{
		alert('Please send a file in one of the following formats: \n \".txt\", \".rtf\", \".doc\", \".pdf\"!');
		return false;
	} 
	return true;
}

function containValidChars(curField)
{
	var curName = curField.name;
	if (curName.indexOf('Email') != -1)
	{
		return isValidEmail(curField.value);
	}
	else if (curName.indexOf('Phone') != -1 || curName.indexOf('Fax') != -1 || curName.indexOf('Cell') != -1)
	{
		return isValidPhone(curField.value);
	}
	else if (curName.indexOf('Number') != -1)
	{
		return isNumber(curField.value);
	}
	else if (curName.indexOf('CD_Name') != -1 )
	{
		return isCompanyName(curField.value);
	}
	else if (curName.indexOf('_Name') != -1 || curName.indexOf('FullName') != -1 || curName.indexOf('FirstName') != -1 || curName.indexOf('FamilyName') != -1 || curName.indexOf('LastName') != -1 || curName.indexOf('FromName') != -1 || curName.indexOf('ToName') != -1)
	{
		return isHumanName(curField.value);
	}
	
	else if (curName.indexOf('_CV') != -1)
	{
		return isValidCVFileName(curField.value);
	}
	return true;
}

function showAlert()
{
	strAlert = '.אנא הכנס את המידע הדרוש';
	alert(strAlert);
}

function checkForm(frmObj)
{
	var found;
	var i, ii;
	var curField, curName, curType;
	var strReq = '_req';// Must be included in the "name" attribute of a "input" or "textarea" tag
	var isFilled, isRequired;
	var passCounter = 0;
	var passField1;

	with(frmObj)
	{
		for (i = 0; i < elements.length; i++)
		{
			//alert(elements[i].name);
			if (elements[i].tagName != 'FIELDSET' && !elements[i].disabled)
			{
				curField = elements[i];
				curField.value = trim(curField.value);
				curName = curField.name;
				curType = curField.type;
				isFilled = curField.value != '' ? true : false;
				isRequired = String(curField.getAttribute('IsMandatory')).toUpperCase() == 'TRUE'

				if(curType == 'text' && isFilled && !containValidChars(curField))
				{
						curField.focus();
						curField.select();
						return false;
						break;
				}
				else if (elements[curName].length && isRequired &&  (curType == 'radio' || curType == 'checkbox'))
				{
					found = 0;
					for (ii = 0; ii < elements[curName].length; ii++)
					{
						if (elements[curName][ii].checked)
						{
							found = 1;
							break;
						}
					}
					if (found == 0)
					{
						showAlert();
						elements[curName][0].focus();
						elements[curName][0].click();
						return false;
						break;
					}
				}
				else if (isRequired && curType == 'select-one')
				{
					if (curField.selectedIndex == 0)
					{
						showAlert(curField);
						curField.focus();
						return false;
						break;
					}
				}
				else if (curType == 'select-multiple')
				{
					if (isRequired && curField.selectedIndex == -1)
					{
						showAlert(curField);
						curField.focus();
						return false;
						break;
					}
				}
				else if (isRequired && (curType == 'text' || curType == 'textarea' || curType == 'password'))
				{
					if (!isFilled)
					{
						showAlert();
						curField.focus();
						return false;
						break;
					}
				}
				else if(curType == 'file' && isFilled && !containValidChars(curField))
				{
						curField.focus();
						curField.select();
						return false;
						break;
				}
				if (curType == 'password' && passCounter == 0)
				{
					passCounter++;
					passField1 = curField;
				}
				else if (curType == 'password' && passCounter == 1)
				{
					if (passField1.value != curField.value)
					{
						alert('The entered passwords do not match.\nPlease re enter them.');
						curField.value = "";
						passField1.focus();
						passField1.select();
						return false;
						break;
					}
				}
			}
		}
	}
	return true;
}

function manualSubmit(frmObj)
{
	if(checkForm(frmObj))
	{
		frmObj.submit();
	}
}

function manualReset(frmObj)
{
	frmObj.reset();
}
//////////////// if the user check/uncheck 'All' checkbox ////////////////
function switchBoxesGroup(boxObj)
	{
		var status = boxObj.checked;
		var parentObj = boxObj.form[boxObj.name];

		for(var i=1; i<parentObj.length; i++)
		{
			parentObj[i].checked = status;
			parentObj[i].disabled = status;
		}
	}
//////////////// Setup - called on window.onload in init() function /////////////////////
function buttonsMouseEventHandler()
{
	if (!document.layers && document.forms && document.forms.length)
	{
		var i, ii;
		var curElem;
		var strTypes = 'button submit reset';
		for  (i = 0;i < document.forms.length; i++)
		{
			for (ii =0; ii < document.forms[i].length; ii++)
			{
				curElem = document.forms[i][ii];
				if (curElem.className && strTypes.indexOf(curElem.type) != -1)
				{
					curElem.onmouseover = curElem.onfocus = buttonOver;
					curElem.onmouseout = curElem.onblur = buttonOut;
				}
			}
		}
	}
}
function buttonOver() {if (this.className.indexOf('Over') == -1) this.className += 'Over'}
function buttonOut() {if (this.className.indexOf('Over') != -1) this.className = this.className.substring(0,this.className.indexOf('Over'))}
///////////// set focus to the first text field of the first form on page //////////////
function setFocusToField()
{
	if (!document.layers && document.forms && document.forms.length)
	{
		var frmObj = document.forms[0]; 
		for (i=0; i<frmObj.length; i++)
		{
			if (frmObj[i].type == 'text' && !frmObj[i].disabled)
			{
				frmObj[i].focus();
				break;
			}
		}
	}
}

////////////// onload function ///////////////////////////////////////
function init()
{
	buttonsMouseEventHandler();
	setFocusToField();
}
//window.onload = init;


function toggleGroup(objCheckBox, strGroupId)
{
	var arrAddressInputs = document.getElementById(strGroupId).getElementsByTagName('INPUT');
	for (var i = 0; i < arrAddressInputs.length ; i++ )
	{
		arrAddressInputs[i].disabled = objCheckBox.checked;
		arrAddressInputs[i].style.backgroundColor = objCheckBox.checked ? '#eeeeee' : '#ffffff';
	}
}