/**
'***************************   Nimbustel   *******************************************
'Application:				
'Version:					
'Company Name:		C Com Enterprises Pvt Ltd.												
'Developer:				Rajesh,Atul Rajhans
'Date:						11/04/2003
'Flow Chat Ref.
'Summary:				Valiadate js file for all forms
'
'---------------------------------------------------------------------------------------
'Bug Report Number:                                                                     
'Developer:																	            
'Changes Done:                                                                          
'Date Modified:                                                                          
'****************************************************************************************	
**/
			
// For checking @ and . value in Email Address.
function isEmailAddr(email)
{
  var result = false;
  var theStr = new String(email);
  if(theStr=="")
	  return true;

  var index = theStr.indexOf("@");
  if (index > 0)
  {
    var pindex = theStr.indexOf(".",index);
    if ((pindex > index+1) && (theStr.length > pindex+1))
	result = true;
  }
  return result;
}

// Checks whether a field is not left blank.
function validRequired(formField,fieldLabel)
{
	var result = true;
	
	if (formField.value == "")
	{
		alert('Please enter a value for the "' + fieldLabel +'" field.');
		formField.focus();
		result = false;
	}
	
	return result;
}



// Function validates  zip field
function validateZIP(field) {
var valid = "0123456789-";
var hyphencount = 0;

if (field.length!=5 && field.length!=10) {
alert("Please enter your 5 digit or 5 digit+4 zip code.");
return false;
}
for (var i=0; i < field.length; i++) {
temp = "" + field.substring(i, i+1);
if (temp == "-") hyphencount++;
if (valid.indexOf(temp) == "-1") {
alert("Invalid characters in your zip code.  Please try again.");
return false;
}
if ((hyphencount > 1) || ((field.length==10) && ""+field.charAt(5)!="-")) {
alert("The hyphen character should be used with a properly formatted 5 digit+four zip code, like '12345-6789'.   Please try again.");
return false;
   }
}
return true;
}


function checkRequired(theForm)
{
   var pass=true
    var opass
//if (document.images){
	for (i=0;i<theForm.length;i++)
	{
		var tempobj=theForm.elements[i]
			if (tempobj.name.substring(0,11)=="txtRequired" || tempobj.name.substring(0,3)=="slt")
			{
	
				if (((tempobj.type=="text"||tempobj.type=="textarea"||tempobj.type=="password")&&tempobj.value=='')||(tempobj.type.toString().charAt(0)=="s"&&tempobj.selectedIndex==0))
				{
					pass=false
                    opass=tempobj
					break
				}
			}
	}
//}
	if (!pass)
	{
		alert("Please fill it")
         opass.focus()
		return false
	}
	else
		return true
}




// Checks for Digit value.
function allDigits(str)
{
	return inValidCharSet(str,"0123456789");
}


// Checks for Character value.
function inValidCharSet(str,charset)
{
	var result = true;
    var str1=str.value;
	// Note: doesn't use regular expressions to avoid early Mac browser bugs	
	for (var i=0;i<str1.length;i++)
		if (charset.indexOf(str1.substr(i,1))<0)
		{
		    result = false;
			break;
		}
	
	return result;
}


// Checks Email field for valid value.
function validEmail(formField,fieldLabel)
{
	var result = true;
	
	if (!isEmailAddr(formField.value))
	{
		alert("Please enter a complete email address in the form: yourname@yourdomain.com");
		formField.focus();
		result = false;
	}
   
  return result;

}


function validateCPassword(theForm)
{
	 if (theForm.txtRequiredPassword.value != theForm.txtRequiredRetypePassword.value)
   {
		alert ("\nYou did not enter the same new password twice. Please check your password.");
		theForm.txtRequiredRetypePassword.focus();
	   return false;
   }

}

// Checks  for Number value.
function validNum(formField,fieldLabel)
{
	var result = true;

	  
 	if (result)
 	{
 		if (!allDigits(formField.value))
 		{
 			alert('Please enter a number for the "' + fieldLabel +'" field.');
			formField.focus();
			formField.value="";
			result = false;
		}
	} 
	
	return result;
}



