﻿/// Validation Code for feedback handler ////
/// ------ ------ V.1.0 ------ --------- ////
/// GulfNet Solutions Est. //////
/// Web Application Group. //////
/// Programmed by: Bassel Issa. //////
//________________________________________________________



var daysInMonth = makeArray(12);
	daysInMonth[1] = 31;
	daysInMonth[2] = 29;   // must programmatically check this
	daysInMonth[3] = 31;
	daysInMonth[4] = 30;
	daysInMonth[5] = 31;
	daysInMonth[6] = 30;
	daysInMonth[7] = 31;
	daysInMonth[8] = 31;
	daysInMonth[9] = 30;
	daysInMonth[10] = 31;
	daysInMonth[11] = 30;
	daysInMonth[12] = 31;
	


function valid_upload()
{
Attachment = document.getElementById ("p01001Attachment");

if ((Attachment.value != "")&&((Attachment.value.search(".jpeg")==-1)&&(Attachment.value.search(".jpg")==-1)&&(Attachment.value.search(".gif")==-1)&&(Attachment.value.search(".png")==-1)))
{alert("Images only can be attached.");Attachment.focus();return false;}
return true;
}

	
//This function works for special case

function gnsmailform_onsubmit(emailform) {
// run validate function
//if (!valid_upload()) return false;
	return gns_validateform(emailform);
}

