//-----------------------------------------------------------------  other functions : ---------------------------------

var win=null;
var helperInnerText;
var isNetscape=(document.all)?0:1;//checks if NN or IE

// Create a cookie with the specified name and value.
function SetCookie(sName, sValue)
{
  date = new Date();
  //date = new Date(date.getFullYear()+5,1,1,1,0,0,0);
  document.cookie = sName + "=" + escape(sValue) + "; expires=" + date.toGMTString();
}

function DelCookie(sName)
{
  document.cookie = sName + "=" + escape(sValue) + "; expires=Fri, 31 Dec 1999 23:59:59 GMT;";
}

function GetCookie(sName)
{
  // cookies are separated by semicolons
  var aCookie = document.cookie.split("; ");
  for (var i=0; i < aCookie.length; i++)
  {
    // a name/value pair (a crumb) is separated by an equal sign
    var aCrumb = aCookie[i].split("=");
    if (sName == aCrumb[0]) 
      return unescape(aCrumb[1]);
  }

  // a cookie with the requested name does not exist
  return null;
}




function test(a)
{
	alert(a) ;
} 

function printArray()
{
	var helpWindowHeader = "<HTML><HEAD><TITLE>חלון עזרה</TITLE><BODY>"
	var helpWindowFooter = "<br><div align=center><center><form><input type=button value='סגור' onClick='window.close()'></form></center></div></BODY><HTML>"

	//var doc = win.document
	//doc.clear;
	//doc.write(helpWindowHeader);

	strOut = '<table align=center width=200 border=0 cellspacing=0 cellpadding=0>';
	for (j=0;j<printArray.arguments.length;j+=2)
	{

		strOut=strOut + '<tr><td align=center><font size=-1 color=#9B001B><b><u>' + (printArray.arguments[j+1])+ '</u></b></font><br><br></td></tr>';
		//strOut=strOut + '-----------------------------' + String.fromCharCode(13);
		for(i=0;i<printArray.arguments[j].length;i++)
		{
			strOut=strOut + '<tr><td align=right valign=top><font size=-1><b>' + (printArray.arguments[j])[i] + '</font></b></td></tr>';
		}
		strOut=strOut + '<tr><td>&nbsp</td></tr>';
	}
	strOut = strOut + '</table>';
	//return overlib(strOut, CAPTION,'הרזע ןולח', FIXX, 3, FIXY, 3 );
	helperInnerText = strOut;
	if (isNetscape)
	{
		if (win != null && !win.closed)
		{
			win.close();
		}
		win = window.open("../common/HelperWindow.asp", "HelpWindow", "width=240, height=250, scrollbars=1, alwaysRaised=1, dependent=1");
		win.focus();
	}
	else
	{
		window.showModalDialog("../common/HelperWindow.asp",helperInnerText,"dialogHeight: 250px; dialogWidth: 240px; scroll: yes; help: no; status: no; unadorned: no; edge: raised; ");
	}
}

//function printArray()
//{
//	strOut = '';
//	for (j=0;j<printArray.arguments.length;j+=2)
//	{
//		strOut=strOut + (printArray.arguments[j+1])+ String.fromCharCode(13);
//		strOut=strOut + '-----------------------------' + String.fromCharCode(13);
//		for(i=0;i<printArray.arguments[j].length;i++)
//		{
//			strOut=strOut + (printArray.arguments[j])[i] + String.fromCharCode(13);
//		}
//		strOut=strOut + String.fromCharCode(13);
//	}
//	alert(strOut);
//}


//This function checks that related select more or equals
//to the source select (like in months - to:from)
//form should be called "UserProperties"
function alterRelatedSelect(sourceSelectName, destSelectName,changedSelName)
{
	var sourceInd = self.document.UserProperties(sourceSelectName).selectedIndex;
	var destInd = self.document.UserProperties(destSelectName).selectedIndex;
	var destLength = self.document.UserProperties(destSelectName).options.length;

	if (destInd<sourceInd)
	{
		if (changedSelName==sourceSelectName)
		{
			self.document.UserProperties(destSelectName).selectedIndex = destLength-1;
		}
		else
		{
			self.document.UserProperties(sourceSelectName).selectedIndex = destInd;
		}

	}

	sourceInd = self.document.UserProperties(sourceSelectName).selectedIndex;
	destInd = self.document.UserProperties(destSelectName).selectedIndex;


	if (destInd>0 && sourceInd==0 && changedSelName==destSelectName)
	{
		self.document.UserProperties(sourceSelectName).selectedIndex = 1;
	}

	if (destInd>0 && sourceInd==0 && changedSelName==sourceSelectName)
	{
		self.document.UserProperties(destSelectName).selectedIndex = 0;
	}
}//end of alterRelatedSelect()


