var _regSessionItems = new Array();
var _regRoomItems = new Array();
var _regTransItems = new Array();
var _regSpecItems = new Array();
var errorList = "";
var skipVal = false;
var isIE = document.all?true:false;
if (!isIE) document.captureEvents(Event.MOUSEMOVE);
var _x = 0;
var _y = 0;
document.onmousemove = getMousePosition;

function getMousePosition(mp) {
  if (!isIE) {
	_x = mp.pageX;
	_y = mp.pageY;
  }
  if (isIE && document.body != null) {
      if (document.body) {
          _x = event.clientX + document.body.scrollLeft;
          _y = event.clientY + document.body.scrollTop;
      }
  }
  return true;
}

// Regular expressions for validation functions
var isNonblank_re    = /\S/;
var isWhole_re       = /^\s*\d+\s*$/;
var isInteger_re     = /^\s*(\+|-)?\d+\s*$/;
var isDecimal_re     = /^\s*(\+|-)?((\d+(\.\d+)?)|(\.\d+))\s*$/;
var isCurrency_re    = /^\s*(\+|-)?((\d+(\.\d\d)?)|(\.\d\d))\s*$/;
var isEmail_re       = /^\s*[\w\-\+_]+(\.[\w\-\+_]+)*\@[\w\-\+_]+\.[\w\-\+_]+(\.[\w\-\+_]+)*\s*$/;


var creditCardList = [
   //type      prefix   length
   ["amex",    "34",    15],
   ["amex",    "37",    15],
   ["disc",    "6011",  16],
   ["mast",    "51",    16],
   ["mast",    "52",    16],
   ["mast",    "53",    16],
   ["mast",    "54",    16],
   ["mast",    "55",    16],
   ["visa",    "4",     13],
   ["visa",    "4",     16]
];


////////////////////////////////////////////////////////////
// Helper functions


// Returns a string with all the non-digits removed
function getdigits (s) {
   return s.replace (/[^\d]/g, "");
}


// Luhn checksum algorithm
// This assumes that all characters of cc are digits
function luhn (cc) {
   var sum = 0;
   var i;

   for (i = cc.length - 2; i >= 0; i -= 2) {
      sum += Array (0, 2, 4, 6, 8, 1, 3, 5, 7, 9) [parseInt (cc.charAt (i), 10)];
   }
   for (i = cc.length - 1; i >= 0; i -= 2) {
      sum += parseInt (cc.charAt (i), 10);
   }
   return (sum % 10) == 0;
}


////////////////////////////////////////////////////////////
// Validation functions.  These all return true/false


// Check if string is non-blank
function isNonblank (s) {
   return String (s).search (isNonblank_re) != -1
}


// Check if string is a whole number
function isWhole (s) {
   return String(s).search (isWhole_re) != -1
}


// Check if string is an integer
function isInteger (s) {
   return String(s).search (isInteger_re) != -1
}


// Check if string is decimal number
function isDecimal (s) {
   return String(s).search (isDecimal_re) != -1
}


// Check if string is currency
function isCurrency (s) {
   return String(s).search (isCurrency_re) != -1
}


// Check if string is a valid email address
function isEmail (s) {
   return String(s).search (isEmail_re) != -1;
}


// Check for valid credit card type/number
function isValidCC (cctype, ccnumber) {
   var cc = getdigits (ccnumber);
   if (luhn (cc)) {
      for (var i in creditCardList) {
         if (creditCardList [i][0] == (cctype.toLowerCase ())) {
            if (cc.indexOf (creditCardList [i][1]) == 0) {
               if (creditCardList [i][2] == cc.length) {
                  return true;
               }
            }
         }
      }
   }
   return false;
}

