/*@cc_on @if (@_win32 && @_jscript_version >= 5) if (!window.XMLHttpRequest)
window.XMLHttpRequest = function() { return new ActiveXObject('Microsoft.XMLHTTP') }
@end @*/

function screenShare(path, username, login, password, mid) {
	url = path + '/ll_show.asp?&Plan_Type=&login=' + escape(login) + '&password=' + escape(password) + '&MID=' + mid+ '&UserName=' + escape(username);
	this.newWindow = window.open(url, 'LiveLOOKs','toolbar=0,scrollbars=0,location=0,menubar=0,resizable=0,left=900,width=309,height=655');
}

function $$(element) {
	if(typeof(element) == 'string')
		return document.getElementById(element);
		
	return element;
}

function viewScreen(path, sessionID) {
	if(sessionID == undefined)
		sessionID = "";
	//this.newWindow = window.open("thanks.asp");
	//return false;
	this.newWindow = window.open(path+"/ll_view.asp", 'LiveLOOKv', 
			'toolbar=0,scrollbars=0,location=0,menubar=0,resizable=1,left=1,width=' + screen.width + ',height=' + screen.height);
}

function popUp(path, dimX, dimY, scroll) {
	if(scroll == undefined)
		scroll=0;
	if(dimX == undefined)
		dimX=screen.width;
	if(dimY == undefined)
		dimY=screen.height;
	this.newWindow = window.open(path, 'LivePopUp', 
			'toolbar=0,scrollbars='+scroll+',location=0,menubar=0,resizable=1,left=1,width=' +dimX+ ',height=' + dimY);
}


function MM_goToURL() { //v3.0
  var i, args=MM_goToURL.arguments; document.MM_returnValue = false;
  for (i=0; i<(args.length-1); i+=2) eval(args[i]+".location='"+args[i+1]+"'");
}

isIE=document.all;
isNN=!document.all&&document.getElementById;
isN4=document.layers;
isHot=false;


// whitespace characters
var whitespace = " \t\n\r";
var defaultEmptyOK = false

function isEmpty(s)
{   	
	var s1;
	
	//s1 = Trim(s);
   
 	return ((s == null) || (s.length == 0))
}

function isWhitespace (s)

{   var i;

    // Is s empty?
    if (isEmpty(s)) return true;

    // Search through string's characters one by one
    // until we find a non-whitespace character.
    // When we do, return false; if we don't, return true.

    for (i = 0; i < s.length; i++)
    {   
	// Check that current character isn't whitespace.
	var c = s.charAt(i);

	if (whitespace.indexOf(c) == -1) return false;
    }

    // All characters are whitespace.
    return true;
}

function mAlert(form, errMessage) 
{
	var cnt_toshow = document.getElementById(form.name + "_error");
	if(cnt_toshow) {
		cnt_toshow.className = "error";
		cnt_toshow.innerHTML = errMessage;
	}
}

function mAlertHide(form) 
{
	var cnt_tohide = document.getElementById(form.name + "_error");
	if(cnt_tohide && (cnt_tohide.className == "error" || cnt_tohide.innerHTML != "")) {

		cnt_tohide.className = "inv error";
		cnt_tohide.innerHTML = "";
	}
}

function trim(str) {
	return str.replace(/^\s+|\s+$/g,"");
}


