function showSignUp(d){
	// replace the google map with the signup form
	$("#googleMapContainer").css("display","none");
	$("#signUpFormContainer").css("display","block");
	
	// set the day text and day hours committed in header
	$("#signUpDate").html(gblArrayDayNames[d-1]);
	$("#signUpHours").html(gblArrayDayHoursActual[d-1] + " " + gblLang1KHours);
	
	$('input[name=intDay]').val(d);
	
}

function fSetCountdownHeader() {
	var dtCurrentDate = new Date();
	
	// make time easier to work with than milliseconds
	var intMinPeriod = 1000 * 60;
	var intHourPeriod = intMinPeriod * 60;
	var intDayPeriod = intHourPeriod * 24;
	
	// number of milliseconds between now and start
	var intTimeDiff = Math.ceil(gblStartDate.getTime() - dtCurrentDate.getTime());
	
	// break milliseconds into days, hours, minutes
	var intDays = Math.floor(intTimeDiff / intDayPeriod);
	var intHours = Math.floor((intTimeDiff - (intDays * intDayPeriod)) / intHourPeriod);
	var intMinutes = Math.floor((intTimeDiff - (intDays * intDayPeriod) - (intHours * intHourPeriod)) / intMinPeriod);

	// display counter at top of form
	$("#ctdnDays").html(Math.floor(intDays).toString());
	$("#ctdnHours").html(Math.floor(intHours).toString());
	$("#ctdnMinutes").html(Math.floor(intMinutes).toString());
}

var glbMinBarHeight = 20;	// buffer for 0 hour days

var gblTotalHours = 0;		// variable to sum up hours from database
var intGreatestHours = 0;	// variable to hold greatest day hours found

var gblArrayDayHoursScaled = new Array();	// scaled height of "hour" bars

// get total number of hours from array and find out which graph bar is larger
for(var n = 0; n < gblArrayDayHoursActual.length; n++){
	gblTotalHours += gblArrayDayHoursActual[n];
	if(gblArrayDayHoursActual[n] > intGreatestHours)
		intGreatestHours = gblArrayDayHoursActual[n];
}

// set the scaled heights of bars based on percent of largest bar
for(var n = 0; n < gblArrayDayHoursActual.length; n++){
	if(intGreatestHours == 0)
		gblArrayDayHoursScaled.push(0)
	else
		gblArrayDayHoursScaled.push(Math.floor((gblArrayDayHoursActual[n] / intGreatestHours) * gblMaxBarHeight))
}

// Google Map Variables
var map;


// wait for readiness before we edit the DOM
$(document).ready(function(){

	// set countdown header block and update timer
	fSetCountdownHeader();
	$("#headerBlock").everyTime("60s", function() {
		fSetCountdownHeader();
	});	

	// set bar graph based on current data
	for(var n = 0; n < gblArrayDayHoursScaled.length; n++){
		$("#day" + (n + 1)).css("margin-top", (gblMaxBarHeight - gblArrayDayHoursScaled[n]).toString() + "px");
		$("#day" + (n + 1) + "Buffer").css("height", (gblArrayDayHoursScaled[n] + glbMinBarHeight).toString() + "px");
		$("#day" + (n + 1) + "Text").html(gblArrayDayHoursActual[n].toString() + "<br> " + gblLang1KHours);
	}
	
	// set text indicating hours needed
	if(gblTotalHours < gblMaxHours)
		$("#hoursNeeded").html(gblLang1KInstructions.replace("NNN", (gblMaxHours - gblTotalHours)));
	else
		$("#hoursNeeded").html(gblLang1KComplete.replace("NNN", (gblTotalHours)));
		
	// set form validator script
	$("#signUpFormObject").RSV({
		onCompleteHandler: myOnComplete,
		errorFieldClass: "signUpFormFieldError",
		displayType: "display-html",
		errorHTMLItemBullet: "&#8212; ",
		errorTargetElementId: "signUpFormErrorMsg",
		rules: [
			"required,txtName," + glbLang1KFormNameError,
			"required,txtEmail," + glbLang1KFormEmailError,
			"valid_email,txtEmail," + glbLang1KFormEmailFormatError,
			"required,txtCity," + glbLang1KFormCityError,
			"required,txtState," + glbLang1KFormStateError,
//			"required,txtZipCode,Please enter a postal code.",
//			"custom_alpha,txtZipCode,xxxxx,Please enter 5-digit US Zip Code.",
			"required,txtCountry," + glbLang1KFormCountryError,
			"required,txtTime," + glbLang1KFormTimeError
		]
	});


	// retrieve google map data
	if (GBrowserIsCompatible()) {
		map = new GMap2(document.getElementById("googleMap")); 
		map.setCenter(new GLatLng(37,-95.5), 1); 
		map.addControl(new GLargeMapControl());
		map.addControl(new GLargeMapControl());

		GDownloadUrl("map-data.asp?r=" + escape(Math.random()), function(data, responseCode) {
			var xml = GXml.parse(data);
			var markers = xml.documentElement.getElementsByTagName("marker");
			for (var i = 0; i < markers.length; i++) {
				var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")), parseFloat(markers[i].getAttribute("lng")));
				map.addOverlay(new GMarker(point));
			}
		});
	} 

});

function myOnComplete(){
	var options = { 
		target:        '#signUpFormContents'
	}

	$('input[name=txtReady]').val("yes");

	$("#signUpFormObject").ajaxSubmit(options); 

	return false;
}

// pre-submit callback 
function showRequest(formData, jqForm, options) { 
    // formData is an array; here we use $.param to convert it to a string to display it 
    // but the form plugin does this for you automatically when it submits the data 
    var queryString = $.param(formData); 
 
    // jqForm is a jQuery object encapsulating the form element.  To access the 
    // DOM element for the form do this: 
    // var formElement = jqForm[0]; 
 
    alert('About to submit: \n\n' + queryString); 
 
    // here we could return false to prevent the form from being submitted; 
    // returning anything other than false will allow the form submit to continue 
    return true; 
} 
