var Message = "";
var xmlReq = null;

var http = "";
var http2 = "";
var http3 = "";

function getElement(id) {
	return document.getElementById(id);
}


function displayMessage(){
   var divId = 'RegisterMessage';
   var newDiv = document.createElement('DIV');
   if (getElement(divId)){      
           getElement(divId).parentNode.removeChild(getElement(divId));
   }
   newDiv.id = divId;
   newDiv.className='checkRegistration';
   newDiv.innerHTML = Message;
   newDiv.style.zIndex = 99999;
   newDiv.style.visibility = "visible";
   getElement("registermessageholder").appendChild(newDiv);
}

function checkUserID(){
	var x = document.register.USERID.value;
        if ( x.length < 4 || x.length > 16){
          return false;
        } else {
	  var filter = /^([a-zA-Z0-9])+$/;
          if (filter.test(x)) return true
          else return false;
        }
        return true;
}

function checkPassword(){
	var x = document.register.PASSWORD.value;
        if ( x.length < 4 || x.length > 16){
          return false;
        }
        return true;
}
//function checkRealName(){
//	var x = document.register.REALNAME.value;
//        x = x.replace(/ /,"");
//        var filter = /^([a-zA-Z0-9])+$/;
//          if (filter.test(x)) return true
//          else return false;
//}
function checkMailAddress(){
	var x = document.register.EMAIL.value;
        return (x.indexOf(".") > 2) && (x.indexOf("@") >0 );
}
var newwindow;
function displayTerms(url){
   newwindow = window.open(url,'Terms','height=400,width=600');
   if (window.focus){newwindow.focus()}
}

function checkFields(){
 if (document.register.PASSWORD.value != document.register.PASSWORD2.value ){
   Message="<div id=errorMessage>Password missmatch - please make sure password and verification match</div>";
   document.register.PASSWORD2.select();
   error = true;
   displayMessage();
   return false;
  }
 if ( ! checkUserID() ) {
   Message="<div id=errorMessage>User id must be 4 to 16 characters long. Only letters and numbers allowed</div>";
   displayMessage();
   document.register.USERID.select();
   return false;
 } else if ( ! checkPassword() ) {   
   Message="<div id=errorMessage>Password must be 4 to 16 characters long</div>";
   displayMessage();
   document.register.PASSWORD.select();
   return false;
 } else if ( ! checkMailAddress() ) {
   Message="<div id=errorMessage>Please enter a valid email address</div>";
   displayMessage();
   document.register.EMAIL.select();
   return false;
//} else if ( ! checkRealName() ) {
//       Message="<div id=errorMessage>Real Name - Only letters and numbers allowed</div>";
//   displayMessage();
//   document.register.REALNAME.select();
//   return false;
 } else if ( ! document.register.TERMS.checked ){
   Message="<div id=errorMessage>Please accept Terms & Conditions</div>";
   displayMessage();
   return false;
 }
return true;
}
function ajaxCheckUser(){   
        if (! checkUserID() ) {
            Message="<div id=errorMessage>User id must be at least 4 characters long. Only letters and numbers allowed</div>";
	    displayMessage();  
        } else {
        
          http = createRequestObject();
	  http.open('get','/checkuserservice?USERID='+document.register.USERID.value+'&EMAIL='+document.register.EMAIL.value);
	  http.onreadystatechange = handleResponse;
	  http.send(null);
        }
}
function createRequestObject() {
	var ro;
	var browser = navigator.appName;
	if (browser == "Microsoft Internet Explorer"){
		ro = new ActiveXObject("Microsoft.XMLHTTP");
	} else {
		ro = new XMLHttpRequest();
	}
	return ro;
}
function handleResponse(){
        var divId = 'Link';
	if(http.readyState == 4) {   
		var response = http.responseText;
            if (response == 'USER' ){
         	  Message = "<div id=errorMessage>User id already exists, please choose another user id</div>";
                  document.register.USERID.select();
	          displayMessage();  
		} else if ( response == 'EMAIL' ) {
         	 Message = "<div id=errorMessage>Registration with the entered email "+document.register.EMAIL.value+" already exists. "+
                                        "<a href=\"\" onClick='javaScript:ajaxSendUserDetails(\"senduserdetails?EMAIL="+document.register.EMAIL.value+"\");return false;'>Send me login details</a> </div>";
	          displayMessage(); 
                } else if ( response == 'USEREMAIL' ){
         	  Message = "<div id=errorMessage>Registration with the entered Email "+document.register.EMAIL.value+" already exists. "+
                        "<a href=\"\" onClick='JavaScript:ajaxSendUserDetails(\"senduserdetails?EMAIL="+document.register.EMAIL.value+"\");return false;'>Send me login details</a> </div>";
	          displayMessage(); 
               } else if (response == 'OK'){
                  Message = "<div id=successMessage>User ID <b>" + document.register.USERID.value + "</b> available</div>";
	          displayMessage();  
               } else {
                    Message = "<div id=errorMessage>Word <u>"+response+"</u> can not be used as, or part of user id - please choose a different one</div>";
                    displayMessage();
               }
               ajStatus = response;
            
	}
}

