/**
 * Include functions required to free signup account.
 *
 * @author Interface
 * @created 2010-02-24
 * @version 1.0
 * 
 * @known_issues 
 *		-
 *		
*/

var req;
	    
/**
 * refreshImage :- used to refresh verification text
 */
function refreshImage() {	
	document.getElementById("verification-image").src = document.getElementById("verification-image").src + 
															'?dc=' + new Date().getTime();
}

/**
 * submitSignupForm :- used to submit form for free lite account
 */
function submitSignupForm() {
	var email = document.getElementById('email').value;
	var password = document.getElementById('password').value;
	var confirmPassword = document.getElementById('confirm-password').value;
	var dynamicText = document.getElementById('verification-image-text').value;
	
	var url = "/signup.do?op=9";    		
	var params = 'email=' + email + 
					'&password=' + password + 
					'&confirmPassword=' + confirmPassword + 
					'&dynamicText=' + dynamicText;
					
	// form validation				
	var requestParams = {};
	requestParams.email = email;
	requestParams.password = password;
	requestParams.confirmPassword = confirmPassword;
	requestParams.dynamicText = dynamicText;
	
	if(formValidation(requestParams)){
		//Ajax submit request
		if (typeof XMLHttpRequest != "undefined") {
	       req = new XMLHttpRequest();
	   	} else if (window.ActiveXObject) {
	       req = new ActiveXObject("Microsoft.XMLHTTP");
	   	}
	  	req.open("POST", url, true);
	   	req.onreadystatechange = callback;
	   	req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	   	req.send(params);
	}
	
}

/**
 * formValidation :- used to form validation
 */
function formValidation(requestParams) {
	var isValid = false;
	if(requestParams.email == '') {
		document.getElementById('emailErr').style.display = 'block';
		document.getElementById('emailErr').innerHTML = 'Email address is required. ';
		document.getElementById('email').focus();
	}else {
		if(isValidEmail(requestParams.email)){
			document.getElementById('emailErr').style.display = 'none';
			if(requestParams.password == '') {
				document.getElementById('passwordErr').style.display = 'block';
				document.getElementById('passwordErr').innerHTML = 'Password is required.';
				document.getElementById('password').focus();		
			}else {
				if(requestParams.password.length < 5) {
					document.getElementById('passwordErr').style.display = 'block';
					document.getElementById('passwordErr').innerHTML = 'Password should be at least 5 chars long.';
					document.getElementById('password').focus();
				}else {
					document.getElementById('passwordErr').style.display = 'none';
					if(requestParams.confirmPassword == '') {
						document.getElementById('passwordMatchErr').style.display = 'block';
						document.getElementById('passwordMatchErr').innerHTML = 'Confirm password is required.'
						document.getElementById('confirm-password').focus();
					}else {
						if(requestParams.confirmPassword.length < 5) {
							document.getElementById('passwordMatchErr').style.display = 'block';
							document.getElementById('passwordMatchErr').innerHTML = 'Password should be at least 5 chars long.';
							document.getElementById('confirm-password').focus();
						}else {
							if(requestParams.password != requestParams.confirmPassword) {
								document.getElementById('passwordMatchErr').style.display = 'block';
								document.getElementById('passwordMatchErr').innerHTML = 'Password does not match.';
								document.getElementById('confirm-password').focus();
							}else {
								document.getElementById('passwordMatchErr').style.display = 'none';
								if(requestParams.dynamicText == '') {
									document.getElementById('textMatchErr').style.display = 'block';
									document.getElementById('textMatchErr').innerHTML = 'Verification text is required.';
									document.getElementById('verification-image-text').focus();
								}else {
									document.getElementById('textMatchErr').style.display = 'none';
									//form is valid, allow to submit
									isValid = true;
								}
							}
						}
					}
				}
			}
		}else {
			document.getElementById('emailErr').style.display = 'block';
			document.getElementById('emailErr').innerHTML = 'This field should be an e-mail address in the format "user@example.com".';
			document.getElementById('email').focus();
		}
		
	}
	return isValid;
}

/**
 * isValidEmail : - used to validate email return true if valid else false
 * @param {} email
 */
function isValidEmail(email) {
	var reg = /^(\w+)([\-+.][\w]+)*@(\w[\-\w]*\.){1,5}([A-Za-z]){2,6}$/;	
	return reg.test(email);	
}

/**
 * callback :- used to parse ajax request respone
 */
function callback() {	
    if (req.readyState == 4) {
        if (req.status == 200) {		        	
			if(req.responseXML.getElementsByTagName("Id")[0]){
				if(req.responseXML.getElementsByTagName("Id")[0].childNodes[0].nodeValue != 0) {
					//redirect to signup confirmation url
					document.location.href = '/signup_confirmation.html';
				}else {
					document.getElementById('email').focus();
					document.getElementById('errors').style.display = 'block';
					document.getElementById('errors').innerHTML = 'Signup Failed !!!';
				}
				
			}else {
		        var errMsg = req.responseXML.getElementsByTagName("DetailedMessage")[0].childNodes[0].nodeValue;
		        document.getElementById('textMatchErr').style.display = 'block';
				document.getElementById('textMatchErr').innerHTML = errMsg;
				document.getElementById('verification-image-text').value = '';
				document.getElementById('verification-image-text').focus();
		    }
			refreshImage();
        }
    }
} 

document.onkeypress = processKey;

function processKey(e)
{
  if (null == e)
    e = window.event ;
  if (e.keyCode == 13)  {
    submitSignupForm();
  }
}