function check_forgotten_password(form)
{  
	var validated = true;
	var email = form.Email_ID.value;
	
	if(!validateValue('email', form.Email_ID, 'Email_ID_invalid', 'Email_ID_error', null)) {
 		if(form.Verification)
			reloadVerificationCode("verificationDiv", form.Verification_Char, form.Verification, false);
		return false;
	}

	if(form.Verification && trim(form.Verification.value.toUpperCase()) != form.Verification_Char.value.toUpperCase()) {
		
		reportValidationError(form.Verification, 'Verification_img', 'Verification_error', form.Verification.value == "" ? "Invalid" : "Characters do not match");
		validated = false;
		reloadVerificationCode("verificationDiv", form.Verification_Char, form.Verification, false);
		return false;
	}
	else {
		clearValidationError(form.Verification, 'Verification_img', 'Verification_error');
	}

	var sUrl = 'remind_psw.asp?Email_ID=' + escape(email);
	var httpRequest = new XMLHttpRequest();
	httpRequest.open('GET', sUrl, false);
	httpRequest.send(null); 

	var LoginOK = httpRequest.responseText;
	if ("YES" == LoginOK) {
		clearValidationError(form.Email_ID, 'Email_ID_invalid', 'Email_ID_error');
		return true;				
	} else {
		reportValidationError(form.Email_ID, 'Email_ID_invalid', 'Email_ID_error', 'Your e-mail address was not recognized');
		if(form.Verification)
			reloadVerificationCode("verificationDiv", form.Verification_Char, form.Verification, false);
		return false;		 		  
	}

	clearValidationError(form.Email_ID, 'Email_ID_invalid', 'Email_ID_error');
	return true;
}


function onPasswordReset(form) {
	if(!check_forgotten_password(form))
		return false;

	form.Email_ID.disabled = "disabled";
	form.Verification.disabled = "disabled";

	$$('msg_text').style.display = '';
	$$('msg_descr').style.display = 'none';
	$$('email').style.display = 'none';
	$$('verif').style.display = 'none';
	$$('subm_button').style.display = 'none';

	return false;
}


function check_input_data_new(form)
{  
	var emailCNT, email, password, sUrl, httpRequest, LoginOK;
	var errMessage = "";
	var remember = true;

	if(form.Email_ID)
		emailCNT = form.Email_ID;
	else if (form.email)
		emailCNT = form.email;
		
	if(emailCNT)
		email = trim(emailCNT.value);
		
	if(form.Password)
		password = trim(form.Password.value);

	if(form.rememberMe)
		remember = form.rememberMe.checked;
	else if (form.IDStore)
		remember = form.IDStore.checked;
		
	isValid = true;

	if(!validateValue('not_empty', form.contact_name, 'contact_name_img', 'contact_name_error', 'Name missing')) {
		if(form.Verification)
			reloadVerificationCode("verificationDiv", form.Verification_Char, form.Verification, false);
		return 0;
	}

	if(!validateValue('email', emailCNT, 'Email_ID_img', 'Email_ID_invalid', 'Invalid email&nbsp;')) {
		if(form.Verification)
			reloadVerificationCode("verificationDiv", form.Verification_Char, form.Verification, false);
		return 0;
	}

	if(!validateValue('not_empty', form.question, null, 'question_error', 'Please enter your question')) {
		if(form.Verification)
			reloadVerificationCode("verificationDiv", form.Verification_Char, form.Verification, false);
		return 0;
	}

	if(form.Verification && trim(form.Verification.value.toUpperCase()) != form.Verification_Char.value.toUpperCase()) {
		//alert(form.Verification_Char.value);
		isValid = false;
		reportValidationError(form.Verification, null, 'Verification_error', form.Verification.value == "" ? "Invalid" : "Characters do not match");
		reloadVerificationCode("verificationDiv", form.Verification_Char, form.Verification, false);
		return false;
	}
		
	else {
		clearValidationError(null, null, 'Verification_error');
	}

	if (!validateValue('not_empty', form.Password, 'password_img', 'password_invalid', 'Password missing&nbsp;')) {
		return 0;
	}

	if(!form.Password)
		return isValid;       
       
	sUrl = 'check_user_login.asp?Email_ID=' + escape(email)  + '&Help_PW=' + escape(password) + '&IDStore=' + (remember ? 'ON':'OFF');
	
	httpRequest = new XMLHttpRequest(); 
	httpRequest.open('GET', sUrl, false); 
	httpRequest.send(null); 

	LoginOK = httpRequest.responseText;

	if (-1 != LoginOK.indexOf("YES")) {
		clearValidationError(null, null, 'Email_ID_invalid');
		return true;
	} else if ("TIME_EXPIRED" == LoginOK) {
		window.location = 'expired.asp';
		return false;		 		  			
	} else if ("INACTIVE" == LoginOK) {
		window.location = 'not_active.asp';
		return false;		 		  			
	} else if ("MONEY_EXPIRED" == LoginOK) {	
		window.location = 'expired.asp';
		return false;		
	} else if ("OVER_LIMIT" == LoginOK) {						
		clearValidationError(null, null, 'Email_ID_invalid');
		return true;					
	} else if ("DBERROR" == LoginOK) {
		reportValidationError(null, null, 'Email_ID_invalid', 'Error connecting to the database.');
		return false;
	} else {
		reportValidationError(null, null, 'Email_ID_invalid', 'Invalid login or password');
		form.Password.value = "";
		return false;
	}

	mAlertHide(form);
	return true;
}

