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] - 500) / 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, isInv) {

	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 (isInv) {
			currentRegisterExitCommand = 'document.location.href=\'/jsp/listing/classified-ad.jsp?invId='+equipId+'?'+crumbParam+'\'';
		}
	}

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

function isTrialValid(equipId) {	

	itemMax = location.hostname.indexOf('motors') > -1 ? 10 : 0;

	if(itemMax == 0)
		return false;
		
	var visitedItems = getCookie("favorites");
	var regex = /[0-9]+/;
	var wasVisited = false;
	var itemMax;
	if(visitedItems) {
		var i = 0;
		var info;
		while(!wasVisited && (info=regex.exec(visitedItems))) {
			i = i + 1;
			wasVisited = (info[0] == equipId);
			visitedItems = visitedItems.replace(regex, ",");
		}
		if(!wasVisited) {
			if(i >= itemMax) {				
				return false;
			} else
				setCookie("favorites", getCookie("favorites") + "," + equipId);
		} 
	} else {
		setCookie("favorites", equipId);
	}
	return true;
}

function showWelcomeDiv(exitCommand, equipId, forceRegPage, ctr) {
	if(exitCommand != null) {
		currentRegisterExitCommand = exitCommand;
	} else if(equipId != null){
		currentRegisterExitCommand = 'document.location.href=\'/jsp/s/item/'+equipId+'?'+'\'';
	}
	
	var t = getCookie("ftM") != null ? (parseInt(getCookie("ftM")) + 1) : 1;
	
	if (t > 0) {
		loadOverlayPage("/jsp/acct/welcome_to_motors.jsp?forceRegPage=&");
	} else {
		proceedOverlayExitPage();
	}
	return false;
}

function setThisCookie(name, value) {
	var today = new Date();
	today.setTime(today.getTime());
	var expires = 10000 * 1000 * 60 * 60 * 24;
	var expires_date = new Date( today.getTime() + (expires) );
    document.cookie= name + "=" + escape(value) +
        "; expires=" + expires_date.toGMTString() +
        "; path=/";
}

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) {

	//  Create script tags for YWA and FB conversion tracking
	var ywaJsHost = (("https:" == document.location.protocol) ? "https://s." : "http://d.");
	var ywaSc = document.createElement('script');
	ywaSc.type = "text/javascript";
	ywaSc.src = ywaJsHost + 'yimg.com/mi/ywa.js';
	document.body.appendChild(ywaSc);

	var fbSc = document.createElement('script');
	fbSc.type = "text/javascript";
	fbSc.src = document.location.protocol + '//ah8.facebook.com/js/conversions/tracking.js';
	document.body.appendChild(fbSc);
	 
	 
	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) : ""));

// Conversion tracking for McRae SEM Campaigns -->

// Microsoft

    var trackImageMsMcRae = document.createElement("img");
	trackImageMsMcRae.src = window.location.protocol+'//793203.r.msn.com/?type=1&cp=1&dedup=1';
	trackImageMsMcRae.style.border = 'none';
	trackImageMsMcRae.style.height = '1px';
	trackImageMsMcRae.style.width = '1px';
	document.body.appendChild(trackImageMsMcRae);

// Google

    var trackParamsGoogleMcRae = "1020652182/?label=EUwRCKLOpQEQltXX5gM&amp;script=0";
    var trackImageGoogleMcRae = document.createElement("img");
	trackImageGoogleMcRae.src = window.location.protocol+'//www.googleadservices.com/pagead/conversion/'+trackParamsGoogleMcRae;
	trackImageGoogleMcRae.style.border = 'none';
	trackImageGoogleMcRae.style.height = '1px';
	trackImageGoogleMcRae.style.width = '1px';
	document.body.appendChild(trackImageGoogleMcRae);

    // Yahoo conversion tracking, a half second later
	window.setTimeout('trackYWA(0)', 500);
	// Facebook conversion tracking, a half second later
	window.setTimeout('trackFB(0)', 500);

	return false;
}

function showWelcome(status) {

	if (status == 1) {
		loadOverlayPage("/jsp/acct/complete-welcome.jsp");
	}
	else  {
		window.location.href=window.location.href;
	}

	return false;
}

/**
 * try FB conversion tracking for 3 seconds and give up if the script is still not loaded
 *  and set a session cookie so the subsequent requests will send in that cookie
 * @param faCount  the number of retry, the recursive call will increment this number
 * @return
 */
function trackFB(faCount) {
try {
	if (typeof(FB) == "undefined") {
		if (faCount < 18) {
			window.setTimeout("trackFB(" + (faCount + 1) + ")", 200);
		} else {
			document.cookie= "FBConversion=failed; path=/";
		}
	} else {
		FB.Insights.impression({
		     'id' : 6002601812337,
		     'h' : 'cab7b55b2a'
		  });
		document.cookie = "FBConversion=succ" + faCount + "; path=/";
	}
} catch(e) {}
}

