var debug_enabled = true;
var server;
var dd;
var err;
var licenseOk;
var log;
var contentWin;


Event.observe(window,	'load',	function(){
	console.log("Enter init server= ",server);
	err=0;
	licenseOk=false;
	validated = 0;

	Ajax.Responders.register({
		onCreate: function(transport){
			console.info("Ajax.Request ",url,"?",params);
		},
		onException: function (){
			console.error("Ajax.Request ",url,"?",params);
			console.error("Exception arg:",arguments);
		}
	});
	
	if($('rider') != null) {
	
		var valid = new Validation('riderData', {immediate:true, onFormValidate:formCallback, onSubmit:true });
	
		Validation.addAllThese([
			['validate-phone', '<font style="color:red"/>This is a required field.<br>222-222-2222, (222) 222-2222,<br> 222 222 2222</font>', function(v) {
				return !Validation.get('IsEmpty').test(v) && /^(?:\([2-9]\d{2}\)\ ?|[2-9]\d{2}(?:\-?|\ ?|\.?))[2-9]\d{2}[- \.]?\d{4}$/.test(v);
			}],
			['validate-zip', '<font style="color:red"/>This is a required field.<br>22222 or 22222-3333</font>', function(v) {
				return !Validation.get('IsEmpty').test(v) && /^(\d{5}-\d{4})|\d{5}$/.test(v);
			}],
			['validate-year', '<font style="color:red"/>This is a required field.<br>e.g. 1978</font>', function(v) {
				return !Validation.get('IsEmpty').test(v) && /^(19|20)\d{2}$/.test(v);
			}],
			['required', '<font style="color:red"/>This is a required field.</font>', function(v) {
				return !Validation.get('IsEmpty').test(v)
			}],
			['validate-license', '<font style="color:red"/>1Day, current USCF, NORBA or UCI license number<br>List UCI license '+
				'as UCIxxxxxxxxxxx</font>', function(v) {
				return /^[0-9]{1}[0-9]{0,6}$|^UCI[\d]{1,15}$|^1[d,D][a,A][y,Y]$/.test(v);
			}]
		]);
		$('racerList').hide();
		Effect.BlindDown('rider');
		$('postSubmitData').hide();
//		$('firstname').activate();
		new Effect.Highlight('firstname');

		Event.observe('lastname', 'blur', nameObserver);
		Event.observe('firstname','blur', nameObserver);	
		Event.observe('raceInfo', 'click', class_clicked, false);
		Event.observe('riderData', 'submit', riderDataSubmit);
		Event.observe('closeRacerList', 'click', closeRacerListWindow);
		
	}
});
function closeRacerListWindow(){
	$('racerList').hide();
}
function class_clicked(evt){
	var child = Event.element(evt);
	console.log('evt=',evt,' The child node with id=', child.id , ' and indexof(sexclassage)=',child.id.indexOf('sexclassage'),' was clicked');
	eventClass = document.getElementsByClassName('classes');
	console.log('eventClass=',eventClass);
	if((child.id.indexOf('ticketCount') == -1) && (child.id.indexOf('sexclassage') == -1 ) && (child.id!='')){
		Event.stop(evt); //avoid another call related to 'parent_node' itself
		params = 'id='+child.id;
		url = 'http://'+server+'/reg/newReg/getRegRiders.php';
//		Dialog.alert({url: url, options: {method: 'get', parameters: params}}, {className: "alphacube", height:400, width:320, okLabel: "Close"});
		if (contentWin != null) { 
			Dialog.alert("Close the window 'Test' before opening it again!", {width:200, height:130}); 
		}
		else { 
			contentWin = new Window({maximizable: false, resizable: false, width:550, height:400,
				hideEffect:Element.hide, showEffect:Element.show, className:"bluelighting",
				minWidth: 10, destroyOnClose: true}); 
			contentWin.setAjaxContent(url,{method:'get', parameters:params}, true, false);
			contentWin.show();
// Set up a windows observer, check ou debug window to get messages 
			myObserver = { 
				onDestroy: function(eventName, win) { 
					if (win == contentWin) { 
						contentWin = null; 
						Windows.removeObserver(this); 
					} 
				}
			} 
			Windows.addObserver(myObserver);
		}
	}
}
function riderDataSubmit(event) {
	console.group("Event.observe('riderData')");
	console.log("validated=",validated," licenseOk=",licenseOk," result=",result,"license=", $('license'));
	Event.stop(event);

	if($('license')!=null){
		if($F('license')=='1day'){
			licenseOk=true;
			console.log("license=",$F('license')," - licenseOk='",licenseOk,"'");
		}
	}
/*
	else{
		searchUSAC();
		console.log("licenseOk='",licenseOk,"'");
	}
	if(!licenseOk){
		console.log("Name/License mismatch - Form NOT submitted");
	}
*/
	if(validated){
		displayQueryString();
		console.log("Submit 'riderData' data via storeData.php");
		submitData(server);
	}
	else{
		console.log("Form not validated - Form NOT submitted");
	}
	console.groupEnd();
};
function nameObserver(){
	console.group("nameObserver");
	console.log('Observe name firstname=',$F('firstname'),' lastname=',$F('lastname'));
	if($F('firstname')!='' && $F('lastname')!='') {
		params = 'firstname=' + $F('firstname').replace(/  /,' ') + '&lastname=' + $F('lastname').replace(/  /,' ') + '&series_number=' + $F('series_number');
		url = 'http://'+server+'/reg/newReg/checkRaces.php';
		new Ajax.Request(url, {
			method: 'post',
			parameters: params,
			onSuccess: function(transport){
				console.group("checkRaces");
				var response = transport.responseText || "no response text";
				console.dirxml(transport.responseXML);
				var    id = transport.responseXML.getElementsByTagName("id")[0].firstChild.data;
				console.log("id=",id);
				var races = transport.responseXML.getElementsByTagName("races");
				console.log("races.length=",races.length);
				idRace = new Array();
				for(var index=0; index<races.length; ++index){
					var race = races[index].firstChild.data;
					var cl = race.split('/');
					idRace[index] = cl[0]+'/'+cl[1]+'/'+cl[2]+'/'+cl[5];
				}
				checked = $('riderData').getInputs('checkbox', 'sexclassage');
				for (var index = 0; index < checked.length; ++index) {
					var item = checked[index].getValue();
					var r = checked[index].readAttribute('value').split('/');
					var formClass = r[0]+'/'+r[1]+'/'+r[2]+'/'+r[5];
					for (idx = 0; idx<idRace.length; ++idx){
						if(formClass == idRace[idx]) {
							console.log('checked[',index,'] =',item);
							checked[index].checked = true;
							break;
						}
					}
				}
				console.groupEnd();
			},
			onFailure: function(){ 
				console.error('Something went wrong...');
			}
		});
	}
	console.groupEnd();
}
/*	
Event.observe( 'license', 'change', function(){
		alert("Event.observe err='" + err + "'");
		searchUSAC();
});
*/
function displayQueryString(){
	var qs = Form.serialize($('riderData'));
	qs = qs.replace(/&/gi,'\n');
	console.log("displayQueryString\n",qs);
}
function formCallback(result, form) {
	console.log("formCallback - Form = '" , form.id , "' :result = '" , result , "'" , " license='" , $F('license'));
	validated = result;

}
function elementCallback(result, element) {
	console.log("elementCallback - result='" , result ,"' element='" , element.id , "'.value()= " ,	$F(element.id));
}
function submitData(server) {
	var ticketCount = [];
	console.group("submitData(",server,")");
	console.log('submitData');
	var seriesNumber = $F('series_number');
	var params = '&series_name=' + $F('series_name')+
		'&series_number=' + $F('series_number')+
//		'&dd=' + $F('dd')+
		'&firstname=' + $F('firstname')+
		'&lastname=' + $F('lastname')+
		'&email=' + $F('email')+
		'&phone=' + $F('phone')+
		'&street=' + escape($F('street'))+
		'&city=' + $F('city')+
		'&state=' + $F('state')+
		'&zip=' + $F('zip')+
		'&license=' + $F('license')+
		'&birthyear=' + $F('birthyear')+
		'&sponsor=' + escape($F('sponsor'))+
		'&emergency_contact=' + $F('emergency_contact')+
		'&emergency_contact_phone=' + $F('emergency_contact_phone')+
		'&comments=' + escape($F('comments'));
	var checked = $('riderData').getInputs('checkbox');
	var ticketCount = $('riderData').getInputs('text','ticketCount');

	if (checked.length==0) {
		checked = $('riderData').getInputs('radio');
	}
	sexclassage = '';
	delSexclassage = '';
	tCount = '';
	tCountCnt = -1;
	scaCnt = -1;
	delScaCnt = -1;
	for (var index = 0; index < checked.length; ++index) {
		console.log('checked[',index,'].checked=',checked[index].checked,' value=',checked[index].readAttribute('value'));
		if( ticketCount[index]!=undefined) {
			console.log('ticketCount[',index,']=',ticketCount[index].value);
			tCount += '&ticketCount['+index+']='+ticketCount[index].value;
		}
		if( !checked[index].checked ) {
			delScaCnt++;
			delSexclassage += '&delSexclassage['+delScaCnt+']='+checked[index].readAttribute('value');
		}
		else{
			scaCnt++;
			sexclassage += '&sexclassage['+scaCnt+']='+checked[index].getValue();
		}
	}
	params += sexclassage + delSexclassage + tCount;
	url = 'http://'+server+'/reg/newReg/storeData.php';
	new Ajax.Request(url, {
		method: 'post',
		parameters: params,                
		onCreate:
			function(){
				console.info('Ajax.Request ', url,'?', params);
			},
		onSuccess:
			function(transport){
				var response = transport.responseText || "no response text";
				console.info("AJAX Request Success! response='" , response,"'");
				var id =  transport.responseXML.getElementsByTagName("id")[0].firstChild.data;
				console.log("id.length=",id.length," id=",id);
//	if MOBAR winner or Comp'ed, don't show CheckOut

				$('postSubmitData').update("<button type='button' id='backButton'/>Back</button>");
				racePayment(server,seriesNumber,id);
			},
		onFailure: function(){ console.log('Something went wrong...'); }
	});
	console.groupEnd();
}
function racePayment(server, seriesNumber, id){
	console.log("racePayment");
	var params = "seriesNumber="+seriesNumber+"&id="+id;
	
	console.log('params= ',params);
	var url = 'http://'+server+'/reg/newReg/purchase.php';
	console.log('Updater submitData - url= ',url ,'?' , params);
	new Ajax.Updater('postSubmitData', url, {
		parameters: params,
		insertion: Insertion.Bottom,
		onCreate: function(){
			console.info("Ajax.Updater ",url,"?",params);
		},
		onComplete: function(transport){
			var response = transport.responseText || "no response text";
			console.log("racePayment AJAX Complete! response='" , response,"'");
			$('rider').hide();
			Effect.BlindDown('postSubmitData');

			Event.observe('backButton', 'click', function(event) {
				$('postSubmitData').hide();
				Effect.BlindDown('rider');
			});
		},
		onFailure: function(){ console.log('Something went wrong...'); }
	});
	
}
// This function is currently not being used.  No check is done against the USAC DB.
function searchUSAC() {
	console.group('searchUSAC');
	var lastname = $F('lastname');
	var license = $F('license');
	var raceSanctionGroup = $F('race_sanction_group');
	console.log('lastname=',lastname,' license=',license,' server=',server,' raceSanctionGroup=',raceSanctionGroup);
	var url = 'http://'+server+'/reg/newReg/checkName.php';
	var pars = 'lastname=' + lastname + '&license=' + license + '&race_sanction_group=' + raceSanctionGroup;
	console.log("searchUSAC Ajax.request: " , url , "?" , pars );
	
	new Ajax.Request(url, {
			method: 'post',
			asynchronous: false,
			parameters: pars,                
			onSuccess: function(transport){
				console.group('checkName');
				var response = transport.responseText || "no response text";
				console.dirxml(transport.responseXML);
				var match = transport.responseXML.getElementsByTagName("response")[0].getAttribute("match");
				var nbrNames = transport.responseXML.getElementsByTagName("name").length;
				var names = $A(transport.responseXML.getElementsByTagName("name"));
				console.log("match=",match," nbrNames=",nbrNames);
				if ( match == 1){
					licenseOk = true;
					console.log("We have a match licenseOk='",licenseOk,"'");
				}	
				else if( nbrNames > 0) {
					var divHtml = "<SELECT id='selectNames'><OPTION value=''>Pull Down to select name</OPTION>";
					for(i=0;i<nbrNames;i++){
						lastname[i] = names[i].getElementsByTagName("lastname")[0].firstChild.data;
						firstname[i] = names[i].getElementsByTagName("firstname")[0].firstChild.data;
						license[i] = names[i].getElementsByTagName("license")[0].firstChild.data;
						console.log('names[',i,'].lastname = ',lastname);
						console.log('names[',i,'].firstname = ',firstname);
						console.log('names[',i,'].license = ',license);
						divHtml = divHtml+"<OPTION value='"+i+"/"+lastname+"/"+firstname+"/"+license+"'>"+lastname+" / "+firstname+" / "+license+"</OPTION>";
					}
					divHtml = divHtml+"</SELECT>";
					$('names').update(divHtml);
					Event.observe('selectNames', 'click', function(event) {
						console.group('observe selectNames');
						console.log('selectNames= ',$F(selectNames));
						var entry = $F('selectNames');
						var data = entry.split("/");
						console.log('entry= ',entry,', data= ',data);
						$('firstname') = 'xxx';//data[1];
						$('lastname') = data[2];
						$('license') = data[3];
						console.groupEnd();
					});
					Effect.BlindUp('licenseInfo');
					$('license-no-match').show();
				}
				else {
					console.log('No Match');
					licenseOk = false;
					Effect.BlindDown('license-no-match');
					$('license').activate();
					console.log("License error ");
				}
				console.groupEnd();
			},
			onFailure: function(){ console.log('Something went wrong...'); }
	});
	console.groupEnd();
}

function showError(originalRequest){
	console.log("AJAX failed");
}

function showResponse(originalRequest) {
	console.log("showResponse " , originalRequest.responseText);
	xmlDoc = originalRequest.responseText;
	nbrNames = xmlDoc.getElementsByTagName("name").length;
	if(nbrNames==1) {
		err = 0;
	}
	else {
		err = 0;
	}
	console.log("nbrNames=",nbrNames,"\nerr=" , err);
}
//----------------------------------------------------------------------------