function onContactAttempt(form) {
	var result = check_input_data_new(form);
	return (result != 0);
}


function onLoginAttempt(form) {
	var result = check_input_data_new(form); 
	if (result == 1 || result == 4){
		var url = location.protocol  + "//" + location.host + location.pathname;
		window.location.replace(url + "?login=true");
	  	return false;
	} 
                   
	else 
		return false;
		                                                                
}

function isCookiesDisabled()
{
	return 0;
}


function isEmail(s)
{   
    
     if (isEmpty(s)) 
       if (isEmail.arguments.length == 1) return defaultEmptyOK;
       else return (isEmail.arguments[1] == true);

    // is s whitespace?
    if (isWhitespace(s)) 
		return false;
    
    // there must be >= 1 character before @, so we
    // start looking at character position 1 
    // (i.e. second character)
    var i = 1;
    var sLength = s.length;

    // look for @
    while ((i < sLength) && (s.charAt(i) != "@"))
    { i++
    }

    if ((i >= sLength) || (s.charAt(i) != "@")) return false;
    else i += 2;

    // look for .
    while ((i < sLength) && (s.charAt(i) != "."))
    { i++
    }

    // there must be at least one character after the .
    if ((i >= sLength - 1) || (s.charAt(i) != ".")) return false;
    else return true;
}


function reloadVerificationCode(imgCnt, valCnt, inputCnt, asTable) {

	imgCnt = $$(imgCnt);
	var sUrl = "getVerificationCode.asp";
	
	var httpRequest = new XMLHttpRequest(); 
	httpRequest.open('GET', sUrl, false); 
	httpRequest.send(null); 

	var codeString = httpRequest.responseText;
	//alert(codeString);
	var imgPos = codeString.indexOf("img:");
	var valPos = codeString.indexOf("val:");

	if(imgPos == -1 || valPos == -1)
		return false;

	var imgVal = codeString.substring(imgPos + 4, valPos);
	var valVal = codeString.substring(valPos + 4);

	imgCnt.style.visibility = "hidden";
	if(!asTable) {
		imgCnt.innerHTML = imgVal;
	}
	else {
		imgCnt.innerHTML = "<table style='width:100%;table-layout:fixed;vertical-align:middle;height:60px;padding:0;margin:0;' cellpadding='0' cellspacing='0'><tr valign='middle'><td valign='middle' style='width:100%;'>" + imgVal + "</td></tr></table>";
	}
	imgCnt.style.visibility = "visible";
	valCnt.value = valVal;

	if(inputCnt)
		inputCnt.value = "";

	//alert(valCnt.value+", "+imgCnt.innerHTML);

	return true;
}


function reportValidationError(inputElement, imageElement, spanElement, errorMessage) {
	
	inputElement = $$(inputElement);
	imageElement = $$(imageElement);
	spanElement = $$(spanElement);
	
	if (imageElement && imageElement.style.visibility != 'hidden')
		imageElement.className = "visible";
	else if (inputElement)
		inputElement.style.borderColor = "red";
	
	if (spanElement && spanElement.style.visibility != 'hidden') {
		spanElement.className = "error";
		spanElement.innerHTML = (errorMessage != null && errorMessage != '') ? errorMessage : "Invalid";
	}
	
	if(inputElement)
		inputElement.focus();
}

