var MSG_REQ_FIELD           = 'خيار لابد منه %1';
var MSG_MIN_LENGTH			= 'حرف %1 لابد ان لا تقل عن %2';
var MSG_MAX_LENGTH			= '%1 لابد ان لا تزيد عن %2 حرف';
var MSG_INVALID_EMAIL       = 'هذاالبريد الالكتروني غير صحيح :%1';
var MSG_REQUIRED_SELECT		= 'الرجاء الاختيار :%1';
var MSG_ALPHA_NUMERIC		= 'تحتوي على احرف او ارقام فقط %1';
var MSG_NUMERIC             = ' تحتوي على ارقام فقط %1';
var MSG_TWO_FIELDS			= 'تكون متطابقة %1 و %2 لابد ان';
var MSG_NOT_TWO_FIELDS      = '%1 تختلف عن %2 لابد ان';
var MSG_0 = 'صفر';
var MSG_1 = 'واحد';
var MSG_2 = 'اثنين';
var MSG_3 = 'ثلاثة';
var MSG_4 = 'اربعة';
var MSG_5 = 'خمسة';
var MSG_6 = 'ستة';
var MSG_7 = 'سبعة';
var MSG_8 = 'ثمانية';
var MSG_9 = 'تسعة';


function validateMaxLength(field, name, maxLength) {
	var value = field.value;
	var originalVal = value;	//store a copy with the \n's in it
	var newVal = "";	//new value with any extra characters removed from it so as not to go over maxLength
	var character = null;
	value = value.replace(/\n/g,'**'); // bug #4830 when the javascript validates it sees \n's and java validates it sees \r\n's so a string may pass javascript validation but fail java validation, solution validate on a copy of the string with all \n's replaced with 2 characters to simulate the java length

	if (value.length > maxLength)
	{
		//loop through the string getting one character at a time.
		//If we encounter a \n we have to count it as 2 characters due to bug #4830
		for(var i=0, count=1; count<=maxLength; i++, count++){
				character = originalVal.charAt(i);

				//if this is a new line char make sure we have 2 spaces available in the new string
				if(character == "\n" && count<=maxLength-1){
					newVal = newVal.concat(character);
					count++;
				}else{
					newVal = newVal.concat(character);
				}
		}

		if(maxLength == 0){maxLength = MSG_0;}
		if(maxLength == 1){maxLength = MSG_1;}
		if(maxLength == 2){maxLength = MSG_2;}
		if(maxLength == 3){maxLength = MSG_3;}
		if(maxLength == 4){maxLength = MSG_4;}
		if(maxLength == 5){maxLength = MSG_5;}
		if(maxLength == 6){maxLength = MSG_6;}
		if(maxLength == 7){maxLength = MSG_7;}
		if(maxLength == 8){maxLength = MSG_8;}
		if(maxLength == 9){maxLength = MSG_9;}
		var msg = MSG_MAX_LENGTH.replace('%1', name);
		msg = msg.replace('%2', maxLength);
		alert(msg);
		try{
			//substitute in the shortened string into the field.
			field.value = newVal;
			field.focus();
		}catch(e){}
		return false;
	}
	return true;
}

function validateMinLength(field, name, minLength) {
	if (field.value.length < minLength) {
		if(minLength == 0){minLength = MSG_0;}
		if(minLength == 1){minLength = MSG_1;}
		if(minLength == 2){minLength = MSG_2;}
		if(minLength == 3){minLength = MSG_3;}
		if(minLength == 4){minLength = MSG_4;}
		if(minLength == 5){minLength = MSG_5;}
		if(minLength == 6){minLength = MSG_6;}
		if(minLength == 7){minLength = MSG_7;}
		if(minLength == 8){minLength = MSG_8;}
		if(minLength == 9){minLength = MSG_9;}
		var msg = MSG_MIN_LENGTH.replace('%1', name);
		msg = msg.replace('%2', minLength);
		alert(msg);
		try{field.focus();}catch(e){}
		return false;
	}
	else {
		return true;
	}
}

function nonEmptyDependency(field1, field1Name, field2, field2Name, message) {
	if(!isEmpty(field1) && isEmpty(field2)){
		alert(message);
		return false;
	}else{
		return true;
	}
}

function validateRequiredField(field, name, dv) {
	try
	{
		field.value = field.value.trim();
		dv = dv.trim();
	}
	catch(e) {}

	if (field.value.length == 0 || field.value == dv)
	{
		alert(MSG_REQ_FIELD.replace('%1', name));
		try{field.focus();}catch(e){}
		return false;
	}
	return true;
}

function validateEmailField(emailField, name) {
	if (isEmpty(emailField)) return true;
	if (!checkEmail(emailField.value)) {
		alert(MSG_INVALID_EMAIL.replace('%1', emailField.value));
		try{emailField.focus();}catch(e){}
		return false;
	}
	return true;
}

function validateRequiredCheckbox(field, name, msg) {
	if (!isCheckBoxChecked(field)) {
		alert(msg.replace('%1', name));
		try{field.focus();}catch(e){}
		return false;
	}
	return true;
}