// Check for valid ABA bank routing number
function isValidABA (routingNumber) {

   var f = document.forms[0];

   var n = getdigits (routingNumber);
   var isValid = (n.length == 9) && (
         (parseInt (n.charAt (0), 10) * 3) +
         (parseInt (n.charAt (1), 10) * 7) +
         (parseInt (n.charAt (2), 10) * 1) +
         (parseInt (n.charAt (3), 10) * 3) +
         (parseInt (n.charAt (4), 10) * 7) +
         (parseInt (n.charAt (5), 10) * 1) +
         (parseInt (n.charAt (6), 10) * 3) +
         (parseInt (n.charAt (7), 10) * 7) +
         (parseInt (n.charAt (8), 10) * 1)
      ) % 10 == 0;
      
   if (!isValid)
   {
        alert('This is not a valid ABA number.');
        f.CkRteNumber_DATA.value = '';
        f.CcType_DATA.focus();
        return false; 
   }
   else
   {
        return true;
   }
}

function valCreditCard(ccObj, typeObj) {

    if(ccObj.value == "")
        return false;
        
    if(typeObj.value == ""){
        alert("You must choose a Credit Card Type");
        typeObj.focus();
        ccObj.value = "";
        return false;
    }
    if(ccObj.value == "")
        return false;
        
    if(!isValidCC(typeObj.value,ccObj.value)) {
        alert("The value you have entered is not a valid " + typeObj.value + " credit card number.\nPlease confirm and try again.");
        ccObj.value = "";
        ccObj.focus();
        return false
    }
    
    return true;
}

function validateForm()
{
	errorList = "";
	badList = "";
	retVal = true;
	f = document.forms[0];
	radioSet = new String();
	
	for(i=0;i<f.length;i++)
	{
		fObj = f.elements[i];
		
		if(fObj.name.indexOf("_Required") != -1)
		{
			switch(fObj.type)
			{
				case "text":
				    if(!validateText(fObj)){
				        retVal = false;
				        badList = badList + "text";
				    }
					break;
				case "select-one":
					if(!validateSelect(fObj)){
					    retVal = false;
					    badList = badList + "select";
					}
					break;
				case "select-multiple":
					if(!validateSelect(fObj)){
					    retVal = false;
					    badList = badList + "select";
					}
					break;
				case "checkbox":
					if(!validateCheckbox(fObj)){
					    retVal = false;
					    badList = badList + "check";
					}
				    break;
				case "radio":
					{
						if(radioSet.search(fObj.name) == -1){
							radioSet = radioSet + "," + fObj.name;
							if(!validateRadio(fObj)){
							    retVal = false;
							    badList = badList + "radio";
						    }
						}
					}
					break;
			}	
		}
	}
	if(retVal || skipVal || badList == "")
	{
	    if(!skipVal && f.PaymentType_DATA_Required)
	    {   
		    //if radio is checking
			    //check ach fields for values and validate routing number
			    
			//if radio is CC
			    //check for values, date and validate cc number with cctype
	        
	        if(!checkCardForm())
	            return false;
	    }
		return true;
	}
	else
	{
		alert(errorList);	
		return false;
	}
}

function validateText(fObj)
{
	if(fObj.value == "")
	{
		errorList = errorList + fObj.alt + " is required\n";
		fObj.className = "badValue";
		return false;
	}
	
	return true;
}

function validateSelect(fObj)
{
	if(fObj.value == "")
	{
		errorList = errorList + fObj.alt + " is required\n";
		return false;
	}
	
	return true;
}

function validateCheckbox(fObj)
{
    if(!fObj.checked)
    {
		errorList = errorList + fObj.alt + " is required\n";
        return false;
    }
    return true;
}

function validateRadio(fObj)
{
	retVal = false;
	
	radObj = document.getElementsByName(fObj.name);
	
	for(i=0; i<radObj.length; i++)
	{
		if(radObj[i].checked)
			retVal = true;
	}
	if(!retVal)
	{
		errorList = errorList + radObj[0].alt + " is required\n";
		fObj.className = "badValue";
	}
	return retVal;
}

