function getHTTPObject(){
  var xmlhttp;
 
  /*@cc_on
 
  @if (@_jscript_version >= 5)
    try {
      xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    }catch(e){
      try{
      xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }catch(E){
      xmlhttp = false;
    }
  }
  @else
    xmlhttp = false;
  @end @*/
 
  if(!xmlhttp && typeof XMLHttpRequest != 'undefined'){
    try {
      xmlhttp = new XMLHttpRequest();
    }catch(e){
      xmlhttp = false;
    }
  }
 
  return xmlhttp;
}

var http = getHTTPObject();

function populate_form() {
	var theurl = "scripts/populateceform.php?uname=";
  var usernameVal = document.getElementById("uname").value;
 
  http.open("get", theurl + escape(usernameVal), true);
  http.onreadystatechange = handleHttpResponse;
 
  http.send(null);
}
 
// http://www.webpasties.com/xmlHttpRequest/xmlHttpRequest_tutorial_1.html
function handleHttpResponse(){
  if(http.readyState == 4){
  	// Split the comma delimited response into an array
    results = http.responseText.split(",");
    document.getElementById('prim_contact').value = results[0];
    document.getElementById('address1').value = results[1];
    document.getElementById('address2').value = results[2];
    document.getElementById('city').value = results[3];
    document.getElementById('stateorprov').value = results[4];
    document.getElementById('ziporpost').value = results[5];
    document.getElementById('phone').value = results[6];
    document.getElementById('email').value = results[7];  
    for (i = 0; i < document.getElementById('country').length; i++) {
    	if (document.getElementById('country').options[i].text == results[8]) {
    		document.getElementById('country').selectedIndex = i;
    	}
    }
  }
}

// run the ajax listener
// you have to rerun this after each event/presenter is added/removed
function runScheduleListener() {
	Event.observe(window, 'load', initializeAjaxForSchedule, false);
}

// this is the ajax for the createschedule.php
// it accesses schedulesubmit.php and adds the info to the database
// it also pops up spinner.gif to show the user that something is happening
function initializeAjaxForSchedule(){
	//$('submit-indicator').style.display = 'none';
	Event.observe('scheduleformSubmit', 'click', startAjaxForSchedule, false);
}

function startAjaxForSchedule() {
	// make sure the form validates before submission
	// and make sure that an event exists
	var eventExists = false;
	var numOfDays = $('total_num_of_days').value;
	for (i = 1; i <= numOfDays; i++) {
		if ($('eventCounter-' + i).value > 0) {
			eventExists = true;
		}
	}	
	if (valid.validate() && eventExists) {
		$('submit-indicator2').style.display = 'none';
		$('submit-indicator').style.display = 'inline';
		var scriptURL = "ajax-schedulesave.php";
		// we need to make the variable pars to store all the variables we are passing to are ajax.request.
		// to do so we need to query eventExists and presenterExists arrays and just take all the info we need
		var pars = "";
		var eventValue, fileArray;
		var eventArray = document.getElementsByName("eventExists[]");
		// iterate over all the events listed in eventArray
		if (eventArray.length > 0) {
			for (i = 0; i < eventArray.length; i++) {
				// this is of the form DAY - EVENT
				eventValue = eventArray[i].value;
				pars += 'eventExists%5B%5D=' + eventValue + '&';
				// event-DAY-EVENT-name
				pars += 'event-' + eventValue + '-name=' + escape($F('event-' + eventValue + '-name')) + '&';
				// event-DAY-EVENT-desc
				pars += 'event-' + eventValue + '-desc=' + escape($F('event-' + eventValue + '-desc')) + '&';
				// event-DAY-EVENT-stime
				pars += 'event-' + eventValue + '-stime=' + escape($F('event-' + eventValue + '-stime')) + '&';
				// event-DAY-EVENT-etime
				pars += 'event-' + eventValue + '-etime=' + escape($F('event-' + eventValue + '-etime')) + '&';
				fileArray = document.getElementsByName("files-" + eventValue + "[]");
				if (fileArray.length > 0) {
					for (i = 0; i < fileArray.length; i++) {
						// do the files for DAY-EVENT
						// only grab the filename, which is the textnode of <p>
						pars += 'files-' + eventValue + '%5B%5D=' + escape($('filename-' + fileArray[i].value).firstChild.nodeValue) + '&';			
					}
				}
				
			}
		}
		
		// now deal with the presenters
		// this is of the form DAY - EVENT - PRESENTER
		var presenterValue;
		var presenterArray = document.getElementsByName("presenterExists[]");
		// iterate over all the events listed in presenterArray
		if (presenterArray.length > 0) {
			for (i = 0; i < presenterArray.length; i++) {
				// this is of the form DAY - EVENT - PRESENTER
				presenterValue = presenterArray[i].value;
				pars += 'presenterExists%5B%5D=' + presenterValue + '&';
				// presenter-DAY-EVENT-PRESENTER-name
				pars += 'presenter-' + presenterValue + '-name=' + escape($F('presenter-' + presenterValue + '-name')) + '&';
				// presenter-DAY-EVENT-PRESENTER-company
				pars += 'presenter-' + presenterValue + '-company=' + escape($F('presenter-' + presenterValue + '-company')) + '&';
				// presenter-DAY-EVENT-PRESENTER-bio
				pars += 'presenter-' + presenterValue + '-bio=' + escape($F('presenter-' + presenterValue + '-bio')) + '&';
				// presenter-DAY-EVENT-PRESENTER-disc
				pars += 'presenter-' + presenterValue + '-disc=' + escape($F('presenter-' + presenterValue + '-disc')) + '&';
				// presenter-DAY-EVENT-PRESENTER-discother
				pars += 'presenter-' + presenterValue + '-discother=' + escape($F('presenter-' + presenterValue + '-discother')) + '&';
			}
		}
		
		// deal with other miscellaneous hidden fields
		pars += 'MAX_FILE_SIZE=' + escape($F('MAX_FILE_SIZE')) + '&';
		pars += 'ref_num=' + escape($F('ref_num')) + '&';
		pars += 'total_num_of_days=' + escape($F('total_num_of_days')) + '&';	
			
		// remove the last &
		pars = pars.substring(0,pars.length-1);
		
		var targetDiv = "submit-indicator";
		var myAjax = new Ajax.Request(scriptURL, {method: 'post', parameters: pars, onSuccess: scheduleSuccess, onFailure: scheduleFailure});
	}
}

var scheduleSuccess = function(t) {
	$('submit-indicator').style.display = "none";
	$('submit-indicator2').style.display = "inline";
	alert(t.responseText);
}

var scheduleFailure = function(t) {
	alert('Error ' + t.status + ' -- ' + t.statusText);
}
