var mblnIsPendingUpdate = false;

String.prototype.trim = function() 
{
  a = this.replace(/^\s+/, '');
  return a.replace(/\s+$/, '');
};


function FocusField(aobjField)
{  
  setTimeout(function(){aobjField.focus()}, 10);
}

function SetIsPendingUpdate(ablnIsPendingUpdate)
{
  mblnIsPendingUpdate = ablnIsPendingUpdate;
}

function IsPendingUpdate()
{
  return mblnIsPendingUpdate;
}


function IsRadioGroupChecked(astrGroupName)
{ 
  var blnIsChecked = false;
  var inputs = document.getElementsByTagName('input');
  for (var i = 0; i < inputs.length; i++) 
  {
    if (inputs[i].type == 'radio' &&
        inputs[i].name == astrGroupName && 
        inputs[i].checked)
    {
        
        blnIsChecked = true;
        break;
    }
  }
  
  return blnIsChecked;
}

function WarnInvalid(aobjField, astrMessage)
{
  try
  {
    alert(astrMessage);
    setTimeout(function(){aobjField.focus()}, 10);
    aobjField.select();
  }
  catch (ex) {}
  return false;
}


function IsValidPositiveInteger(aobjfield, astrmessage)
{
	if ( isNaN(aobjfield.value) )
	{
		return WarnInvalid(aobjfield, astrmessage);	
	}
	else if ( aobjfield.value.indexOf(".") >= 0)
	{
		return WarnInvalid(aobjfield, astrmessage);
	}
	else if ( parseFloat(aobjfield.value) <= 0)
	{
		return WarnInvalid(aobjfield, astrmessage);
	}
	else if (aobjfield.value.length > 0 && aobjfield.value.trim().length == 0)
	{
		return WarnInvalid(aobjfield, astrmessage);
	}
	else
	{
		return true;
	}
}

function IsValidInteger(aobjfield, astrmessage)
{
	if ( isNaN(aobjfield.value) )
	{
		return WarnInvalid(aobjfield, astrmessage);	
	}
	else if ( aobjfield.value.indexOf(".") >= 0)
	{
		return WarnInvalid(aobjfield, astrmessage);
	}
	else if ( parseFloat(aobjfield.value) < 0)
	{
		return WarnInvalid(aobjfield, astrmessage);
	}
	else if (aobjfield.value.length > 0 && aobjfield.value.trim().length == 0)
	{
		return WarnInvalid(aobjfield, astrmessage);
	}
	else
	{
		return true;
	}	
}

function IsValidDD(aobjfield, astrmessage)
{
  var blnIsValidDD = false;
  var intDD = 0;
  if (aobjfield.value != NaN)
  {
    intDD = parseInt(aobjfield.value);
  }
  if (intDD >= 1 && intDD <= 31)
  {
    blnIsValidDD = true;
  }
  if (blnIsValidDD == false)
  {
		return WarnInvalid(aobjfield, astrmessage);
	}
	else
	{
		return true;
	}
}
			

function IsValidMM(aobjfield, astrmessage)
{
  var blnIsValidMM = false;
  var intMM = 0;
  if (aobjfield.value != NaN)
  {
    intMM = parseInt(aobjfield.value);
  }
  if (intMM >= 1 && intMM <= 12)
  {
    blnIsValidMM = true;
  }
  if (blnIsValidMM == false)
  {
		return WarnInvalid(aobjfield, astrmessage);
	}
	else
	{
		return true;
	}
}

function IsValidYYYY(aobjfield, astrmessage)
{
  var blnIsValidYYYY = false;
  var intYYYY = 0;
  if (aobjfield.value != NaN)
  {
    intYYYY = parseInt(aobjfield.value);
  }
  if (intYYYY >= 2008 && intYYYY <= 2030)
  {
    blnIsValidYYYY = true;
  }
  if (blnIsValidYYYY == false)
  {
		return WarnInvalid(aobjfield, astrmessage);
	}
	else
	{
		return true;
	}
}

function IsValidDate(mm, dd, yyyy) {
  /* If the date isn't valid, the month returned by setFullYear will be different than the month passed */
  var myDate = new Date();
  myDate.setFullYear( yyyy, mm, dd );
  if ( myDate.getMonth() != mm ) {
    return false;
  } else {
    return true;;
  }
 
}

function IsValidCreditCardNumber(astrCCNumber)
{
 var sum = 0;
 var alt = false;
 var numvar = 0;
 for(var i = astrCCNumber.length - 1; i >= 0; i--)
 {
   numvar = parseInt(astrCCNumber.charAt(i));
   if(alt)
   {
     numvar *= 2;
     if(numvar > 9)
     {
       numvar -= 9;
     }
   }
   sum += numvar;
   alt = !alt;
 }
 return sum % 10 == 0;
}


function IsValidCardForType(astrAccountNumber, astrPaymentType )
{
  var blnIsValidCardForType = true;
  var intLength = astrAccountNumber.trim().length;
  var strCardNumber = astrAccountNumber.trim();

  switch (astrPaymentType)
  {
    case "1": // Visa
      if (intLength != 16 && intLength != 13)
        blnIsValidCardForType = false;
      else if (strCardNumber.charAt(0) != '4')
        blnIsValidCardForType = false;
      break;
    case "2": // Master Card
      if (intLength != 16)
        blnIsValidCardForType = false;
      else if (strCardNumber.charAt(0) != '5' || strCardNumber.charAt(1) == '0' || strCardNumber.charAt(1) > '5')
        blnIsValidCardForType = false;
      break;
    case "3": // American Express
      if (intLength != 15)
        blnIsValidCardForType = false;
      else if (strCardNumber.charAt(0) != '3' || (strCardNumber.charAt(1) != '4' && strCardNumber.charAt(1) != '7'))
        blnIsValidCardForType = false;
      break;
    case "4": // Discover
      if (intLength != 16)
        blnIsValidCardForType = false;
      else if (strCardNumber.charAt(0) != '6' || strCardNumber.charAt(1) != '0' || strCardNumber.charAt(2) != '1' || strCardNumber.charAt(3) != '1')
        blnIsValidCardForType = false;
      break;
    case "5": // Diners
      if (intLength != 14)
        blnIsValidCardForType = false;
      else if (strCardNumber.charAt(0) != '3' || (strCardNumber.charAt(1) != '0' && strCardNumber.charAt(1) != '6' && strCardNumber.charAt(1) != '8')
         || strCardNumber.charAt(1) == 0 && strCardNumber.charAt(2) > 5)
        blnIsValidCardForType = false;
      break;
  }

  return blnIsValidCardForType;
}

function ProcessTextFieldEnter(event)
{	
  if ( event.keyCode == 13 )
	{			
		return false;
	}else{
		return true;
	}
}