// JavaScript Document

var responseTitle = '';

$(document).keyup(function(e) {
	// esc
	if (e.keyCode == 27) { 
		HidePopUp();	
	}
});

function outputError(elementID, error){
	var output = '<div class="errors widthAuto">'+error+'</div>';
	$("#"+elementID).hide();
	$("#"+elementID).html(output);
	$("#"+elementID).fadeIn('fast');
}

function outputAlert(elementID, alertTxt){
	var output = '<div class="alert widthAuto">'+alertTxt+'</div>';
	$("#"+elementID).hide();
	$("#"+elementID).html(output);
	$("#"+elementID).fadeIn('fast');
}

function spinnerAlert(elementID, spinnerTxt){
	var output = '<div class="alert widthAuto"><img width="16" height="16" src="'+window.location.protocol+'//www.spotlighthometours.com/repository_images/spinner-alert.gif" align="absmiddle" /> '+spinnerTxt+'</div>';
	$("#"+elementID).hide();
	$("#"+elementID).html(output);
	$("#"+elementID).fadeIn('slow');
}

function setFocusOnEnter(e, id){
	if (e.keyCode == 13) {
		document.getElementById(id).focus();
		$('html,body').animate({scrollTop: $("#"+id).offset().top-50},'fast');
	}
}

function setFocus(id){
	document.getElementById(id).focus();
	$('html,body').animate({scrollTop: $("#"+id).offset().top},'fast');
}

function reloadPage(){
	window.location.reload();
}

function nothing(){
	
}

function CharacterCount(itemId, totalCount, counterId) {
	try {
		var itemCount = document.getElementById(itemId).value.length;
		if (itemCount <= totalCount) {
			document.getElementById(counterId).innerHTML = (totalCount - itemCount) + ' characters left';
		} else {
			document.getElementById(itemId).value = document.getElementById(itemId).value.substring(0, totalCount);
		}
	} catch(err) {
		alert('CharacterCount: ' + err);
	}
}

/* GET QUERY VAR */

function getQueryVariable(query, variable){ 
	try{
		var vars = query.split("&"); 
	  	for (var i=0;i<vars.length;i++) { 
			var pair = vars[i].split("="); 
			if (pair[0] == variable) { 
				return pair[1]; 
			} 
		}
  	}catch(err) {
		alert("getQueryVariable: " + err);
	}
} 

/* FORM VALIDATION */

function validate(type, value){
   	switch(type){
		case 'email':
			var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
			if(reg.test(value) == false) {
			  return false;
			}else{
				return true;
			}
		break;
		case 'empty':
			if(value){
				return true;
			}else{
				return false;
			}
		break;
		case 'letter':
			var alphaExp = /^[a-zA-Z]+$/;
			if(value.match(alphaExp)){
				return true;
			}else{
				return false;
			}
		break;
		case 'number':
			if(isNaN(value)){
				return false;
			}else{
				return true;
			}
		case 'zip':
			var valid = "0123456789-";
			var hyphencount = 0;
			
			if (value.length!=5 && value.length!=10) {
				return false;
			}
			for (var i=0; i < value.length; i++) {
				temp = "" + value.substring(i, i+1);
				if (temp == "-") hyphencount++;
				if (valid.indexOf(temp) == "-1") {
					return false;
				}
				if ((hyphencount > 1) || ((value.length==10) && ""+value.charAt(5)!="-")) {
					return false;
			   }
			}
			return true;
		break;
		case 'password':
			if (!value) {
				return false;
			}
			var illegalChars = /[\W_]/; // allow only letters and numbers
			if (illegalChars.test(value)) {
				return false;
			}
			return true;
		break;
		case 'phone':
			var stripped = value.replace(/[\(\)\.\-\ ]/g, '');
			//strip out acceptable non-numeric characters
			if (isNaN(parseInt(stripped))) {
			   return false;
			}
			if (!(stripped.length == 10)) {
				return false;
			}
			return true;
		break;
		case 'money':
			var strPattern = /^\s*(\+|-)?((\d+(\.\d\d)?)?(\.\d\d))\s*$/;  
			if(value.search(strPattern)== -1){
				return false;
			}else{
				return true;
			}
		break;
		case 'domain':
			var strPattern = /^([A-Za-z0-9])+[A-Za-z0-9-]+([A-Za-z0-9])$/;  
			if(strPattern.test(value) == false){
				return false;
			}else{
				return true;
			}
		break;
	}
}