//this function get offValue as first param. and current value as second one
//it turns on all other form elements in UserProperties Form
function turnOnOff()
{
	var offValue=turnOnOff.arguments[0];
	var curValue=turnOnOff.arguments[1];

	var j;

	//alert('Current value - ' + curValue);
	//alert('Off value - ' + offValue);
	//alert(curValue==offValue);
	for (j=2;j<turnOnOff.arguments.length;j++)
	{
		if (curValue==offValue)
		{
			self.document.UserProperties(turnOnOff.arguments[j]).readOnly = true;
			self.document.UserProperties(turnOnOff.arguments[j]).disabled = true;
			self.document.UserProperties(turnOnOff.arguments[j]).value="";
		}
		else
		{
			self.document.UserProperties(turnOnOff.arguments[j]).readOnly = false;
			self.document.UserProperties(turnOnOff.arguments[j]).disabled = false;
		}

	}
}

function turnOnOff_checkbox()
{
	var onValue=turnOnOff_checkbox.arguments[0];
	var curValue=turnOnOff_checkbox.arguments[1];
	var j;

	for (j=2;j<turnOnOff_checkbox.arguments.length;j++)
	{
		if (curValue==onValue)
		{
			self.document.UsrMifForm(turnOnOff_checkbox.arguments[j]).disabled = false;
			self.document.UsrMifForm(turnOnOff_checkbox.arguments[j]).readonly = false;
		}
		else
		{
			self.document.UsrMifForm(turnOnOff_checkbox.arguments[j]).disabled = true;
			self.document.UsrMifForm(turnOnOff_checkbox.arguments[j]).readonly = true;
			self.document.UsrMifForm(turnOnOff_checkbox.arguments[j]).checked =false;
		}

	}
}


//sets select boxes to specific index
//first argument should be form object
//followed by select element name and value pairs
function setRelatedSelect()
{
	formObj = setRelatedSelect.arguments[0];

	var j;
	for (j=1;j<setRelatedSelect.arguments.length;j+=2)
	{
		formObj(setRelatedSelect.arguments[j]).selectedIndex = setRelatedSelect.arguments[j+1];
	}
}

//sets slave select box to index 0 if masters index >0
function resetSelect(formObj,slaveSelectName,masterSelectName)
{
	if (formObj(masterSelectName).selectedIndex >0)
		setRelatedSelect(formObj,slaveSelectName,0);
}

//this funciton resets text field
//it takes form Object as first param. and all next params. should be names of fields
function resetTextFields()
{
	var formObj;

	if (resetTextFields.arguments.length<1)
		return;


	formObj = resetTextFields.arguments[0];

	for (i=1;i<resetTextFields.arguments.length;i++)
	{
		formObj[resetTextFields.arguments[i]].value="";
	}
}


//search for value in array:
function isInArray(arr,val)
{
	var i;
	if (arr == null || typeof(arr) != 'object' )
	{
		return false;
	}
	else
	{
		for (i=0; i<arr.length; i++)
		{
			if (arr[i] == val )
			{
				return true;
			}//if
		}//for
	}//if

	return false;
}//end of isInArray()


// -----------------------------------------------------------------  Client Form validation functions: ---------------------------------

//this function gets value from field
function getValue(fieldObj)
{
	var fieldType;
	var value = null;

	if (fieldObj == null)
	{
		//alert("error - passed null object to getValue(). returning null. expect errors!");
		return null;
	}
	fieldType = fieldObj.type;

	fieldType = fieldType.toString().toLowerCase( );

	if (fieldType=="text" || fieldType=="password" || fieldType=="hidden" || fieldType=="textarea")
	{
		value = fieldObj.value;
	}
	else if (fieldType=="select-one")
	{
		//in empty select selectedIndex=-1
		if (fieldObj.selectedIndex>-1)
		{
			value = fieldObj.options[fieldObj.selectedIndex].value;
		}
		else
		{
			value="";
		}
	}
	else
	{
		alert("getvalue() - uknown type of field passed: " + fieldType);
	}

	//alert(value);

	return value;
}//end of getValue()