function gns_validateform(frmobj){
	var elementName = new String();
	var elementValue;
	var alertMsg;
	var month = 0;
	var day = 0;
	var year = 0;
	var i;
	for (i=0; i<frmobj.elements.length; i++){
		//alert(frmobj.elements(i).name);
		elementName = frmobj.elements(i).name; 
		elementValue = jTrim(frmobj.elements(i).value);
		alertMsg = getRealName(elementName);
		if (frmobj.elements(i).disabled == true) continue;
		// checking if it processed field
		if (isProccessed(elementName)){
			// checking if it required
			if (isRequired(elementName)){
				//checking if it's a multi select combo box.
				if (ifMultiCompo(elementName)){
					if (frmobj.elements(i).options.selectedIndex == -1){
						alert(alertMsg);
						frmobj.elements(i).focus();
						return false;
					}
				}else {
					if (elementValue.length == 0){ ////checking if it's empty or not.	
					alert(alertMsg);
					frmobj.elements(i).focus();
					return false;
					}
				}}
				
				
				// checking datatype to validate
				if ((needInt(elementName)) && (elementValue.length != 0)){ // need integer number (+) positive only
					if (isIntegerP(elementValue)==false){						
						alert(alertMsg);
						frmobj.elements(i).focus();
						return false;
					}		
				}
				if ((needFloat(elementName)) && (elementValue.length != 0)){ // need float number
					if (isFloatP(elementValue)==false){						
						alert(alertMsg);
						frmobj.elements(i).focus();
						return false;
					}		
				}
				if ((needIntN(elementName)) && (elementValue.length != 0)){ // need integer number with or without sign(-/+)
					if (isIntegerN(elementValue)==false){						
						alert(alertMsg);
						frmobj.elements(i).focus();
						return false;
					}		
				}
				if ((needFloatN(elementName)) && (elementValue.length != 0)){ // need float number with or without sign(-/+)
					if (isFloatN(elementValue)==false){						
						alert(alertMsg);
						frmobj.elements(i).focus();
						return false;
					}		
				}
				if ((needEmail(elementName)) && (elementValue.length != 0)){ // need email 
					if (isEmail(elementValue)==false){						
						alert(alertMsg);
						frmobj.elements(i).focus();
						return false;
					}		
				}
				if ((needUrl(elementName)) && (elementValue.length != 0)){ // need URL
					if (isUrl(elementValue)==false){
						alert(alertMsg);
						frmobj.elements(i).focus();
						return false;
					}		
				}
				if (needDate(elementName)!='nn'){ // checking date field
					var dateff =  needDate(elementName);
					if (dateff =='month'){
						month = elementValue;					
					}
					if (dateff =='day'){
						day = elementValue;						
					}
					if (dateff =='year'){
						year = elementValue;						
					}
					if (isRequired(elementName))
					{
						if ((dateff == 'day') && (day ==0))
						{
						alert('Please verify the date field.');
						frmobj.elements(i).focus();
						return false;
						}
						if ((dateff == 'month') && (month ==0))
						{
						alert('Please verify the date field.');
						frmobj.elements(i).focus();
						return false;
						}
						if ((dateff == 'year') && (year ==0))
						{
						alert('Please verify the date field.');
						frmobj.elements(i).focus();
						return false;
						}
					}
					if ((year.length > 0) && (month.length > 0) && (day.length > 0)){
						if (isDate(year,month,day)){
						}else
						if ((day != 0) && (month != 0) && (year != 0)) {
						//alert('check the date');
						alert('Please verify the date field.');
						frmobj.elements(i).focus();
						return false;
						}
					} 

				} // end if checking date field

		}	

	}
}
function getRealName(fldName){
	var msg; 
	msg = fldName.substr(6,fldName.length - 6);
	var re = /7/g; // 7 is the delimeter for space in the real name.
	msg = 'please check the field '+msg.replace(re,' ');	
	return msg;
}
function isProccessed(fldName){ //checking first digit
	var ProcesFlag = 'p';
	if (fldName.substr(0,1)==ProcesFlag){
		return true;
	}else{
		return false;
	}
}
function isRequired(fldName){//checking second digit
	var RequiredFlag = 1;
	if (fldName.substr(1,1)==RequiredFlag){
		return true;
	}else{
		return false;
		
	}
}
//checking forth digit////////////////////////////////////
function needInt(fldName){ // if positive int
	var IntFlag = 1;
	if (fldName.substr(3,1)==IntFlag){
		return true;
	}else{
		return false;		
	}
}
function needFloat(fldName){ // if positive float
	var FloatFlag = 2;
	if (fldName.substr(3,1)==FloatFlag){
		return true;
	}else{
		return false;		
	}
}
function needIntN(fldName){ // if positive or negative int
	var IntNFlag = 3;
	if (fldName.substr(3,1)==IntNFlag){
		return true;
	}else{
		return false;		
	}
}
function needFloatN(fldName){ // if positive or negative float
	var FloatNFlag = 4;
	if (fldName.substr(3,1)==FloatNFlag){
		return true;
	}else{
		return false;		
	}
}
function needEmail(fldName){ // if email 
	var EmailFlag = 5;
	if (fldName.substr(3,1)==EmailFlag){
		return true;
	}else{
		return false;		
	}
}
function needUrl(fldName){ // if email 
	var UrlFlag = 9;
	if (fldName.substr(3,1)==UrlFlag){
		return true;
	}else{
		return false;		
	}
}
function ifMultiCompo(fldName){ // if multi select compo 
	var MultiCompoFlag = 4;
	if (fldName.substr(2,1)==MultiCompoFlag){
		return true;
	}else{
		return false;		
	}
}
function needDate(fldName){ // if date
	var dateFlag = 7;
	var dayFlag = 6;
	var monthFlag = 7;
	var yearFlag = 8;
//	if (fldName.substr(2,1)==dateFlag){
		if (fldName.substr(3,1)==dayFlag){
			return 'day';
		}
		if (fldName.substr(3,1)==monthFlag){
			return 'month';
		}
		if (fldName.substr(3,1)==yearFlag){
			return 'year';
		}
		//return true;
//	}
	else{
		return 'nn';		
	}
}
//////////////////////////////LIBRARY\\\\\\\\\\\\\\\\\\\\\\\
function jLtrim(strtext){
	if (strtext.length == 0) return strtext;
	var ret
	var ik
	for (j=1; j<= strtext.length ;j++){
		ik = strtext.charAt(j - 1);
		if(ik != " "){
			break;
		}
	}
	//alert(ik);
	ret = strtext.substring(j -1, strtext.length );
	return ret;
}
function jRtrim(strtext){
	if (strtext.length == 0) return strtext;
	var ret
	var ik
	for (j=strtext.length; j >= 1 ;j--){
		ik = strtext.charAt(j - 1);
		if(ik != " "){
			break;
		}
	}
	//alert(ik);
	ret = strtext.substring(0,  j );
	return ret;
}
function jTrim(strtext)
{
	var ret
	ret = jLtrim(strtext);
	ret = jRtrim(ret);
	return ret;
}
function isIntegerN (s)
{
	if (s.substr(0,1)=='-'){
		return isInteger(s.substring(1,s.length-1));
	}else {
		return isIntegerP(s);
	}
}
function isIntegerP (s)
{
	if (s.substr(0,1)=='+'){
		return isInteger(s.substring(1,s.length-1));
	}else {
		return isInteger(s);
	}
}
function isInteger (s)
{   
var j;
    //if (isEmpty(s)) 
      // if (isInteger.arguments.length == 1) return defaultEmptyOK;
       //else return (isInteger.arguments[1] == true);
    for (j = 0; j < s.length; j++)
    {   
		var c = s.charAt(j);
        if (!isDigit(c)) return false;
    }
    return true;
}