// Checks  for Integer value.
function validInt(formField,fieldLabel)
{
	var result = true;

	  
 	if (result)
 	{
 		var num = parseInt(formField.value,10);
 		if (isNaN(num))
 		{
 			alert('Please enter a number for the "' + fieldLabel +'" field.');
			formField.focus();		
			result = false;
		}
	} 
	
	return result;
}


// Checks Date field for valid value.
function validDate(formField,fieldLabel)
{
	var result = true;

	if (result)
 	{
 		var elems = formField.value.split("/");
 		
 		result = (elems.length == 3); // should be three components
 		
 		if (result)
 		{
 			var month = parseInt(elems[0],10);
  			var day = parseInt(elems[1],10);
 			var year = parseInt(elems[2],10);
			result = allDigits(elems[0]) && (month > 0) && (month < 13) &&
					 allDigits(elems[1]) && (day > 0) && (day < 32) &&
					 allDigits(elems[2]) && ((elems[2].length == 2) || (elems[2].length == 4));
 		}
 		
  		if (!result)
 		{
 			alert('Please enter a date in the format MM/DD/YYYY for the "' + fieldLabel +'" field.');
			formField.focus();		
		}
	} 
	
	return result;
}


// Function for whole form.
function validateForm(theForm,fieldLabel)
{
	
	// Start ------->
	for(i=0;i<=theForm.elements.length;i++)
	{
	  if (!validRequired(theForm.elements[i],fieldLabel))
	    	return false;
    }
	    
	// <--------- End
	
	return true;
}



// Functions For AutoTab.
//<!-- Begin
var isNN = (navigator.appName.indexOf("Netscape")!=-1);
function autoTab(input,len, e)
{
var keyCode = (isNN) ? e.which : e.keyCode; 
var filter = (isNN) ? [0,8,9] : [0,8,9,16,17,18,37,38,39,40,46];
if(input.value.length >= len && !containsElement(filter,keyCode))
{
input.value = input.value.slice(0, len);
input.form[(getIndex(input)+1) % input.form.length].focus();
}
function containsElement(arr, ele) 
{
var found = false, index = 0;
while(!found && index < arr.length)
if(arr[index] == ele)
found = true;
else
index++;
return found;
}
function getIndex(input) 
{
var index = -1, i = 0, found = false;
while (i < input.form.length && index == -1)
if (input.form[i] == input)index = i;
else i++;
return index;
}
return true;
}
//  End -->


// Checks Phone field for valid value.
function checkPhones(val)
{
   var strVal=val.value;
  
    var Chars = "0123456789";

    for (var i = 0; i < strVal.length; i++)
	{
       if (Chars.indexOf(strVal.charAt(i)) == -1)
	   {
          alert("Please Enter Digits Only.") ;
		  val.select();
		  val.value="";
		  val.focus();
          return false;
       }
    }
    return true;
    
}


// Checks  for Alphabet value.
function regular(string)
{
    
    if (!string) return false;
    var Chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";

    for (var i = 0; i < string.length; i++)
	
       if (Chars.indexOf(string.substr(i,1))<0)
	   {
	     
          return false;
		  
       }
    
    return true;

}



// Trims String.
	function trimString(str) 
{
	while (str.charAt(0) == ' ')
		str = str.substring(1);
	while (str.charAt(str.length - 1) == ' ')
		str = str.substring(0, str.length - 1);
	return str;
}

// Replaces String.
function myReplaceString(str,key,target)
{
	str = str.split(key).join(target);
	return str;
}

// Function to navigate to another location.
function gotoLink(str)
{
	window.location = str;
}


// Sets the action of a form to the specified value..
function formAction(theForm,theLink)
{
	theForm.action = theLink;
}


// Shows alert messages.
function showMe(str)
{
	alert(str);
}

// Function to move focus.
function moveFocustoNext(original,destination){
if (original.getAttribute&&original.value.length==original.getAttribute("maxlength"))
	{
		var tempStr = original.value;
		var tempArr = tempStr.split(" ");
		destination.value = tempArr[tempArr.length-1];
		destination.focus();
	}
}



// Checks  for Letters.
function validateCompanyName()
{
  if((event.keyCode<65 || event.keyCode>90) && (event.keyCode!=32) && (event.keyCode<97 || event.keyCode>122) && (event.keyCode<48 || event.keyCode>57))
 {
  alert("Please Enter Letters Only.");
  return false;
 }

}


