    /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 ~ ©2011 ClickBank All Rights Reserved                                                                                ~
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/

$(document).ready(function() {
        if (Get_Cookie("username") != null) {
        	// alert("COOKIE:"+Get_Cookie("username"));
        	document.forms.loginForm.nick.value = Get_Cookie("username");
        	document.forms.loginForm.pass.focus();
        } else {
        	document.forms.loginForm.nick.focus();
        }
    });

    function saveUsername(theForm) {
        var expires = new Date();
        Set_Cookie("username",trim(theForm.nick.value),30,"<c:url value="/"/>");
    }
    
    function processUser(aForm, url, ssl) {
	    if (validateRequired(aForm)) {
	    	validateForm();
	    	var re = /^[a-z0-9]{5,10}$/;
            if(re.test(document.forms.loginForm.j_username.value)) {
                aForm.action = "http" + (ssl ? "s" : "") + "://"+ document.forms.loginForm.j_username.value + url + "/account/login";
            }
			return true;
	    } else {
	    	return false;
	    }
    }
    
	function validateForm() {
		document.forms.loginForm.nick.value = document.forms.loginForm.nick.value.toLowerCase();
		document.forms.loginForm.j_username.value = trim(document.forms.loginForm.nick.value);
		document.forms.loginForm.j_password.value = trim(document.forms.loginForm.pass.value);
		saveUsername(document.forms.loginForm);
	}
	function required() {
        // removed this because... well the error message is in the page, why show a popup? Plus, it was formatted poorly
        // when the popup was actually displayed.
        //
	    // this.aa = new Array("nick", "<fmt:message key='errors.required'><fmt:param><fmt:message key='label.username'/></fmt:param></fmt:message>", new Function ("varName", " return this[varName];"));
	    // this.ab = new Array("pass", "<fmt:message key='errors.required'><fmt:param><fmt:message key='label.password'/></fmt:param></fmt:message>", new Function ("varName", " return this[varName];"));
	} 
	// Removes leading whitespaces
	function LTrim( value ) {
		var re = /\s*((\S+\s*)*)/;
		return value.replace(re, "$1");
	}
	
	// Removes ending whitespaces
	function RTrim( value ) {
		var re = /((\s*\S+)*)\s*/;
		return value.replace(re, "$1");
	}
	
	// Removes leading and ending whitespaces
	function trim( value ) {
		return LTrim(RTrim(value));
	}

    // This function is used by the login screen to validate user/pass
	// are entered. 
	function validateRequired(form) {
	    var bValid = true;
	    var focusField = null;
	    var i = 0;
	    var fields = new Array();

        /* 
        oRequired = new required();
	                                                                                                        
	    for (x in oRequired) {                                                                              
	        if ((form[oRequired[x][0]].type == 'text' || form[oRequired[x][0]].type == 'textarea' || form[oRequired[x][0]].type == 'select-one' || form[oRequired[x][0]].type == 'radio' || form[oRequired[x][0]].type == 'password') && form[oRequired[x][0]].value == '') {
	           if (i == 0)
	              focusField = form[oRequired[x][0]]; 
	              
	           fields[i++] = oRequired[x][1];
	            
	           bValid = false;                                                                             
	        }                                                                                               
	    }                                                                                                   
        */
	                                                                                                       
	    if (fields.length > 0) {
	       focusField.focus();
	       alert(fields.join('\n'));                                                                      
	    }                                                                                                   
	                                                                                                       
	    return bValid;                                                                                      
	}