function isDigit (c)
{   return ((c >= "0") && (c <= "9")) && (c != ".")
}
function isFloatN(s)
{
	if (s.substr(0,1)=='-'){
		return isFloatP(s.substring(1,s.length-1));
	}else {
		return isFloatP(s);
	}
}
function isFloatP(s)
{
	if (s.substr(0,1)=='+'){
		return isFloat(s.substring(1,s.length-1));
	}else {
		return isFloat(s);
	}
}
function isFloat (s)
{
	if ((s.length == 1) && (s ==".")){
		return false;
	}
   var j;

   // if (isEmpty(s)) 
   // if (isFloat.arguments.length == 1) return defaultEmptyOK;
   // else return (isFloat.arguments[1] == true);

    for (j = 0; j < s.length; j++)
    {   
        var c = s.charAt(j);

        if (!isDigitFloat(c)) return false;
    }
	var ss = s.split('.')
	if (ss.length > 2)
		return false;
    return true;
}


function isDigitFloat (c)
{   return((c >= "0") && (c <= "9") || (c == "."))
}

function isEmail(s)
{
		
		if (s.lastIndexOf('@') > 0)
		{
			var ss = s.split('@');
				if (ss.length > 2)
					return false;
				else
				{
				if (ss[1].lastIndexOf('.') > 0)
						return true;
						else
						return false;
				}
			
		}
		return false;	
}
function isUrl(s)
{
	if (s.lastIndexOf('.') > 0)
	
			return true;
			else
			return false;
}

function isDate (yy, mm, dd)
{   
	if (! isYear(yy)) return false;
	if (dd==0) return false;
	if (mm==0) return false;
    var intYear = parseInt(yy,10);
    var intMonth = parseInt(mm,10);
    var intDay = parseInt(dd,10);
    // catch invalid days, except for February
    if (dd > daysInMonth[mm]) return false;
    if (intMonth ==2)
    {
		var yk = intYear / 4;
		//alert(yk);
		var yp = GetInteger(yk);
		//alert(yp);
		if (yk == yp)
		{
			
			if (intDay > 29) {
				//alert(intYear/4);
				return false; 
			}
		}
		else
		{
			if (intDay > 28){
			return false; 
			}
		}
	}
    return true;
}

function GetInteger(n)
{	var v = n - 0.5;
	v = Math.round(v);
	return v;
}

function makeArray(n) {
   for (var i = 1; i <= n; i++) {
      this[i] = 0
   } 
   return this
}
function isYear (s)
{   
    if (!isInteger(s)) return false;
    return ((s.length == 2) || (s.length == 4));
}


function EnableDisableField ()
{
	args = EnableDisableField.arguments;
	for (i=0; i<(args.length-1); i+=2)
		if ((obj=MM_findObj(args[i]))!=null)
			{
			v=args[i+1];
			v=(v=='enable')?'':(v='disable')?'true':v;
		    obj.disabled=v;
			}
}
function HiddenValuesChange ()
{
		args = HiddenValuesChange.arguments;
	for (i=0; i<(args.length); i+=1)
		if ((obj=MM_findObj(args[i]))!=null)
			{
		    obj.value="";
			//alert (args[i] + "> <" + obj.value);
			}
}
function ChangeValue(id1,id2)
{
	obj1=MM_findObj(id1);
	obj2=MM_findObj(id2);
	obj1.value = obj2.value;
}
function ChangeValue2(id1,valeur)
{
	obj1=MM_findObj(id1);
	obj1.value = valeur;
}