function validateName()
{
	 if ((event.keyCode<65 || event.keyCode>90) && (event.keyCode!=32) && (event.keyCode!=46)&& (event.keyCode<97 || event.keyCode>122))
		 event.returnValue = false;
}


function validateNumber()
{
	 if (event.keyCode < 45 || event.keyCode > 57) event.returnValue = false;
}


//Phone Number:<br>
//<input type=text name=txtPostalCode onKeypress="if (event.keyCode < 45 || event.keyCode > 57) event.returnValue = false;"> 
//Function for CC Validation
<!-- Begin
var Cards = new makeArray(8);
Cards[0] = new CardType("MasterCard", "51,52,53,54,55", "16");
var MasterCard = Cards[0];
Cards[1] = new CardType("VisaCard", "4", "13,16");
var VisaCard = Cards[1];
Cards[2] = new CardType("AmExCard", "34,37", "15");
var AmExCard = Cards[2];
Cards[3] = new CardType("DinersClubCard", "30,36,38", "14");
var DinersClubCard = Cards[3];
Cards[4] = new CardType("DiscoverCard", "6011", "16");
var DiscoverCard = Cards[4];
Cards[5] = new CardType("enRouteCard", "2014,2149", "15");
var enRouteCard = Cards[5];
Cards[6] = new CardType("JCBCard", "3088,3096,3112,3158,3337,3528", "16");
var JCBCard = Cards[6];
var LuhnCheckSum = Cards[7] = new CardType();


function CheckCardNumber(form)
{
var tmpyear;
	if (form.txtRequiredCardNumber.value.length == 0) 
	{
		alert("Please enter a Card Number.");
		form.txtRequiredCardNumber.focus();
		return false;
	}
	if (form.txtRequiredExpYear.value.length == 0) 
	{
		alert("Please enter the Expiration Year.");
		form.txtRequiredExpYear.focus();
		return false;
	}
	if (form.txtRequiredExpYear.value > 96)
		tmpyear = "19" + form.txtRequiredExpYear.value;
	else if (form.txtRequiredExpYear.value < 21)
		tmpyear = "20" + form.txtRequiredExpYear.value;
	else 
	{
		alert("The Expiration Year is not valid.");
		form.txtRequiredExpYear.focus();
		return false;
	}
tmpmonth = form.sltExpMon.options[form.sltExpMon.selectedIndex].value;

	if (!(new CardType()).isExpiryDate(tmpyear, tmpmonth))
	{
		alert("This card has already expired.");
		form.txtRequiredExpYear.focus();
		return false;
	}
card = form.sltCardType.options[form.sltCardType.selectedIndex].value;
var retval = eval(card + ".checkCardNumber(\"" + form.txtRequiredCardNumber.value +
"\", " + tmpyear + ", " + tmpmonth + ");");
cardname = "";
if (retval)




alert("This card number appears to be valid.");


else
{

	for (var n = 0; n < Cards.size; n++)
    {
		if (Cards[n].checkCardNumber(form.txtRequiredCardNumber.value, tmpyear, tmpmonth)) 
		{
			cardname = Cards[n].getCardType();
			break;
		}
	}
	if (cardname.length > 0)
	{
		alert("This looks like a " + cardname + " number, not a " + card + " number.");
		form.txtRequiredCardNumber.focus();
		return false;
	}
	else
	{
		alert("This card number is not valid.");
		form.txtRequiredCardNumber.focus();
		return false;
   }
}
}

function CardType()
{
var n;
var argv = CardType.arguments;
var argc = CardType.arguments.length;

this.objname = "object CardType";

var tmpcardtype = (argc > 0) ? argv[0] : "CardObject";
var tmprules = (argc > 1) ? argv[1] : "0,1,2,3,4,5,6,7,8,9";
var tmplen = (argc > 2) ? argv[2] : "13,14,15,16,19";

this.setCardNumber = setCardNumber;  
this.setCardType = setCardType;  
this.setLen = setLen; 
this.setRules = setRules;  
this.setExpiryDate = setExpiryDate;  

this.setCardType(tmpcardtype);
this.setLen(tmplen);
this.setRules(tmprules);
if (argc > 4)
this.setExpiryDate(argv[3], argv[4]);

this.checkCardNumber = checkCardNumber;  
this.getExpiryDate = getExpiryDate;  
this.getCardType = getCardType;  
this.isCardNumber = isCardNumber;  
this.isExpiryDate = isExpiryDate;  
this.luhnCheck = luhnCheck;
return this;
}


