var tempArrayVal = new Array();
var tempArrayLabel = new Array();
var validateflag=false;
// variables defined for alphanumeric field check
var UP      = 1;
var multi   = 2
var WS      = 4;
var WSWC    = 8;
var NSC     = 16;
var NSCWC   = 32
var WSNSC   = 64;
var WSNSCWC = 128;
var CODE    = 256;
var SIGNED  = 512;
var TABOUT  = 1024;
var dateError = "";
var timeError = "";
var DTEND = 2048;
function alphaNumericFieldCheck(objCurrent, type)
{
	
  if(flagVar == 'true')
  {
    var char_numStr    = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
     var splChar_String = "~!@#$^*()-=/?.>,<:;+ŁĄ€'";
    var spcChar_Str    = " ";
    var wildCard_Str   = "%_";
    var numStr         = "0123456789";
	var phStr		   = "0123456789- ";
    var dot = ".";
	var phStr		   = "0123456789- ";
	var addStr         = "/_- ,.&#";
    //V. NERELLA - START
	 var charStr			= "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
    //V. NERELLA - END
	var identifier_Str = "+/\\";
    var charString;
    var strObjValue = objCurrent.value;
    if(strObjValue.charAt(strObjValue.length-1)==' ')
    {
      strObjValue= removeTrailingSpaces(objCurrent);
    }
    if(strObjValue.charAt(0)==' ')
    {
      strObjValue=removeLeadingSpaces(objCurrent);
    }
    if(!type)
    {
      type='Other';
    }
    switch(type)
    {
      case 'Other'    :
        charString     = char_numStr + splChar_String + spcChar_Str;
        break;
      case 'multi'    :
        charString     = char_numStr + splChar_String + spcChar_Str + wildCard_Str;
        break;
      case 'WS'       :
        charString     = char_numStr + splChar_String ;
        break;
      case 'WSWC'     :
        charString     = char_numStr + splChar_String + wildCard_Str;
        break;
      case 'NSC'      :
        charString     = char_numStr + spcChar_Str;
        break;
      case 'NSCWC'    :
        charString     = char_numStr + spcChar_Str + wildCard_Str;
        break;
      case 'WSNSC'    :
        charString     = char_numStr ;
        break;
      case 'WSNSCWC'  :
        charString     = char_numStr + wildCard_Str;
        break;
		case 'NUMWC'    : 
			charString     = numStr + wildCard_Str;
        break;
		case 'NUM'    :
		 charString     = numStr;
		break;
		case 'ALPHA' : 
			charString     = char_numStr;
		break;
      case 'AMNT'    :
        charString     = numStr + dot;
        break;
	  case 'PH'    : 
        charString     = phStr;
		break;
	  case 'ADD'	 :	   
        charString     = char_numStr + addStr;       
		break;
	  case 'PH'    : 
        charString     = phStr;
        break;
    //V. NERELLA - START
	   case 'ALPHASPC'	:
		   
		  charString = spcChar_Str + charStr;
        break;
	   case 'ALPHASPCDOT'	:
		  charString = spcChar_Str + charStr+dot;
        break;
	//V. NERELLA - END
	   case 'IDSTR' :
		 charString     = char_numStr + identifier_Str;	

    }
    for ( i=0; i<strObjValue.length; i++)
  	{
  	  thisChar = strObjValue.charAt(i);
      if (charString.indexOf( thisChar ) == -1)
      {
        var objectName =  getObjectLabel(objCurrent.id,objCurrent);
		var str ="";
		if(objCurrent.type == "password")
		  str = COM00059+"password field";
		else
          str = COM00059+objectName;
        setError(str);
        return false;
  	  }
  	}
  	
  	if(type == 'AMNT')
  	{
  		var vFirstValue = strObjValue.substring(0,strObjValue.indexOf("."));
   		var vSecondValue = strObjValue.substring(strObjValue.indexOf(".")+1,strObjValue.length);
   		var vDotCount=0;
		var objectName =  getObjectLabel(objCurrent.id,objCurrent);
   		if(strObjValue.indexOf(".")!=-1){ 
		   		for(var i=0;i<strObjValue.length;i++){
		   			if(strObjValue.charAt(i) == "."){
		   				vDotCount = parseInt(vDotCount+1);
		   			}		   			
		   		}
		   		if(vDotCount > 1){
 		          str = COM00059+objectName;
    		        setError(str);
   		        	return false;
		   		}   			
   				else if(isNaN(vFirstValue)){
   				          str = COM00059+objectName;
					        setError(str);
	   				   		return false;
   				}
   				else if(isNaN(vSecondValue) || vSecondValue.length>2){
   				    	 str = COM00132+objectName;
	    	    		setError(str);
   						return false;   			
   				}
   				else{
   					return true;
   				}
   			} 
   		}	
  		}
			
 return true;
}
function mandatoryFieldCheck(objForm)
{
 if(flagVar == 'true')
 {
 	var blnFlag=true; // This flag if true then error is set in a stack
    var errFlag=false;
    if(document.getElementById)
    {
    	
      var len = objForm.length;
      for(var i=0; i<len; i++)
      {
      	
        blnFlag=true;
        var objElement=objForm.elements[i];
        if (objElement.id.substring(0,4)=='reqd') // check for mandatory
        {
        	
          if(objElement.value.charAt(0)==' ')//remove leading spaces
            objElement.value= removeLeadingSpaces(objElement);

			
           // checks if objElement value is blank then set boolean flag
          if(((objElement.type=='password' || objElement.type=='text'||objElement.type=='textarea')&&objElement.value=='')||
            (objElement.type.toString().charAt(0)=='S' && objElement.selectedIndex==0)||
            (objElement.type=='checkbox' && objElement.checked==false))
          {
            blnFlag=false;
            errFlag = true;
          }
        }
        if (!blnFlag)
        {
          var elementFieldId=getObjectLabel(objElement.id,objElement); //objElement.id.substring(4).toUpperCase();
          var str = elementFieldId+COM00004;
          setError(str);
        }
      }
      if(errFlag)
      {
        //stripMethod();
        return false;
      }
    }
  }
  else
    return true;
}
function alphabeticFieldCheck(objCurrent)
{
  if(flagVar == 'true')
  {
    var strObjValue = objCurrent.value;
    // remove trailing spaces
    if(strObjValue.charAt(strObjValue.length-1)==' ')
      strObjValue= removeTrailingSpaces(objCurrent);

    // remive leading spaces
    if(strObjValue.charAt(0)==' ')
      strObjValue=removeLeadingSpaces(objCurrent);

    var len = strObjValue.length;

    for (var i=0; i<len; i++)
    {
      var charObject = strObjValue.charAt(i);

      // if character no bet between [a-z] or [A-Z] then raise error
      if(!(((charObject >= 'a') && (charObject <= 'z')) || ((charObject >= 'A') && (charObject <= 'Z'))))
      {
        var objectName =  getObjectLabel(objCurrent.id,objCurrent);
        var str = COM00058+objectName;
        setError(str);
        return false;
      }
    }
  }
  return true;
}

