var currentRegisterExitCommand = null;

function showOverlay() {

	var greyBodyDiv = document.getElementById("greyBodyDiv");
	if(!greyBodyDiv) {
		greyBodyDiv = document.createElement("div");
		greyBodyDiv.id = "greyBodyDiv";
		greyBodyDiv.className="greyBody"; 
		document.body.appendChild(greyBodyDiv);
	}

	var overlayDiv = document.getElementById("overlayDiv");
	if(!overlayDiv) {
		overlayDiv = document.createElement("div");
		overlayDiv.id = "overlayDiv";
		overlayDiv.className="overlay";		
		document.body.appendChild(overlayDiv);
		
		var leftPos = (getWindowSize()[0] - overlayDiv.offsetWidth) / 2;
		if(leftPos < 0) leftPos = 0;
		overlayDiv.style.left = leftPos + 'px';
		
		var topPos = (getWindowSize()[1] - 400) / 2;
		if(topPos < 0) topPos = 0;
		overlayDiv.style.top = topPos + 'px';
	}

	overlayDiv.innerHTML = '<table cellspacing="0" cellpadding="0" class="overlayHeader"><tr><td class="overlayHeaderLeft"></td><td class="overlayHeaderCenter"><img src="/n_images/close_overlay.gif" class="overlayClose" onClick="closeRegister()"></td><td class="overlayHeaderRight"></td></tr></table><div class="overlayLoading"></div>';
}

function getWindowSize() {
  var width = 0;
  var height = 0;
  if( typeof( window.innerWidth ) == 'number' ) {
    //Non-IE
    width = window.innerWidth;
    height = window.innerHeight;
  } else if( document.documentElement && document.documentElement.clientWidth) {
    //IE 6+ in 'standards compliant mode'
    width = document.documentElement.clientWidth;
    height = document.documentElement.clientHeight;
  } else if( document.body && document.body.clientWidth) {
    //IE 4 compatible
    width = document.body.clientWidth;
    height = document.body.clientHeight;
  }
  return [width,height];
}

function showRegistration(exitCommand, equipId, forceRegPage) {

	var crumbParam = "h=";
  
  	if(typeof(crumb) != "undefined") {
  		crumbParam += crumb;
  	}

	if(exitCommand != null) {
		currentRegisterExitCommand = exitCommand;
	} else if(equipId != null){
		currentRegisterExitCommand = 'document.location.href=\'/jsp/s/item/'+equipId+'?'+crumbParam+'\'';
	}

	if (forceRegPage || (!getCookie("login") && !getCookie("loggedin"))) {
		loadOverlayPage("/jsp/acct/register-overlay.jsp?forceRegPage=" + forceRegPage + "&"+ (equipId != null ? ("equipId="+equipId+"&") : "")+ crumbParam);
	} else {
		proceedOverlayExitPage();
	}
	return false;
}

function showLogin(exitCommand, equipId) {

	if(exitCommand != null) {
		currentRegisterExitCommand = exitCommand;
	} else if(equipId != null){
		currentRegisterExitCommand = 'document.location.href=\'/jsp/s/item/'+equipId+'\'';
	}

	loadOverlayPage("/jsp/acct/login-overlay.jsp" + ((equipId != null) ? ("?equipId="+equipId) : ""));

	return false;
}

function showConfirmRegister(equipId, realmId) {

	var trackParams = "1072577230/?label=signup&amp;script=0";
	if(realmId == 2) {
		trackParams = "1040234965/?label=-4pDCN2IaxDV84LwAw&amp;script=0";
	} else if(realmId == 3) {
		trackParams = "1053506985/?label=jFP3CL_PXxCp-6z2Aw&amp;script=0";
	}
	
	var trackImage = document.createElement("img");
	
	trackImage.src = window.location.protocol+'//www.googleadservices.com/pagead/conversion/'+trackParams;
	trackImage.style.border = 'none';
	trackImage.style.height = '1px';
	trackImage.style.width = '1px';
	document.body.appendChild(trackImage);
	loadOverlayPage("/jsp/acct/confirm-register-overlay.jsp" + ((equipId != null) ? ("?equipId="+equipId) : ""));
	return false;
}