//this function checks date for being valid date
//returns 0 for valid date or error code for not valid date
function checkDate(strDay, strMonth, strYear)
{
	// alert("strDate : " + strDay ) ;
	// alert("strMonth : " + strMonth ) ;
	// alert("strYear : " + strYear ) ;

	var intday ;
	var intMonth;
	var intYear;
	var booFound = false;
	var strSeparatorArray = new Array("-"," ","/",".");
	var intElementNr;
	var err = 0;
	var strMonthArray = new Array(12);
	strMonthArray[0] = "Jan";
	strMonthArray[1] = "Feb";
	strMonthArray[2] = "Mar";
	strMonthArray[3] = "Apr";
	strMonthArray[4] = "May";
	strMonthArray[5] = "Jun";
	strMonthArray[6] = "Jul";
	strMonthArray[7] = "Aug";
	strMonthArray[8] = "Sep";
	strMonthArray[9] = "Oct";
	strMonthArray[10] = "Nov";
	strMonthArray[11] = "Dec";


	if (strYear.length == 2) {
		strYear = '20' + strYear;
	}


	// Check if intday is an integer
	intday = parseInt(strDay, 10);

	if (isNaN(intday)) {
		err = 2;
		return err;
	}

	// Check if month is integer
	// If not try to convert a month by month name ( short date format )
	intMonth = parseInt(strMonth, 10);
	if (isNaN(intMonth)) {
		for (i = 0; i < 12; i++) {
			if (strMonth.toUpperCase() == strMonthArray[i].toUpperCase()) {
				intMonth = i + 1;
				strMonth = strMonthArray[i];
				i = 12;
		   }
		}

		if (isNaN(intMonth)) {
			err = 3;
			return err;
	   }
	}

	// Check if Year is integer
	intYear = parseInt(strYear, 10);
	if (isNaN(intYear)) {
		err = 4;
		return err;
	}

	if (intMonth > 12 || intMonth < 1) {
		err = 5;
		return err;
	}

	// Check that int day is less than 31 for the certain months
	if ((intMonth == 1 || intMonth == 3 || intMonth == 5 || intMonth == 7 || intMonth == 8 || intMonth == 10 || intMonth == 12) && (intday > 31 || intday < 1)) {
		err = 6;
		return err;
	}

	// Check that int day is less than 30 for the certain months
	if ((intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11) && (intday > 30 || intday < 1)) {
		err = 7;
		return err;
	}

	// Special case - Feb.
	if (intMonth == 2) {
		if (intday < 1) {
			err = 8;
			return err;
		}
		if (leapYear(intYear) == true) {
			if (intday > 29) {
				err = 9;
				return err;
	   		}
		}
		else {
			if (intday > 28) {
				err = 10;
				return err;
			}
   		}
	}

	return err ;
}//end of checkDate()

function leapYear(intYear)
{
	if (intYear % 100 == 0)
	{
		if (intYear % 400 == 0)   { return true; }
	}
	else
	{
		if ((intYear % 4) == 0)  {return true;}
	}

	return false ;

}//end of leapYear()



//returns number of days between two dates
//date2 - date1
function daysBetween(strDay1, strMonth1, strYear1, strDay2, strMonth2, strYear2)
{
	var SECOND = 1000; // the number of milliseconds in a second
	var MINUTE = SECOND * 60; // the number of milliseconds in a minute
	var HOUR = MINUTE * 60; // the number of milliseconds in an hour
	var DAY = HOUR * 24; // the number of milliseconds in a day
	var WEEK = DAY * 7; // the number of milliseconds in a week


  	var nDate1 = Date.UTC(strYear1, strMonth1 - 1, strDay1); // specified time (UTC)
  	var nDate2 = Date.UTC(strYear2, strMonth2 - 1, strDay2); // specified time (UTC)
  	var bTime = (nDate2 - nDate1)  // time difference

  	return Math.round(bTime / DAY);
}//end of daysBetween()


function bubbleSort(arr)
{
	var i,j,temp;


	for (i=0; i<arr.length-1; i++)
	{
		for (j=i; j<arr.length; j++)
		{

			if (arr[i]>arr[j])
			{
				temp = arr[i];
				arr[i] = arr[j];
				arr[j] = temp;
			}

		}//end of for k
	}//end of for i

}//end of bubbleSort()


function isEmpty(value)
{
	return (value==null || value=="" )
}



function isNumeric(num)
{
	var i;
	var numbersStr = "1234567890+-."

	if (num == null)
		return false;
	else
	{
		for (i=0;i<num.length;i++)
		{
			if (numbersStr.indexOf(num.charAt(i))<0)
				return false;

		}
		return true;
	}

}