function inputFilter(fObj, fType)
{
	val = fObj.value;
	if(val == "")
		return;
		
	switch(fType)
	{
	    case "cc":
	    	if(val.match(/^[0-9.]+$/))
				fObj.value = val;
			else
				fObj.value = val.substr(0,val.length - 1);
	        break;
		case "number":
			if(val.match(/^[0-9.]+$/))
				fObj.value = val;
			else
				fObj.value = "";
			break;
		case "zip":
			if(val.match(/^[0-9]+$/)){
				fObj.value = val;
			}
			else
				fObj.value = "";
			break;
		case "date":
			x = new Date (fObj.value);
			val = x.toString();
			if(val == "NaN" || val == "Invalid Date")
			{
				alert("The date you entered is invalid\nPlease enter your date in 12/31/2001 format\n\nYou may add time! 12/31/2001 1:15 PM");
				fObj.value = "";
				fObj.focus();
			}
			break;
	}
}

function skipValidation()
{
	skipVal = true;
}
//End Validation Objects//

function infoPop(obj) {
	var infoPopup = document.getElementById("infoDiv");
	infoPopup.style.display = "block";	
	infoPopup.innerHTML = obj;
	infoPopup.style.top = _y-260 + "px";
	infoPopup.style.left = _x-350 + "px";
}

function closeMe() {
	var infoPopup = document.getElementById("infoDiv");
	infoPopup.style.display = "none";
}

function toggleItem(obj) {
	var f = document.forms[0];
	var thisAttr = obj.getAttribute('className');

	if(thisAttr == null)
		thisAttr = obj.getAttribute('class');
	
	if(thisAttr == "selectButton")
	{
		obj.setAttribute('className', 'selectButtonOn');
		obj.setAttribute('class', 'selectButtonOn');
		_regSessionItems.push(obj.id);
	}
	else
	{
		obj.setAttribute('className', 'selectButton');
		obj.setAttribute('class', 'selectButton');
		
		var tmpArray = new Array();
		var item;
		for(item in _regSessionItems)
		{
			if(_regSessionItems[item] != obj.id)
				tmpArray.push(_regSessionItems[item]);
		}		
		_regSessionItems = tmpArray;		
	}
	f.selItems.value = _regSessionItems.toString();
}

function toggleHotel(obj) {
	var hotelID = obj.id.replace("hotel_","");
	
	var roomsDiv = document.getElementById("rooms_" + hotelID);
	var resDiv = document.getElementById("reservations_" + hotelID);
	resDiv.style.display = "none";
	
	var thisAttr = obj.getAttribute('className');

	if(thisAttr == null)
		thisAttr = obj.getAttribute('class');
	if(thisAttr == "selectButton")
	{
		obj.setAttribute('className', 'selectButtonOn');
		obj.setAttribute('class', 'selectButtonOn');
		_regRoomItems.push(obj.id);
	}
	else
	{
		obj.setAttribute('className', 'selectButton');
		obj.setAttribute('class', 'selectButton');
    }

	if(roomsDiv.style.display == "none")
		roomsDiv.style.display = "block";
	else
		roomsDiv.style.display = "none";
}

