var objBox = null;
var objWait = null;
var objHelp = null;
var objFormDiv = null;
var objLoginResp = null;
var objLoginForm = null;
var numFadeDelta = 0.1;
var numFadeErrMargin = 0.15;
var numFadeMax = 1.00;
var numBGFadeMax = 0.6;
var numIEOpacityHack = 1;
var numSlideXFinish = 0;
var numSlideXStart = 330;
var startFadeInAnimation = "";
var startFadeOutAnimation = "";
var blnFormHasBeenClicked = false;
var strJSK = "";
var strCityName = "";
var startLiteRegFormAnimation = "";

// Timeout check
var numTimeoutSeconds = 30;
var submitTimedOut = false;
var submitCount = 0;
var maxInvalidResponseCount = 3;

var arrInputElements = [
	["SUBMIT_USERNAME_NEW","your e-mail address"],
	["SUBMIT_FIRSTNAME",""],
	["SUBMIT_LASTNAME",""]
];
var winWidth = window.innerWidth || (window.document.documentElement.clientWidth || window.document.body.clientWidth);
var winHeight = window.innerHeight || (window.document.documentElement.clientHeight || window.document.body.clientHeight);

function initSignUp(formId, theJSK) {
	objLoginForm = document.forms[formId];
	strJSK = theJSK;
	startSignUp();
}




function startSignUp() {
	objBox = document.getElementById("pb-signup-it");
	objWait = document.getElementById("pb-signup-wait");
	objHelp = document.getElementById("pb-signup-help");
	objFormDiv = document.getElementById("visible_form_elements");
//	resetSignUp();
	objLoginResp = new Object();
	if (navigator.userAgent.indexOf("Safari") >= 0) {
		numFadeMax = 0.99;
	}
	objBox.style.display = "block";
}

function killSignUp() {
	hideLoginWait();
	var objErrors = document.getElementById("error_messages");
	if (objErrors.innerHTML == "") {
		objErrors.innerHTML = "I'm sorry, we were unable to complete your request.";
	}
	document.getElementById("error_messages").style.display = "block";
//	document.getElementById("signup_header").style.display = "none";
	document.getElementById("signup_subtitle").style.display = "none";
	document.getElementById("field_email").style.display = "none";
	document.getElementById("field_pword").style.display = "none";
	document.getElementById("field_first").style.display = "none";
	document.getElementById("field_last").style.display = "none";
	document.getElementById("pword_help").style.display = "none";
	document.getElementById("submit_button").style.display = "none";
	document.getElementById("sign_in_q").style.display = "none";
//	document.getElementById("it_origin").style.display = "none";
//	document.getElementById("it_destination").style.display = "none";
}

function openLiteRegForm() {
	objBox.style.left = String(numSlideXStart) + "px";
	if (startLiteRegFormAnimation != "") {
		clearInterval(startLiteRegFormAnimation);
	}
	document.getElementById("subscribe_open_link").style.visibility = "hidden";
	if (parseInt(objBox.style.left) == numSlideXStart) {
		hideSelects();
		animateLiteRegForm();
	} else {
		objBox.style.left = String(numSlideXFinish) + "px";
		showSelects();
	}
	trackLink("/lite_reg/signup_travelguide/form_shown");
}

function animateLiteRegForm() {
	startLiteRegFormAnimation = setInterval("moveLiteRegForm()",50);
}

function moveLiteRegForm() {
	var numSlideIncrement = 0;
	if (((parseInt(objBox.style.left) >= numSlideXFinish) && (parseInt(objBox.style.left) <= numSlideXFinish+10)) || (parseInt(objBox.style.left) >= numSlideXFinish+500) || (parseInt(objBox.style.left) <= numSlideXFinish)){
		objBox.style.left = String(numSlideXFinish)+"px";
		clearInterval(startLiteRegFormAnimation);
		showSelects();
	} else {
		numSlideIncrement = parseInt((parseInt(objBox.style.left)-numSlideXFinish)/6)*-1;
		objBox.style.left = parseInt(objBox.style.left)+numSlideIncrement-4+"px";
	}
}

function closeLiteRegForm() {
	objBox.style.left = String(numSlideXStart) +"px";
	if (startLiteRegFormAnimation != "") {
		clearInterval(startLiteRegFormAnimation);
	}
	hideSelects();
	document.getElementById("subscribe_open_link").style.visibility = "visible";
	trackLink("/lite_reg/signup_travelguide/form_closed");
}

function showLoginWait() {
	objFormDiv.style.visibility = "hidden";
	objWait.style.display = "block";
}

function hideLoginWait() {
	objWait.style.display = "none";
	objFormDiv.style.visibility = "visible";
}

function showHelp(txtType) {
	objHelp.style.display = "block";
}

function hideHelp() {
	objHelp.style.display = "none";
}