function isOnlyNumbers(num)
{
	var i;
	var numbersStr = "1234567890"

	if (num == null)
		return false;
	else
	{
		for (i=0;i<num.length;i++)
		{
			if (numbersStr.indexOf(num.charAt(i))<0)
				return false;

		}
		return true;
	}
}


//gets string representing id number and returns array containing 2 numbers:
//first is control digit and last is right control digit
function getValidIDControl(idStr)
{
	var length = idStr.length;
	var sum = 0;
	var oneOrZero = 0;
	var ch;
	var num, digit1,digit2;
	var checkDigit;
	var i;
	var retArray = new Array(2);

	if (length<2 || length>9 || !isOnlyNumbers(idStr))
	{
		return null;
	}
	else
	{

		while ( length  < 9)
		{
			idStr = "0" + idStr
			length++;
		}

		checkDigit = parseInt(idStr.charAt(8),10);
		retArray[0] = checkDigit;
		for (i=7; i>-1 ; i--)
		{
			oneOrZero = 1 - oneOrZero;
			num = parseInt(idStr.charAt(i),10) * (oneOrZero + 1);
			digit1 = num % 10;
			digit2 = (num - digit1) / 10;
			sum += (digit1 + digit2);
		}//end of for

		if ( (sum % 10)>0 )
		{
			retArray[1] = (10 - (sum % 10));
		}
		else
		{
			retArray[1] = 0;
		}

		return retArray;
	}//end of if
}// end of getValidIDControl function


function isOnlyHebrew(str)
{
	var i;

	if (str == null)
		return false;
	else
	{
		for (i=0;i<str.length;i++)
		{
			ch = (str.charAt(i));
			if (!('א'<=ch && ch>='ת'))
				return false;
		}
		return true;
	}
}

function isOnlyEnglish(str)
{
	var i;

	if (str == null)
		return false;
	else
	{
		for (i=0;i<str.length;i++)
		{
			ch = (str.charAt(i));
			if (!('a'<=ch && ch>='z' || 'A'<=ch && ch>='Z' ))
				return false;
		}
		return true;
	}
}

function isEmail(str)
{
	var i;

	if (str == null)
		return false;
	else
	{
		return (str.indexOf("@")>0 && str.indexOf(".")>2);
	}

}

function isPhone(num)
{
	var i;
	var phoneStr = "1234567890()-"

	if (num == null)
		return false;
	else
	{
		for (i=0;i<num.length;i++)
		{
			if (phoneStr.indexOf(num.charAt(i))<0)
				return false;

		}
		return true;
	}
}

function isDay(num)
{
	return (isOnlyNumbers(num) && num>0 && num<32)
}


function isMonth(num)
{
	return (isOnlyNumbers(num) && num>0 && num<13)
}

function isYear(num)
{
	return (isOnlyNumbers(num) && num>1900 && num<2100)
}


/*
* num - number
* maxFloat  - x.y - x max digits before dot, y - max digits after dot
*/
function isFloat(num,maxFloat)
{
	var indexOfDot, numBeforeDot, numAfterDot;
	var beforeDot = maxFloat.substring(0,maxFloat.indexOf("."));
	var afterDot = maxFloat.substr(maxFloat.indexOf(".")+1);


	if (isNumeric(num))
	{
		if ((indexOfDot = num.indexOf(".")) < 0 )
		{
			//no dcimal dot
			return (num != "" && isOnlyNumbers(num) && num.length<=beforeDot);
		}
		else
		{
			numBeforeDot = num.substring(0,indexOfDot);
			numAfterDot = num.substr(indexOfDot+1);
			return ((numBeforeDot != "" && isOnlyNumbers(numBeforeDot) && numBeforeDot.length<=beforeDot
					&& isOnlyNumbers(numAfterDot) && numAfterDot.length<=afterDot)
					|| (isOnlyNumbers(numBeforeDot) && numBeforeDot.length<=beforeDot
					&& isOnlyNumbers(numAfterDot) && numAfterDot.length<=afterDot && numAfterDot!=""));
		}
	}
	else
	{
		return false;
	}
}