function toggleReservation(obj) {
	var f = document.forms[0];
	var thisAttr = obj.getAttribute('className');

	if(thisAttr == null)
		thisAttr = obj.getAttribute('class');
		
	if(thisAttr == "selectButton")
	{
		obj.setAttribute('className', 'selectButtonOn');
		obj.setAttribute('class', 'selectButtonOn');
		_regRoomItems.push(obj.id);
	}
	else
	{
		obj.setAttribute('className', 'selectButton');
		obj.setAttribute('class', 'selectButton');
		
		var tmpArray = new Array();
		var item;
		for(item in _regRoomItems)
		{
			if(_regRoomItems[item] != obj.id)
				tmpArray.push(_regRoomItems[item]);
		}		
		_regRoomItems = tmpArray;		
	}
	f.selRooms.value = _regRoomItems.toString();
}
function setTransVal(obj) {
	var objRootID = obj.name.toString().substr(1);
	var transItem = document.getElementById("t"+objRootID);
	
	transItem.setAttribute('className', 'specClass');
	transItem.setAttribute('class', 'specClass');
	
	toggleTransport(transItem);
}
function toggleTransport(obj) {
	var f = document.forms[0];
	var thisAttr = obj.getAttribute('className');
	
	if(thisAttr == null)
		thisAttr = obj.getAttribute('class');
	
	var tmpArray = new Array();
	var item;
	for(item in _regTransItems)
	{
		if(_regTransItems[item] != obj.id)
			tmpArray.push(_regTransItems[item]);
	}	
	_regTransItems = tmpArray;		
	
	if(thisAttr == "specClass")
	{
		obj.setAttribute('className', 'specClassOn');
		obj.setAttribute('class', 'specClassOn');
		_regTransItems.push(obj.id);
	}
	else
	{
		obj.setAttribute('className', 'specClass');
		obj.setAttribute('class', 'specClass');
	}
	f.selTrans.value = _regTransItems.toString();
}
function setSpecVal(obj) {
	var f = document.forms[0];
    var objRootID = obj.name.toString().substr(1);
		
	var tmpArray = new Array();
	var valArray = new Array();
	valArray.push(objRootID);
	valArray.push(obj.value);
	
	var item;
	for(item in _regSpecItems)
	{
		if(_regSpecItems[item][0] != objRootID)
			tmpArray.push(_regSpecItems[item]);
	}		
	_regSpecItems = tmpArray;	

	if(obj.value != "")
	    _regSpecItems.push(valArray);

	var res;
	f.selSpecs.value = "";
	for(res in _regSpecItems)
	    f.selSpecs.value = f.selSpecs.value + _regSpecItems[res][0] + "|" + _regSpecItems[res][1] + ",";
}

function toggleSpecial(obj) {
	var objRootID = obj.id.toString().substr(1);
	var f = document.forms[0];
	var thisAttr = obj.getAttribute('className');

	if(thisAttr == null)
		thisAttr = obj.getAttribute('class');
	
	var tmpArray = new Array();
	var valArray = new Array();
	valArray.push(objRootID);
	valArray.push(0);
    
	var item;
	for(item in _regSpecItems)
	{
		if(_regSpecItems[item][0] != objRootID)
			tmpArray.push(_regSpecItems[item]);
	}		
	_regSpecItems = tmpArray;	
	
	if(thisAttr == "specButton")
	{
		obj.setAttribute('className', 'specButtonOn');
		obj.setAttribute('class', 'specButtonOn');
		_regSpecItems.push(valArray);
	}
	else
	{
		obj.setAttribute('className', 'specButton');
		obj.setAttribute('class', 'specButton');
	}
	var res;
	f.selSpecs.value = "";
	for(res in _regSpecItems)
	    f.selSpecs.value = f.selSpecs.value + _regSpecItems[res][0] + "|" + _regSpecItems[res][1] + ",";
}

function showReservations(obj,hotelID,roomID,eventID) {
	getAvailableRooms(hotelID,roomID,eventID);
	
	var thisAttr = obj.getAttribute('className');

	if(thisAttr == null)
		thisAttr = obj.getAttribute('class');
	if(thisAttr == "selectButton")
	{
		obj.setAttribute('className', 'selectButtonOn');
		obj.setAttribute('class', 'selectButtonOn');
		_regRoomItems.push(obj.id);
	}
	else
	{
		obj.setAttribute('className', 'selectButton');
		obj.setAttribute('class', 'selectButton');
    }

	var resDiv = document.getElementById("reservations_" + hotelID);
	if(resDiv.style.display == "none")
		resDiv.style.display = "block";
}

function dateSelectorAction(obj) {
    for(i=0;i<obj.options.length;i++)
        document.getElementById(obj.options[i].value).style.display = "none";
        
    var showDiv = document.getElementById(obj.value);
    showDiv.style.display = "block";
}

function sessionContinue(){
    var f = document.forms[0];
    optionCount = f.dateSelector.options.length;
    
    if(f.dateSelector.selectedIndex != optionCount-1){
        f.dateSelector.selectedIndex ++; 
        dateSelectorAction(f.dateSelector);
    }
    else{
        __doPostBack('', '')
    }
}
function sessionScroll()
{
	var dayDiv = document.getElementById("dayTrackDiv");
	var timeDiv = document.getElementById("timeDiv");
	var sessionDiv = document.getElementById("sessionsDiv");
	
	dayDiv.scrollLeft = sessionDiv.scrollLeft;
	timeDiv.scrollTop = sessionDiv.scrollTop;
}
//AJAX objects
var _http_request = false;