function trackYWA(ywaCount) {
try {
	if (typeof(YWA) == "undefined") {
		if (ywaCount < 18) {
			window.setTimeout("trackYWA(" + (ywaCount + 1) + ")", 200);
		} else {
			document.cookie = "YWAConversion=failed; path=/";
		}
	} else {
		var YWATracker = YWA.getTracker("172PLPEKGOUA3TV9IRE9HJ9HQ30");
		YWATracker.setDocumentName('success');
		YWATracker.setDocumentGroup('registration');
		YWATracker.submit();
		document.cookie = "YWAConversion=succ" + ywaCount +"; path=/";
	}
} catch(e) {}
}

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

function resetHighlight(elt) {
	if(elt != null) {
		elt.style.borderWidth = '';
		elt.style.borderStyle = '';
		elt.style.borderColor = '';
	}
}

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') {
			resetHighlight(inputs[i]);
		}
	}
	var resellerCell = document.getElementById('resellerCell');
	resetHighlight(resellerCell);
	if(document.registerForm) {
		resetHighlight(document.registerForm.usertype);
		if(typeof(document.registerForm.country) != 'undefined') {
			resetHighlight(document.registerForm.country);
		}
	}
	var hasFocus = false;

	for(var i=0; i < fields.length; i++) {
		var theElt = theForm.elements[fields[i]];
		if(theElt) {
			if(fields[i] == 'resellerYN') { 
				theElt = resellerCell;
			} 
			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(_gaq) != "undefined") {
        /**  
         *   this "undefined" detection is neccessary 
         *   because IE9 with a Tracking Protection List will silently discard the request to any website on the list,
         *   and at least one provider (Abines Standard Tracking Proetction List) has google-analytics on the 'banned list'.
         */
        _gaq.push(
            ['_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 if(request.status == 0 || request.status == 404 || request.status == 503){
			location.reload(true);
		}
	}
}

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 acceptForm(pageUrl, params) {
	postOverlayForm(pageUrl, params); 
}

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, pageUrl);
	}
	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(_gaq) != "undefined" && pageUrl != '/jsp/equip/getEquipInfo.jsp') {
		_gaq.push(
            ['_trackPageview', pageUrl]
        );
	}
}

function parseAjaxResponse(request, pageUrl) {

	if(request.readyState == 4){
		if(request.status == 200 || request.status == 304){
			try {
				eval(request.responseText);
			} catch(e) {
				location.reload(true);
			}
		} else if(pageUrl != '/jsp/equip/getEquipInfo.jsp' && (request.status == 0 || request.status == 404 || request.status == 503)){
			location.reload(true);
		}
	}
}

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 trim(fullString) {
	return fullString.replace(/^\s*/, "").replace(/\s*$/, "")
}

function verifyRegisterFields() {

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

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

	var company = document.registerForm.company.value;
	var checkcompany = document.registerForm.checkcompany.value;
	if(trim(company).length < 1 && trim(checkcompany).length == 3) emptyFields.push('company');

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

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

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

  var country = document.registerForm.country;
  if(typeof(country) != 'undefined' && trim(country.value).length < 1) {
  	emptyFields.push('country');
  }

  var usertype = document.registerForm.usertype.value;

  if (usertype.length < 1) emptyFields.push('usertype');

    if (!document.registerForm.resellerYN[0].checked && !document.registerForm.resellerYN[1].checked) emptyFields.push('resellerYN');

	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 showComp() {
	var cn = document.getElementById("sc");
	if (cn) {
		if (document.registerForm.resellerYN[0].checked) {
			cn.style.display = (document.all && !window.opera)?'inline':'table-row';
			document.registerForm.checkcompany.value="yes";
		}
		else if (document.registerForm.resellerYN[1].checked) {
			cn.style.display = 'none';
			document.registerForm.checkcompany.value="no";
		}
	}
}

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;
}

function goChatLive(realmId,chatDeptId) {
    if (realmId == 11) {
        var velaroChatImg = document.getElementById("chatImgId");
        if (velaroChatImg != null && velaroChatImg.width > 1 && velaroChatImg.height > 1) {
            if (confirm("May we assist you via live help?")) {
                var loginName = getCookie("login");

                if (loginName != null && loginName != "" && loginName != "null") 
                    this.newWindow = window.open('http://c.velaro.com/visitor/requestchat.aspx?siteid=9525&showwhen=inqueue&deptid='+chatDeptId+'&forcename='+loginName+'&login='+loginName, 'OnlineChatSoftware', 'toolbar=no,location=no,directories=no,menubar=no,status=no,scrollbars=no,resizable=yes,replace=no,width=400,height=450');
                else
                    this.newWindow = window.open('http://c.velaro.com/visitor/requestchat.aspx?siteid=9525&showwhen=inqueue&deptid='+chatDeptId+'&login=', 'OnlineChatSoftware', 'toolbar=no,location=no,directories=no,menubar=no,status=no,scrollbars=no,resizable=yes,replace=no,width=400,height=450');
               
                this.newWindow.focus();
                this.newWindow.opener=window;
                return false;
            }
        }
    }  
}

function setCookie(name, value) {
	var today = new Date();
	today.setTime(today.getTime());
	var expires = 10000 * 1000 * 60 * 60 * 24;
	var expires_date = new Date( today.getTime() + (expires) );
    document.cookie= name + "=" + escape(value) +
        "; expires=" + expires_date.toGMTString() +
        "; path=/";
}
