Event.observe(window, 'load', becomeAMember);

function becomeAMember() {
	if(!$('becomeAMember_select')) return;
	
	becomeAMemberSelect = $('becomeAMember_select');
	selectListDiv = $('selectList');
	selectLinks = $$('#becomeAMember_select li a');
	selectDivs = $$('#becomeAMember_selectInfo div');
	prepareDivs();
	prepareLinks();
	if(selectLinks.length>6) prepareScroll();
}

function prepareDivs() {
	for(var i=1; i<selectDivs.length; i++){
		selectDivs[i].style.display="none";				
	}
}

function prepareLinks() {
	for (var j=0; j<selectLinks.length; j++){			
		var k = j;
		selectLinks[j].setAttribute('rel', k);	
		Event.observe(selectLinks[j], 'click', function(event) {
				for(var h=0; h<selectDivs.length; h++){
					selectDivs[h].style.display="none";				
				}			
				selectDivNum=Event.element(event).getAttribute('rel');	
				selectDivs[selectDivNum].style.display="block";	
				// deselect any active navs
				$$('#selectList .active').each(function(e){ e.removeClassName('active');});
				$(this.parentNode).addClassName('active');
				Event.stop(event);							
			}		
		);	
	}
}

function prepareScroll() {
	scrollContainer = document.createElement('div');
	scrollContainer.id="scrollContainer";
	becomeAMemberSelect.appendChild(scrollContainer);
	
	scrollDown = document.createElement('a');
	scrollDown.id="scrollDown";
	scrollContainer.appendChild(scrollDown);
		
	scrollUp = document.createElement('a');
	scrollUp.id="scrollUp";
	scrollContainer.appendChild(scrollUp);
	
	posInit = Position.positionedOffset(selectListDiv)[1];
	heightTotal = selectListDiv.getHeight();
	posUlt = posInit - (Math.ceil(heightTotal/150) * 150) + 150;	
	
	Event.observe(scrollDown, 'click', function(event) {			
			if(Position.positionedOffset(selectListDiv)[1] != posUlt){
				new Effect.Move(selectListDiv, { x: 0, y: -150, mode: 'relative', queue: {position:'end', scope: 'scrollScope', limit:1}});
			}
			Event.stop(event);
		}		
	);
	Event.observe(scrollUp, 'click', function(event) {			
			if(Position.positionedOffset(selectListDiv)[1] != posInit){
				new Effect.Move(selectListDiv, { x: 0, y: 150, mode: 'relative', queue: {position:'end', scope: 'scrollScope', limit:1}});
			}
			Event.stop(event);
		}		
	);
}


function showAmexInfo(obj) {

    var cardType;
        cardType = $(obj).options[$(obj).selectedIndex].value;

    
    var divs = $$('.amexInfo');
    
    for (var i=0;i<divs.length;i++) {
        divs[i].hide();
        $$('.floatingImage')[0].show();
    }
    
    switch (cardType) {
        case 'amexjetblue':
            $('divJetBlue').show();
            $$('.floatingImage')[0].hide();
            break;
        case 'amexgold':
            $('divGold').show();
            $$('.floatingImage')[0].hide();
            break;
        case 'amexplatinum':
            $('divPlatinum').show();
            $$('.floatingImage')[0].hide();
            break;
        case 'amexcenturion':
            $('divCenturion').show();
            $$('.floatingImage')[0].hide();
            break;
        default:
            break;
    
    }

}

var phoneNumberDelimiters = "()-. ";
// characters which are allowed in international phone numbers
// (a leading + is OK)
var validWorldPhoneChars = phoneNumberDelimiters + "+";
// Minimum no of digits in an international phone no.
var minDigitsInIPhoneNumber = 10;

function isInteger(s)
{   var i;
    for (i = 0; i < s.length; i++)
    {   
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}
function trim(s)
{   var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not a whitespace, append to returnString.
    for (i = 0; i < s.length; i++)
    {   
        // Check that current character isn't whitespace.
        var c = s.charAt(i);
        if (c != " ") returnString += c;
    }
    return returnString;
}
function stripCharsInBag(s, bag)
{   var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++)
    {   
        // Check that current character isn't whitespace.
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function checkInternationalPhone(strPhone){
var bracket=3
strPhone=trim(strPhone)
if(strPhone.indexOf("+")>1) return false
if(strPhone.indexOf("-")!=-1)bracket=bracket+1
if(strPhone.indexOf("(")!=-1 && strPhone.indexOf("(")>bracket)return false
var brchr=strPhone.indexOf("(")
if(strPhone.indexOf("(")!=-1 && strPhone.charAt(brchr+2)!=")")return false
if(strPhone.indexOf("(")==-1 && strPhone.indexOf(")")!=-1)return false
s=stripCharsInBag(strPhone,validWorldPhoneChars);
return (isInteger(s) && s.length >= minDigitsInIPhoneNumber);
}

function checkPhone(strPhone)
{
    strPhone=trim(strPhone);
    var digitsOnly = stripCharsInBag(strPhone,validWorldPhoneChars);
    return (isInteger(digitsOnly) && isValidPhone(digitsOnly) && isNotOnBlockList(digitsOnly))
}
function isValidPhone(digitsOnly)
{
    var regEx = /\b[2-9][0-8][0-9][2-9][0-9][0-9][0-9][0-9][0-9][0-9]\b/;
    return regEx.test(digitsOnly);
}
function isNotOnBlockList(digitsOnly)
{
    var last7Digits = digitsOnly.substring(3,digitsOnly.length);
    var first3Digits = digitsOnly.substring(0,3);
    if(parseInt(last7Digits) >= 5550100 && parseInt(last7Digits) <= 5550199)
    {
        return false;
    }
    if(parseInt(last7Digits) == 5551212)
    {
        return false;
    }
    if(parseInt(first3Digits) == 555)
    {
        return false;
    }
    
    return true;
    
}