//AJAX Table functions
var Url = {

    // public method for url encoding
    encode : function (string) {
        return escape(this._utf8_encode(string));
    },

    // public method for url decoding
    decode : function (string) {
        return this._utf8_decode(unescape(string));
    },

    // private method for UTF-8 encoding
    _utf8_encode : function (string) {
        string = string.replace(/\r\n/g,"\n");
        var utftext = "";

        for (var n = 0; n < string.length; n++) {

            var c = string.charCodeAt(n);

            if (c < 128) {
                utftext += String.fromCharCode(c);
            }
            else if((c > 127) && (c < 2048)) {
                utftext += String.fromCharCode((c >> 6) | 192);
                utftext += String.fromCharCode((c & 63) | 128);
            }
            else {
                utftext += String.fromCharCode((c >> 12) | 224);
                utftext += String.fromCharCode(((c >> 6) & 63) | 128);
                utftext += String.fromCharCode((c & 63) | 128);
            }

        }

        return utftext;
    },

    // private method for UTF-8 decoding
    _utf8_decode : function (utftext) {
        var string = "";
        var i = 0;
        var c = c1 = c2 = 0;

        while ( i < utftext.length ) {

            c = utftext.charCodeAt(i);

            if (c < 128) {
                string += String.fromCharCode(c);
                i++;
            }
            else if((c > 191) && (c < 224)) {
                c2 = utftext.charCodeAt(i+1);
                string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
                i += 2;
            }
            else {
                c2 = utftext.charCodeAt(i+1);
                c3 = utftext.charCodeAt(i+2);
                string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
                i += 3;
            }

        }
        return string;
    }
}