function handleResponse3(){

	if(http3.readyState == 4) {   
		var response3 = http3.responseText;
           if (response3 == 'OK'){
                  Message = "<div id=successMessage>Details sent to <b>" + document.register.EMAIL.value + "</b> Go to <a href=/>Home Page</a></div>";
	  } else if ( response3 == 'EMAIL' ) {
         	   message = "<div id=errorMessage>Email does not exist in our user base. Please try again or <a href=/register>Register</a>.</div>";
               } else {
                    Message = "<div id=errorMessage>Error Sending details to <b>" + document.register.EMAIL.value + "</b> " +response3 +"</div>";
               }
             displayMessage();  
	}
}

function ajaxSendUserDetails(f){
    http3 = createRequestObject();
    http3.open('get',f);
    http3.onreadystatechange = handleResponse3;
    http3.send(null);
}


function ajaxRegister(f){
//document.register.submit.disabled=true;
  var validityCheck = checkFields();
  if (validityCheck == true){
    var file = '/registeruserservice';
    var str = getFormValues(f,"validate");
    xmlReq = getXML(file,str);
    //document.register.submit.disabled=false;
    return true;
  } else {
    return false;
  } 
}
function getXML(file,str){
  http2 = createRequestObject();
  http2.open('POST',file,true);
  http2.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
  http2.send(str);
  http2.onreadystatechange = function(){
  if (http2.readyState == 4){
     handleResponse2();
   }
  };
}

function getFormValues(fobj,valFunc){
  var str = "";
  for (var i=0;i<fobj.elements.length;i++){
     if (fobj.elements[i].type == "text" || fobj.elements[i].type == "password") {   
 str +=fobj.elements[i].name + "=" +
     encodeURIComponent(fobj.elements[i].value) + "&";
     } else if ( fobj.elements[i].type == "select-one" ){
            str += fobj.elements[i].name + "=" + fobj.elements[i].options[fobj.elements[i].selectedIndex].value + "&";
     } else if ( fobj.elements[i].checked ){
           str += fobj.elements[i].name + "=Y&";
     }
  }
  str = str.substr(0,(str.length - 1));
  return str;
}


function handleResponse2(){
        var divId = 'Link';
	if(http2.readyState == 4) {
		var response = http2.responseText;
                if (response == 'USERID' ){
                     Message="<div id=errorMessage>User id must be 4 to 16 characters long. Only letters and numbers allowed</div>";
                     document.register.USER.select();
                     displayMessage();  
               } else if (response == 'VEMAIL' ){
                    Message="<div id=errorMessage>Please enter a valid email address</div>";
                    document.register.EMAIL.select();
                    displayMessage();  
                } else if (response == 'PASSWORD' ){
                    Message="<div id=errorMessage>Password must be 4 to 16 characters long</div>";
                    document.register.PASSWORD.select();
                    displayMessage();  
		} else if (response == 'USER' ){
         	  Message = "<div id=errorMessage>User id already rxists please choose another User id</div>";
                  document.register.USERID.select();
	          displayMessage();  
		} else if ( response == 'EMAIL' ) {
         	  Message = "<div id=errorMessage>User registration exists with the email "+document.register.EMAIL.value+
". - <a href=\"\" onClick='JavaScript:ajaxSendUserDetails(\"senduserdetails?EMAIL="+document.register.EMAIL.value+"\");return false;'>Send me login details</a> </div>";
	          displayMessage(); 
                } else if ( response == 'USEREMAIL'){
         	  Message = "<div id=errorMessage>User id and corresponding email already exist. "+
                        "<a href=/login>Proceed to login</a> </div>";
	          displayMessage(); 
               } else if (response == 'OK'){
                  Message = "<BR><BR><BR><div id=successMessage>Registration success. <a href=/login> Proceed to login</a></div>";
                  proceedHome(); 

               } else if (response == "ERROR" ){
                  Message = "<div id=successMessage>Unexpected error in registration - <a href=/feedback.jsp>Please report</a></a></div>";
	          displayMessage();  
               }
            
	}
}

function proceedHome(){
   var divId = 'registerform';
   var newDiv = document.createElement('DIV');
   if (getElement(divId)){  
           getElement(divId).parentNode.removeChild(getElement(divId));
   }
   newDiv.id = divId;
   newDiv.className='success';
   newDiv.innerHTML = Message;
   newDiv.style.zIndex = 99999;
   newDiv.style.visibility = "visible";
   getElement("rcontent").appendChild(newDiv);
}
