var UName = {
	limit : 18,
	input : document.getElementById('username_input'),
	preview : document.getElementById('username_preview'),
	limit_label : document.getElementById('username_limit'),
	checker : document.getElementById('username_checker'),
	result : document.getElementById('username_check_result'),
	url: Upspring.www + '/signup'
};
UName.updatePreview = function(){
	var username = UName.input.value.replace(/\s/g, '').replace(/-/g, '_');
	if(username.length > UName.limit){
		username = username.substr(0, UName.limit);
	}
	if(UName.input.value != username){
		UName.input.value = username;
	}
	UName.limit_label.innerHTML = UName.limit - username.length;
	UName.result.style.display = 'none';
	UName.checker.style.display = '';
	UName.preview.innerHTML = (username != '')? username : 'username';
	UName.checker.className = (username != '')? 'ubcButton' : 'ubcButtonInactive';
};
UName.check = function(){
	var username = UName.input.value.replace(/\s/g, '');
	if(username != ''){
		UName.input.value = username;
		UName.checker.style.display = 'none';
		UName.result.className = '';
		UName.result.style.display = '';
		UName.result.innerHTML = 'Checking...';
		var poststr = 'check_username=' + encodeURIComponent(username);
		ajaxpack.postAjaxRequest(UName.url, poststr, UName.checkDone, "xml");
	}
};
UName.checkDone = function(){
	var myajax = ajaxpack.ajaxobj;
	var myfiletype = ajaxpack.filetype;
	if (myajax.readyState == 4){
		if (myajax.status==200){
			if (myfiletype=="xml"){
				var xmldoc = myajax.responseXML;
				var username = xmldoc.getElementsByTagName('username').item(0).firstChild.nodeValue;
				var status = xmldoc.getElementsByTagName('status').item(0).firstChild.nodeValue;
				var message = xmldoc.getElementsByTagName('message').item(0).firstChild.nodeValue;
				if(username == UName.input.value){
					UName.checker.style.display = 'none';
					UName.result.className = (status == 'reserved')? 'invalid' : status;
					UName.result.innerHTML = message;
					UName.result.style.display = '';
					if(status == 'reserved'){
						UName.onReserved(username);
					}
				}
			}
		}
	}
};
UName.onReserved = function(username){
	customAlert("<h3>Thanks for your interest in Upspring!</h3><br /><p>The username <strong>" + username + "</strong> has been reserved for brand marketing. If you're registering as a business associated with the name " + username.replace(/_/g, ' ') + ", please <a href=\"/contact\" target=\"_blank\">contact us</a>. Please use your company's email address and provide us with evidence that you own the name " + username.replace(/_/g, ' ') + " when contacting us.</p><br /><p>Thank you for using Upspring!</p><p>The Upspring Team</p>", 500, 250);
};
UName.keyDown = function(o, e){
	var keycode;
	if (window.event) keycode = window.event.keyCode;
	else if (e) keycode = e.which;
	else return true;	
	if((keycode >= 48 && keycode <= 57) || (keycode >= 65 && keycode <= 90)){
		if(o.value.length < UName.limit){
			return true;
		}
	}else if(keycode == 8 || keycode == 9 || (keycode >= 35 && keycode <= 46) || keycode == 109){
		return true;
	}	
	return false;
};

var BName = {
	prefix_limit : 15,
	suffix_limit : 10,
	prefix : document.getElementById('busername_prefix'),
	suffix : document.getElementById('busername_suffix'),
	checker : document.getElementById('busername_checker'),
	result : document.getElementById('busername_check_result'),
	//limit_label : document.getElementById('busername_limit'),
	preview : document.getElementById('busername_preview')
};
BName.updatePreview = function(){
	var prefix_value = BName.prefix.value.replace(/[^a-z0-9]/gi, '');
	var suffix_value = BName.suffix.value.replace(/[^a-z0-9]/gi, '');
	if(prefix_value.length > BName.prefix_limit){
		prefix_value = prefix_value.substr(0, BName.prefix_limit);
	}
	if(suffix_value.length > BName.suffix_limit){
		suffix_value = suffix_value.substr(0, BName.suffix_limit);
	}
	if(BName.prefix.value != prefix_value){
		BName.prefix.value = prefix_value;
	}
	if(BName.suffix.value != suffix_value){
		BName.suffix.value = suffix_value;
	}
	BName.preview.innerHTML = (prefix_value == '' && suffix_value == '')? 'business-username' : prefix_value + '-' + suffix_value;
	//BName.limit_label.innerHTML = BName.prefix_limit + BName.suffix_limit - BName.prefix.value.length - BName.suffix.value.length;
	BName.checker.style.display = '';
	BName.result.style.display = 'none';
	BName.checker.className = (prefix_value != '' && suffix_value != '')? 'ubcButton' : 'ubcButtonInactive';
};
BName.check = function(){
	if(!BName.checker.className.match(/inactive/i)){
		BName.checker.style.display = 'none';
		BName.result.className = '';
		BName.result.style.display = '';
		BName.result.innerHTML = 'Checking...';
		var poststr = 'check_busername=' + encodeURIComponent(BName.prefix.value + '-' + BName.suffix.value);
		ajaxpack.postAjaxRequest(Upspring.www + '/signup/step_2', poststr, BName.checkDone, "xml");
	}
};
BName.checkDone = function(){
	var myajax = ajaxpack.ajaxobj;
	var myfiletype = ajaxpack.filetype;
	if (myajax.readyState == 4){
		if (myajax.status==200){
			if (myfiletype=="xml"){
				var xmldoc = myajax.responseXML;
				var busername = xmldoc.getElementsByTagName('busername').item(0).firstChild.nodeValue;
				var status = xmldoc.getElementsByTagName('status').item(0).firstChild.nodeValue;
				var message = xmldoc.getElementsByTagName('message').item(0).firstChild.nodeValue;
				if(busername == BName.prefix.value + '-' + BName.suffix.value){
					BName.checker.style.display = 'none';
					BName.result.className = status;
					BName.result.innerHTML = message;
					BName.result.style.display = '';
				}
			}
		}
	}
};
BName.keyDown = function(o, e){
	var keycode;
	if (window.event) keycode = window.event.keyCode;
	else if (e) keycode = e.which;
	else return true;
	if((keycode >= 48 && keycode <= 57) || (keycode >= 65 && keycode <= 90)){
		if(o.id == BName.prefix.id && o.value.length < BName.prefix_limit){
			return true;
		}else if(o.id == BName.suffix.id && o.value.length < BName.suffix_limit){
			return true;
		}
	}else if(keycode == 8 && o.id == BName.suffix.id && o.value == ''){
		BName.prefix.focus();
	}else if(keycode == 109 && o.id == BName.prefix.id && o.value != ''){
		BName.suffix.focus();
	}else if(keycode == 8 || keycode == 9 || (keycode >= 35 && keycode <= 46)){
		return true;
	}
	return false;
};
BName.selectName = function(value){
	BName.prefix.value = value.replace(/-.*$/, '');
	BName.suffix.value = value.replace(/^.*-/, '');
	BName.updatePreview();
};