function checkCardNumber()
{
var argv = checkCardNumber.arguments;
var argc = checkCardNumber.arguments.length;
var cardnumber = (argc > 0) ? argv[0] : this.cardnumber;
var year = (argc > 1) ? argv[1] : this.year;
var month = (argc > 2) ? argv[2] : this.month;

this.setCardNumber(cardnumber);
this.setExpiryDate(year, month);

if (!this.isCardNumber())
return false;
if (!this.isExpiryDate())
return false;

return true;
}

function getCardType() 
{
return this.cardtype;
}

function getExpiryDate() 
{
return this.month + "/" + this.year;
}

function isCardNumber() 
{
var argv = isCardNumber.arguments;
var argc = isCardNumber.arguments.length;
var cardnumber = (argc > 0) ? argv[0] : this.cardnumber;
if (!this.luhnCheck())
return false;

for (var n = 0; n < this.len.size; n++)
if (cardnumber.toString().length == this.len[n])
{
for (var m = 0; m < this.rules.size; m++) 
{
var headdigit = cardnumber.substring(0, this.rules[m].toString().length);
if (headdigit == this.rules[m])
return true;
}
return false;
}
return false;
}


function isExpiryDate() 
{
var argv = isExpiryDate.arguments;
var argc = isExpiryDate.arguments.length;

year = argc > 0 ? argv[0] : this.year;
month = argc > 1 ? argv[1] : this.month;

if (!isNum(year+""))
return false;
if (!isNum(month+""))
return false;
today = new Date();
expiry = new Date(year, month);
if (today.getTime() > expiry.getTime())
return false;
else
return true;
}


function isNum(argvalue)
{
argvalue = argvalue.toString();

if (argvalue.length == 0)
return false;

for (var n = 0; n < argvalue.length; n++)
if (argvalue.substring(n, n+1) < "0" || argvalue.substring(n, n+1) > "9")
return false;

return true;
}


function luhnCheck()
{
var argv = luhnCheck.arguments;
var argc = luhnCheck.arguments.length;

var CardNumber = argc > 0 ? argv[0] : this.cardnumber;

if (! isNum(CardNumber)) 
{
return false;
}

var no_digit = CardNumber.length;
var oddoeven = no_digit & 1;
var sum = 0;

for (var count = 0; count < no_digit; count++) 
{
var digit = parseInt(CardNumber.charAt(count));
if (!((count & 1) ^ oddoeven)) 
{
digit *= 2;
if (digit > 9)
digit -= 9;
}
sum += digit;
}
if (sum % 10 == 0)
return true;
else
return false;
}


function makeArray(size) {
this.size = size;
return this;
}


function setCardNumber(cardnumber) {
this.cardnumber = cardnumber;
return this;
}

function setCardType(cardtype) {
this.cardtype = cardtype;
return this;
}


function setExpiryDate(year, month) {
this.year = year;
this.month = month;
return this;
}


function setLen(len) {

if (len.length == 0 || len == null)
len = "13,14,15,16,19";

var tmplen = len;
n = 1;
while (tmplen.indexOf(",") != -1) {
tmplen = tmplen.substring(tmplen.indexOf(",") + 1, tmplen.length);
n++;
}
this.len = new makeArray(n);
n = 0;
while (len.indexOf(",") != -1) {
var tmpstr = len.substring(0, len.indexOf(","));
this.len[n] = tmpstr;
len = len.substring(len.indexOf(",") + 1, len.length);
n++;
}
this.len[n] = len;
return this;
}


function setRules(rules) {

if (rules.length == 0 || rules == null)
rules = "0,1,2,3,4,5,6,7,8,9";
  
var tmprules = rules;
n = 1;
while (tmprules.indexOf(",") != -1) {
tmprules = tmprules.substring(tmprules.indexOf(",") + 1, tmprules.length);
n++;
}
this.rules = new makeArray(n);
n = 0;
while (rules.indexOf(",") != -1) {
var tmpstr = rules.substring(0, rules.indexOf(","));
this.rules[n] = tmpstr;
rules = rules.substring(rules.indexOf(",") + 1, rules.length);
n++;
}
this.rules[n] = rules;
return this;
}


