//check usernames object
var dynamicForm = {
	
	//DOM form element id's (constants)
	dynamicFormID: "dynamicForm",	
	activitySelectID: "dynamic_activity",
	destinationSelectID: "dynamic_destination",
	tripSelectID: "dynamic_trip",
	trip_alumniSelectID: "dynamic_trip_alumni",
	trip_extensionSelectID: "dynamic_trip_extension",
	trip_extensionBOOL: false,
	
	//vars to keep track of selected ids from dropdowns
	activityIDSelected: '',
	destinationIDSelected: '',
	tripIDSelected: '',	
	
  	init: function() {
		var activityElement;
	
		if (!document.getElementById || !document.getElementById(dynamicForm.dynamicFormID)) {			
			return;
		} 
		
		//
		activityElement = document.getElementById(dynamicForm.activitySelectID);
		destinationElement = document.getElementById(dynamicForm.destinationSelectID);		
		tripElement = document.getElementById(dynamicForm.tripSelectID);		
		
		//add onChange to Activity drop down
		addEvent(activityElement, 'change', dynamicForm.getDestinations, false);
		
		//add onChange to Destination drop down
		addEvent(destinationElement, 'change', dynamicForm.getTrips, false);
		addEvent(destinationElement, 'change', dynamicForm.getTripsAlumni, false);
		
		//add onChange to Trips drop down
		if(document.getElementById(dynamicForm.trip_extensionSelectID)) {			
			dynamicForm.trip_extensionBOOL = true;			
			addEvent(tripElement, 'change', dynamicForm.getTripExtensions, false);
		}		
	
	},	

	getDestinations: function() {	
	
		var qs = '';
		var type = 'destination';
		var formElement = document.getElementById(dynamicForm.activitySelectID);		
		
		//set class variable to keep track of activity id
		dynamicForm.activityIDSelected = formElement.options[formElement.selectedIndex].value;	
		
		//build POST string
		qs = 'activity_id=' + dynamicForm.activityIDSelected + '&type=' + type + '&select_id=' + dynamicForm.destinationSelectID;
		
		dynamicForm.activityReset();
		
		if(formElement.selectedIndex != 0) {		
			new Ajax.Request('/trip_populationAJAX.cfm', {method:'post', postBody:qs, onSuccess:dynamicForm.handlerFunc, onFailure:dynamicForm.errFunc, asynchronous:true});
		}
    
	},
  
	getTrips: function() {	
		//alert('trips');
		var qs = '';
		var type = 'trip';
		var formElement = document.getElementById(dynamicForm.destinationSelectID);		
		
		//set class variable to keep track of destination id
		dynamicForm.destinationIDSelected = formElement.options[formElement.selectedIndex].value;	
		
		//build POST string
		qs = 'activity_id=' + dynamicForm.activityIDSelected + '&destination_id=' + dynamicForm.destinationIDSelected + '&type=' + type + '&select_id=' + dynamicForm.tripSelectID;
		
		//alert(qs);
		dynamicForm.destinationReset();
		
		if(formElement.selectedIndex != 0) {		
			new Ajax.Request('/trip_populationAJAX.cfm', {method:'post', postBody:qs, onSuccess:dynamicForm.handlerFunc, onFailure:dynamicForm.errFunc, asynchronous:true});
		}
    
	},
  
	getTripsAlumni: function() {	
		//alert('alumni trips');
		var qs = '';
		var type = 'trip_alumni';
		var formElement = document.getElementById(dynamicForm.destinationSelectID);		
		
		//set class variable to keep track of destination id
		dynamicForm.destinationIDSelected = formElement.options[formElement.selectedIndex].value;	
		
		//build POST string
		qs = 'activity_id=' + dynamicForm.activityIDSelected + '&destination_id=' + dynamicForm.destinationIDSelected + '&type=' + type + '&select_id=' + dynamicForm.trip_alumniSelectID;
		
		//alert(qs);
		
		if(formElement.selectedIndex != 0) {
			new Ajax.Request('/trip_populationAJAX.cfm', {method:'post', postBody:qs, onSuccess:dynamicForm.handlerFunc, onFailure:dynamicForm.errFunc, asynchronous:true});
		}
    
	},  
  
	getTripExtensions: function() {	
	
		var qs = '';
		var type = 'trip_extension';
		var formElement = document.getElementById(dynamicForm.tripSelectID);		
		
		//set class variable to keep track of trip id
		dynamicForm.tripIDSelected = formElement.options[formElement.selectedIndex].value;	
		
		//build POST string
		qs = 'TripID=' + dynamicForm.tripIDSelected + '&type=' + type + '&select_id=' + dynamicForm.trip_extensionSelectID;	
		
		//alert(qs);
		
		if(formElement.selectedIndex != 0) {
			new Ajax.Request('/trip_populationAJAX.cfm', {method:'post', postBody:qs, onSuccess:dynamicForm.handlerFunc, onFailure:dynamicForm.errFunc, asynchronous:true});
		}
    
	},
  
	activityReset: function() {
		
		document.getElementById(dynamicForm.destinationSelectID).options.length = 1;
		document.getElementById(dynamicForm.tripSelectID).options.length = 1;
		document.getElementById(dynamicForm.trip_alumniSelectID).options.length = 1;
		if(dynamicForm.trip_extensionBOOL == true) {
			document.getElementById(dynamicForm.trip_extensionSelectID).options.length = 1;
		}
	
	},
	
	destinationReset: function() {
		
		// document.getElementById(dynamicForm.destinationSelectID).options.length = 1;
		document.getElementById(dynamicForm.tripSelectID).options.length = 1;
		document.getElementById(dynamicForm.trip_alumniSelectID).options.length = 1;
		if(dynamicForm.trip_extensionBOOL == true) {
			document.getElementById(dynamicForm.trip_extensionSelectID).options.length = 1;
		}
	
	},
	
	errFunc: function(t) {
		alert('Error ' + t.status + ' -- ' + t.statusText);
	},
	
	//For an XML response:
	handlerFunc: function(t) {
		//alert( 'handlerFunc' );
		//alert('handlerFunc\n\n\tt.responseText: ' + t.responseText);
		var xmlDoc = t.responseXML.documentElement;
		var responseBOOL;	
		var validNodeARR;
		var select_idNodeARR;
		var select_id;
		var responseBOOL;		
		
		var validNodeARR = xmlDoc.getElementsByTagName('valid');
		var select_idNodeARR = xmlDoc.getElementsByTagName('select_id');
		
		responseBOOL = validNodeARR[0].firstChild.nodeValue;
		select_id = select_idNodeARR[0].firstChild.nodeValue;
		//alert('validNodeARR: ' + validNodeARR + ' | select_idNodeARR: ' + select_idNodeARR + ' | select_id: ' + select_id);
		
		//reset options in select box
		document.getElementById(select_id).options.length = 1;
		
		//alert( responseBOOL );
		if(responseBOOL == 'TRUE') {									
			var valuePairsARR = xmlDoc.getElementsByTagName('value_pair');			
		
			//alert( valuePairsARR.length );
		
			for(i = 0; i < valuePairsARR.length; i++) {				
				//current <value_pair> node				
				value_pair_node = valuePairsARR[i];				
				id_node = value_pair_node.childNodes[0];
				value_node = value_pair_node.childNodes[1];					
				
				//build select box
				//alert( '*******************************************************************************\n\nselect_id: ' + select_id + '\n\noptions[' + i + '+1]:\n\n\tvalue_node.firstChild.nodeValue: ' +  value_node.firstChild.nodeValue + '\n\tid_node.firstChild.nodeValue: ' + id_node.firstChild.nodeValue)
				document.getElementById(select_id).options[i+1] = new Option(value_node.firstChild.nodeValue,id_node.firstChild.nodeValue);
				
			}
		}	
		
	},
	

	checkEmail: function() {	    
		var xmlhttp = new XMLHttpRequest();
		var form_value = '';
		var type = 'email';
		
		form_value = signupValidate.email.value;	
		
		var qs = '?value=' + form_value +
		   '&type=' + type;
		
		xmlhttp.open('GET', 'scripts/ajaxS.php' + qs, true);
		xmlhttp.onreadystatechange = function() {
		 if (xmlhttp.readyState == 4) {
			  //alert("Finished loading!");
		   signupValidate.receiveUsernames(xmlhttp.responseXML,type);
		 }
		};
		xmlhttp.send(null);
	},

	checkStoreTitle: function() {	    
		var xmlhttp = new XMLHttpRequest();
		var form_value = '';
		var type = 'store_title';	
		
		form_value = signupValidate.store_title.value;	
		
		var qs = '?value=' + form_value +
		   '&type=' + type;
		
		xmlhttp.open('GET', 'scripts/ajaxS.php' + qs, true);
		xmlhttp.onreadystatechange = function() {
		 if (xmlhttp.readyState == 4) {
			  //alert("Finished loading!");
		   signupValidate.receiveUsernames(xmlhttp.responseXML,type);
		 }
		};
		xmlhttp.send(null);
	},

	receiveUsernames: function(dom,type) {
		
		var usernameHTML = '';
		var validBOOL = '';
		var fieldOBJ = '';
		var field_containerOBJ = '';
		var responseBOOL = '';
		
		var validBOOL = dom.getElementsByTagName('valid');	
		
		responseBOOL = validBOOL[0].firstChild.nodeValue;	
		
		if(type == 'username')
		{
			fieldOBJ = signupValidate.username;
			field_containerOBJ = signupValidate.usernamecontainer;		
		}
		else if(type == 'email')
		{
			fieldOBJ = signupValidate.email;
			field_containerOBJ = signupValidate.emailcontainer;		
		}
		else if(type == 'store_title')
		{
			fieldOBJ = signupValidate.store_title;
			field_containerOBJ = signupValidate.store_titlecontainer;		
		}
		
		
		if(responseBOOL == "FALSE")
		{
			var error_msgs = dom.getElementsByTagName('error_msg');					
			field_containerOBJ.style.display = 'block';
			
			for (var i = 0; i < error_msgs.length; i++) {
			  usernameHTML+= "<span class='required'>*" + error_msgs[i].firstChild.nodeValue + "</span>";
			}	
			
			field_containerOBJ.innerHTML = usernameHTML;
			fieldOBJ.focus();
			usernameHTML = '';
		}
		else
		{
			field_containerOBJ.innerHTML = usernameHTML;
			field_containerOBJ.style.display = 'none';
		}
		
		// reattach the event, giving browsers time to do the innerHTML work
		setTimeout(function(type) {
			if(type == 'username')
			{
				fieldOBJ = document.getElementById('new_username');	
				addEvent(fieldOBJ, 'change', signupValidate.checkUsername, false);
			}
			else if(type == 'email')
			{
				fieldOBJ = document.getElementById('email');	
				addEvent(fieldOBJ, 'change', signupValidate.checkEmail, false);
			}
			else if(type == 'store_title')
			{
				fieldOBJ = document.getElementById('store_title');	
				addEvent(fieldOBJ, 'change', signupValidate.checkStoreTitle, false);
			}
		  
		}, 200);
		
		}
		
	}

addEvent(window, 'load', dynamicForm.init, false);