//this function generates a JS Array from comma separated list
//list cannot start from comma and cannot end with comma
function getArrFromCommaList(commaListStr)
{

	var retArray = new Array(); //array that will be returned

	if (commaListStr.length == 0)
	{
		//if the string is empty
		return retArray;
	}


	var listLength = commaListStr.length;
	var nextCommaIndex = commaListStr.indexOf(','); //index of next comma


	var prevCommaIndex = -1; //prev. index of comma

	do
	{
		if (nextCommaIndex < 0)
		{
			//no commas at all -> set nextComma to last index + 1
			nextCommaIndex = listLength;
		}

		if (prevCommaIndex + 1 < nextCommaIndex )
		{
			//if there is something between commas
			retArray[retArray.length] = commaListStr.substring(prevCommaIndex + 1,nextCommaIndex);
		}

		prevCommaIndex  = nextCommaIndex;
		nextCommaIndex = commaListStr.indexOf(",",  (prevCommaIndex + 1 ) );
	}while  (  prevCommaIndex < listLength );

	return retArray;

}//end of getArrFromCommaList



//this function check group of elements to be not empty
//commaList - comma separated list of elements. Each element followed by description.
function checkGroupNotEmpty(formObj,commaList)
{
	var arrayOfElements = getArrFromCommaList(commaList);
	var i;
	var value;

	for (i=0;i<arrayOfElements.length; i++)
	{
		value = getValue(formObj[ arrayOfElements[i] ]);
		if ( isEmpty(value) )
		{
			return false;
		}
	}//end of for

	return true;

}//end of checkGroupNotEmpty() function


//same as checkGroupNotEmpty, but check that all group is empty!
function checkGroupEmpty(formObj,commaList)
{
	var arrayOfElements  = getArrFromCommaList(commaList);
	var i;
	var value;

	for (i=0;i<arrayOfElements.length; i++)
	{
		value = getValue(formObj[ arrayOfElements[i] ]);
		if ( !isEmpty(value) )
		{
			return false;
		}
	}//end of for

	return true;
}//end of checkGroupEmpty() function

function isInRange(num,from,to)
{
	return (num >= from &&  num <= to);
}

function check4Range(num,fromToStr)
{
	var arrayOfElements  = getArrFromCommaList(fromToStr);
	return isInRange(num,Math.min(arrayOfElements[0],arrayOfElements[1]), Math.max(arrayOfElements[0],arrayOfElements[1]));
}


//gets comma separated list of fileds and formObject
//returns true if all fields are equal
function checkGroupEquals(formObj,currentValue,commaList)
{
	if (commaList == null || commaList == '')
	{
		return true;
	}

	var arrayOfElements  = getArrFromCommaList(commaList);
	var i;
	var value;
	var prevValue = currentValue;

	for (i=0;i<arrayOfElements.length; i++)
	{
		value = getValue(formObj[ arrayOfElements[i] ]);
	}//end of for


		if ( value != prevValue )
		{
			return false;
		}
		else
		{
			prevValue = value;
		}

	return true;
}//end of checkGroupEquals() function


function checkGroupNotEquals(formObj,currentValue,commaList)
{
	if (commaList == null || commaList == '')
	{
		return true;
	}

	var arrayOfElements  = getArrFromCommaList(commaList);
	var i;
	var valueArr = new Array();
	valueArr[0] = currentValue;

	for (i=0;i<(arrayOfElements.length); i++)
	{
		valueArr[i+1] = getValue(formObj[ arrayOfElements[i] ]);
	}//end of for

	bubbleSort(valueArr);

	for (i=1;i<valueArr.length; i++)
	{
		if ( valueArr[i] != null &&  valueArr[i] != "" && valueArr[i] == valueArr[i-1])
		{
			return false;
		}

	}//end of for

	return true;
}//end of checkGroupNotEquals() function



/*
get day and comma delimited month and year
returs true if valid, false if not
*/
function isDateValid(formObj,strDay,strMonthYear)
{
	//alert("isDateValid(" + strDay + "," + strMonthYear+")");
	var arrayOfElements  = getArrFromCommaList(strMonthYear);
	if (arrayOfElements.length<2)
	{
		return false;
	}

	return (checkDate(strDay,getValue(formObj[ arrayOfElements[0] ]),getValue(formObj[ arrayOfElements[1] ]))==0);
}//end of checkDateValid


/*
	isDateInRange
*/
function isDateInRange(formObj,strDay1,strCommaList)
{
	//alert("isDateInRange(" + strDay1+"," + strCommaList +")" );
	var arrayOfElements  = getArrFromCommaList(strCommaList);
	var daysdiff;

	if (arrayOfElements.length<6)
	{
		alert("error - isDateInRange - too little parameters");
		return false;
	}

	if (!isDateValid(formObj,strDay1,strCommaList) || !isDateValid(formObj,getValue(formObj[ arrayOfElements[2] ]),arrayOfElements[3]+"," + arrayOfElements[4]) )
	{
		return false;
	}

	daysdiff = daysBetween(strDay1,
					getValue(formObj[ arrayOfElements[0] ]),
					getValue(formObj[ arrayOfElements[1] ]),
					getValue(formObj[ arrayOfElements[2] ]),
					getValue(formObj[ arrayOfElements[3] ]),
					getValue(formObj[ arrayOfElements[4] ]));
	//alert(daysdiff);
	return (daysdiff>=arrayOfElements[5] );

}//end of isDateInRange()