function check1(form)
{
	

//if (form.cmbGroup.name=="cmbGroup")
	//	{
		
			// IF OBJECT IS AVAILABLE CHECK ITS VALUE !!!!!

				if ((form.cmbMovePartner) && (form.cmbMovePartner.value==""))
				{
				alert("Please select the Partner in drop down box");
				form.cmbMovePartner.focus();
				return false;
				}
				
			//	if ((form.cmbSubPartner)&&(form.cmbSubPartner.value==""))
			//	{
			///	alert("Please select the Sub Partner in drop down box");
			//	form.cmbSubPartner.focus()
			//	return false;
			//	}
			
				if ((form.cmbMoveSubPartner)&&(form.cmbMoveSubPartner.value==""))
				{
				alert("Please select the Partner in drop down box");
				form.cmbMoveSubPartner.focus()
				return false;
				}

				
			if ((form.cmbGroup) &&(form.cmbGroup.value==""))
			{
				alert("Please select the Group in drop down box");
				form.cmbGroup.focus();
				
				return false;
			}

			if ((form.cmbDestGroup) &&(form.cmbDestGroup.value==""))
					{
						alert("Please select the Group in drop down box");
						form.cmbDestGroup.focus();
						return false;
					}
		//	if ((form.PinToT1) &&(form.PinToT1.value==0))
		//		{
		///		alert("No Pins in the Group");
				//form.PinFromT1.focus();
		//		return true;
		//		}

			if ((form.cmbCustomer)&&(form.cmbCustomer.value==""))
			{
				alert("Please select the Partner in drop down box");
				form.cmbCustomer.focus();
				return false;
			}
			
			if ((form.cmbSelectCust)&&(form.cmbSelectCust.value==""))
			{
				alert("Please select the Customer in drop down box");
				form.cmbSelectCust.focus();
				return false;
			}
			
			if ((form.cmbDestforCustomer)&&(form.cmbDestforCustomer.value==""))
			{
				alert("Please select the Partner in drop down box");
				form.cmbDestforCustomer.focus();
				return false;
			}
			
			if ((form.cmbMoveLB)&&(form.cmbMoveLB.value==""))
						{
							alert("Please select the Partner in drop down box");
							form.cmbMoveLB.focus();
							return false;
						}

						if ((form.cmbMoveLB1)&&(form.cmbMoveLB1.value==""))
								{
								alert("Please select the Partner in drop down box");
								form.cmbMoveLB1.focus();
								return false;
								}
						
						if ((form.cmbSelectGroup)&&(form.cmbSelectGroup.selectedIndex==0))
							{
								alert("Please select Group in the drop down box");
								form.cmbSelectGroup.focus();
								return false;
							}

							if ((form.cmbPartnerWise)&&(form.cmbPartnerWise.selectedIndex==0))
							{
								alert("Please select Partner in the drop down box");
								form.cmbPartnerWise.focus();
								return false;
							}
							if ((form.cmbpartnerAct)&&(trim(form.cmbpartnerAct.value)==""))
							{
								alert("Please select Partner in the drop down box");
								form.cmbpartnerAct.focus();
								return false;
							}
		//	alert(form.name);
			return true;

}


function checkAll(mainBox,boxes)
{
		for(i=0; i<=boxes.length; i++)
		{
			
			if(mainBox.checked==true)
			{
				
				boxes[i].checked=true;
			}
			else if (mainBox.checked==false)
			{
				boxes[i].checked=false;
			}
		}
}


function checkBoxrequired(form) 
	{
		for (i=0;i<form.length;i++ )
		{
			
			if (form.elements[i].type=="checkbox")
				{

				if(form.elements[i].checked==true)
						{	
							return true;
						}
				}
		}
		
			alert("Please Select at least one check box to move ");
			return false;
		
}
	

function isWhiteSpace(formField)
{
	fieldValue=formField.value.replace(/^\s+$/, '')
	if (!fieldValue)
	{
		//alert('Field is blank.');
		//formField.value='';
		formField.focus()
		formField.select()
	return false
	}
return true
}