function createDataConnection() {
    _http_request = false;
    if (window.XMLHttpRequest) { // Mozilla, Safari,...
        _http_request = new XMLHttpRequest();
        if (_http_request.overrideMimeType) {
            _http_request.overrideMimeType('text/html');
        }
    } else if (window.ActiveXObject) { // IE
        try {
            _http_request = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try {
               _http_request = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
        }
    }
    if (!_http_request) {
        alert('Cannot create XMLHTTP instance');
        return false;
    }
}

function javaTable(xmlString) {
    retTable = new Array();
    xmlString = xmlString.replace(/&gt;/g,">");
    xmlString = xmlString.replace(/&lt;/g,"<");
        
    if (window.ActiveXObject)
    {
        var xmlObject = new ActiveXObject("Microsoft.XMLDOM");
        xmlObject.async="false";
        xmlObject.loadXML(xmlString);
    }
    else
    {
        var parser = new DOMParser();
        var xmlObject = parser.parseFromString(xmlString,"text/xml");
    }
    
    var rows = xmlObject.getElementsByTagName('Table');
        
    for(i=0;i<rows.length;i++){
        var rowData = new Object;
        for(j=0;j<rows[i].childNodes.length;j++){
            var objName = new String();
            var objValue = new String();
            
            if(rows[i].childNodes[j].nodeName == "#text")
                continue;
                
            objName = rows[i].childNodes[j].nodeName;
            objValue = rows[i].childNodes[j].firstChild.nodeValue;
            
            rowData[objName] = objValue;
        }
        
        retTable.push(rowData);
    }

    return retTable;
}

function AJAXString(xmlString)
{
	var retObj;
    if (window.ActiveXObject) //Internet Explorer
    {
        var xmlObject = new ActiveXObject("Microsoft.XMLDOM");
        xmlObject.async="false";
        xmlObject.loadXML(xmlString);
    }
    else
    {
        var parser = new DOMParser();
        var xmlObject = parser.parseFromString(xmlString,"text/xml");
    }
    
	retObj = xmlObject.getElementsByTagName("string");
	retString = retObj[0].childNodes[0].nodeValue;

	return retString;	
}

function EmailAlreadyExists(val) {
    createDataConnection();
    _http_request.onreadystatechange = fillRegistrantData;
    _http_request.open('GET', 'JavaUtilities.asmx/EmailAlreadyExists?email=' + val, true);
    _http_request.send(null);
}

function getRegistrantData(val) {
    createDataConnection();
    _http_request.onreadystatechange = fillRegistrantData;
    _http_request.open('GET', 'JavaUtilities.asmx/GetRegistrantInfo?EMail=' + val, true);
    _http_request.send(null);
}

function fillRegistrantData() {
  if (_http_request.readyState == 4) {
     if (_http_request.status == 200) {
		f = document.forms[0];
        result = _http_request.responseText;
        retTable = javaTable(result);
        if(retTable.length != 0)
        {
			row = retTable[0];
			f.registrantFirstName_DATA_Required.value = row['firstname'];
			f.registrantLastName_DATA_Required.value = row['lastname'];
			//f.registrantJobTitle_DATA_Required.value = row['title'];
			f.registrantAddress1_DATA_Required.value = row['address1'];
			f.registrantAddress2_DATA.value = row['address2'];
			f.registrantCity_DATA_Required.value = row['city'];
			f.registrantState_DATA_Required.value = row['state'];
			f.registrantZip_DATA_Required.value = row['zip'];
			return;
        }
           
     } else {
        alert('There was a problem with the request.');
     }
  }
}

var _hotelID = null;

function getAvailableRooms(HotelID,RoomID,EventID) {
	_hotelID = HotelID;
    createDataConnection();
    _http_request.onreadystatechange = fillAvailableRoomsDiv;
    _http_request.open('GET', 'JavaUtilities.asmx/GetAvailableRooms?EventID=' + EventID + '&RoomID=' + RoomID, true);
    _http_request.send(null);
}

function fillAvailableRoomsDiv() {
  if (_http_request.readyState == 4) {
     if (_http_request.status == 200) {
		div = document.getElementById("reservations_" + _hotelID);
        result = AJAXString(_http_request.responseText);
		div.innerHTML = result;
		checkRoomNights();
     } else {
        alert('There was a problem with the request.');
     }
  }	
}

var _guests = new Array();
function addDependentRecord(max){
    if(_guests.length == max)
        return;
    firstNameTextBox = document.getElementById("firstName"+_guests.length);
    lastNameTextBox = document.getElementById("lastName"+_guests.length);
    dependentTypeDropDown = document.getElementById("dependentType"+_guests.length);
    genderDropDown = document.getElementById("gender"+_guests.length);
    dateOfBirthTextBox = document.getElementById("dateOfBirth"+_guests.length);
    if(firstNameTextBox.value == "" && lastNameTextBox.value == "")
        return;

    row = new Object();
    row["firstName"] = "";
    row["lastName"] = "";
    row["dependentType"] = "";
    row["gender"] = "";
    row["dateOfBirth"] = "";
    if(_guests.length != 0) {
        _guests[_guests.length-1]["firstName"] = firstNameTextBox.value;
        _guests[_guests.length-1]["lastName"] = lastNameTextBox.value;
        _guests[_guests.length-1]["dependentType"] = dependentTypeDropDown.value;
        _guests[_guests.length-1]["gender"] = genderDropDown.value;
        _guests[_guests.length-1]["dateOfBirth"] = dateOfBirthTextBox.value;
    } 
    _guests.push(row);
    
    retDependentArray();
}
    
function remDependentRecord(position){
    tmpArray = new Array();
    for(i=0;i<_guests.length;i++){
        if(i!=position)
            tmpArray.push(_guests[i]);
    }    
    _guests = tmpArray;
    retDependentArray();
}

function retDependentArray(){

    guestDiv = document.getElementById('guestArrayDiv');
    
    outStr = new String();
    outStr = "<table class='sgTable' cellspacing='0' rules='all' border='1' id='progGrid' style='border-collapse:collapse;'>"
    
    var temp = "";
    for(i=0;i<_guests.length;i++)
    {
        guestNum = new Number();
        guestNum = i + 1;
        guestLabel = guestNum + 1;

        if(i % 2 == 1)
            outStr = outStr + "<tr class='sgItemStyle' onMouseOver=this.style.backgroundColor='#E1EAFE' onMouseOut=this.style.backgroundColor='transparent'>";
        else
            outStr = outStr + "<tr class='sgItemStyleAlt' onMouseOver=this.style.backgroundColor='#D6DFF2' onMouseOut=this.style.backgroundColor='#eeeeee'>";
            
        outStr = outStr + "<td style='width: 10px; text-align:right;'>" + guestLabel + ":</td>";
        outStr = outStr + "<td><input id=firstName"+guestNum+" type=text name=firstName"+guestNum+" value='" + _guests[i]["firstName"] + "'></td>";
        outStr = outStr + "<td><input id=lastName"+guestNum+" type=text name=lastName"+guestNum+" value='" + _guests[i]["lastName"] + "'></td>";
        if(_guests[i]["dependentType"]=="2")
            temp = "<option value='2' selected>Spouse<option value='3'>Child";
        else
            temp = "<option value='2'>Spouse<option value='3' selected>Child";
        outStr = outStr + "<td><select name='dependentType"+guestNum+"'>"+temp+"</select></td>";
        if(_guests[i]["gender"]=="M")
            temp = "<option value='M' selected>Male<option value='F'>Female";
        else
            temp = "<option value='M'>Male<option value='F' selected>Female";
        outStr = outStr + "<td><select name='gender"+guestNum+"'>"+temp+"</select></td>";
        outStr = outStr + "<td><input id=dateOfBirth"+guestNum + " type=text name=dateOfBirth"+guestNum+" value='" + _guests[i]["dateOfBirth"] + "' style='width: 85px;'></td>";
        outStr = outStr + "<td><a href=# class=linkStyle onClick='remDependentRecord(" + i + ")'>X</a></td>";
        outStr = outStr + "</tr>";
    }
    
    outStr = outStr + "</table>";
    
    guestDiv.innerHTML = outStr;
}

function setPackageName(planName)
{
    packageName = document.getElementById('PackageName_DATA');
    packageName.value = planName.value;
} 
   
function setCoveragePrice(coverage) 
{
    price = document.getElementById('Price_DATA');
    price1 = document.getElementById('price1');
    price2 = document.getElementById('price2');
    price3 = document.getElementById('price3');
    price4 = document.getElementById('price4');
    
    switch(coverage)
    {
        case 1:
            price.value = price1.value;
            break;
        case 2:
            price.value = price2.value;
            break;
        case 3:
            price.value = price3.value;
            break;
        case 4:
            price.value = price4.value;
            break;
    }
}

function validateDateKeyup(obj)
{
	var str = obj.value;
	str = str.replace(/[A-Za-z]/g,'');
	str = str.replace(/-/g,'');
	str = str.replace(/\(/g,'');
	str = str.replace(/\)/g,'');
	str = str.replace(/\./g,'');
	str = str.replace(/ /g,'');

	obj.value = str;
}

function validateDateBlur(fld)
{
    var RegExPattern = /^(?=\d)(?:(?:(?:(?:(?:0?[13578]|1[02])(\/|-|\.)31)\1|(?:(?:0?[1,3-9]|1[0-2])(\/|-|\.)(?:29|30)\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})|(?:0?2(\/|-|\.)29\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))|(?:(?:0?[1-9])|(?:1[0-2]))(\/|-|\.)(?:0?[1-9]|1\d|2[0-8])\4(?:(?:1[6-9]|[2-9]\d)?\d{2}))($|\ (?=\d)))?(((0?[1-9]|1[012])(:[0-5]\d){0,2}(\ [AP]M))|([01]\d|2[0-3])(:[0-5]\d){1,2})?$/;
    var errorMessage = 'Please enter valid date as month, day, and four digit year.\nYou may use a slash, hyphen or period to separate the values.\nThe date must be a real date. 2-30-2000 would not be accepted.\nFormay mm/dd/yyyy.';
    if ((fld.value.match(RegExPattern)) && (fld.value!='')) {
        try
        {
            var dateArray = fld.value.split("/");
            new Date(dateArray[2], dateArray[0], dateArray[1]);
        }
        catch(e)
        {
            alert(errorMessage);
            fld.focus();
        }
    } else {
        alert(errorMessage);
        fld.focus();
    } 
}