function proceedOverlayExitPage() {
	if(currentRegisterExitCommand != null) {
		eval(currentRegisterExitCommand);
	} 
}

function highlightFields(formName, fields) {
	var theForm = document.forms[formName];
	var inputs = theForm.getElementsByTagName("input");
	for(var i=0; i < inputs.length; i++) {
		if(inputs[i].type == 'text' || inputs[i].type == 'password') {
			inputs[i].style.borderWidth = '';
			inputs[i].style.borderStyle = '';
			inputs[i].style.borderColor = '';

		}
	}

	var hasFocus = false;

	for(var i=0; i < fields.length; i++) {
		var theElt = theForm.elements[fields[i]];
		if(theElt) {
			highlightField(theElt);
			if(!hasFocus) {
				theElt.focus();
				hasFocus = true;
			}	
		}
	}
}

function highlightField(elt) {
	elt.style.borderWidth = '2px';
	elt.style.borderStyle = 'solid';
	elt.style.borderColor = 'red';
}

function displayOverlayMessage(message) {

	var submittingDiv = document.getElementById("submittingDiv");
	if(submittingDiv) {
		document.getElementById("overlayDiv").removeChild(submittingDiv);
	}

	var overlayMessageElt = document.getElementById("overlayMessage"); 
	if(overlayMessageElt) {
		overlayMessageElt.innerHTML = message;
	}
}

function loadOverlayPage(pageUrl) {
	showOverlay();
	var request;
	if (window.XMLHttpRequest)
		request = new XMLHttpRequest();
	else if (window.ActiveXObject)
		request = new ActiveXObject("Microsoft.XMLHTTP");

	request.onreadystatechange = function() {
		parseRegisterResponse(request);
	}
	request.open("POST",pageUrl,true);
	request.send(null);

	if(typeof(pageTracker) != "undefined") {
		pageTracker._trackPageview(pageUrl);
	}
}

function parseRegisterResponse(request) {
	if(request.readyState == 4){
		if(request.status == 200 || request.status == 304){
			var results = document.getElementById("overlayDiv");
			results.innerHTML = request.responseText;

			if(document.forms['loginForm']) {
				var loginField = document.forms['loginForm'].elements['!login'];
				loginField.value = loginName;
				// For IE to work, repeating twice the focus call
				if(loginName == null || loginName.length == 0) { 	
					loginField.focus();
					loginField.focus();
				} else {
					var passwordField = document.forms['loginForm'].elements['!password'];
					passwordField.focus();
					passwordField.focus();
				}
			} else if(document.forms['registerForm']) {
				var firstnameField = document.forms['registerForm'].elements['firstname'];
				firstnameField.focus();
				firstnameField.focus();
			}

		} else {
//			alert("Error Code:"+request.status);
		}
	}
}

function postLoginForm(pageUrl, params) {

	if(verifyLoginFields()) {
		postOverlayForm(pageUrl, params); 
	}
}

function postRegisterForm(pageUrl, params, password, password2) {

	if(verifyRegisterFields()) {
	    var fullparams = params + '&!password=' + hex_md5(password.toLowerCase()) + '&password2=' + hex_md5(password2.toLowerCase());
		postOverlayForm(pageUrl, fullparams); 
	}
}

function postOverlayForm(pageUrl, params) {

	var submittingDiv = document.getElementById("submittingDiv");
	if(!submittingDiv) {
		submittingDiv = document.createElement("div");
		submittingDiv.id = "submittingDiv";
		submittingDiv.className="overlaySubmitting"; 
		document.getElementById("overlayDiv").appendChild(submittingDiv);
	}
	postAjax(pageUrl, params);
}

function postAjax(pageUrl, params) {
	var request;
	if (window.XMLHttpRequest)
		request = new XMLHttpRequest();
	else if (window.ActiveXObject)
		request = new ActiveXObject("Microsoft.XMLHTTP");

	request.onreadystatechange = function() {
		parseAjaxResponse(request);
	}
	request.open("POST",pageUrl,true);
	request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	request.setRequestHeader("Content-length", params.length);
	request.setRequestHeader("Connection", "close");
	request.send(params);
	if(typeof(pageTracker) != "undefined") {
		pageTracker._trackPageview(pageUrl);
	}
}