/* AJAX */

var response = "";
var responseXML = "";

function ajaxQuery(url, params, functionName){
try {
		var HTTP = false;
		if (window.XMLHttpRequest) {
			HTTP = new XMLHttpRequest();
		}else{
			HTTP = new ActiveXObject("Microsoft.XMLHTTP");
		}
		if(HTTP) {
			HTTP.open("POST", url, true);
			HTTP.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
			HTTP.setRequestHeader("Content-length", params.length);
			HTTP.setRequestHeader("Connection", "close");

			HTTP.onreadystatechange = function() { 
				if (HTTP.readyState == 4 && (HTTP.status == 200 || HTTP.status == 0)) {
					
					response = HTTP.responseText;
					responseXML = HTTP.responseXML;
					var funcCall = functionName + "();";
					eval(funcCall);
	
				}else if(HTTP.readyState == 4 && HTTP.status == 403){
					message = '<p>Your session may have expired, please login:</p>';
					message += '<div class="button_new button_blue button_mid" onclick="window.location=\'http://www.spotlighthometours.com/login/\'">';
           			message += '<div class="curve curve_left" ></div>';
					message += '<span class="button_caption" >Login</span>';
					message += '<div class="curve curve_right" ></div>';
				  	message += '</div>';
					HidePopUp();
					ShowPopUp("Access Denied", message);
				}
			}
			HTTP.send(params);
		}			
					
	} catch(err) {
		alert("AjaxQuery: " + err);
	}
}

function StringtoXML(text){
    if (window.ActiveXObject){
        var doc=new ActiveXObject('Microsoft.XMLDOM');
        doc.async='false';
        doc.loadXML(text);
    } else {
        var parser=new DOMParser();
    	var doc=parser.parseFromString(text,'text/xml');
	}
	return doc;
}

// USER LOGIN

var formObj;
var usernameObj;
var passwordObj;

function sumbitLoginFormEnter(e){
	if (e.keyCode == 13) {
		userLogin('loginForm');
	}
}

function GetLoginScreen(){
    
    try {
    	var url = window.location.protocol+"//"+window.location.hostname+"/repository_inc/ajax/login.php";
        var params  = '';
        responseTitle = 'Login';
		    
        ajaxQuery(url, params, 'ShowResponse');
            
    } catch(err) {
        alert("GetLoginScreen: " + err);
    }
}

function userLogin(form){
		try {
			
			// Validate Form
			usernameObj = document.getElementById('username');
			passwordObj = document.getElementById('password');
			
			if(!validate('email', usernameObj.value)){
				outputAlert('loginMsg', 'Please enter a valid email address for your Username email.');
				usernameObj.value="";
				usernameObj.focus();
			}else if(!validate('empty', usernameObj.value)){
				outputAlert('loginMsg', 'Please enter a password.');
				passwordObj.focus();
			}else{
				formObj = document.getElementById(form);
				var url = window.location.protocol+"//"+window.location.hostname+"/repository_inc/user_login_logic.php";
				var params = "username=" + usernameObj.value + "&password=" + passwordObj.value;
				
				ajaxQuery(url, params, 'processLogin');
			}

		} catch(err) {

			window.alert("userLogin: "+err);

		}
}

function processLogin(){
	if (response == "-1") {
		outputError('loginMsg', 'Invalid username and password');
	} else if (response == "invalid") {
		outputError('loginMsg', 'Account not validated. Please check email.');
	} else {
		login();
	}
}

/*function checkExpress(){
	var url = window.location.protocol+"//www.spotlighthometours.com/repository_inc/ajax/checkExpress.php";
	var params = '';
	try {
		ajaxQuery(url, params, 'login');
	}catch(e){
		alert('checkExpress: '+e);
	}
}

function login(){	
	if (response == "1") {
		formObj.action = window.location.protocol+"//spotlightxpresstours.com/users/users.cfm?action=login";
		window.location = window.location.protocol+"//spotlightxpresstours.com/repository_inc/user_login_logic.php?action=express_login&username="+usernameObj.value+"&password="+passwordObj.value;
	} else {
		formObj.submit();
	}
}*/

