﻿var $j = jQuery.noConflict();

// accept dd-MMM-yyyy
// parseInt is jQuery function
function formatToDate(str) { 
    var monthArr = new Array("Jan", "Feb", "Mar","Apr", "May", "Jun", "Jul", "Aug", "Sep","Oct", "Nov", "Dec");
    var year = parseInt(str.substring(7, 11)); 
    var day; 
    if(str.charAt(0) == '0')
        day = parseInt(str.charAt(1));
    else
        day = str.substring(0, 2);
    var month; 
    for(i=0; i<monthArr.length;i++) {
        if(str.substring(3,6) == monthArr[i])
            month = i; 
    }
    return new Date(year, month, day); 
}

// accept a date
// parseInt is jQuery function
function formatToString(d) { 
    var monthArr = new Array("Jan", "Feb", "Mar","Apr", "May", "Jun", "Jul", "Aug", "Sep","Oct", "Nov", "Dec");
    var day;
    if(d.getDate() < 10)
        day = '0' + d.getDate();
    else
        day =  d.getDate();
    return day+'-'+monthArr[d.getMonth()]+'-'+d.getFullYear(); 
}

function getDay(d) {
    var day;
    if(d.getDate() < 10)
        day = '0' + d.getDate();
    else
        day = d.getDate();
    return day;
}

function getMth(d) {
    var mth;
    if( (d.getMonth() + 1) < 10 )
        mth = '0' + (d.getMonth() + 1);
    else
        mth = (d.getMonth() + 1);
    return mth;
}

function getYear(d) {
    var yr;
    
        yr = d.getYear();
    return yr;
}

function IsNumeric(vlu)
{
    if (isNaN(vlu) || !(/^-?\d+$/.test(vlu)) || parseInt(vlu) < 0) return false;
    return true;
}

// Validate Credit Card Number.
// Standard 3 checks:
// 1. Check that only numbers or spaces are given in the credit card number — not letters or other characters.
// 2. Check that, for the given card type, the number of digits given is valid and the prefix to the number is valid.
// 3. Use the Luhn formula to check the validity of the entered credit card number.
// http://www.evolt.org/node/24700
function Validate() {}
Validate.prototype.isValidCreditCardNumber = function(cardNumber, cardType, errMsg)
{
    // Check 1:
    var isValid = false;
    var ccCheckRegExp = /[^\d ]/;
    isValid = !ccCheckRegExp.test(cardNumber);

    if (!isValid)
    {
        errMsg.innerHTML = 'Credit Card Number must contain only numbers';        
        alert('Credit Card Number must contain only numbers');
    }

    if (isValid)
    {
        var cardNumbersOnly = cardNumber.replace(/ /g,"");
        var cardNumberLength = cardNumbersOnly.length;
        var lengthIsValid = false;
        var prefixIsValid = false;
        var prefixRegExp;
        
        // Check 2:
        switch(cardType)
        {
          // Card Type: Mastercard; Prefix: 51-55; Number of Digits: 16
          case "MC":
            lengthIsValid = (cardNumberLength == 16);
            prefixRegExp = /^5[1-5]/;
            break;

          // Card Type: Visa; Prefix: 4; Number of Digits: 13,16 
          case "VISA":
            lengthIsValid = (cardNumberLength == 16 || cardNumberLength == 13);
            prefixRegExp = /^4/;
            break;
          
          // Card Type: American Express; Prefix: 34,37; Number of Digits: 15
          case "AMEX":
            lengthIsValid = (cardNumberLength == 15);
            prefixRegExp = /^3(4|7)/;
            break;

          default:
            prefixRegExp = /^$/;
            errMsg.innerHTML = 'Card type not found';
            alert("Card type not found");
        }
        
        prefixIsValid = prefixRegExp.test(cardNumbersOnly);
        isValid = prefixIsValid && lengthIsValid;
        
        if (!isValid)
        {
            errMsg.innerHTML = 'Credit Card Number length and prefix is invalid';
            alert('Credit Card Number length or prefix is invalid');
        }        
    }

    if (isValid)
    {
        // Check 3
        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);
        
        if (!isValid)
        {
            errMsg.innerHTML = 'Invalid Credit Card Number';
            alert('Invalid Credit Card Number');
        }        
    }
    
    return isValid;
}


// This function will get the querystring from the address bar
// Parameter ji: the name of the variable
function querySt(ji) {
	ji = ji.toLowerCase();
	hu = window.location.search.substring(1);
	
	gy = hu.split("&");
	for (i=0;i<gy.length;i++) {
	ft = gy[i].split("=");
		if (ft[0].toLowerCase() == ji) {
			return ft[1];
		}
	}
}

// Flight and FIT pax list surname and given name field validation
function CheckPersonName(sender, args)
{
    var inp = args.Value;

    /*if (inp.length < 2) {
        args.IsValid = false;
        return;
    }
    else {*/
        var pattern = "^[a-zA-Z \.'\-]{2,50}$";
        var rex = new RegExp(pattern, "g");
        if(rex.test(inp)) {
            args.IsValid = true;
            return;
        }
        else {
            args.IsValid = false;
            return;
        }
    //}
}

// Select all text inside a text box on mouse click.
function SelectAllText(textbox) {
    textbox.focus();
    textbox.select();
}

// For pages that have paging; MUST have these variables & function
// list, label and count are elements in the pages
function setPaging(list, lbl, recordCount, pageSize, pageIndex) {
    var countNo = recordCount; //recordCount.text();
    var totalPage;
    if((countNo % pageSize) > 0)
        totalPage = parseInt(countNo / pageSize) + 1;
    else
        totalPage = parseInt(countNo / pageSize);
    if(totalPage == 0)
        totalPage = 1;
    
    list.empty();
    for(i=1;i<=totalPage;i++) {
        if(i == pageIndex) 
            //list.append('<option value="'+i+'" selected="selected">'+i+'</option>');
            list.append('<li><a class="currentpage" href="#" onclick="doPaging('+i+');">'+i+'</a></li>');
            
        else
            //list.append('<option value="'+i+'">'+i+'</option>');
            list.append('<li><a href="#" onclick="doPaging('+i+');">'+i+'</a></li>');
    }
       
    //lbl.empty();
    //lbl.html('PAGE <span>' + pageIndex + '</span> of <span>' + totalPage + '</span>&nbsp;&nbsp;<span>' + countNo + '</span> result(s)');
    $j('#spnPageIndex').empty();
    $j('#spnPageIndex').html(pageIndex);
    $j('#spnPageIndex2').empty();
    $j('#spnPageIndex2').html(pageIndex);
    
    $j('#spnTotalPage').empty();
    $j('#spnTotalPage').html(totalPage);
    $j('#spnTotalPage2').empty();
    $j('#spnTotalPage2').html(totalPage);
    
    $j('#spnRecordCount').empty();
    $j('#spnRecordCount').html(countNo);
    $j('#spnRecordCount2').empty();
    $j('#spnRecordCount2').html(countNo);
}