function validateRequiredSelect(field, name, defaultValue) {
	if (field.value == null || field.value == '' || field.value == defaultValue) {
		alert(MSG_REQUIRED_SELECT.replace('%1', name));
		try{field.focus();}catch(e){}
		return false;
	}
	else {
		return true;
	}
}

function validateTwoFields(field,name,field2,name2) {
	if (field.value != field2.value){
		var msg = MSG_TWO_FIELDS.replace('%1', name);
		msg = msg.replace('%2', name2);
		alert(msg);
		try{field.focus();}catch(e){}
		return false;
	}
	return true;
}

function validateNotTwoFields(field,name,field2,name2) {
	if (field.value == field2.value){
		var msg = MSG_NOT_TWO_FIELDS.replace('%1', name);
		msg = msg.replace('%2', name2);
		alert(msg);
		try{field.focus();}catch(e){}
		return false;
	}
	return true;
}

function validateAlphaNumeric(field, name) {
	var mask = /^[_0-9a-zA-Z\u0600–\u06FF\u00A1-\uFFFF-\.]*[_0-9a-zA-Z\u0600–\u06FF\u00A1-\uFFFF-\.]$/
	if (!mask.test(field.value)) {
		alert(MSG_ALPHA_NUMERIC.replace('%1', name));
		try{field.focus();}catch(e){}
		return false;
	}
	return true;
}

function validateAlphaNumeric_search(field, name) {
	var mask = /^[_0-9a-zA-Z\u0600–\u06FF\u00A1-\uFFFF-\.]*[_0-9a-zA-Z\u0600–\u06FF\u00A1-\uFFFF-\.]$/
	if (!mask.test(field.value)) {
		alert(MSG_ALPHA_NUMERIC.replace('%1', name));
		try{field.focus();}catch(e){}
		return false;
	}
	return true;
}

function validateNumeric(field, name) {
	var val = trim(field.value);
	field.value = val;
	var mask = /^-?[0-9]*(\.)?[0-9]*$/
	if (!mask.test(val)) {
		alert(MSG_NUMERIC.replace('%1', name));
		try{field.focus();}catch(e){}
		return false;
	}
	return true;
}

function isEmpty(field) {

	if (field.disabled){return true;}



	if (field.type=='checkbox'||(field[0]&&field[0].type == 'checkbox')) {

		return !isCheckBoxChecked(field);

	}

	if (field.type=='radio'||(field[0]&&field[0].type == 'radio')) {

		return !isCheckBoxChecked(field);

	}

	//Try trim - will fail for input type="file".

	try

	{

		field.value = field.value.trim();

	}

	catch(e) {}

	if (field.value.length == 0) {

		return true;

	}

}

function isCheckBoxChecked(field) {

	if (field[0]) {

		for (i = 0;i<field.length;i++) {

			theField = field[i];

			if (theField.checked) {

				return true;

			}

		}

		return false;

	} else {

		if (!field.checked) {

			return false;

		}

	}

	return true;

}

function setFocus(form,field) {

	if (form != '') {

		try	{document.forms[form][field].focus();} catch(e) {}

	}

	else {

		try	{document.forms[0][field].focus();} catch(e) {}

	}

}

function giveFocus(frm, elm) {

  eval("document."+frm+"."+elm+".focus()");

}

function winpop(loc,w,h,scroll) {

	var name = loc.replace(/\W/g, "");

	window.open(loc,name,'width='+w+', height='+h+', location=no, directories=no, menubar=no, scrollbars='+scroll+', resizable=no, status=no, toolbar=no');

}



function getById(tag) {

  if (document.getElementById) //  Netscape, Mozilla, etc.

  {

	return document.getElementById(tag);

  }

  else if (document.all)      //  IE, Konqueror, etc.

  {

	return document.all[tag];

  }

}

function switchdiv(div1_id, div2_id, form) {

	if (document.getElementById)	{

		if(!document.getElementById(div1_id)) return ;

		if(!(document.getElementById(div1_id).style)) return ;

		if(!(document.getElementById(div1_id).style.display)) return ;



		var state1 = document.getElementById(div1_id).style.display;

		if(state1=="none") {

				document.getElementById(div1_id).style.display="block";

				document.getElementById(div2_id).style.display="none";

				if (form != null)

				{

				   form[div1_id].value='true';

				   form[div2_id].value='false';

				 }

		 }

		if(state1=="block") {

				document.getElementById(div2_id).style.display="block";

				document.getElementById(div1_id).style.display="none";

				if (form != null)

				{

				   form[div1_id].value='false';

				   form[div2_id].value='true';

				 }

		 }

	}

	else if (document.all)	{

		if(!document.all[div1_id]) return ;

		if(!(document.all[div1_id].style)) return ;

		if(!(document.all[div1_id].style.display)) return ;



		var state1 = document.all[div1_id].style.display;

		if(state1=="none") {

				document.all[div1_id].style.display = "block";

				document.all[div2_id].style.display = "none";

				if (form != null)

				{

				   form[div1_id].value='true';

				   form[div2_id].value='false';

				 }

		}

		if(state1=="block") {

				document.getElementById(div1_id).style.display="none";

				document.getElementById(div2_id).style.display="block";

				if (form != null)

				{

				   form[div1_id].value='false';

				   form[div2_id].value='true';

				 }

		 }

	}

}

