﻿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 = /^6(?:011|5[0-9]{2}|4[4-9][0-9]|22[0-9])[0-9]{12}$/;
        break;
	  default:
		prefixRegExp = /^$/;
		return false;
	}

	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;
}


function checkCellNumber (strng, strnglen) {
	if (strng == "")
	   return false;
	var illegalChars = /\D/;
	// allow only letters, numbers, and underscores
	if (illegalChars.test(strng))
	   return false;
	if(strnglen != 0 && strng.length != strnglen)
		return false;
	return true;
}

function CheckString(strng, minstrnglen)
{
	if(strng.length < minstrnglen)
		return false;
	else
		return true;
}

function CheckEmail(strng)
{
	var ValidEmail = /^\w+([-+.]\w+)*@((\[([0-9]{1,3}\.){3}[0-9]{1,3}\])|(([\w\-]+\.)+)([a-zA-Z]{2,4}))$/;
	// allow only letters, numbers, and underscores
	if (!ValidEmail.test(strng))
	    return false;
		
	if(!CheckString(strng, 1))
		return false;

    if ((strng.search('@') < 0) || (strng.search('.') < 0))
        return false;

   


	return true;
}

function CheckAddress(strng) {
    var ValidAddress = /(?=.*\d)(?=.*[A-Za-z]{3,})/;
    // enforces at least one number and 3 letters
    if (!ValidAddress.test(strng))
        return false;

        return true;
}

function CheckPhoneNumber(strng, minstrnglen)
{
	var ValidPhoneNumber = /^[0-9]+$/;
	// allow only numbers
	if (!ValidPhoneNumber.test(strng))
		return false;

	if(!CheckString(strng, minstrnglen))
		return false;

	return true;
}

//check phone number isn't all the same number
function ValidateFullPhoneNumber(phone1, phone2, phone3) {
    var ValidPhoneNumber = phone1 + phone2 + phone3
    // allow only numbers
    if ((ValidPhoneNumber=='1111111111') ||
         (ValidPhoneNumber=='2222222222') ||
         (ValidPhoneNumber=='3333333333') ||
         (ValidPhoneNumber=='4444444444') ||
         (ValidPhoneNumber=='5555555555') ||
         (ValidPhoneNumber=='6666666666') ||
         (ValidPhoneNumber=='7777777777') ||
         (ValidPhoneNumber=='8888888888') ||
         (ValidPhoneNumber=='9999999999'))
                return false;

    
    return true;
}

function CheckAlphaSpaceOnly(strng, minstrnglen)
{
	var ValidAlphaSpaceOnly = /^[a-zA-Z ]+$/;
	if (!ValidAlphaSpaceOnly.test(strng))
		return false;

	if(!CheckString(strng, minstrnglen))
		return false;

	return true;
}

function showError(msg, getfocus, ErrorDiv, ErrorMsgDiv, inlineErrorDiv, displayErrorInline) {
    if (displayErrorInline != undefined && displayErrorInline && inlineErrorDiv != '') {
        showInlineError(getfocus, inlineErrorDiv, msg);
    }
    else {
        if (getfocus != "")
            document.getElementById(getfocus).focus();

        if (ErrorDiv != "")
            document.getElementById(ErrorDiv).style.display = "block";
        else
            document.getElementById("dvErrorMsg").style.display = "block";

        if (ErrorMsgDiv != "") {
            document.getElementById(ErrorMsgDiv).innerHTML = msg;
            document.getElementById(ErrorMsgDiv).style.display = "block";
        }
        else {
            document.getElementById("errorMsg").innerHTML = msg;
            document.getElementById("errorMsg").style.display = "block";
        }
    }
    return false;
}

// 3 argument can be empty string if there's a default error message in markup. !
function showInlineError(getfocus, ErrorDiv, ErrorMessage) {
    
    if (getfocus != "")
        document.getElementById(getfocus).focus();

    if (ErrorDiv != "")
        document.getElementById(ErrorDiv).style.display = "block";
    else
        document.getElementById("dvErrorMsg").style.display = "block";

    if (ErrorMessage != "") {
        document.getElementById(ErrorDiv).innerHTML = ErrorMessage;
    }
    return false;
}

function hideError(ErrorDiv){

    if (ErrorDiv != undefined & ErrorDiv != "" && document.getElementById(ErrorDiv) != undefined)
        document.getElementById(ErrorDiv).style.display = "none";
    else if (document.getElementById("dvErrorMsg") != undefined)
        document.getElementById("dvErrorMsg").style.display = "none";

	return true;
}

function ShowLoading(LoadingDiv, DivtoHide)
{

	if (document.getElementById(DivtoHide) != null)
		document.getElementById(DivtoHide).style.display="none";

	if (document.getElementById(LoadingDiv) != null)
		document.getElementById(LoadingDiv).style.display = "block";
	else
	{
		document.getElementById("dvErrorMsg").style.display = "block";
		document.getElementById("errorMsg").style.display = "block";
		document.getElementById("errorMsg").innerHTML = "Loading...";
	}
	return true;
}

function checkUserFormHomePage(strparentsite, mcid, creative) {

		if(!CheckString(document.getElementById("firstname").value, 1))
		{
			showError("Please enter your first name.", "firstname","dvErrorMsg", "errorMsg");
			document.getElementById("firstname").className = "right_form_text_input_error";

			return;
		}
		else
			document.getElementById("lastname").className = "right_form_text_input";

				if(!CheckString(document.getElementById("lastname").value, 1))
		{
			showError("Please enter your last name.", "lastname","dvErrorMsg", "errorMsg");
			document.getElementById("lastname").className = "right_form_text_input_error";

			return;
		}
		else
			document.getElementById("firstname").className = "right_form_text_input";


		if(!CheckEmail(document.getElementById("emailaddress").value))
		{
		    showError("Please enter your valid email address.", "emailaddress", "dvErrorMsg", "errorMsg");
			document.getElementById("emailaddress").className = "right_form_text_input_error";

			return;
		}
		else
			document.getElementById("emailaddress").className = "right_form_text_input";


		if(!CheckString(document.getElementById("password").value, 4))
		{
		    showError("Please enter a password of at least 4 characters.", "password", "dvErrorMsg", "errorMsg");
			document.getElementById("password").className = "right_form_text_input_error";

			return;
		}
		else
			document.getElementById("password").className = "right_form_text_input";

		if(document.getElementById("password").value != document.getElementById("confirmpassword").value)
		{
		    showError("Please match your passwords.", "confirmpassword", "dvErrorMsg", "errorMsg");
			document.getElementById("confirmpassword").className = "right_form_text_input_error";

			return;
		}
		else
			document.getElementById("confirmpassword").className = "right_form_text_input";

		hideError("dvErrorMsg");
		ShowLoading("dvLoading", "butsubmit");

		document.getElementById("__VIEWSTATE").value = "";

		var form;

		if (document.getElementById("form1") != null) {
			form = document.getElementById("form1");
		}
		if (document.getElementById("aspnetForm") != null) {
			form = document.getElementById("aspnetForm");
		}

		if (strparentsite.indexOf("Kazaa") == 0) {
			form.action= "https://" + location.host + "/promotions/campaigns/kazaa-genre/default.aspx?MCID=" + mcid + "&creative=" + creative;
		} else {
			form.action= "https://" + location.host + "/promotions/campaigns/genre/default.aspx?MCID=" + mcid + "&creative=" + creative;
		}

		form.submit();
}
