// JavaScript Document

var dtreg;

window.addEvent("domready", function(){
	setCookie("cookie_test", "1", 1, "/", ".statsjunky.com", "");
	var cookie_test = getCookie("cookie_test");
	if(cookie_test == null){
		alert("Cookies need to be enabled for this site to function correctly. If you need assistance in doing this, please contact support@statsjunky.com.");
	}
});

function setCookie(name, value, expires, path, domain, secure) {
	// set time, it's in milliseconds	
	var today = new Date();
	today.setTime(today.getTime());
	/*
	if the expires variable is set, make the correct 
	expires time, the current script below will set 
	it for x number of days, to make it for hours, 
	delete * 24, for minutes, delete * 60 * 24
	*/
	if (expires){
		expires = expires * 1000 * 60 * 60 * 24;
	}
	var expires_date = new Date(today.getTime() + (expires));
	
	document.cookie = name + "=" +escape( value ) +
		( ( expires ) ? ";expires=" + expires_date.toGMTString() : "" ) + 
		( ( path ) ? ";path=" + path : "" ) + 
		( ( domain ) ? ";domain=" + domain : "" ) +
		( ( secure ) ? ";secure" : "" );
}

function getCookie( check_name ) {
	// first we'll split this cookie up into name/value pairs
	// note: document.cookie only returns name=value, not the other components
	var a_all_cookies = document.cookie.split(';');
	var a_temp_cookie = '';
	var cookie_name = '';
	var cookie_value = '';
	var b_cookie_found = false; // set boolean t/f default f
	
	for (i = 0; i < a_all_cookies.length; i++){
		// now we'll split apart each name=value pair
		a_temp_cookie = a_all_cookies[i].split( '=' );
		
		
		// and trim left/right whitespace while we're at it
		cookie_name = a_temp_cookie[0].replace(/^\s+|\s+$/g, '');
	
		// if the extracted name matches passed check_name
		if (cookie_name == check_name){
			b_cookie_found = true;
			// we need to handle case where cookie has no value but exists (no = sign, that is):
			if (a_temp_cookie.length > 1){
				cookie_value = unescape(a_temp_cookie[1].replace(/^\s+|\s+$/g, ''));
			}
			// note that in cases where cookie is initialized but no value, null is returned
			return cookie_value;
			break;
		}
		a_temp_cookie = null;
		cookie_name = '';
	}
	if (!b_cookie_found){
		return null;
	}
}


function registration(){
	var form_id;
	var name;
	var email;
	var username;
	var password;
	//var id;
}

function validateForm() {
	var form_id = 'download_form';
	
	// set variable for form field values
	dtreg = new registration();
	dtreg.form_id = form_id;
	dtreg.name = $('name').get('value');
	dtreg.email = $('email').get('value');
	dtreg.username = $('username').get('value');
	dtreg.password = $('password').get('value');
	//dtreg.id = $('id').get('value');


	$('download_form').store("old_html", $('download_form').get('html'));
	
	var processingHTML = '<center><p>Processing...<br><img src="http://www.statsjunky.com/images/loading.gif"></p></center>';
	
	$('download_form').set('html', processingHTML);
	
	// regular expression for validating email
	var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
	
	// verify user input has been provided
	if (dtreg.name == ""){
		showError(form_id, 'name_blank');
		return false;
	} else if (dtreg.email == ""){
		showError(form_id, 'email_blank');
		return false;
	} else if (!reg.test(dtreg.email)) {
		showError(form_id, 'email_invalid');
		return false;
	} else if (dtreg.username == ""){
		showError(form_id, 'username_blank');
		return false;
	} else if (dtreg.password == ""){
		showError(form_id, 'password_blank');
		return false;
	} else if(!(/^[\w\d]*$/i.test(dtreg.password))) {
		showError(form_id, 'password_invalid');
		return false;
	} else {
		validateRequired(dtreg.username, dtreg.email);
	}
	
}

