// METHOD TO CHECK CREDIT CARD NUMBER IS VALID OR NOT
function isValidCreditCardNumber(cardNumber, cardType) {
  var isValid = false;
  var ccCheckRegExp = /[^\d ]/;
  isValid = !ccCheckRegExp.test(cardNumber);
  if (isValid)
  {
    var cardNumbersOnly = cardNumber.replace(/ /g,"");
    var cardNumberLength = cardNumbersOnly.length;
    var lengthIsValid = false;
    var prefixIsValid = false;
    var prefixRegExp;
    switch(cardType)
    {
      case "mastercard":
        lengthIsValid = (cardNumberLength == 16);
        prefixRegExp = /^5[1-5]/;
        break;
      case "visa":
        lengthIsValid = (cardNumberLength == 16 || cardNumberLength == 13);
        prefixRegExp = /^4/;
        break;
      case "amex":
        lengthIsValid = (cardNumberLength == 15);
        prefixRegExp = /^3(4|7)/;
        break;
	 case "Discover":
        lengthIsValid = (cardNumberLength == 16);
        prefixRegExp = /^3(4|7)/;
        break;
	 case "enRoute":
        lengthIsValid = (cardNumberLength == 15);
        prefixRegExp = /^3(4|7)/;
        break;
	case "JCB":
	   lengthIsValid = (cardNumberLength == 16);
        prefixRegExp = /^3(4|7)/;
        break;
	case "Diner'sClubOrCarteBlanche":
        lengthIsValid = (cardNumberLength == 14);
        prefixRegExp = /^3(4|7)/;
        break;
      default:
        prefixRegExp = /^$/;
        alert("Card type not found");
    }

    prefixIsValid = prefixRegExp.test(cardNumbersOnly);
    isValid = prefixIsValid && lengthIsValid;
  }
  if (isValid)
  {

    var numberProduct;
    var numberProductDigitIndex;
    var checkSumTotal = 0;

    for (digitCounter = cardNumberLength - 1; digitCounter >= 0; digitCounter--)
    {
    	checkSumTotal += parseInt (cardNumbersOnly.charAt(digitCounter));
      	digitCounter--;
      	numberProduct = String((cardNumbersOnly.charAt(digitCounter) * 2));
      	for (var productDigitCounter = 0; productDigitCounter < numberProduct.length; productDigitCounter++)
      	{
        	checkSumTotal += 
          	parseInt(numberProduct.charAt(productDigitCounter));
      	}
    }
    isValid = (checkSumTotal % 10 == 0);
  }
  return isValid;
}

// METHOD TO CHECK EMAIL IS VALID OR NOT
function isEmail(s) {
	if(s.search(/^\w+([\-\+\.]\w+)*@\w+([\-\.]\w+)*\.\w+([\-\.]\w+)*$/)==-1)
		return false;	
}

// METHOD TO CHECK PASSWORD IS VALID OR NOT
function isPassword(s) {
	if(s.search(/^[a-zA-Z0-9@*#]{1,6}$/))
		return false;	
}

// METHOD TO CHECK PHONE NUMBER IS VALID OR NOT
function isPhoneNumVaild(s) {
	var exp=/^[\+\(\d][\d\-\(\)\s]*$/;
	if(s.search(exp)==-1)
		return false;	
}

// METHOD TO CHECK STRING IS VALID OR NOT
function isStringValid(s) {
/*	if(s.search(/^[a-z|A-Z|_|\'\.|\-|\s|\&]*$/)==-1)
		return false;	
*/
	return true;
}

// METHOD TO CHECK ZIP CODE IS VALID OR NOT
function isValidZip(s) {
/*
	//var exp=/^[\d\- ]*$/;
	var exp=/^[\+\(\d][\d\-\(\)\s]*$/;	
	if(s.search(exp)==-1)
		return false;
*/
	return true;
}

// METHOD TO TRIM ALL THE SPACES BEFORE AND AFTER THE TEXT
function trimAll(sString) {
	while (sString.substring(0,1) == ' ')
	{
		sString = sString.substring(1, sString.length);
	}
	while (sString.substring(sString.length-1, sString.length) == ' ')
	{
		sString = sString.substring(0,sString.length-1);
	}
	return sString;
}

// METHOD TO FILL/CHECK THE VALUE ENTERED IN THE TEXT FIELD
function isFilled(s, strValue) {
	if (trimAll(s.value) == strValue)
			s.value = '';
	else if (trimAll(s.value) == '')
		s.value = strValue;
	
	return true;
}

// URL VALIDATION
function isValidURL(s) {
	if(s.search(/^(http:\/\/)?([\w\-]+\.)+[\w\-]+(\/[\w\- .\/?%&=]*)?$/))
		return false;	
}

// CHECK ALL CHECKBOXES
function checkAll(s,c) {
	for (var i=0;i<s.elements.length;i++)
	{
		var e=s.elements[i];
		
		if (c == 'check')
		{
			e.checked = true;
		}
		if (c == 'uncheck')
		{
			e.checked = false;
		}
	}
}

// METHOD TO CHECK ALPHA STRING IS VALID OR NOT
function isAlphaString(s) {
/*	if(s.search(/^[a-zA-Z0-9][a-zA-Z0-9\@\&\.\-\*\$\s]*$/))
		return false;	
*/
	return true;	
}

// METHOD FOR PAGING
function funPagingSubmit(frm,actionpage) {
	frm.action = actionpage;
	frm.submit();
}

//to get unique values from an array
function array_unique(arr)
{
  var vic = new Object();
  for(i=0; i < arr.length; i++)
   vic[arr[i]] = "";
  arr = new Array();
  for(i in vic)
    arr[arr.length] = i;
  return arr;
}

function filterFileTypeforImages(file)
{
	file = file.value;
	extArray = new Array(".gif", ".jpg", ".png",".jpeg",".tif");
	allowSubmit = false;
	if (!file) return;
	while (file.indexOf("\\") != -1)
	file = file.slice(file.indexOf("\\") + 1);

	ext = file.slice(file.indexOf(".")).toLowerCase();
	for (var i = 0; i < extArray.length; i++)
	{
		if (extArray[i] == ext)
		{
			allowSubmit = true;
			break;		
		} 
	}
	if (allowSubmit)
		return true;
	else
		return false;
		
	return false;
}




function IsNumeric(strString)
  {
   var strValidChars = "0123456789";
   var strChar;
   var blnResult = true;
   if (strString.length == 0) return false;
   for (i = 0; i < strString.length && blnResult == true; i++)
   {
      strChar = strString.charAt(i);
      if (strValidChars.indexOf(strChar) == -1)
      {
         blnResult = false;
      }
    }
   return blnResult;
}