function getObjectLabel(objId,fieldObj)
{
  var label=  "&nbsp;"+ "["+trim(getObjectName(objId,fieldObj))+"]"+"&nbsp;";
  return label;
}

function getObjectName(objId,fieldObj)
{
  len =  objId.length;
  lastChar = objId.charAt(len-1);
  if(checkDataType(lastChar,"N"))
  {
    objId = objId.substring(0,len-1);
  }
  var labelObjId = objId+"_lbl";
  labelObj = document.getElementById(labelObjId); //get the object with the given id.
  var preSib = null;
  var prePreSib = null;
  var  length   = 0;
  var  label    =null;
  if(null==labelObj)
  {
    preSib    = fieldObj.previousSibling;
    if(preSib.nodeName=='A')
    {
      parentEle    = preSib.parentElement;
      preParentSib = parentEle.previousSibling;
      mainEle      = preParentSib.previousSibling;
      labelObj     = mainEle;
      length       =  labelObj.childNodes.length;
      if(length==2)
      {
        label = labelObj.childNodes[1].data+"Time";
      }
      else
      {
        label = labelObj.childNodes[0].data+"Time";
      }
    }
  }
  else
  {
    length =  labelObj.childNodes.length;
    // check if field is mandatory or optional then accordingly get the label name.
    if(length==2)
    {
      label = labelObj.childNodes[1].data
    }
    else
    {
      label = labelObj.childNodes[0].data
    }
  }
  var labelTime=null;
  if(label.indexOf(":")!=-1)
  {
    var labelIndex = label.indexOf(":"); // remove the ":" at the end of the label.
    label          = label.substring(0,labelIndex-1);
  }

  if((fieldObj.type!='select-one' && fieldObj.value =='')||
     (fieldObj.type=='select-one' && fieldObj.value =='98')||
	  (fieldObj.type=='password'))
  {
    return label; // return label
  }
  else
  {
    return (label+" : "+fieldObj.value); // return label
  }
}
function getObjName(objId)
{
  var fieldObj = document.getElementById(objId);
  len =  objId.length;
  lastChar = objId.charAt(len-1);
  if(checkDataType(lastChar,"N"))
  {
    objId = objId.substring(0,len-1);
  }
  var labelObjId = objId+"_lbl";

  labelObj = document.getElementById(labelObjId); //get the object with the given id.
  var preSib = null;
  var prePreSib = null;
  var  length   = 0;
  var  label    =null;
  if(null==labelObj)
  {
    preSib    = fieldObj.previousSibling;
    if(preSib.nodeName=='A')
    {
      parentEle    = preSib.parentElement;
      preParentSib = parentEle.previousSibling;
      mainEle      = preParentSib.previousSibling;
      labelObj     = mainEle;
      length       =  labelObj.childNodes.length;
      if(length==2)
      {
        label = labelObj.childNodes[1].data+"Time";
      }
      else
      {
        label = labelObj.childNodes[0].data+"Time";
      }
    }
  }
  else
  {
    length =  labelObj.childNodes.length;
    // check if field is mandatory or optional then accordingly get the label name.
    if(length==2)
    {
      label = labelObj.childNodes[1].data
    }
    else
    {
      label = labelObj.childNodes[0].data
    }
  }
  if(label.indexOf(":")!=-1)
  {
    var labelIndex = label.indexOf(":"); // remove the ":" at the end of the label.
    label   = label.substring(0,labelIndex);
  }
  label = trim(label); // trim spaces from label.
  return label; // return label
}
function mandatoryFieldCheck()
{
	
  var tableObj;
  var tableId;
  var errFlag = false;
  if(flagVar == 'true')
  {
    for(blockCounter=1;;blockCounter++)
    {
      tableId  = "Datablock"+blockCounter;//Changed by MCACross
      tableObj = document.getElementById(tableId);
      if(tableObj!=null)
      {
      	if(!blockMandatoryFieldCheck(tableObj))
      	{
      		errFlag=true;
      	}
      }
      else
      {
        break;
      }
    }
    for(tableCounter=1;;tableCounter++)
    {
      tableId  = "list"+tableCounter;
      tableObj = document.getElementById(tableId);
      if(tableObj!=null)
      {
        if(!eval("document.forms[0].rowModified_"+tableId))
        {
          continue;
        }
      	if(!listMandatoryFieldCheck(tableId, tableObj))
      	{
      		errFlag=true;
      	}
      }
      else
      {
        break;
      }
    }
    if(errFlag)
    {
      stripMethod();
      return false;
    }
  }
  else
  {
    return true;
  }
}
function blockMandatoryFieldCheck(tableObj)
{
  var errFlag;
  inputElements  = tableObj.getElementsByTagName("INPUT");
  
  for(counterInput = 0; counterInput < inputElements.length; counterInput++)
  {
    htmlObj = inputElements[counterInput];
    if (htmlObj.id.substring(0,4)=='reqd')
    {
      if(htmlObj.value.charAt(0)==' ')
      {
        htmlObj.value= removeLeadingSpaces(htmlObj);
      }
      if((htmlObj.type=='text' ||htmlObj.type=='password'|| htmlObj.type=='file')&& htmlObj.value=='')
      {
        var elementFieldId=getObjectLabel(htmlObj.id,htmlObj); //objElement.id.substring(4).toUpperCase();
        var str = elementFieldId+COM00004;
        setError(str);
        errFlag = true;
      }
    }
  }
  selectElements = tableObj.getElementsByTagName("SELECT");
  for(counterSelect = 0; counterSelect < selectElements.length; counterSelect++)
  {
    htmlObj = selectElements[counterSelect];
    if (htmlObj.id.substring(0,4)=='reqd')
    {
      if(htmlObj.value.charAt(0)==' ')
      {
        htmlObj.value= removeLeadingSpaces(htmlObj);
      }
      if(htmlObj.type.toString().charAt(0)=='s')
      {
        var index = htmlObj.selectedIndex;
        if(htmlObj.selectedIndex==0)
        {
          var elementFieldId=getObjectLabel(htmlObj.id,htmlObj); //objElement.id.substring(4).toUpperCase();
          var str = elementFieldId+COM00004;
          setError(str);
          errFlag = true;
        }
      }
    }
  }
  
  selectElements = tableObj.getElementsByTagName("textarea");

  for(counterSelect = 0; counterSelect < selectElements.length; counterSelect++)
  {
  	htmlObj = selectElements[counterSelect];
   if (htmlObj.id.substring(0,4)=='reqd')
    {
      if(htmlObj.value.charAt(0)==' ')
      {
        htmlObj.value= removeLeadingSpaces(htmlObj);
      }
      if(htmlObj.value=='')
      {
        var elementFieldId=getObjectLabel(htmlObj.id,htmlObj); //objElement.id.substring(4).toUpperCase();
        var str = elementFieldId+COM00004;
        setError(str);
        errFlag = true;
      }
    }
  }
  
  if(errFlag)
  {
  	return false;
  }
  else
  {
  	return true;
  }
}