function parseAjaxResponse(request) {

	if(request.readyState == 4){
		if(request.status == 200 || request.status == 304){
			eval(request.responseText);
		} else {
//			alert("Error Code:"+request.status);
		}
	}
}

function closeRegister() {
	var overlayDiv = document.getElementById("overlayDiv");
	var greyBodyDiv = document.getElementById("greyBodyDiv");
	document.body.removeChild(overlayDiv);
	document.body.removeChild(greyBodyDiv);
}

function verifyLoginFields() {

	var emptyFields = new Array();
	var login = document.forms['loginForm'].elements['!login'].value;
	if(login.length < 1) emptyFields.push('!login');

	var password = document.forms['loginForm'].elements['!password'].value;
	if(password.length < 1) emptyFields.push('!password');

	if(emptyFields.length > 0) {
		displayOverlayMessage(JS_register_Youarem_8040);
		highlightFields('loginForm', emptyFields);
		return false;
	}

	displayOverlayMessage('');
	highlightFields('loginForm', []);
	return true;
}


function verifyRegisterFields() {

	var emptyFields = new Array();
	var firstname = document.registerForm.firstname.value;
	if(firstname.length < 1) emptyFields.push('firstname');

	var lastname = document.registerForm.lastname.value;
	if(lastname.length < 1) emptyFields.push('lastname');

  /*
  var company = document.registerForm.company.value;
  if (company.length < 1) emptyFields.push('company');
  */

  var telephone = document.registerForm.telephone.value;
  if (telephone.length < 1) emptyFields.push('telephone');

  var postalcode = document.registerForm.postalcode.value;
  if (postalcode.length < 1) emptyFields.push('postalcode');

  var usertype = document.registerForm.usertype.value;
  if (usertype.length < 1) emptyFields.push('usertype');

	var email = document.registerForm.email.value;
	if(email.length < 1) emptyFields.push('email');

	var password = document.registerForm.password.value;
	if(password.length < 1) emptyFields.push('password');

	var password2 = document.registerForm.password2.value;
	if(password2.length < 1) emptyFields.push('password2');

	if(emptyFields.length > 0) {
		displayOverlayMessage(JS_register_Youarem_8040);
		highlightFields('registerForm', emptyFields);
		return false;
	}
	if(password != password2) {
		displayOverlayMessage(JS_register_w_Yourpas_8001);
		highlightFields('registerForm', ['password','password2']);
		return false;	
	}
	if(password.length < 4) {
		displayOverlayMessage(JS_sh_reg_int_Youhave_8773);
		highlightFields('registerForm', ['password','password2']);
		return false;	
	}
	displayOverlayMessage('');
	highlightFields('registerForm', []);
	return verifyOverlayEmail();
}

function verifyOverlayEmail() {

    var email = document.registerForm.email;

    if (email == null || email.value == "") {
        return false;
    }       
    
    var emailStr = email.value.replace(/\s/g, '');    
    
    if (!isItOverlayValidEmail(email)) {
		displayOverlayMessage(JS_register_Invalid_8766);
		highlightField(email);
		return false;
    } else {
    	displayOverlayMessage('');
		highlightFields('registerForm', []);
    	return true;
    }
}


function isOverlayEmailSyntax(str) {
  // are regular expressions supported?
  var supported = 0;
  if (window.RegExp) {
    var tempStr = "a";
    var tempReg = new RegExp(tempStr);
    if (tempReg.test(tempStr)) supported = 1;
  }
  if (!supported)
    return (str.indexOf(".") > 2) && (str.indexOf("@") > 0);
  var r1 = new RegExp("(@.*@)|(\\.\\.)|(@\\.)|(^\\.)");
  var r2 = new RegExp("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,5}|[0-9]{1,3})(\\]?)$");
  return (!r1.test(str) && r2.test(str));
}

function isItOverlayValidEmail(o) {
   initValue = '<'+o.name+'>';
   s = o.value.replace(initValue, "").replace(/\s/g, '');
   o.value = s;
   if (s.length < 1 ) {
      o.value = initValue;
      return false;
   }
   if (!isEmailSyntax(s)) {
      return false;
   }
   return true;
}
