/*@cc_on @if (@_win32 && @_jscript_version >= 5) if (!window.XMLHttpRequest)
window.XMLHttpRequest = function() { return new ActiveXObject('Microsoft.XMLHTTP') }
@end @*/

function $$(element) {
	if(typeof(element) == 'string')
		return document.getElementById(element);
		
	return element;
}


function screenShare(path, username, token) {
	url = path + '/ll_show.asp?&Plan_Type=&AutoStart=yes&qos=speed&token=' + token + '&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 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 email, sUrl, httpRequest, LoginOK
	validated = true;
	email = form.Email_ID.value;

	if (isEmpty(email)) {
		form.Email_ID.focus();
		mAlert(form.Email_ID, "Please enter email");
		if(document.getElementById("Email_ID_invalid")) {
			document.getElementById("Email_ID_invalid").className = "visible";
			if(document.getElementById("Email_ID_invalid").style.visibility == 'hidden')
				form.Email_ID.style.borderColor = 'Red';
		}
 		if(form.Verification)
			reloadVerificationCode(document.getElementById("verificationDiv"), form.Verification_Char, form.Verification, false);

		return false;
	}
	else if (isEmail(email) == false) {                           	
		form.Email_ID.focus();
		mAlert(form.Email_ID, "Invalid e-mail address, please re-enter");
		if(form.Email_ID_invalid) {
			document.getElementById("Email_ID_invalid").className = "visible";
			if(document.getElementById("Email_ID_invalid").style.visibility == 'hidden') {
				form.Email_ID.style.borderColor = 'Red';
			}
		}
 		if(form.Verification)
			reloadVerificationCode(document.getElementById("verificationDiv"), form.Verification_Char, form.Verification, false);
		return false;
	}
	else {
		form.Email_ID.style.borderColor = '';
		if(document.getElementById("Email_ID_invalid")) 
			document.getElementById("Email_ID_invalid").className = "inv";

		mAlertHide(form.Email_ID);
	}


	if(form.Verification) {
		
		if(trim(form.Verification.value.toUpperCase()) != form.Verification_Char.value.toUpperCase()) {
			mAlertHide(form.Email_ID);

			validated = false;
			if(form.Verification_img) 
				form.Verification_img.className = "visible";
			document.getElementById("Verification_error").className = "error";
			document.getElementById("Verification_error").innerHTML = form.Verification.value == "" ? "Invalid" : "Characters do not match";
			if(document.getElementById("Verification_error").style.visibility == 'hidden') {
				form.Verification.style.borderColor = 'Red';
			}
			form.Verification.focus();

			reloadVerificationCode(document.getElementById("verificationDiv"), form.Verification_Char, form.Verification, false);
		}
		else {
			if(form.Verification_img) 
				form.Verification_img.className = "inv";
			document.getElementById("Verification_error").className = "error inv";
			document.getElementById("Verification_error").innerHTML = "";
			form.Verification.style.borderColor = '';
		}
		if(!validated) return false;
	}


	sUrl = 'remind_psw.asp?Email_ID=' + escape(email);
	//alert(sUrl);
	httpRequest = new XMLHttpRequest();
	httpRequest.open('GET', sUrl, false);
	httpRequest.send(null); 

	LoginOK = httpRequest.responseText;
	//alert(LoginOK);
	if ("OK" == LoginOK) {
		mAlertHide(form);
		if(form.Email_ID_invalid) 
			form.Email_ID_invalid.className = "inv";
		return true;				
	} else {
		form.Email_ID.focus();
		mAlert(form.Email_ID, "Your e-mail address was not recognized");
		if(form.Email_ID_invalid) {
			form.Email_ID_invalid.className = "visible";
			if(document.getElementById("Email_ID_invalid").style.visibility == 'hidden') {
				form.Email_ID.style.borderColor = 'Red';
				alert('Your e-mail address was not recognized.');
			}
		}

		if(form.Verification)
			reloadVerificationCode(document.getElementById("verificationDiv"), 
				form.Verification_Char,
				form.Verification, false
				);

		return false;		 		  
	}

	mAlertHide(form.Email_ID);
	if(form.Email_ID_invalid) 
		form.Email_ID_invalid.className = "inv";

	return true;
}


