	function attachEventError(requiredFileds){
		/*
		var currentErrorObj;
		var errorObjectPanel = document.getElementById('iframeError');
		try {	
			if (typeof(requiredFileds[0]) != "undefined"){
				for (var field in requiredFileds){
					
					currentErrorObj = document.getElementById(requiredFileds[field]['field']);
					
					currentErrorObj.onmouseout = currentErrorObj.onclick = function (){
						errorObjectPanel.style.display = "none";
						errorObjectPanel.style.top = "0px";
						errorObjectPanel.style.left = "0px";	
					}
				}//end for
			}//end if
		 }//end try
		catch(ex){
		}//end catch
		*/
	}//end function attachEvent(requiredFileds)
	
	
	function writeMessage(errorObject, errorMessage){
		//var iFrameElement = document.frames ? document.frames('iframeError') : document.getElementById('iframeError');
		//var iFrameDocument = iFrameElement.document ? iFrameElement.document : iFrameElement.contentDocument;
		//iFrameDocument.getElementById(errorObject).innerHTML = errorMessage;
		alert(errorMessage);
	}//end function showAlert()
	
/*
*@params: formName: string -> mandatory   
*@params: requiredFields2: array -> optional   
*if we use more than one form in the page which require validation than we must specify the second parameter for each form different by the default
*/
	function checkFields(){
		var err = "";
		var errorMessage = "";
		var countError = 0;
		var currentErrorObj = "";
		var height = 40;
		var formName = arguments[0];
		var requiredFileds2 = arguments[1];
		var requiredFiledsArray = "";
		//if we use more than one form in the page which require validation than we must specify the second parameter for each form different by the default
		if(requiredFileds2 != null)
			requiredFiledsArray = requiredFileds2;
		else if(requiredFileds != null){ 
				requiredFiledsArray = requiredFileds;
		}
			
		try {	
			
			if (typeof(requiredFiledsArray[0]) != "undefined"){
				for (var field in requiredFiledsArray){
					switch(requiredFiledsArray[field]["type"]){
						case "check":
							err = checkStatus(requiredFiledsArray[field]["field"]);
						break;
						case "int":
							err = checkInteger(requiredFiledsArray[field]["field"]);
						break;
						case "email":
							err = checkEmail(requiredFiledsArray[field]["field"]);
						break;
						case "list":
						case "text":
							err = checkText(requiredFiledsArray[field]["field"]);
						break;
						case "datetime":
							err = validateDateTime(requiredFiledsArray[field]["field"],"-","ro", requiredFiledsArray[field]["required"]);
						break;
						/*
						case "nextFilter":
							err = nextFilter(.....);
						break;
						*/
					}//end switch
					
					if (err == false){
						if (
							(requiredFiledsArray[field]["required"] == "true") ||
							(requiredFiledsArray[field]["required"] == "false"  && document.getElementById(requiredFiledsArray[field]['field']).value != "" && err == false)
						) { 
							++countError;
							/*errorMessage += requiredFiledsArray[field]["msg"] + "<br>";*/
							re = /&quot;/g;   
							errorMessage += requiredFiledsArray[field]["msg"].replace(re , '"') + "\n";
						}
						else if (requiredFiledsArray[field]["required"] == "false"  && document.getElementById(requiredFiledsArray[field]['field']).value == ""){
							err = true;
						}
					}
					
					if (countError == 1 && err == false){
						currentErrorObj = document.getElementById(requiredFiledsArray[field]['field'])
					}
					err = "";
				}//end for
			}//end if
			
			/*var errorObjectPanel = document.getElementById('iframeError');*/
			
			if (countError > 0){
				/*---------- getting the x,y position of current input field ----------*/
				var newX = findPosX(currentErrorObj) + 0;
				var newY = findPosY(currentErrorObj) + 20;
				/*errorObjectPanel.style.top = newY + "px";
				errorObjectPanel.style.left = newX + "px";*/
			
				/*---------- write the message into the alert ----------*/
				writeMessage('message', errorMessage);
					
				/*---------- fixing the height for iframe dynamically ----------*/
				/*
				var height = 0;
				var iFrameElement = document.frames ? document.frames('iframeError') : document.getElementById('iframeError');
				var iFrameDocument = iFrameElement.document ? iFrameElement.document : iFrameElement.contentDocument;
				errorObjectPanel.style.display = "block";	
				var offsetHeight = iFrameDocument.body.offsetHeight;
				if (offsetHeight)
					height = offsetHeight;
				var iFrameWindow = iFrameDocument.parentWindow ? iFrameDocument.parentWindow :  iFrameElement.contentWindow;
				if (document.all)
					iFrameWindow.resizeTo(210, height);//width, height
				else
					iFrameElement.style.height = height;
				*/
				/*---------- scrolling the main window page where the alert message will be displayed and focused ----------*/
				window.scroll(newX, (newY-50));
				currentErrorObj.focus();
				err = false;
			}//end if
			else {
				/*errorObjectPanel.style.display = "none";
				errorObjectPanel.style.top = "0px";
				errorObjectPanel.style.left = "0px";*/
				err = true;
			}
			return err;
		}
		catch(ex){
		}
	}//end checkFields()

	function checkStatus(field) {
		 if(document.getElementById(field) != null){
			if(document.getElementById(field).checked) {
				return true;
			}//end if
		 }//end if
		 return false;
	}//end function checkInteger(...)

	function checkInteger(field) {
		 if(document.getElementById(field) != null){
			if(document.getElementById(field).value != '') {
				s = document.getElementById(field).value;
				for (i = 0; i < s.length; i++) {   
					var c = s.charAt(i);
					if (((c < "0") || (c > "9"))) 
						return false;
				}
				return true;
			}//end if
		 }//end if
		 return false;
	}//end function checkInteger(...)
	
	function checkText(field) {
		 if(document.getElementById(field) != null){
				if(document.getElementById(field).value == '')
					return false;
				return true;
		  }//end if
		return false;
	}//end function checkInteger(...)
	
	function checkEmail(field) {
		 if(document.getElementById(field) != null){
			if(document.getElementById(field).value != ''){
				return ((document.getElementById(field).value.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) != -1));
			}//end if
			return false;
		  }//end if
		return false;
	}//end function checkInteger(...)
	
	
	function validateDateTime(){
		var err;
		
		var id = arguments[0];
		var separator = arguments[1];
		var language = arguments[2];
		var required = arguments[3];

		var dateInput = document.getElementById(id);	
		var validationSeparator = "";
		var inputDate = new Array();
		
		//if the field is empty
		if((dateInput.value == "" || dateInput.value == null) && required == 'false')
			return true;
		
		try {
				//parsing for a specificated separator
				validationSeparator = new RegExp("^\\d{1,2}[" + separator + "]\\d{1,2}[" + separator + "]\\d{4}$");
				//parsing all elements (dd-mm-yyyy hh:ii AM/PM)
				inputDate = dateInput.value.split(/\s/);
				//if user try to type more than 3 group elements: dd-mm-yyyy hh:ii AM werwerwe
				if( inputDate.length > 3 )
					return false;
				err = checkDate( inputDate[0], validationSeparator, separator, language );
				if( !err )
					return false;
				err = checkTime( inputDate[1], inputDate[2] );
				if( !err )
					return false;
		} catch( e ){
			return false;
		}//end catch ( e )
		return true;
	}
	
	function checkDate( date, validationSeparator, separator, language ){
		var day, month, year, dateValid, dataSplit;
		
		//is true or false: !int should be detected
		dateValid = validationSeparator.test(date);
		if( dateValid ){
			dataSplit = date.split(separator);
			//default format is: ddmmyyyy	
			day =  parseInt(dataSplit[0], 10);	
			month = parseInt(dataSplit[1], 10);	
			year = parseInt(dataSplit[2], 10);
			
			switch(language){
				//mmddyyyy
				case "en":
					day = parseInt(dataSplit[1], 10);	
					month = parseInt(dataSplit[0], 10);	
				break;
				/*
					case "yyyymmdd":
						day = parseInt(dataSplit[2], 10);	
						year = parseInt(dataSplit[0], 10);	
					break;
				*/
			}//end switch
			
			//checking if the data typed was corect
			if( ( day < 1 || day > 31 ) || ( month < 1 || month > 12 ) || ( year < 1900 || year > 2100 ) ){
				return false;
			}//end if
			//checking if the date is valid
			var tempDate = new Date(year, month, 0); 
			if( day > tempDate.getDate() )
				return false;
		}//end if	
		else{
			return false;
		}
		return true;
	}//end function checkDate
	
	function checkTime( time, meridian ){
		var inputTime;
		
		//is true or false: timeValid == -1 when time is optional(wasn't specify)
		timeValid = time != "" && time != null ? /^\d{1,2}:\d{1,2}$/.test( time ) : -1;
		
		if( timeValid && timeValid != -1){
			inputTime = time.split(/:/);
			//checking if the time typed was corect
			if( ( parseInt(inputTime[0], 10) < 0 || parseInt(inputTime[0], 10) > 23 ) || 
				( parseInt(inputTime[1], 10) < 0 || parseInt(inputTime[1], 10) > 59 ) ) {
				return false;
			}//end if
		}//end if
		else if( !timeValid  && timeValid != -1){
			return false;
		}
		
		//if AM/PM are typed with lower/upper case
		meridian = meridian != "" && meridian != null ?  meridian.toLowerCase() : "";
		meridianValid = ( meridian == "am" || meridian == "pm"  || meridian == "" ) ? true : false;
		if( !meridianValid ){
			return false;	
		}
		if( meridianValid && timeValid && timeValid != -1 ){
			
			if( ( inputTime[0] <= 0 || inputTime[0] > 12 ) && ( meridian == "am" || meridian == "pm" ) ){
					return false;	
			}//end if
		}
		return true;
	}//end function checkTime

	
function findPosY(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}

function findPosX(obj)
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}