var processinguc = false;
function resetErrors() {
	$('#username_mark').html('');
	$('#username_error').html('');
	$('#password_mark').html('');
	$('#password_error').html('');
	$('#email_mark').html('');
	$('#email_error').html('');
	try {
		$('#zip_mark').html('');
		$('#zip_error').html('');
	} catch(e) {
	}
	try {
		$('#state_mark').html('');
		$('#state_error').html('');
	} catch(e) {
	}
	try {
		$('#product_error').html('');
	} catch(e) {
	}
	try {
		$('#first_mark').html('');
		$('#first_error').html('');
		$('#last_mark').html('');
		$('#last_error').html('');
	} catch(e) {
	}
}
function addError(field, error) {
	var p = $('#'+field).position();
	$('#'+field+'_mark').html('<span style="color:red">*</span>');
	$('#'+field+'_error').html('<table border="0" cellpadding="2" cellspacing="1" style="position:absolute;top:'+(p.top)+'px;left:' +(p.left+$('#'+field).width()+10)+'px;z-index:1" class="errtable"><tr><td>'+error+'</td></tr></table>');
}
function removeError(field) {
	$('#'+field+'_mark').html('');
	$('#'+field+'_error').html('');
}
function gval(e) {
	try {
		return e.value;
	} catch(e) {
		return false;
	}
}
function validate(form) {
	window.shut = false;
	resetErrors();
	var i;
	var good = true;
	if (form.password.value == '') {
		good = false;
		addError('password', "Password cannot be blank");
	} else if (form.password.value.length < 4){
		good = false;
		addError('password', "Password must be at least 4 symbols");
	} else if (form.password.value == form.username.value){
		good = false;
		addError('password', "Password and Username are too aimilar");
	}
	var alphacheck = /^([a-zA-Z0-9_-]+)$/;
	if (form.username.value.length < 6) {
		good = false;
		addError('username', 'Username must be at least 6 characters');
	} else	if (!alphacheck.test(form.username.value)) {
		good = false;
		addError('username', "Username may contain only symbols from a-z, A-Z, 0-9");
	}
	emailregex = /^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i
	if (!form.email.value) {
		good = false;
		addError('email', "Please enter your email address");
	}
	else if (!emailregex.test(form.email.value)) {
		good = false;
		addError('email', "Please enter a valid email address");
	}
	if (form.fname && form.fname.value.length < 2) {
		good = false;
		addError('first', "Please enter your first name");
	}
	if (form.lname && form.lname.value.length < 2) {
		addError('last', "Please enter your last name");
	}
	if (form.zip && form.zip.value == ''){
		good = false;
		addError('zip', "ZIP cannot be blank");
	}
	if (form.state && form.country && stateRequired() && $('#state').val().length < 2) {
		good = false;
		addError('state', "Please select a state or correct your country");
	}
	if (form.product_id && getProductId(form) == undefined) {
		p = $('#product_error').position();
		good = false;
		$('#product_error').html('<table border="0" cellpadding="3" cellspacing="10" width="315" style="position:absolute;top:'+(p.top-8)+'px;left:' +(p.left+100)+'px;z-index:1" class="errtable"><tr><td align="center">Please choose a membership</td></tr></table>');
	}
	if (good) {
		img = document.getElementById('submitbutton');
		if (!window.exsrc) {
			window.exsrc = img.src;
		}
		img.src = window.signuploadingsrc;

		uverify = function(data) {
			if (data.zip == false) {
			    img.src = window.exsrc;
				addError('zip', "Please enter a valid zip code");
			} else if (data.result == 1) {
			    img.src = window.exsrc;
			    addError('username', 'Username may contain only symbols from a-z, A-Z, 0-9');
		    } else if (data.result == 2) {
			    img.src = window.exsrc;
			    addError('username', 'Username must be between 6 and 20 characters');
		    } else if (data.result == 3) {
			    img.src = window.exsrc;
			    s = '<table border="0" cellpadding="2" cellspacing="1">';
			    for(i = 0; i < data.alternatives.length; i++) {
				    text = data.alternatives[i];
				    s += '<tr><td>&nbsp;<a href="#" onclick="selectUser(\''+text+'\');return false;">'+text+'</a></td></tr>';
			    }
			    s += '</table>';
			    var p = $('#username').position();
			    $('#username_mark').html('<span style="color:red">*</span>');
			    $('#username_error').html('<table border="0" cellpadding="3" cellspacing="1" style="position:absolute;top:'+(p.top+26)+'px;left:' +(p.left-40)+'px" class="errtable"><tr><td>Username is not available, please choose a new one<br><br>Available usernames:</td></tr><tr><td>'+s+'<br></td></tr></table>');
		    } else {
			    window.shut = false;
			    form.submit();
		    }
		    processinguc = false;
		}

		if (processinguc == false) {
			processinguc = true;
			$.ajax({
			    url: '/forms/signup_verifyform.php',
			    cache: false,
			    data: { username: form.username.value, site: window.siteid, checkusername: 1, zip: gval(form.zip), country: gval(form.country) },
			    dataType: 'json',
			    type: 'get',
			    success: uverify,
			    error: function() {
					processinguc = false;
					form.submit();
			    }
			});
		}
		return false;
	}
	return good;
}
function getProductId(form) {
	return $("input[name=product_id]:checked,input[name=product_id][type=hidden],select[name=product_id]", form).val();
}
function stateRequired() {
	try {
		r = $('#country').val().match(/^(US|CA)/);
	} catch(e) {
		r = false;
	}
	return r;
}
function checkState() {
	$('#state').attr('disabled', !stateRequired());
}
function selectUser(u) {
	$('#username').val(u);
	removeError('username');
	document.getElementById('submitbutton').src = window.signuploadingsrc;
	processinguc = true;
	window.shut = false;
	document.form.submit();
}
function getstate(o) {
	$.get('/forms/signup_verifyform.php', { zip: o.value, country: $('#country').val(), getstate: 1 }, function(data) {
		if (data.result == 0 && $('#state').val() == '.') {
			$('#state').val(data.state);
		}
	}, 'json');
}
function preloadImages() {
	i = new Image();
	if (!window.signuploadingsrc) {
		window.signuploadingsrc = window.signupformimages + 'index_09c.gif';
	}
    i.src = window.signuploadingsrc;
}
function populateproducts(t, g) {
	if (t == null) {
		return;
	}
	sp = $('input[name=product_id]:checked', document.form).val();
	if (sp) {
		for(i = 0; i < window.productlist[t].length; i++) {
			value = window.productlist[t][i];
			if (sp == value['id']) {
				g = true;
				break;
			}
		}
	}
	var s = '';
	for(i = 0; i < window.productlist[t].length; i++) {
		value = window.productlist[t][i];
		s = s + window.productemplate;
		s = s.replace('%PRODUCTID%', value['id']).replace('%NAME%', value['name']);
		if ((g && sp == value['id']) || (!g && value['preselect'] == 1)) {
			s = s.replace('%CHECKED%', ' checked');
		} else {
			s = s.replace('%CHECKED%', '');
		}
	}
	p = document.getElementById('productlist').parentNode;
	h = p.innerHTML;
	i = h.indexOf('>');
	if (i != -1) {
		p.innerHTML = h.substr(0, i) + s + '</table>';
	}
}
$(document).ready(function() {
	preloadImages();
	checkState();
	populateproducts($('input[name=paymenttype]:checked', document.form).val(), (window.preselect == 0));
});

