  // Dynamic Dates for Select Field
    
  function getTargetDayArray(targetDay,numDays,excepArray) {
	var today = new Date();
	var daysFromTarget = targetDay - today.getDay();
	if(daysFromTarget <= 0)
	{
		daysFromTarget += 7;
	}
	var nextTargetDate = new Date();
	nextTargetDate.setDate(today.getDate()+daysFromTarget);
	var targetDates = new Array();
	if(excepArray == undefined) {
		excepArray.length = 0;
	}
	for(var i=0; i<numDays; ++i) {
		var date = new Date(nextTargetDate);
		date.setDate(nextTargetDate.getDate()+i*7);
		targetDates.push(date);
		for(var j=0; j < excepArray.length; j++) {
			if(date.toDateString() == excepArray[j].toDateString()) {
				numDays++;
				targetDates.pop();
			}
		}
	}
	return targetDates;
}
function interleave(array1, array2) {
	var totalLength = array1.length + array2.length;
	var newArray = new Array();
	for (var i=0; i < totalLength; i++){
		if(i%2==0) {
			if(array1.length){
				newArray.push(array1.shift());
			}
			else {
				newArray.push(array2.shift());
			}
		}
		else {
			if(array2.length){
				newArray.push(array2.shift());
			}
			else {
				newArray.push(array1.shift());
			}
		}
	}
	newArray.sort(sortDate);
	return newArray;
}
function sortDate(date1,date2) {
return date1-date2;
}
function removeDates(dateArray, excepArray){
	for(var i=0; i < excepArray.length; i++) {
		for(var j=0; j < dateArray.length; j++) {
			alert("comparing "+dateArray[j].toDateString() + " and " + excepArray[i].toDateString());
			if(dateArray[j].toDateString() == excepArray[i].toDateString()) {
				alert("found match");
				dateArray.splice(j,1);
			}
		}
	}
	return dateArray;
}
function formatDate(cDate) {
	var curr_date = cDate.getDate();
	var curr_month = cDate.getMonth();
	curr_month++;
	var curr_year = cDate.getFullYear();
	var dateString = curr_month + "/" + curr_date + "/" + curr_year;
	return dateString;
}


$(document).ready(function() {
	var exceptions = new Array(new Date(2008,11,25),new Date(2009,0,1));
	var array1 = getTargetDayArray(2,2,exceptions);
	var array2 = getTargetDayArray(4,2,exceptions);
	var targetDates = interleave(array1,array2);

	for(i=0; i<targetDates.length; i++) {
		var option = document.createElement('option');
		jQuery(option).appendTo('#preferred-date');
		option.text = targetDates[i].toDateString();
		option.value= formatDate(targetDates[i]);
	}	
});

/*************************************************/
// Begin Validation Scripts
/*************************************************/

$(function() {
    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 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;
    }

    $.validator.addMethod("phone",
    function(phone_number, element) {
        var digits = "0123456789";
        var phoneNumberDelimiters = "()- ext.";
        var validWorldPhoneChars = phoneNumberDelimiters + "+";
        var minDigitsInIPhoneNumber = 10;
        s = stripCharsInBag(phone_number, validWorldPhoneChars);
        return this.optional(element) || isInteger(s) && s.length >= minDigitsInIPhoneNumber;
    },
    "Please enter a valid phone number");

$(document).ready(function() {
	$("#webinar-signup-form").validate({
	meta: "validate",
	rules: {
		onfocusout: true,
		first_name: {
			required: true
		},
		last_name:{
			required: true
		},
		company: {
			required: true
		},
		city: {
			required: true
		},
		state: {
			required: true
		},
		country: {
			required: true
		},
		URL: {
			required: true,
			url: true
		},
		phone: {
			required: true,
			phone: true
		},
		"00N40000001fZwG": {
			required: true
		},
		email: {
			required: true,
			email: true
		}
	},
	messages: {
		first_name: {
			required: "Please enter your name."
		},
		last_name:{
			required: "Please enter your full name."
		},
		company: {
			required: "Please enter the name of your company."
		},
		city: {
			required: "Please enter your company's city."
		},
		state: {
			required: "Please enter your company's state."
		},
		country: {
			required: "Please enter your company's country."
		},
		URL: {
			required: "Please enter your Company URL."
		},
		phone: {
			required: "Please enter your company's phone number."
		},
		"00N40000001fZwG": {
			required: "Please choose a preferred date."
		},
		email: {
			required: "Please enter your e-email address."
		}
	},
	highlight: function(element, errorClass) {
		$(element).addClass(errorClass);
	},
	unhighlight: function(element, errorClass) {
		$(element).removeClass(errorClass);
	},
	focusInvalid: true
    });
});
});