function isDateInRangeOrEmpty(formObj,strDay1,strCommaList)
{
	var arrayOfElements  = getArrFromCommaList(strCommaList);
	var i;
	var commaDate2="";
	if (arrayOfElements.length<6)
	{
		alert("error - isDateInRangeOrEmpty - too little parameters");
		return false;
	}


	for (i=0; i<5; i++)
	{
		if (commaDate2 != "" )
		{
			commaDate2 = commaDate2 + ","
		}
		commaDate2 = commaDate2 + arrayOfElements[i];
	}

	//
	if ( !isEmpty(strDay1) && checkGroupNotEmpty(formObj,commaDate2) )
	{
		return ( isDateInRange(formObj,strDay1,strCommaList) );
	}

	return true;
}
// -----------------------------------------------------------------  End Of Client Form validation functions: ---------------------------------


//variables for userAlert()
var incorrectFieldType = 0;
var customErrorMessage = 1;
var fieldDosntConfirm = 2;
var field2Long = 3;
var fieldCannotBeEmpty = 4;
var fldHave2BeEmpty = 5;
var grpHave2BeEmptyOrFilled = 6;
var customConfirmMessage = 7;
var fieldNotInRange = 8;
var fieldsEquals = 9;
var fieldsNotEquals = 10;
var dateTooClose = 11;

function userAlert(text2Show, showType, addText)
{

	switch (showType)
	{
		case 0://incorrectFieldType:
			alert('!השדה \"' + text2Show + '\" לא חוקי');
			break;
		case 1://customErrorMessage:
			alert(text2Show);
			break;
		case 2://fieldDosntConfirm:
			alert('סיסמאות לא שוואות או לא חוקיות!');
			break;
		case 3://field2Long:
			alert('!השדה \"' + text2Show + '\" ערוך מדי');
			break;
		case 4://fieldCannotBeEmpty:
			alert('!השדה \"' + text2Show + '\" לא יכול להיות ריק');
			break;
		case 5://fldHave2BeEmpty:
			alert('!השדה \"' + text2Show + '\" חייב להיות ריק');
			break;
		case 6://grpHave2BeEmptyOrFilled:
			alert('השדות :\"'	+ text2Show + '\" חייבים להיות ריקים או מלאים');
			break;
		case 7://customConfirmMessage:
			return window.confirm(text2Show);
			break;
		case 8://fieldNotInRange:
			alert('השדה :\"' + text2Show + '\" חייב להיות בתווך ' + addText);
			break;
		case 9://fieldsEquals:
			alert('השדות :\"'	+ text2Show + '\" חייבים להיות זהים');
			break;
		case 10://fieldsNotEquals:
			alert('השדות :\"'	+ text2Show + '\" חייבים להיות שונים');
			break;
		case 11://dateTooClose:
			alert('התאריך שבשדה \"'	+ text2Show + '\" לא חוקי');
			break;
	}

	return -1;
}


//variables for doSubmitForm()
var chk4Empty = 0;
var chk4Email = 1;
var chk4Length = 2; //check that value equals to addData
var chk4Phone = 3;
var chk4Month = 4;
var chk4Year = 5;
var chk4FloatOrEmpty = 6;
var chk4Float = 7;
var chk4OnlyNumbers = 8;
var chk4Day= 9;
var chk4DayOrEmpty = 10;
var chk4MonthOrEmpty = 11;
var chk4YearOrEmpty = 12;
var chk4OnlyNumbersOrEmpty = 13;
var chk4Confirm = 14;
var chk4ConfirmOrEmpty = 15;
var chk4TooLongStr = 16; //check that the value is not longer than addData
var chk4PhoneOrEmpty = 17;
var chk4EmailOrEmpty = 18;
var chk4AllGroupFilledOrEmpty = 19;
var chk4ValidID = 20;
var chk4InRange = 21;
var chk4InRangeOrEmpty = 22;
var chk4EqualFields = 23;
var chk4NotEqualFields = 24;
var chk4Date = 25;
var chkDateOrEmpty = 26;
var chk4DateDiff = 27;
var chk4DateDiffOrEmpty = 28;