function login(){	
	formObj.action ="http://"+window.location.hostname+"/users/users.cfm?action=login";
	formObj.submit();
}

// TEAM LOGIN

function teamLogin(form){
		try {
			
			// Validate Form
			usernameObj = document.getElementById('username');
			passwordObj = document.getElementById('password');
			
			if(!validate('empty', usernameObj.value)){
				outputAlert('loginMsg', 'Please enter a username.');
				usernameObj.value="";
				usernameObj.focus();
			}else if(!validate('empty', usernameObj.value)){
				outputAlert('loginMsg', 'Please enter a password.');
				passwordObj.focus();
			}else{
				formObj = document.getElementById(form);
				var url = "../repository_inc/team_login_logic.php?username=" + usernameObj.value + "&password=" + passwordObj.value;
				var params = "";
				
				ajaxQuery(url, params, 'processTeamLogin');
			}

		} catch(err) {

			window.alert("teamLogin: "+err);

		}
}

function processTeamLogin(){
	if (response == "-1") {
		outputError('loginMsg', 'Invalid username and password');
	} else if (response == "invalid") {
		outputError('loginMsg', 'Account not validated. Please check email.');
	} else {
		showTeamLoggingIn();
	}
}

function showTeamLoggingIn(){
	GetLoadingScreen('Logging In');
	formObj.submit();
}

function sumbitTeamsLoginFormEnter(e){
	if (e.keyCode == 13) {
		teamLogin('teamLoginForm');
	}
}

/* RECOVER PW */

var usernameObj;
var username;
var isPopUp = false;
var msgID;
var usernameID;
var responseCode;

function sumbitPWRecoveryFormEnter(e){
	if (e.keyCode == 13) {
		recoverPassword();
	}
}

function getRecoverPWForm(){
	isPopUp = true;
	try {
		var url = window.location.protocol+"//www.spotlighthometours.com/repository_inc/ajax/recover-password.php?action=getform";
		var params  = '';
		responseTitle = 'Login';
		
		ajaxQuery(url, params, 'ShowResponse');
			
	} catch(err) {
		alert("getRecoverPWForm: " + err);
	}
}

function getRecoverPWFormResponse(){
	try {
		var url = window.location.protocol+"//www.spotlighthometours.com/repository_inc/ajax/recover-password.php?action=getform";
		var params  = '';
		
		responseCode = response;
		ajaxQuery(url, params, 'showPWRecoveryResponse');
			
	} catch(err) {
		alert("getRecoverPWFormResponse: " + err);
	}	
}

function recoverPassword(){
			try {
				
			if(isPopUp){
				msgID = 'recoverPWMsg';
				usernameID = 'username2';
			}else{
				msgID = 'inlineRecoverPWMsg';
				usernameID = 'username';
			}
			
			// Validate Form
			usernameObj = document.getElementById('username');
			
			if(!validate('email', usernameObj.value)){
				outputAlert(msgID, 'Please enter a valid email address for your Username email.');
				usernameObj.value="";
				usernameObj.focus();
			}else{
				var url = window.location.protocol+"//www.spotlighthometours.com/repository_inc/ajax/recover-password.php?action=recover&username=" + usernameObj.value;
				var params = "";
				
				username = usernameObj.value;
				
				GetLoadingScreen('Sending Email');
				ajaxQuery(url, params, 'getRecoverPWFormResponse');
			}

		} catch(err) {

			window.alert("recoverPassword: "+err);

		}
}

function showPWRecoveryResponse(){
	if(isPopUp){
		responseTitle = 'Login';
		ShowResponse();
	}else{
		HidePopUp();
	}

	document.getElementById('username').value = username;
	if (responseCode == "0") {
		outputError(msgID, 'Username email not found.');
	}else{
		outputAlert(msgID, 'Your password has been sent to the email address associated with the account below.');
	}
}

/* REGISTRATION */

var formNameHolder;

function submitRegistrationOnEnter(e, formName){
	if (e.keyCode == 13) {
		validateRegistration(formName);
	}
}