function onPasswordReset(form) {
	if(!check_forgotten_password(form))
		return false;

	form.Email_ID.disabled = "disabled";
	form.Verification.disabled = "disabled";

	document.getElementById('msg_text').style.display = '';
	document.getElementById('msg_descr').style.display = 'none';
	document.getElementById('email').style.display = 'none';
	document.getElementById('verif').style.display = 'none';
	document.getElementById('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(form.contact_name) {
		var name = form.contact_name.value;
		if (isEmpty(name) || isWhitespace(name)) {
			form.contact_name.style.backgroundColor="#FAA";
			form.contact_name.focus();
			isValid = false;
		}
		else {
			form.contact_name.style.backgroundColor="#fff"; }

		if(!isValid) {
			mAlert(form, "Name missing");
			if(form.Verification)
				reloadVerificationCode(document.getElementById("verificationDiv"), form.Verification_Char, form.Verification, false);

			return 0;
		}
	}

	if(emailCNT) {
		if (isEmpty(email) || !isEmail(email)) {
			if(form.Email_ID_invalid) 
				form.Email_ID_invalid.className = "visible";
			emailCNT.style.backgroundColor="#FAA";
			emailCNT.focus();
			isValid = false;
		} else {
			if(form.Email_ID_invalid)
				form.Email_ID_invalid.className = "inv";
			emailCNT.style.backgroundColor="#fff";
		}

		if(!isValid) {
			mAlert(form, !isEmpty(email) ? "Invalid email" : "Login missing");
			if(form.Verification)
				reloadVerificationCode(document.getElementById("verificationDiv"), form.Verification_Char, form.Verification, false);
			return 0;
		}
	}

	if(form.question) {
		var question = form.question.value;
		if (isEmpty(question) || isWhitespace(question)) {
			form.question.style.backgroundColor="#FAA";
			form.question.focus();
			isValid = false;
		}
		else {
			form.question.style.backgroundColor="#fff"; }

		if(!isValid) {
			mAlert(form, "Please enter your question");
			if(form.Verification)
				reloadVerificationCode(document.getElementById("verificationDiv"), form.Verification_Char, form.Verification, false);
			return 0;
		}
	}

	if(form.Verification) {
		if(trim(form.Verification.value.toUpperCase()) != form.Verification_Char.value.toUpperCase()) {
			//alert(form.Verification_Char.value);
			isValid = false;
			form.Verification.style.backgroundColor="#FAA";
			form.Verification.focus();
			if(document.getElementById("Verification_error")) {
				document.getElementById("Verification_error").className = "error";
				document.getElementById("Verification_error").innerHTML = form.Verification.value == "" ? "Invalid" : "Characters do not match";
			}
			form.Verification.focus();
		}
		else {
			if(document.getElementById("Verification_error")) {
				document.getElementById("Verification_error").className = "error inv";
				document.getElementById("Verification_error").innerHTML = "";
			}
			form.Verification.style.backgroundColor="#FFF";
		}
		if(!isValid) {
			reloadVerificationCode(document.getElementById("verificationDiv"), form.Verification_Char, form.Verification, false);
			return false;
		}
	}


	if (form.Password && (isEmpty(password) || isWhitespace(password))) {
		if(form.password_invalid) 
			form.password_invalid.className = "visible";
		form.Password.style.backgroundColor="#FAA";
		form.Password.focus();
		isValid = false;
	} else if (form.Password) {
		if(form.password_invalid)
			form.password_invalid.className = "inv";
		form.Password.style.backgroundColor="#fff"; }

	if(!isValid) {
		mAlert(form, "Password missing");
		return 0;
	}

	if(!form.Password)
		return isValid;       

       
	if (isCookiesDisabled()) { 
		mAlert(form, "Please enable cookies on this browser.");   
		return 0;
	}	         

	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;

	//alert(LoginOK);

	if (-1 != LoginOK.indexOf("YES")) {
		mAlertHide(form);
    		return true;				
	} else if (LoginOK.indexOf("TIME_EXPIRED")!=-1) {
		window.location = 'expired.asp';
		return false;		 		  			
	} else if ("INACTIVE" == LoginOK) {
		window.location = 'not_active.asp';
		return false;		 		  			
	} else if ("MONEY_EXPIRED" == LoginOK) {	
		//alert("Please buy LiveLOOK credit.")	  
		window.location = 'expired.asp';
		return false;		
	} else if ("OVER_LIMIT" == LoginOK) {						
		return true;					
	} else if ("DBERROR" == LoginOK) {
		mAlert(form, "Error connecting to the database.");
		return false;
	} else {
		mAlert(form, "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 PaymentPlan = "";
	var result = check_input_data_new(form); 
	if (1 ==  result){
		var url = location.protocol  + "//" + location.host + location.pathname;
		window.location.replace(url + "?login=true");
	  	return false;
	} 
                   
                    
	else if (4 == result) {
		window.location.replace('over_limit.htm');					
		return false;						
	}

	else 
		return false;
		                                                                
}

function displayImage(image_name, image_file_name) {
    
		// Firefox
		document.getElementById(image_name).src = image_file_name;	
		
}

function displayText(label_name, label_text) {

    //debug_msg(label_text);
    
		// Firefox
		document.getElementById(label_name).textContent = label_text;	
		
}




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) {

	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 validateValues(form) {
	var validated = true;
	var nameEnabled = true;
	var lastNameEnabled = true;
	var emailEnabled = true;
	var verifEnabled = true;
	var passwordEnabled = true;
	var phoneEnabled = true;
	
	if(document.getElementById('first')) 
		nameEnabled = document.getElementById('names').style.display != 'none';
	if(document.getElementById('last')) 
		lastNameEnabled = document.getElementById('names').style.display != 'none';
	if(document.getElementById('email')) 
		emailEnabled = document.getElementById('email').style.display != 'none';
	if(document.getElementById('verif')) 
		verifEnabled = document.getElementById('verif').style.display != 'none';
	if(document.getElementById('psw')) 
		passwordEnabled = document.getElementById('psw').style.display != 'none';
	if(document.getElementById('phonef'))
		phoneEnabled = document.getElementById('phonef').style.display != 'none';


	if(nameEnabled) {
		var name = trim(form.First_Name.value);
		if(isEmpty(name) || isWhitespace(name)) {
			validated = false;
			if(document.getElementById("First_Name_img")) 
				document.getElementById("First_Name_img").className = "visible";
			if(document.getElementById("First_Name_error") && document.getElementById("First_Name_error").style.visibility != 'hidden') {
				document.getElementById("First_Name_error").className = "error";
				document.getElementById("First_Name_error").innerHTML = "Invalid";
			} else 
			{
				form.First_Name.style.borderColor = "red";
			}
			//document.getElementById("First_Name_error").textContent = "Please at least enter your first name!";
			form.First_Name.focus();
		}
		else {
			if(document.getElementById("First_Name_img")) 
				document.getElementById("First_Name_img").className = "inv";
			if(document.getElementById("First_Name_error") && document.getElementById("First_Name_error").style.visibility != 'hidden') {
				document.getElementById("First_Name_error").className = "error inv";
				document.getElementById("First_Name_error").innerHTML = "";
			} else {
				form.First_Name.style.borderColor = "";
			}
		}
	
		if(!validated) return false;
	}

	if(lastNameEnabled && form.Last_Name) {
		var lastname = trim(form.Last_Name.value);
		if(isEmpty(lastname) || isWhitespace(lastname)) {
			validated = false;
			if (document.getElementById("Last_Name_img"))
				document.getElementById("Last_Name_img").className = "visible";
			if (document.getElementById("Last_Name_error") && document.getElementById("Last_Name_error").style.visibility != 'hidden') {
				document.getElementById("Last_Name_error").className = "error";
				//document.getElementById("Last_Name_error").textContent = "Please at least enter your first name!";
				document.getElementById("Last_Name_error").innerHTML = "Invalid";
			} else {
				form.Last_Name.style.borderColor = "red";
			}
			form.Last_Name.focus();
		}
		else {
			if (document.getElementById("Last_Name_img"))
				document.getElementById("Last_Name_img").className = "inv";
			if (document.getElementById("Last_Name_error") && document.getElementById("Last_Name_error").style.visibility != 'hidden') {
				document.getElementById("Last_Name_error").className = "error inv";
				document.getElementById("Last_Name_error").innerHTML = "";
			} else {
				form.Last_Name.style.borderColor = "";
			}
		}

		if(!validated) return false;
	}


	if(emailEnabled) {
		var email = trim(form.Email_ID.value);
		if(isEmpty(email) || !isEmail(email)) {
			validated = false;
			if(document.getElementById("Email_ID_img"))
				document.getElementById("Email_ID_img").className = "visible";
			if(document.getElementById("Email_ID_error") && document.getElementById("Email_ID_error").style.visibility != 'hidden') {
				document.getElementById("Email_ID_error").className = "error";
				//document.getElementById("Email_ID_error").textContent = "A valid e-mail address is required!";
				document.getElementById("Email_ID_error").innerHTML = isEmpty(email) ? "Invalid" : "Invalid email";
			} else {
				form.Email_ID.style.borderColor = "red";
			}
			form.Email_ID.focus();
		}
		else {
			if(document.getElementById("Email_ID_img")) document.getElementById("Email_ID_img").className = "inv";
			if(document.getElementById("Email_ID_error") && document.getElementById("Email_ID_error").style.visibility != 'hidden') {
				document.getElementById("Email_ID_error").className = "error inv";
				document.getElementById("Email_ID_error").innerHTML = "";
			} else {
				form.Email_ID.style.borderColor = "";
			}
		}
	
		if(!validated) return false;
	}

	var phoneCnt = null;
	if(form.phone) 
		phoneCnt = form.phone;
	else if (form.Phone)
		phoneCnt = form.Phone;

	if(phoneEnabled && phoneCnt) {
		var phone = trim(phoneCnt.value);
		if(isEmpty(phone) || isWhitespace(phone) || phone.length < 10) {
			validated = false;
			if(document.getElementById("Phone_img") && document.getElementById("Phone_img").style.visibility != 'hidden') {
				document.getElementById("Phone_img").className = "visible";
				document.getElementById("Phone_error").className = "error";
				document.getElementById("Phone_error").innerHTML = "Invalid";
			}

			else
				phoneCnt.style.borderColor = "red";

			phoneCnt.focus();
		}
		else {
			if(document.getElementById("Phone_img") && document.getElementById("Phone_img").style.visibility != 'hidden') {
				document.getElementById("Phone_img").className = "inv";
				document.getElementById("Phone_error").className = "error inv";
			}
			else 
				phoneCnt.style.borderColor = "";
		}

		if(!validated) {
			if(verifEnabled && form.Verification) 
				reloadVerificationCode(document.getElementById("verificationDiv"), form.Verification_Char, form.Verification, true);
			return false;
		}
	}


	if(passwordEnabled && form.password1) {
		validated = onActivationAttempt(form);
		if(!validated) return false;
	}

	if(verifEnabled && form.Verification) {
		if(trim(form.Verification.value.toUpperCase()) != form.Verification_Char.value.toUpperCase()) {
			validated = false;
			document.getElementById("Verification_img").className = "visible";
			document.getElementById("Verification_error").className = "error";
			document.getElementById("Verification_error").innerHTML = "Characters do not match";
			form.Verification.focus();
			
			if(document.getElementById("Verification_img").style.visibility == 'hidden')
			{
				form.Verification.style.borderColor = "Red";
			}
		}
		else {
			document.getElementById("Verification_img").className = "inv";
			document.getElementById("Verification_error").className = "error inv";
			document.getElementById("Verification_error").innerHTML = "";
			if(document.getElementById("Verification_img").style.visibility == 'hidden')
			{
				form.Verification.style.borderColor = "";
			}
		}
		if(!validated) {
			reloadVerificationCode(document.getElementById("verificationDiv"), form.Verification_Char, form.Verification, true);
			return false;
		}
	}

	//verify if email is already registered
	if(form.verifyEmail && emailEnabled) {
		sUrl = 'check_email.asp?email=' + escape(email);
	
		httpRequest = new XMLHttpRequest(); 
		httpRequest.open('GET', sUrl, false); 
		httpRequest.send(null); 
	 
		var result = "" + httpRequest.responseText;
		if(result == "COMPANY" || result == "USER") {
			validated = false;
			document.getElementById("Email_ID_img").className = "visible";
			document.getElementById("Email_ID_error").className = "error";
			document.getElementById("Email_ID_error").innerHTML = "Already registered";
			form.Email_ID.focus(); 
			
			 if(document.getElementById("Email_ID_error").style.visibility == 'hidden') {
				form.Email_ID.style.borderColor = "red";
				alert('This email is already registered!');
			 }
		}
		else {
			document.getElementById("Email_ID_img").className = "inv";
			document.getElementById("Email_ID_error").className = "error inv";
			document.getElementById("Email_ID_error").innerHTML = "";

			 if(document.getElementById("Email_ID_error").style.visibility == 'hidden') {
				form.Email_ID.style.borderColor = "";
			 }
}
		if(!validated) return false;
	}

	if(nameEnabled && lastNameEnabled && emailEnabled && !phoneEnabled && !verifEnabled) {
		//hide processed elements and show unprocessed elements
		document.getElementById('names').style.display = 'none';
		document.getElementById('email').style.display = 'none';
		document.getElementById('priv_text').style.display = 'none';
		document.getElementById('verif').style.display = '';
		//document.getElementById('psw').style.display = '';
		document.getElementById('phonef').style.display = '';
		document.getElementById('title').style.display = 'none';
		document.getElementById('subm_button').style.display = 'none';
		document.getElementById('subm1_button').style.display = '';
		
		if(document.getElementById('guest_div'))
			document.getElementById('guest_div').style.display = 'none';
		
		return false;
	}
	
	return validated;
}

function onActivationAttempt(form) {

	var isValid = true;
	
	var password = form.password1.value;
	var password2 = form.password2.value;
	var password_invalid = document.getElementById('password1_invalid');
	var password2_invalid = document.getElementById('password2_invalid');
	
	if (isEmpty(password) || isWhitespace(password)) {
		if(password_invalid) 
			password_invalid.className = "visible";
		form.password1.style.backgroundColor="#FAA";
		form.password1.focus();
		isValid = false;
	}
	else {
		if(password_invalid) 
			password_invalid.className = "inv";
		form.password1.style.backgroundColor="#fff";
	}

	if(!isValid) {
		return false;
	}

	if (isEmpty(password2) || isWhitespace(password2)) {
		if(password2_invalid) 
			password2_invalid.className = "visible";
		form.password2.style.backgroundColor="#FAA";
		form.password2.focus();
		isValid = false;
	}
	else {
		if(password2_invalid) 
			password2_invalid.className = "inv";
		form.password2.style.backgroundColor="#fff";
	}

	if(!isValid) {
		return false;
	}

	if (password2 != password) {
		if(password_invalid) 
			password_invalid.className = "visible";
		if(password2_invalid) 
			password2_invalid.className = "visible";
		form.password1.style.backgroundColor="#FAA";
		form.password2.style.backgroundColor="#FAA";
		form.password1.focus();
		isValid = false;
	}
	else {
		if(password_invalid) 
			password_invalid.className = "inv";
		if(password2_invalid) 
			password2_invalid.className = "inv";
		form.password1.style.backgroundColor="#FFF";
		form.password2.style.backgroundColor="#FFF";
	}

	return isValid;

}

function tryUpgrade(source, newProduct, newUser) {


	sUrl = 'upgrade.asp?type=' + escape(newProduct) + '&newUser=' + newUser;
	
	httpRequest = new XMLHttpRequest(); 
	httpRequest.open('GET', sUrl, false); 
	httpRequest.send(null); 

	var responseText = httpRequest.responseText;

	//hide all errors except error connected with the source control
	var getEls = document.getElementsByTagName('DIV');
	for (var z=0; z<getEls.length; z++) {
		if(getEls[z].id && getEls[z].id.indexOf("_error")!= -1 && getEls[z].id.indexOf(source.id) == -1) {
			//hide this element
			getEls[z].className = "error inv";
		}
		else if(getEls[z].id && getEls[z].id.indexOf("_message")!= -1 && getEls[z].id.indexOf(source.id) == -1) {
			//hide this element
			getEls[z].className = "message inv";
		}
	}

	//error: display error
	//buy: whenever payment is necessary before upgrade
	//message: display message (only when new user selects 'FREE')
	
	if (responseText.indexOf("ERROR")!=-1 || responseText.indexOf("debug")!=-1) {
		//display error message under source 
		var placeholder = document.getElementById(source.id + "_error");
		if(placeholder) {
			placeholder.className = "error";
			placeholder.innerHTML = responseText.replace("ERROR: ", "");
			placeholder.style.paddingBottom="35px";
		} else {
			alert(responseText);
		}
		
		return false;
	}
	else if (responseText.indexOf("BUY")!=-1) {
		//redirect to buy page, all parameters are already stored in session array
		window.location.replace("checkout.asp");
	}
	else if (responseText.indexOf("MESSAGE")!=-1) {
		//display welcome message
		//display error message under source 
		var placeholder = document.getElementById(source.id + "_message");
		if(placeholder) {

			//hide all errors except error connected with the source control
			var getEls = document.getElementsByTagName('DIV');
			for (var z=0; z<getEls.length; z++) {
				if(getEls[z].id && getEls[z].id.indexOf("fr1_")!= -1 && getEls[z].className == "fr1" && getEls[z].id != source.id) {
					//hide this element
					changeOpac(50, getEls[z].id);
					
				}
				else if (getEls[z].className.indexOf("button") != -1) {
					changeOpac(50, getEls[z].id);
					//nested A elements: disable
					var nested = getEls[z].getElementsByTagName("A");
					for(var j=0; j<nested.length; j++) {
						var nestedElement = nested[j];
						nestedElement.style.cursor = "default";
						nestedElement.onclick=function() {return false;};
					}

				}
			}

			placeholder.className = "message";
			placeholder.innerHTML = responseText.replace("MESSAGE: ", "");
			placeholder.style.paddingBottom="35px";
		} else {
			alert(responseText);
		}
		
		return false;
	}

	return false;

}

//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++;
		}
	}
} 


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 == 'password_complexity') {
		validationResult = validateValue('not_empty', inputElement, imageElement, spanElement, errorMessage);
		if(!validationResult) 
			return false;

		var charDigits = '0123456789';
		var charLower = 'abcdefghijklmnopqrstuvwxyz';
		var charUpper = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';

		var hasDigit = false;
		var hasLowercase = false;
		var hasUppercase = false;

		//check complexity requirements
		for (i = 0; i < elementValue.length; i++)
		{   
			var char = elementValue.charAt(i);
			hasDigit |= charDigits.indexOf(char) != -1;
			hasLowercase |= charLower.indexOf(char) != -1;
			hasUppercase |= charUpper.indexOf(char) != -1;
		}

		if(!hasDigit || !hasLowercase || !hasUppercase || elementValue.length < 8 || elementValue.length > 25) {
			validationResult = false;
			reportValidationError(inputElement, imageElement, spanElement, errorMessage == null || errorMessage == '' ? 'Complexity check failed' : errorMessage);
		}
		else {
			clearValidationError(inputElement, imageElement, spanElement, errorMessage);
		}

	}
	
	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 onChangePasswordFormSubmit(form, email) {
	var allowSubmit = false;
	
	if(!validateValue('not_empty', form.old_password, null, 'old_password_error', null))
		return false;
	if(!validateValue('password_complexity', form.new_password, null, 'new_password_error', null))
		return false;
	if(!validateValue('not_empty', form.new_password2, null, 'new_password2_error', null))
		return false;		

	if( form.new_password.value != form.new_password2.value ){
		reportValidationError(form.new_password, null, 'new_password_error', "Passwords do not match");
		reportValidationError(form.new_password2, null, 'new_password2_error', "Passwords do not match");
		return false;
	}

	var sUrl = "check_user_login.asp?Email_ID=" + email  + "&Help_PW=" + escape(form.old_password.value);
	
	var httpRequest = new XMLHttpRequest(); 
	httpRequest.open('GET', sUrl, false); 
	httpRequest.send(null); 

	var loginOK = httpRequest.responseText;
	var result = false;

	if (-1 != loginOK.indexOf("YES")) {
		result = true;
	} else if (loginOK.indexOf("TIME_EXPIRED")!=-1) {
		result = true;
	} else if ("INACTIVE" == loginOK) {
		result = true;
	} else if ("MONEY_EXPIRED" == loginOK) {	
		result = true;
	} else if ("OVER_LIMIT" == loginOK) {						
		result = true;
	} else if ("DBERROR" == loginOK) {
		reportValidationError(form.old_password, null, 'old_password_error', "Error connecting to the database");
		return false;
	} else {
		reportValidationError(form.old_password, null, 'old_password_error', "Invalid password");
		return false;
	}

	return true;

}

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;
}


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 = "";
	} 
}