//	This function performs client side form validation and submits form to server
//
//	argument1 - form name
//	argument2 - field Name
//	argument3 - fieldDescription
//	argument4 - checkType
//	argument5 - additional check data

//	argument6 - fieldName
//	argument7....
//	..............................

function doSubmitForm()
{
	var formName;
	var i;
	var fldName,fldDesc,fldCheckType,value,addData;
	var formIsOk = true;
	var confirmValue;
	var tempArray;

	if (doSubmitForm.arguments.length<1)
		return;


	formName = doSubmitForm.arguments[0];
	for (i=1;i<doSubmitForm.arguments.length;i+=4)
	{
		if (formIsOk)
		{
			fldName = doSubmitForm.arguments[i];
			fldDesc = doSubmitForm.arguments[i+1];
			fldCheckType = doSubmitForm.arguments[i+2];
			addData = doSubmitForm.arguments[i+3];

			//alert(formName+"[" + fldName+ "]=" + formName[fldName] + " fldCheckType=" + fldCheckType);

			value = getValue(formName[fldName]);

			switch (fldCheckType)
			{
				case 0://chk4Empty:
					if (isEmpty(value))
					{
						userAlert(fldDesc,incorrectFieldType,'');
						formIsOk = false;
					}
					break;
					
				case 1://chk4Email:
					if (isEmpty(value) || !isEmail(value))
					{
						userAlert(fldDesc,incorrectFieldType,'');
						formIsOk = false;
					}

					break;

				case 2://chk4Length:
					if (isEmpty(value) || value.toString().length != addData)
					{
						userAlert(fldDesc,incorrectFieldType,'');
						formIsOk = false;
					}
					break;

				case 3://chk4Phone:
					if (!isPhone(value))
					{
						userAlert(fldDesc,incorrectFieldType,'');
						formIsOk = false;
					}
					break;

				case 4://chk4Month:
					if (!isMonth(value))
					{
						userAlert(fldDesc,incorrectFieldType,'');
						formIsOk = false;
					}
					break;

				case 5://chk4Year:
					if (!isYear(value))
					{
						userAlert(fldDesc,incorrectFieldType,'');
						formIsOk = false;
					}
					break;

				case 6://chk4FloatOrEmpty:
					if (!isEmpty(value) && !isFloat(value,addData))
					{
						userAlert(fldDesc,incorrectFieldType,'');
						formIsOk = false;
					}
					break;

				case 7://chk4Float:
					if (isEmpty(value) || !isFloat(value,addData))
					{
						userAlert(fldDesc,incorrectFieldType,'');
						formIsOk = false;
					}
					break;
				case 8://chk4OnlyNumbers:
					if (isEmpty(value) || !isOnlyNumbers(value))
					{
						userAlert(fldDesc,incorrectFieldType,'');
						formIsOk = false;
					}
					break;
					
				case 9://chk4Day:
					if (!isDay(value))
					{
						userAlert(fldDesc,incorrectFieldType,'');

						formIsOk = false;
					}
					break;

				case 10://chk4DayOrEmpty:
					if (!isEmpty(value) && !isDay(value))
					{
						userAlert(fldDesc,incorrectFieldType,'');
						formIsOk = false;
					}
					break;

				case 11://chk4MonthOrEmpty:
					if (!isEmpty(value) && !isMonth(value))
					{
						userAlert(fldDesc,incorrectFieldType,'');
						formIsOk = false;
					}
					break;

				case 12://chk4YearOrEmpty:
					if (!isEmpty(value) && !isYear(value))
					{
						userAlert(fldDesc,incorrectFieldType,'');
						formIsOk = false;
					}
					break;


				case 13://chk4OnlyNumbersOrEmpty:
					if (!isEmpty(value) && !isOnlyNumbers(value))
					{
						userAlert(fldDesc,incorrectFieldType,'');
						formIsOk = false;
					}
					break;
					
				case 14://chk4Confirm:
					confirmValue = formName[addData].value;

					if (isEmpty(value) || !(value==confirmValue))
					{
						userAlert('',fieldDosntConfirm,'');
						formIsOk = false;
					}
					break;

				case 15://chk4ConfirmOrEmpty:
					confirmValue = formName[addData].value;

					if (!isEmpty(value) && !(value==confirmValue))
					{
						userAlert('',fieldDosntConfirm,'');
						formIsOk = false;
					}
					break;
					
				case 16://chk4TooLongStr:
					if (!isEmpty(value) && (value.length>addData))
					{
						userAlert(fldDesc,field2Long,'');
						formIsOk = false;
					}
					break;
				case 17://chk4PhoneOrEmpty:
					if (!isEmpty(value) && !isPhone(value))
					{
						userAlert(fldDesc,incorrectFieldType,'');
						formIsOk = false;
					}
					break;
				case 18://chk4EmailOrEmpty:
					if (!isEmpty(value) && !isEmail(value))
					{
						userAlert(fldDesc,incorrectFieldType,'');
						formIsOk = false;
					}

					break;

				case 19://chk4AllGroupFilledOrEmpty:
					if (isEmpty(value))
					{
						//if the value is empty - check that rest of the group are empty
						formIsOk = checkGroupEmpty(formName,addData);
					}
					else
					{
						//if the value is not empty - check that rest of the group are not empty
						formIsOk = checkGroupNotEmpty(formName,addData);
					}

					if (!formIsOk)
					{
						userAlert(fldDesc,grpHave2BeEmptyOrFilled,'');
					}

					break;
					
				case 20://chk4ValidID:
					if (!isEmpty(value))
					{

						tempArray = getValidIDControl(value);

						if (tempArray==null)
						{
							userAlert(fldDesc,incorrectFieldType,'');
						}
						else if (tempArray[0] != tempArray[1] )
						{
							formIsOk = userAlert("?סיפרת ביקורת של ת\"ז אינה מתאימה למספר. הסיפרה הנוכונה היא " + tempArray[1] + ". האם להמשיך",customConfirmMessage,'');
						}
						else
						{
						formIsOk = true;
						}
					}
					break;
				case 21://chk4InRange:
					if (isEmpty(value) || !isNumeric(value) || !check4Range(value,addData) )
					{
						userAlert(fldDesc,fieldNotInRange,addData);
						formIsOk = false;
					}
					break;
					
				case 22://chk4InRangeOrEmpty:
					if (!isEmpty(value) && (!isNumeric(value) || !check4Range(value,addData)) )
					{
						userAlert(fldDesc,fieldNotInRange,addData);
						formIsOk = false;
					}
					break;

				case 23://chk4EqualFields:
					if ( !checkGroupEquals(formName,value,addData) )
					{
						userAlert(fldDesc,fieldsEquals);
						formIsOk = false;
					}
					break;
					
				case 24://chk4NotEqualFields:
					if ( !checkGroupNotEquals(formName,value,addData) )
					{
						userAlert(fldDesc,fieldsNotEquals);
						formIsOk = false;
					}
					break;
					
				case 25://chk4Date:
					//extract additional data
					if (!isDateValid(formName,value,addData))
					{
						userAlert(fldDesc,incorrectFieldType,'');
						formIsOk = false;
					}
					break;
				case 26://chkDateOrEmpty:
					if (!checkGroupEmpty(formName,value+","+addData) && !isDateValid(formName,value,addData) )
					{
						userAlert(fldDesc,incorrectFieldType,'');
						formIsOk = false;
					}
					break;
				case 27://chk4DateDiff:
					if (!isDateInRange(formName,value,addData))
					{
						userAlert(fldDesc,dateTooClose,'');
						formIsOk = false;
					}
					break;
				case 28://chk4DateDiffOrEmpty:
					if (!isDateInRangeOrEmpty(formName,value,addData))
					{
						userAlert(fldDesc,dateTooClose,'');
						formIsOk = false;
					}
					break;



			}//end of switch
		}//end of if
	}//end of for

	if (formIsOk)
	{
		formName.submit();
	}
	//return true;
}//end of doSubmitForm()


function check4reload(formObj,arrWithValues,fieldName,linkStr)
{
	var val = getValue(formObj[fieldName]);

	if (val != null && isInArray(arrWithValues,val) )
	{
		if (window.confirm('? הרשומה "' + val + '" קיימת. האם אתה רוצה לטעון אותה'))
		{
			self.document.location.href = linkStr;
		}
		else
		{
			formObj.reset();
		}
	}
}

 function delConf(page)
    {
	var okToGoOn = window.confirm("האם ברצונך למחוק את הרשומה");
	if (okToGoOn)
	{
		self.document.location.href=page;
	}
    }

function openWin(str,winname)
{
	var newWindow = window.open(str, winname, 'toolbars=0, scrollbars=1, location=0, statusbars=0, menubars=0, resizable=1, width=600, height=500, left = 5 top = 5');
	newWindow.focus();
}