function hideSelects() {
	var allSelects = objFormDiv.getElementsByTagName('select');
	for (var counter=0; counter<allSelects.length; counter++) {
		allSelects[counter].style.visibility = 'hidden';
	}
}

function showSelects() {
	var allSelects = objFormDiv.getElementsByTagName('select');
	for (var counter=0; counter<allSelects.length; counter++) {
		allSelects[counter].style.visibility = 'visible';
	}
}

function resetSignUp() {
	if (objLoginForm["reqType"].value != "ajaxSubscribe") {
		objLoginForm["reqType"].value = "isRegistered";
		objLoginForm["emailAddress"].value = "";
		objLoginForm["firstName"].value = "";
		objLoginForm["lastName"].value = "";
//		resetDefaults();
//		document.getElementById("it_origin").style.display = "none";
//		document.getElementById("it_destination").style.display = "none";
	}
	
//	document.getElementById("signup_header").innerHTML = "Never Miss a Deal";
//	document.getElementById("signup_header").style.display = "block";
	document.getElementById("signup_subtitle").innerHTML = "Sign up for e-mail alerts and get our top deals delivered to your inbox each week.";
	document.getElementById("signup_subtitle").style.display = "block";
	document.getElementById("error_messages").innerHTML = "";
	document.getElementById("error_messages").style.display = "none";
	document.getElementById("field_email").style.display = "block";
	document.getElementById("field_pword").style.display = "none";
	document.getElementById("field_first").style.display = "none";
	document.getElementById("field_last").style.display = "none";
	document.getElementById("pword_help").style.display = "none";
	document.getElementById("sign_in_q").innerHTML = "";
	document.getElementById("sign_in_q").style.display = "none";
	document.getElementById("submit_button").style.display = "block";
}

function timeoutSignUp(thisSubmission) {
	// If the timeout variable hasn't been reset to false by processing
	// and the submission is still on the same count, kill the form
	if ((submitTimedOut) && (thisSubmission == submitCount)) {
		killSignUp();
	}
}

function stripDefaultValue(objEl, strDefVal) {
	if (objLoginForm["reqType"].value != "ajaxSubscribe") {
		if (objEl.value == strDefVal) {
			objEl.value = "";
			objEl.style.color = "#000000";
		}
	}
}

function loadDefaultValue(objEl, strDefVal) {
	if (objLoginForm["reqType"].value != "ajaxSubscribe") {
		if (objEl.value == "") {
			objEl.value = strDefVal;
			objEl.style.color = "#666666";
		}
	}
}

function stripForSubmit() {
	if (objLoginForm["reqType"].value != "ajaxSubscribe") {
		var objThisEl = null;
		for (var i = 0; i < arrInputElements.length; i++) {
			objThisEl = objLoginForm[arrInputElements[i][0]];
			stripDefaultValue(objThisEl, arrInputElements[i][1]);
		}
	}
}

function loadForReturn() {
	if (objLoginForm["reqType"].value != "ajaxSubscribe") {
		var objThisEl = null;
		for (var i = 0; i < arrInputElements.length; i++) {
			objThisEl = objLoginForm[arrInputElements[i][0]];
			loadDefaultValue(objThisEl, arrInputElements[i][1]);
		}
	}
}

function resetDefaults() {
	var objThisEl = null;
	for (var i = 0; i < arrInputElements.length; i++) {
		objThisEl = objLoginForm[arrInputElements[i][0]];
		objThisEl.value = arrInputElements[i][1];
	}
}

function validateLoginForm() {
	if (objLoginForm["reqType"].value != "ajaxSubscribe") {
		stripForSubmit();
	}
	if (objLoginForm["reqType"].value == "isRegistered") {
		objLoginForm["emailAddress"].value = objLoginForm["SUBMIT_USERNAME_NEW"].value;
	}
	if (objLoginForm["reqType"].value == "ajaxRegister") {
		objLoginForm["firstName"].value = objLoginForm["SUBMIT_FIRSTNAME"].value;
		objLoginForm["lastName"].value = objLoginForm["SUBMIT_LASTNAME"].value;
	}
	hideSelects();
	showLoginWait();
	
	//' Timeout check setup
	submitTimedOut = true;
	submitCount++;
	setTimeout("timeoutSignUp(" +submitCount + ")",numTimeoutSeconds*1000);
	return true;
}