function clearValidationError(inputElement, imageElement, spanElement, errorMessage) {
	inputElement = $$(inputElement);
	imageElement = $$(imageElement);
	spanElement = $$(spanElement);

	if (imageElement)
		imageElement.className = "inv";
	else if (inputElement)
		inputElement.style.borderColor = "";
		
	if (spanElement && spanElement.style.visibility != 'hidden') {
		spanElement.className = "error inv";
		spanElement.innerHTML = "";
	} 
}

function validateValue(validationType, inputElement, imageElement, spanElement, errorMessage) {
	inputElement = $$(inputElement);
	imageElement = $$(imageElement);
	spanElement = $$(spanElement);
	
	if(!inputElement || inputElement == undefined) {
		return true;}

	var validationResult = true;
	var elementValue = trim(inputElement.value);
	
	if(validationType == "not_empty") {
		
		if(isEmpty(elementValue) || isWhitespace(elementValue)) {
			validationResult = false;
			reportValidationError(inputElement, imageElement, spanElement, errorMessage);
		}
		else {
			clearValidationError(inputElement, imageElement, spanElement, errorMessage);
		}
		
		return validationResult;
		
	}
	
	else if (validationType == 'email') {
		validationResult = validateValue('not_empty', inputElement, imageElement, spanElement, errorMessage);
		if(!validationResult) 
			return false;
		else if (!isEmail(elementValue)) {
			validationResult = false;
			reportValidationError(inputElement, imageElement, spanElement, errorMessage == null || errorMessage == '' ? 'Invalid email' : errorMessage);
		}
		else {
			clearValidationError(inputElement, imageElement, spanElement, errorMessage);
		}
		
		return validationResult;
	}
	
	else if (validationType == 'phone') {
		validationResult = validateValue('not_empty', inputElement, imageElement, spanElement, errorMessage);
		if(!validationResult) 
			return false;
		else if (elementValue.length < 10) {
			validationResult = false;
			reportValidationError(inputElement, imageElement, spanElement, errorMessage);
		}
		else {
			clearValidationError(inputElement, imageElement, spanElement, errorMessage);
		}
		return validationResult;
	}
	
	
	return validationResult;
}

function onScheduleTour(form) {
	var allowSubmit = false;
	
	if(!validateValue('not_empty', form.customerName, null, 'customerName_error', null))
		return false;

	if(!validateValue('phone', form.customerPhone, null, 'customerPhone_error', null))
		return false;
	
	if(!validateValue('email', form.customerEmail, null, 'customerEmail_error', null))
		return false;

	if(!validateValue('not_empty', form.customerPreferredTime, null, 'customerPreferredTime_error', null))
		return false;

	if(!validateValue('not_empty', form.customerTimeZone, null, 'customerTimeZone_error', null))
		return false;
	
	return true;
}


//change the opacity for different browsers
function changeOpac(opacity, id) {
	var object = document.getElementById(id).style;
	object.opacity = (opacity / 100);
	object.MozOpacity = (opacity / 100);
	object.KhtmlOpacity = (opacity / 100);
	object.filter = "alpha(opacity=" + opacity + ")";
	object.zoom = "1";
}

function opacity(id, opacStart, opacEnd, millisec) {
	//speed for each frame
	var speed = Math.round(millisec / 100);
	var timer = 0;

	//determine the direction for the blending, if start and end are the same nothing happens
	if(opacStart > opacEnd) {
		for(i = opacStart; i >= opacEnd; i--) {
			setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
			timer++;
		}
	} else if(opacStart < opacEnd) {
		for(i = opacStart; i <= opacEnd; i++) {
			setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
			timer++;
		}
	}
} 
