var myFormValidator;

window.addEvent('domready', function(){
	setup_fields();
	setup_events();
	//fill_defaults();
	//new SmoothScroll({ duration:1000 }, window);
	
});


function setup_events () {
	
	trace("setting up events");
	
	$('a').addEvent('submit', sendme);
	
	//$('submit').addEvent('click', sendme);
	$('clear').addEvent('click', clearme);
	
	//var myFormValidator = new FormValidator('a', {
	myFormValidator = new FormValidator('a', {
	    onFormValidate: myFormHandler,
	    evaluateFieldsOnBlur: false
	});
	
}




function myFormHandler () {
	trace("valid: " + arguments[0]);	
	
	if (arguments[0] == true) {
		trace("email address format is ok, check for uniqueness...");
		check_email_uniqueness($('email').get('value'));
	} else {
		var a = $$('.validation-failed')[0].get('name');
		window.location = "#"+a;
	}
}


function setup_fields () {	

	$('country').getElements('option').each(function(e){
	    e.value = e.innerHTML;
	});

	
	var required = ['first-name', 
									'last-name', 
									'city', 
									'street-number',
									//'region',   
									'websites',
									'year-of-birth',
									'gender',
									'country',
									'workshop-group',
									'working-group-1',
									'working-group-2',
									'working-group-3',
									'q01', 
									'q02', 
									'q03',
									'q04',
									'q05',
									'q06',
									'q07',
									'q08',
									'q09',
									'q10',
									'q11',
									'q12',
									'q13',
									//'q14',
									//'q15',
									//'q16',
									'q17',
									'q18'];
	
	var trequired = ['first-name', 
									'last-name'];
	
	required.each(function (e) {
		$(e).addClass('required');
	});
	
	
	$('email').addClass('required validate-email');
	$('artistic-practise-other').addClass('validate-one-required');
	//$('office-number').addClass('required validate-one-required');

}


function sendme (event) {
	event.stop();
	//$('a').set('send', {url: 'contact.php', method: 'get'});

	
////	check_email_uniqueness($('email').get('value'));

}


function check_email_uniqueness (str) {
	var myRequest = new Request({
		method: 'get', 
		url: 'check_email.php',
		onRequest: function() {
			trace("checking email uniqueness...");
		},
		onSuccess: function(txt, xml) {
			trace("email uniqueness result: " + txt); // + ", type: " + $type(txt));
			if (txt == "false") {
				alert("Sorry that email address is taken.  Please use a valid, unique email address.");
			} else {
				submit_form();
			}
		},
		onFailure: function() {
			trace("email uniqueness check Failed");
		}
	});
	
	myRequest.send("email="+str);
}

function submit_form () {

	var myRequest = new Request({
		url: 'a.php',
		data: $('a'),
		onRequest: function() {
			trace("Request init");
			$$('input[type=submit]')[0].disabled = true;
		},
		onSuccess: function(txt, xml) {
			trace("Request Successful: " + txt);

			trace("Uploading files (if there are any)...");
		
			if (swiffy.getFileList().length > 0) {
				swiffy.upload();
				pp();
				
				//new Element('p', {'id': 'wait', 'html': 'Wait...'}).injectBefore($('upload-status').getElement('p'));
				
				//alert("Thank You for your submission, " + $('first-name').get('value') + "\n" + "Please wait while your files are uploaded before closing this window.");
				
			} else {
				
				alert("Thank You for your submission, " + $('first-name').get('value'));
				(function(){ window.location = "http://ignitetheamericas.ca/espanol"; }).delay(1000);
			}

			
			
			/*
			var p = new element('p');
			$('upload-status').getElement('p').inject();
			*/
			
			$$('input[type=submit]')[0].disabled = false;
		},
		onFailure: function() {
			trace("Request Failed");
			alert("Error sending info, please try again.");
			$$('input[type=submit]')[0].disabled = false;
		}
	});
	myRequest.send();

}




function add_file_to_user_profile (user, path) {
	trace("user: " + user + ", path: " + path);
	
	var myRequest = new Request({
		method: 'post', 
		url: 'add_file_to_user_profile.php',
		onRequest: function() {
			trace("adding file to user profile...");
		},
		onSuccess: function(txt, xml) {
			trace("file added. " + txt);
		},
		onFailure: function() {
			trace("error adding file: " + path + " to user profile");
		}
	});
	myRequest.send("email="+user+"&file="+escape(path));
	trace("email: " + user + ", file: " + escape(path));
	
}


function clearme () {
	trace('clearme');
	$('a').reset();
}


function fill_defaults () {
		
	$$('input[type=text]').each(function(e) {
		e.value = "test";
	});
	
	$$('input[type=checkbox]').each(function(e) {
     e.checked = true;
	});

	$$('input[type=radio]').each(function(e) {
			e.checked = true;
	});
	
	$$('select').each(function(e) {
	    e.value = "1909";
			e.value = "male";
			e.value = "Canada";
			e.value = "3";
	});
	
	$$('textarea').each(function(e) {
			e.value = "textarea test";
	});

}


function pp () {
	
	if (!$('overlay')) {
		new Element('div', {'id': 'overlay'}).addEvent('click', function (e) {
			e.stop();
			//$('overlay').fade('out');
			//$('upload-status').fade('out');
		}).inject($$('body')[0]);
	}
	
	$('overlay').setStyles({
		'background-color': '#000000',
		'cursor': 'pointer',
		'height': '100%',
		'opacity': '0.8',
		'position': 'absolute',
		'top': window.getScroll().y,
		'width': '100%',
		'z-index': 999
	});

	$('upload-status').setStyles({
		'opacity': '1',
		'position': 'absolute',
		'left': (window.getWidth() / 2) - ($('upload-status').getWidth() / 2),
		'top': window.getScroll().y + (window.getHeight() / 2) - ($('upload-status').getHeight() / 2),
		'z-index': 1000
	});
	
	$('upload-status').getElements('div').each(function(e){
		e.setStyle('display', 'block');
	});
	
	var message = "Thank You for your submission, " + $('first-name').get('value') + "\n" + "Please wait while your files are uploaded before closing this window.";
	$('upload-status').getElement('p').set('html', message);
	
	//$('overlay').fade('0.8');
	//$('upload-status').fade('in');
		
	window.addEvent('scroll', pp);
	window.addEvent('resize', pp);
	
}


function trace(str) {
	//console.log(str);
	//$('output').innerHTML += str + "<br />";
}