function listMandatoryFieldCheck(tableId,tableObj)
{
  var rowModifiedObj;
  var errFlag;
  rows = tableObj.getElementsByTagName('tr');
  for(i = 1; i < rows.length ; i++ )
  {
    rowModifiedObj = eval("document.forms[0].rowModified_"+tableId)[i-1];
    if(rowModifiedObj && (rowModifiedObj.value=='' || rowModifiedObj.value=='Deleted'))
    {
    	continue;
    }    cols= rows[i].getElementsByTagName('td');
    for(ind = 0; ind < cols.length ; ind++ )
    {
      col = cols[ind];
      if(col.childNodes[0])
      {
        htmlObj = col.childNodes[0];
        switch(htmlObj.nodeName)
        {
          case 'INPUT'  :
            if (htmlObj.id.substring(0,4)=='reqd')
            {
              if(htmlObj.value.charAt(0)==' ')
              {
                htmlObj.value= removeLeadingSpaces(htmlObj);
              }
              if(htmlObj.type=='text'&& htmlObj.value=='')
              {
                var elementFieldId=getObjectLabel(htmlObj.id,htmlObj); //objElement.id.substring(4).toUpperCase();
                var str = elementFieldId+COM00004+ "for  Row["+i+"]";
                setError(str);
                errFlag = true;
              }
            }
            break;
          case 'SELECT' :
            if (htmlObj.id.substring(0,4)=='reqd')
            {
              if(htmlObj.value.charAt(0)==' ')
              {
                htmlObj.value= removeLeadingSpaces(htmlObj);
              }
              if(htmlObj.type.toString().charAt(0)=='s' &&
                        (htmlObj.selectedIndex==0 || htmlObj.selectedIndex==-1))
              {
                var elementFieldId=getObjectLabel(htmlObj.id,htmlObj); //objElement.id.substring(4).toUpperCase();
                var str = elementFieldId+COM00004+ " for Row["+i+"]";
                setError(str);
                errFlag = true;
              }
            }
            break;
          default       :
            break;
        }
      }
    }
	}
	if(errFlag)
  {
  	return false;
  }
  else
  {
  	return true;
  }
}
function checkMinLength(objCurrent,objMinLength)
{
  if(flagVar=='true')
  {
    var objValue = objCurrent.value;
    objValue     = trim(objValue);
    if(objValue && objValue.length < objMinLength)
    {
      var objectName = getObjectLabel(objCurrent.id, objCurrent);
      var str = 'Enter atleast '+objMinLength+ ' character for '+ objectName;
      setError(str);
      return false;
    }
  }
  return true;
}
