﻿function mod10( cardNumber ) 
{ // LUHN Formula for validation of credit card numbers.
	var ar = new Array( cardNumber.length );
	var i = 0,sum = 0;


	for( i = 0; i < cardNumber.length; ++i ) 
	{
		ar[i] = parseInt(cardNumber.charAt(i));
	}
	
	for( i = ar.length -2; i >= 0; i-=2 ) 
	{ // you have to start from the right, and work back.
		ar[i] *= 2;							 // every second digit starting with the right most (check digit)
		if( ar[i] > 9 ) ar[i]-=9;			 // will be doubled, and summed with the skipped digits.
	}										 // if the double digit is > 9, add those individual digits together 

	for( i = 0; i < ar.length; ++i ) 
	{
		sum += ar[i];						 // if the sum is divisible by 10 mod10 succeeds
	}
	
	return (((sum%10)==0)?true:false);	 	
}

function expired( month, year ) 
{
	var now = new Date();							// this function is designed to be Y2K compliant.
	var expiresIn = new Date(year,month,0,0,0);		// create an expired on date object with valid thru expiration date
	expiresIn.setMonth(expiresIn.getMonth()+1);		// adjust the month, to first day, hour, minute & second of expired month
	
	if( now.getTime() < expiresIn.getTime() ) 
	{
	    return false;
	}
	
	return true;									// then we get the miliseconds, and do a long integer comparison
}

function getCardType(cardTypeName)
{
    switch(cardTypeName)
    {
        case "VISA":
            return "v";
        break;
        case "Mastercard":
            return "m";
        break;
        case "American Express":
            return "a";
        break;
        case "Discover":
            return "d";
        break;
    }
}

function validateCard(cardNumberId, cardTypeId, cardMonthId, cardYearId, cardNameId) 
{
    var cardNumber = cardNumberId.value;
    var cardType = getCardType(cardTypeId.selectedValue);
    var cardMonth = cardMonthId.value;
    var cardYear = cardYearId.value;
    var cardName = cardNameId.value;
    
    if(cardNumber.substring(0, 2) == "XX")
    {
        return true;
    }
    
    if(cardNumber.length == 0) 
    {		
        //most of these checks are self explanitory
    	alert("Please enter a valid card number.");
    	return false;				
    }

    if(cardName.length == 0 )
    {
    	alert("Please enter a valid Name on Card.");
    	return false;				
    }
    
    for( var i = 0; i < cardNumber.length; ++i ) 
    {	// make sure the number is all digits.. (by design)
			var c = cardNumber.charAt(i);

			if( c < '0' || c > '9' ) 
			{
				alert("Please enter a valid card number. Use only digits. Do not use spaces or hyphens.");
				return false;
			}
    }
    
    var length = cardNumber.length;			//perform card specific length and prefix tests

    var prefix;

    switch( cardType ) 
    {
	    case 'a':
	        if( length != 15 ) 
	        {
		        alert("Please enter a valid American Express Card number.");
		        return;
	        }
	        
		    prefix = parseInt( cardNumber.substring(0,2));


		    if( prefix != 34 && prefix != 37 ) 
		    {
			    alert("Please enter a valid American Express Card number.");
			    return;
		    }
		    break;
    	case 'd':
		    if( length != 16 ) {
			    alert("Please enter a valid Discover Card number.");
			    return;
		    }
		    
		    prefix = parseInt( cardNumber.substring(0,4));

            if( prefix != 6011 ) 
            {
				alert("Please enter a valid Discover Card number.");
				return;
			}
            break;
        case 'm':
			if( length != 16 ) {
				alert("Please enter a valid MasterCard number.");
				return;
			}
			
			prefix = parseInt( cardNumber.substring(0,2));


			if( prefix < 51 || prefix > 55) {
				alert("Please enter a valid MasterCard Card number.");
				return;
			}
			break;
		case 'v':
			if( length != 16 && length != 13 ) {
				alert("Please enter a valid Visa Card number.");
				return;
			}
			
			prefix = parseInt( cardNumber.substring(0,1));

		    if( prefix != 4 ) 
		    {
			    alert("Please enter a valid Visa Card number.");
			    return;
		    }
		    break;
       }
	if( !mod10( cardNumber ) ) 
	{ 		// run the check digit algorithm
		alert("Sorry! This is not a valid credit card number.");
		return false;
	}
	if( expired( cardMonth, cardYear ) ) 
	{							// check if entered date is already expired.
		alert("Sorry! The expiration date you have entered would make this card invalid.");
		return false;
	}
	
	return true; // at this point card has not been proven to be invalid
}

function formatCurrency(num)
{
	num = num.toString().replace(/\$|\,/g,'');
	
	if(isNaN(num))
	{
		num = "0";
	}
	
	sign = (num == (num = Math.abs(num)));
	num = Math.floor(num * 100 + 0.50000000001);
	cents = num % 100;
	num = Math.floor(num / 100).toString();
	
	if(cents < 10)
	{
		cents = "0" + cents;
	}
	
	for (var i = 0; i < Math.floor((num.length - (1 + i)) / 3); i++)
	{
		num = num.substring(0, num.length - (4 * i + 3)) + ',' + num.substring(num.length - (4 * i + 3));
	}
	
	return (((sign)?'':'-') + '₤' + num + '.' + cents);
}

function ValidateBidIncrement(source, arguments)
{
	if(parseFloat(arguments.Value) > 0)
	{
		arguments.IsValid = true;
	}
	else
	{
		arguments.IsValid = false;
	}
}

function showHidePanel(obj)
{
    var objClick = obj.parentNode;
    var objContainer = objClick.parentNode;
    var objSH = objClick.nextSibling;
    objSH = (objSH.nodeType != 1)?objSH.nextSibling:objSH;
    var objImg = obj.firstChild;
    objImg = (objImg.nodeType != 1)?objImg.nextSibling:objImg;
    var objBkg = objSH.parentNode;
    objBkg = objBkg.nextSibling;
    objBkg = (objBkg.className == "background")?objBkg:objBkg.nextSibling;
    if ( window.RemoveBaloons )
    {
        RemoveBaloons();
        var menudiv = document.getElementById("pageMenu");
        menudiv.style.zIndex = "2";
    }  
    
    objSH.className = (objSH.className == "showHideDiv hide")?"showHideDiv show":"showHideDiv hide";
    objImg.src = (objSH.className == "showHideDiv hide")?"../images/btnDownArrow_16x16.gif":"../images/btnUpArrow_16x16.gif";
    objContainer.style.height = "100%";
    objBkg.className = "";
    objBkg.style.height = "100%";
    objBkg.className = "background";
}

function showHidePhotos(obj,st)
{
    var cont = document.getElementById('photoAddEditControl');
    var close = document.getElementById('photoCloseControl');
    var panel = close.nextSibling;
    panel = (panel.nodeName != "DIV")?panel.nextSibling:panel;
    if (st > 0)
    {
        cont.style.display = "none";
        close.style.display = "block";
        panel.style.display = "block";
    }
    else
    {
        cont.style.display = "block";
        close.style.display = "none";
        panel.style.display = "none";
    }						            
}

function SwapPictureButton(button)
{
	if(button)
	{
		if(button.src.indexOf("btnPause") > 0)
		{
			button.src = button.src.replace("btnPause", "btnResumePlay");
		}
		else
		{
			button.src = button.src.replace("btnResumePlay", "btnPause");
		}
	}
}