function moreDetails(destination) 
{
	parent.window.location = destination;
}

/*************************************************************************\
switchPayDiv() (used in StepAccount)
function called within condition in validateForm().
\*************************************************************************/

function switchPayDiv()
{
    var f = document.forms[0];
    var cc = document.getElementById('creditPanel');
    var ck = document.getElementById('checkingPanel');

    if(f.PaymentType_DATA_Required[0].checked)
    {
        cc.style.display = 'block';
        ck.style.display = 'none';
    }
    else
    {
        cc.style.display = 'none';
        ck.style.display = 'block';
    }
}


/*************************************************************************\
checkCardForm() (used in StepAccount)
function called when users click the 'check' button.
\*************************************************************************/

function checkCardForm() 
{
	var f = document.forms[0];

	if (f.PaymentType_DATA_Required[0].checked)
	{
	    if(!valCreditCard(f.CcNumber_DATA, f.CcType_DATA))
	    {
			return false;
	    }
		if (f.CcNumber_DATA.value.length == 0) {
			alert('Please enter a Card Number.');
			f.CcNumber_DATA.focus();
			return false;
		}
		if (f.CcExpYear_DATA.length == 0) {
			alert('Please enter the Expiration Year.');
			f.CcExpYear_DATA.focus();
			return false;
		}
		if (f.CcExpYear_DATA.value < 2006)
		{
			alert('The Expiration Year is not valid.');
			return false;
		}
		var tmpyear = f.CcExpYear_DATA.value;
		var tmpmonth = f.CcExpMonth_DATA.value;
		if (!(new CardType()).isExpiryDate(tmpyear, tmpmonth)) {
			alert('This card has already expired.');
			return false;
		}
		if (f.Ccv_DATA.value.length == 0)
		{
			alert('Please enter a CCV value.');
			f.Ccv_DATA.select();
			return false;
		}
		
		var index;
		if (f.CCType_DATA.value == 'MAST')
			index = 0;
		else if (f.CCType_DATA.value == 'VISA')
			index = 1;
		else if (f.CCType_DATA.value == 'AMEX')
			index = 2;

		var valid = Cards[index].checkCardNumber(f.CcNumber_DATA.value, tmpyear, tmpmonth);

		if (!valid) {
			alert('This is not a valid credit card.');
			return false;
		}
	}
	else
	{
		if(!isValidABA(f.CkRteNumber_DATA.value))
	    {
			return false;
	    }
		if (f.CkRteNumber_DATA.value == '') {
			alert('Please enter your account routing number.');
			f.CkRteNumber_DATA.focus();
			return false;
		}
		if (f.CkAccntNumber_DATA.value == '') {
			alert('Please enter the bank account number.');
			f.CkAccntNumber_DATA.focus();
			return false;
		}
	}

	if (f.CcAddress1_DATA.value.length == 0)
	{
		alert('Please enter a valid address.');
		f.CcAddress1_DATA.select();
		return false;
	}
	if (f.CcCity_DATA.value.length == 0)
	{
		alert('Please enter a city.');
		f.CcCity_DATA.select();
		return false;
	}
	if (f.CcState_DATA.value.length == 0)
	{
		alert('Please enter a state.');
		f.CcState_DATA.select();
		return false;
	}
	if (f.CcZip_DATA.value.length == 0)
	{
		alert('Please enter a zipcode.');
		f.CcZip_DATA.select();
		return false;
	}

	return true;
}

function toggleCatDiv(myDiv)
{
	var catDiv = document.getElementById(myDiv);
	var catDivHide = document.getElementById(myDiv + 'hide');
	
	if(catDiv.style.display == 'none')
	{
		catDiv.style.display = 'block';
		catDivHide.style.display = 'none';
	}
	else
	{
		catDiv.style.display = 'none';
		catDivHide.style.display = 'block';
	}
}