function sendRegistrationInfo(formName){
	formNameHolder = formName;
	
	// construct query
	fieldsArray = new Array(
		'firstName',
		'lastName',
		'userType',
		'BrokerageID',
		'otherBrokerage',
		'email',
		'password',
		'address',
		'city',
		'state',
		'zipCode',
		'phone',
		'phonecarrier',
		'phone2',
		'mls',
		'fax',
		'uri',
		'captcha_code'
	);
	fieldsCount = fieldsArray.length;
	query = "";
	for(i=0; i<fieldsCount; i++){
		if(fieldsArray[i]=="userType"||fieldsArray[i]=="BrokerageID"||fieldsArray[i]=="state"||fieldsArray[i]=="phonecarrier"){
			selectInput = document.forms[formName][fieldsArray[i]];
			selectIndex = document.forms[formName][fieldsArray[i]].selectedIndex;
			inputValue = selectInput.options[selectIndex].value;
			query += fieldsArray[i]+"="+encodeURIComponent(inputValue)+"&";
		}else{
			query += fieldsArray[i]+"="+encodeURIComponent(document.forms[formName][fieldsArray[i]].value)+"&";
		}
	}
	
	// Add username to query
	query += "username="+encodeURIComponent(document.forms[formName]['email'].value);
	
	var url = window.location.protocol+"//www.spotlighthometours.com/repository_inc/ajax/registerUser.php?"+query;
	var params = "";
	
	GetLoadingScreen('Registering');
	ajaxQuery(url, params, 'getRegistrationResponse');
	
}

function getRegistrationResponse(){
	responseCode = getQueryVariable(response, 'response');
	if(responseCode==0){
		HidePopUp();
		error = getQueryVariable(response, 'error');
		error = decodeURIComponent((error + '').replace(/\+/g, '%20'));
		error = unescape(error);
		outputError('registerMsg', error);
		$('html,body').animate({scrollTop: $("#top").offset().top},'fast');
	}else{
		GetLoadingScreen('Logging In');
		registerAutoLogin();
	}
}

function validateRegistration(formName){
	required = new Array(
		'firstName',
		'lastName',
		'BrokerageID',
		'email',
		'password',
		'address',
		'city',
		'state',
		'zipCode',
		'phone',
		'phonecarrier',
		'captcha_code'
	);
	
	required_type = new Array(
		'empty',
		'empty',
		'select',
		'email',
		'password',
		'empty',
		'empty',
		'select',
		'zip',
		'phone',
		'select',
		'empty'
	);
	
	inValidOutput = new Array(
		'Please enter your first name.',
		'Please enter you last name.',
		'Please select a brokerage. Select None/Other at the bottom of the list if none.',
		'Please enter a valid email address.',
		'Please enter a valid password. Letters and numbers only.',
		'Please enter your mailing address.',
		'Please enter your city.',
		'Please select a state.',
		'Please enter a valid zip code. Example: 84106 or 84106-2389',
		'Please enter a valid phone number. A 10 digit phone number is required. Example (801)501-6500.',
		'Please select your phone provider.',
		'Please enter the exact letters and/or numbers from the image below into the "Code" input box.'
	);
	
	numberOfRequired = required.length;
	
	for(i=0; i<numberOfRequired; i++){
		if(required_type[i]=="select"){
			selectInput = document.forms[formName][required[i]];
			selectIndex = document.forms[formName][required[i]].selectedIndex;
			inputValue = selectInput.options[selectIndex].value;
			type = 'empty';
		}else{
			inputValue = document.forms[formName][required[i]].value;
			type = required_type[i];
		}
		if(!validate(type, inputValue)){
			outputAlert('registerMsg', inValidOutput[i]);
			$('html,body').animate({scrollTop: $("#top").offset().top},'fast');
			document.forms[formName][required[i]].focus();
			exit;
		}
	}
	
	// Validation Passed Send Registration Information
	sendRegistrationInfo(formName);
}

function registerAutoLogin(){
	username = document.forms[formNameHolder]['email'].value;
	password = document.forms[formNameHolder]['password'].value;
	var url = window.location.protocol+"//www.spotlighthometours.com/repository_inc/user_login_logic.php";
	var params = "username=" + username + "&password=" + password;
				
	GetLoadingScreen('Registration Complete');
	ajaxQuery(url, params, 'registerComplete');
}