function getRefToDiv(divID) {

	if( document.layers ) { //Netscape layers

		return document.layers[divID]; }

	if( document.getElementById ) { //DOM; IE5, NS6, Mozilla, Opera

		return document.getElementById(divID); }

	if( document.all ) { //Proprietary DOM; IE4

		return document.all[divID]; }

	if( document[divID] ) { //Netscape alternative

		return document[divID]; }

	return false;

}

function characterCounter(fieldName, maxLength, elementName) {

	var field = getById(fieldName);

	var value = field.value.replace(/\n/g,'**'); // bug #4830 when the javascript validates it sees \n's and java validates it sees \r\n's so a string may pass javascript validation but fail java validation, solution validate on a copy of the string with all \n's replaced with 2 characters to simulate the java length

	getById(elementName).innerHTML = value.length;

}

function trim(str) {

	str = new String(str);

	return str.replace(/^\s+/,'').replace(/\s+$/,'');

}

function submitForm(form, action) {

	form.action = action;

	form.submit();

}

var gOnload = new Array();

function addOnload(f) {



	if (window.onload)

	{

		if (window.onload != runOnload)

		{

			gOnload[0] = window.onload;

			window.onload = runOnload;

		}

		gOnload[gOnload.length] = f;

	}

	else

		window.onload = f;

}

function runOnload() {

	for (var i=0;i<gOnload.length;i++)

		gOnload[i]();

}

function checkEmail(emailStr) {

	var emailPat=/^(.+)@(.+)$/;

	var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]!%";

	var validChars="\[^\\s" + specialChars + "\]";

	var quotedUser="(\"[^\"]*\")";

	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;

	var atom=validChars + '+';

	var word="(" + atom + "|" + quotedUser + ")";

	var userPat=new RegExp("^" + word + "(\\." + word + ")*$");

	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");



	var matchArray=emailStr.match(emailPat);



	if (matchArray==null) {

		return false;

	}

	var user=matchArray[1];

	var domain=matchArray[2];

	for (i=0; i<user.length; i++) {

		if (user.charCodeAt(i)>127) {

			return false;

		}

	}

	for (i=0; i<domain.length; i++) {

		if (domain.charCodeAt(i)>127) {

			return false;

		}

	}

	if (user.match(userPat)==null) {

		return false;

	}



	var IPArray=domain.match(ipDomainPat);

	if (IPArray!=null) {

		for (var i=1;i<=4;i++) {

			if (IPArray[i]>255) {

				return false;

			}

		}

		return true;

	}



	var atomPat=new RegExp("^" + atom + "$");

	var domArr=domain.split(".");

	var len=domArr.length;

	for (i=0;i<len;i++) {

		if (domArr[i].search(atomPat)==-1) {

			return false;

		}

	}

	if (domArr[len-1].length < 2) {

		return false;

	}

	if (len<2) {

		return false;

	}

	/*mask=/^(root|abuse|webmaster|help|postmaster|sales|resumes|contact|advertising|spam|spamtrap|nospam|noc|admin|support|daemon|listserve|listserver|autoreply)@/i;

	if (mask.test(emailStr.toLowerCase())) {

		return false;

	}*/



	return true;

}

function updateDay(change,formName,yearName,monthName,dayName)

{

	var form = document.forms[formName];

	var yearSelect = form[yearName];

	var monthSelect = form[monthName];

	var daySelect = form[dayName];

	var year = yearSelect[yearSelect.selectedIndex].value;

	var month = monthSelect[monthSelect.selectedIndex].value;

	var day = daySelect[daySelect.selectedIndex].value;



	if (change == 'month' || (change == 'year' && month == 2))

	{

		var i = 31;

		var flag = true;

		while(flag)

		{

			var date = new Date(year,month-1,i);

			if (date.getMonth() == month - 1)

			{

				flag = false;

			}

			else

			{

				i = i - 1;

			}

		}



		daySelect.length = 0;

		daySelect.length = i;

		var j = 0;

		while(j < i)

		{

			daySelect[j] = new Option(j+1,j+1);

			j = j + 1;

		}

		if (day <= i)

		{

			daySelect.selectedIndex = day - 1;

		}

		else

		{

			daySelect.selectedIndex = daySelect.length - 1;

		}

	}

}

function checkedCount(field) {

	var	checked	= 0;



	if (field != null) {

		if (field.length == null)

		{

			if (field.checked == true)

			{

				checked++;

			}

		}

		else

		{

			for	(var i = 0 ; i < field.length	; i++)

			{

				if (field[i].checked == true)

				{

					checked++;

				}

			}

		}

	}



	return checked;

}

function isChecked(field) {

	if (checkedCount(field) == 0)

	{

		return false;

	}

	return true;

}

function isOneChecked(field) {

	if (checkedCount(field) == 1)

	{

		return true;

	}

	return false;

}