function validateRequired(username, email) {
	var validateRequiredRequest = new Request({url: '/ajax/validateRequired.php', method: 'get'}).send('username=' + escape(username)+ '&email=' + escape(email));
	validateRequiredRequest.onSuccess = function(responseText, responseXML) {
		if(responseText == 'valid') {
			saveRegistration(dtreg.name, dtreg.email, dtreg.username, dtreg.password, dtreg.id);
		} else if(responseText == 'Username found') {
			showError(dtreg.form_id, 'username_invalid');
		} else if(responseText == 'Email found') {
			showError(dtreg.form_id, 'email_used');
		}
	}
}

function validateUsername(username) {
	var validateUsernameRequest = new Request({url: '/ajax/validateUsername.php', method: 'post'}).send('username=' + escape(username));
	validateUsernameRequest.onSuccess = function(responseText, responseXML){
		if(responseText == 'valid'){
			return true;
		} else {
			showError(dtreg.form_id, 'username_invalid');
			return false;
		}
	};
}

function validateEmail(email) {
	var validateEmailRequest = new Request({url: '/ajax/validateEmail.php', method: 'post'}).send('email=' + escape(email));
	validateEmailRequest.onSuccess = function(responseText, responseXML){
		if(responseText == 'valid'){
			return true;
		} else {
			showError(dtreg.form_id, 'email_used');
			return false;
		}
	};
}

function saveRegistration(name, email, username, password, id){

var saveRegistrationRequest = new Request({url: '/ajax/saveRegistration.php', method: 'post'}).send('userid=' + escape(username) + '&password=' + escape(password) + '&name=' + escape(name) + '&email=' + escape(email) + '&processor=' + $('processor').get('value'));
	saveRegistrationRequest.onSuccess = function(responseText, responseXML){
		if(responseText != 'failure'){
			var response = responseText.split(",");
			var post;
			post = 'regid=' + response[0];
			post += '&validation_key=' + response[1];
			post += '&category1=statsjunkyfreetrial';
			var postGetResponseRequest = new Request({url: '/ajax/postGetResponse.php', method: 'post'}).send(post);
			document.location.href='http://www.statsjunky.com/thank-you-free.php';	
		} else {
			alert(responseText);
			showError(dtreg.form_id, 'save_failed');
		}
	};
}

function showError(form_id, fault){
	var error = '';
	switch(fault){
		case 'username_blank':
			error = 'Please enter your Username.<br><br>It is required to download Stats Junky.';
			break;
		case 'username_invalid':
			error = 'This Username is already in use.<br><br>Please try another one.';
			break;
		case 'password_blank':
			error = 'Please enter your Password.<br><br>It is required to download StatsJunky.';
			break;
		case 'password_invalid':
			error = "Your password is invalid.<br><br>You may only use letters and numbers for your password.";
			break;
		case 'name_blank':
			error = 'Please enter your Name.<br><br>It is required to download StatsJunky.';
			break;
		case 'email_blank':
			error = 'Please enter your Email.<br><br>It is required to download StatsJunky.';
			break;
		case 'email_invalid':
			error = 'The provided Email address is not in a valid format.<br><br>It must be in the format [user@domain.com].';
			break;
		case 'email_used':
			error = 'The Email address you have entered has already been taken.<br><br>Please try again.';
			break;
		default:
			error = 'Unknown error occurred.<br><br>Contact support.';
			break;
	}
	
	var errorHTML = '<center><p><img src="http://www.statsjunky.com/images/error.gif"><br><br>' + error + '</p></center>';
	
	$('download_form').set('html', errorHTML);
	restoreForm(form_id, 4);
}

function restoreForm(form_id, seconds){
	if(seconds <= 0){
		$('download_form').set('html', $('download_form').retrieve('old_html'));
		$('name').set('value', dtreg.name);
		$('email').set('value', dtreg.email);
		$('username').set('value', dtreg.username);
		$('password').set('value', dtreg.password);
	} else {
		seconds--;
		setTimeout('restoreForm("' + form_id + '", ' + seconds + ')', 1000);
	}
}