function registerComplete(){
	try {
		var url = window.location.protocol+"//www.spotlighthometours.com/repository_inc/html/registerComplete.php";
		var params  = '';
		
		document.getElementById("pop_up_title").style.display = "none";
		
		ajaxQuery(url, params, 'ShowResponse');
			
	} catch(err) {
		alert("getRecoverPWForm: " + err);
	}	
}

/* POPUPS */

function GetLoadingScreen(text) {
	try {
		ladingHTML = '<div class="wait_frame" >';
		ladingHTML += '    <div class="wait" >';
		ladingHTML += '    	'+text+'...<br />';
		ladingHTML += '    	<img class="spinny" src="'+window.location.protocol+'//www.spotlighthometours.com/images/common/loader-bar.gif" />';
		ladingHTML += '	</div>';
		ladingHTML += '</div>';
		
		if(document.getElementById("pop_up_title")) {
			document.getElementById("pop_up_title").style.display = "none";
		}
		ShowPopUp("", ladingHTML);	
	} catch(err) {
		alert("GetLoadingScreen: " + err);
	}
}

function ShowPopUp(title, content) {
	try {
		
		var f_title = false;
		if(document.getElementById("pop_up_title")) {
			f_title = document.getElementById("pop_up_title");
		}
		
		var f_content = false;
		if(document.getElementById("pop_up_content")) {
			f_content = document.getElementById("pop_up_content");
		}
		
		$("#backdrop").stop(true, true).fadeTo("slow", 0.85);
		
		f_title.innerHTML = title;
		f_content.innerHTML = content;
		
		$("#pop_up_frame").stop(true, true).fadeIn("slow");
		
	} catch(err) {
		alert("ShowPopUp: " + err);
	}
}

function HidePopUp() {
	try {
		$("#backdrop").fadeOut("slow");
		$("#pop_up_frame").fadeOut("slow", function() {
			if(document.getElementById("pop_up_title")) {
				document.getElementById("pop_up_title").style.display = "block";
			}
			$("#pop_up_content").find('iframe').attr('src', 'google.com');
		});
		
	} catch(err) {
		alert("HidePopUp: " + err);
	}
}

function ShowWait() {
	try {
		if(document.getElementById("pop_up_title")) {
			document.getElementById("pop_up_title").style.display = "none";
		}
		ShowPopUp("", response);
	} catch(err) {
		alert("ShowWait: " + err);
	}
}

function ShowResponse() {
	ShowPopUp(responseTitle, response);
}

function HideWait() {
	try {
		if(document.getElementById("pop_up_title_frame")) {
			document.getElementById("pop_up_title_frame").style.display = "block";
		}
		HidePopUp();
	} catch(err) {
		alert("HideWait: " + err);
	}
		
}

function ToggleInputInfo(e, display_state) {
	try {
		var state = "";
		if(display_state == 1) {
			state = "block";
		} else {
			state = "none";
		}
		
		var parent = e.parentNode;
		if(parent.hasChildNodes()) {
			for(var i = 0; i < parent.childNodes.length; i++) {
				if(parent.childNodes[i].className == "input_info") {
					parent.childNodes[i].style.display = state;
				}
			}
		}
		
	} catch(err) {
		window.alert("ToggleInputInfo: " + err + ' (line: ' + err.line + ')');
	}
}

function viewTour(tourID){
	previewWindow = window.open('http://www.spotlighthometours.com/us/'+tourID,'','fullscreen=yes, scrollbars=auto');
	previewWindow.moveTo((screen.width/2)-500,0);
	previewWindow.resizeTo(1000,800);
}

function viewDemoTour(tourID){
	previewWindow = window.open('http://www.spotlighthometours.com/tours/tour.php?demo=true&tourid='+tourID,'','fullscreen=yes, scrollbars=auto');
	previewWindow.moveTo((screen.width/2)-500,0);
	previewWindow.resizeTo(1000,800);
}

/* NEW DESIGN JANUARY 2012 */

	$(".wrapper .header .nav li").live({
		mouseenter:
			function(){
				$(this).find('ul').stop(true, true).slideToggle('fast');
				$(this).children(":first").addClass("hovered");
			},
		mouseleave:
			function(){
				$(this).find('ul').stop(true, true).slideToggle('fast');
				$(this).children(":first").removeClass("hovered");
			}
		}
    );

/* END NEW DESIGN JANUARY 2012 */