function processLoginResponse() {
	submitTimedOut = false;
	loadForReturn();
	hideLoginWait();
	showSelects();
//	window.secure_iframe.history.back();


	if ((objLoginResp != null) && (objLoginResp.isAjaxSuccess == true)) {
		trackLink("/lite_reg/signup_travelguide/"+objLoginResp.responseType);
		if (objLoginResp.responseType.indexOf("_error") > 1) {
			if (objLoginResp.invalidResponseCount >= maxInvalidResponseCount) {
				document.getElementById("error_messages").innerHTML = "The password you provided is incorrect. For your security, you may not try another password.<br><a href=\"/myprofile/setupSignInCC.do?jsk=" +strJSK + "&INIT_SESSION=false\">Forgot your password?</a>";
				killSignUp();
			} else {
				document.getElementById("error_messages").innerHTML = objLoginResp.errMessages.replace(/\|/gi,"<br>");
			}
			document.getElementById("error_messages").style.display = "block";
		} else {
			document.getElementById("error_messages").innerHTML = "";
			document.getElementById("error_messages").style.display = "none";
		}

		if (objLoginResp.responseType.indexOf("_prompt") > -1) {
//			document.getElementById("signup_header").style.display = "none";
			document.getElementById("field_email").style.display = "none";
//			document.getElementById("it_origin").style.display = "block";
//			document.getElementById("it_destination").style.display = "block";				
			if (objLoginResp.responseType == "login_prompt") {
				objLoginForm["reqType"].value = "ajaxLogin";
				var strFirstNameDisp = "Hi";
				if (objLoginResp.firstName.length > 1) {
					strFirstNameDisp += ", " + objLoginResp.firstName + ".";
				}
				strFirstNameDisp + ".";
				document.getElementById("signup_subtitle").innerHTML = strFirstNameDisp + " Please sign in.<br>(Not " +objLoginResp.firstName + "? <a class=\"changeEmail\" href=\"javascript:resetSignUp();\">change</a>)";
				document.getElementById("signup_subtitle").style.display = "block";
				document.getElementById("sign_in_q").innerHTML = objLoginResp.signInQuestion;
				document.getElementById("sign_in_q").style.display = "block";
			}
			if (objLoginResp.responseType == "register_prompt") {
				objLoginForm["reqType"].value = "ajaxRegister";
				document.getElementById("field_first").style.display = "block";
				document.getElementById("field_last").style.display = "block";
				document.getElementById("pword_help").style.display = "inline";
				document.getElementById("signup_subtitle").innerHTML = "Almost there -- just pick your priceline password and we'll start sending the deals.";
				document.getElementById("signup_subtitle").innerHTML += "<br>(Not " +objLoginResp.emailAddress + "? <a class=\"changeEmail\" href=\"javascript:resetSignUp();\">Change</a>)";
				document.getElementById("signup_subtitle").style.display = "block";
				document.getElementById("sign_in_q").innerHTML = objLoginResp.signInQuestion;
				document.getElementById("sign_in_q").style.display = "block";
			}
			document.getElementById("field_pword").style.display = "block";
		}
		if (objLoginResp.responseType.indexOf("_success") > -1) {
			logInUser(objLoginResp.firstName);
		}
		if (objLoginResp.responseType == "subscription_added") {
			document.getElementById("signup_subtitle").innerHTML = "All set! We'll send you great deals as they become available.";
			document.getElementById("signup_subtitle").style.display = "block";
//			document.getElementById("it_origin").style.display = "none";
//			document.getElementById("it_destination").style.display = "none";
			document.getElementById("error_messages").style.display = "none";
			document.getElementById("submit_button").style.display = "none";
		}
	} else {
		if ((objLoginResp != null) && (objLoginResp.errMessages)) {
			document.getElementById("error_messages").innerHTML = objLoginResp.errMessages.replace(/\|/gi,"<br>");
		} else {
			document.getElementById("error_messages").innerHTML = "";
		}
		killSignUp();
	}
}


function logInUser(strTheName) {
//	document.getElementById("signup_header").innerHTML = "";
	document.getElementById("signup_subtitle").innerHTML = "All set! We'll send you great deals as they become available.";
	document.getElementById("signup_subtitle").style.display = "block";
	document.getElementById("sign_in_q").style.display = "none";
	document.getElementById("field_email").style.display = "none";
	document.getElementById("field_pword").style.display = "none";
	document.getElementById("field_first").style.display = "none";
	document.getElementById("field_last").style.display = "none";
	document.getElementById("pword_help").style.display = "none";
	document.getElementById("error_messages").style.display = "none";
	document.getElementById("submit_button").style.display = "none";
//	document.getElementById("it_origin").style.display = "none";
//	document.getElementById("it_destination").style.display = "none";
	
	var successURL = window.location.href;
	if (successURL.indexOf("jsk") < 0) {
		var urlParts = window.location.href.split("?");
		var baseURL = urlParts[0];
		var qs = String(urlParts[1]).replace("undefined","");
	
	       // Check for a trailing '&'
	       if (qs.length > 1 && qs.substr(qs.length-1) != "&") {
	          qs += "&";
	       }
		
		// Assemble final action URL
	    successURL = baseURL + "?" + qs + "jsk=" + strJSK;
	}
	
//	window.location = successURL;
}
