/**
 * @author Dan Hawkins
 * @author Jay Phillips
 * @copyright Pointnet Solutions 2006
 */

var stime;
var map;

dojo.require("dojo.validate.*");

function initFooter(){
	setTimeout("Effect.Appear('footerLinks',{duration:1.5})",1000);
}

function smoothToTop(){
	var top = ss_getCurrentYPos();
	if(stime != null && stime != undefined){
		clearTimeout(stime);
	}
	if(top > 0){
		iter = 0 - (top/10);
		ss_scrollWindow(iter,0,null)
		stime = setTimeout("smoothToTop()",10);
	}
}

function closeDiv(divid){
	Effect.Fade(divid);
	if(xajax.$('sites') != undefined && xajax.$('sites') != null){
		xajax.$('sites').style.visibility = 'visible';
	}
}

function emailSent(divid){
	message = "<div style=\"text-align:center;width:100%;margin-top:100px;\"><p>Thank You.</p><p>Your email has been sent.</p><br />";
	message += "<input type=\"button\" id=\"close\" name=\"close\" value=\"Close\" onclick=\"closeDiv('";
	message += divid;
	message += "')\" /></div>";
	document.getElementById(divid).innerHTML = message;
}

// validate registration form

function validateAndSubmitRegForm() {
	retError = "";
	var profile = {
		// required fields
		required: ["firstname", "surname", "email", "pass", "pass_c", "terms"],
		// validated fields
		constraints: {
			firstname: [dojo.validate.isText],
			surname: [dojo.validate.isText], 
			email: [dojo.validate.isEmailAddress]
		},
		// check passwords match
		confirm: {
			pass_c : "pass"
		}
	};

	var results = dojo.validate.check(dojo.byId('registerForm'),profile);
	var humanRead = {
		pass: "Password",
		pass_c: "Password confirmation",
		email: "Email",
		firstname: "Name",
		surname: "Surname",
		terms: "Agreeing to the Terms of Use"
	}
	retMissing = "";
	var missing = results.getMissing();
	for(i=0;i<missing.length;i++){
		retMissing += humanRead[missing[i]] + " is required<br />";
	}
	if(results.isInvalid('email')) {
		retMissing += "Please enter a valid email address<br />";
	}
	if(results.isInvalid('pass_c')) {
		retMissing += "Passwords do not match<br />";
	}
	if(retMissing != undefined && retMissing.length > 0) {
		dojo.byId('warning').innerHTML = retMissing;
	} else {
		xajax_addNewUser(xajax.getFormValues('registerForm'));
	}
}

// clear warning messages on form clear button

function clearMsgs() {
	dojo.byId('warning').innerHTML = "";
}


// validate and submit user account details form

function validateAndSubmitUserDetails(classid) {
	var profile = {
		// required fields
		required: ["firstname", "surname", "email"],
		// validated fields
		constraints: {
			firstname: [dojo.validate.isText],
			surname: [dojo.validate.isText], 
			email: [dojo.validate.isEmailAddress],
			phone: [dojo.validate.uk.isPhoneNumber],
			mobile: [dojo.validate.uk.isPhoneNumber]
		}
	};

	var results = dojo.validate.check(dojo.byId('updateUser'),profile);
	var humanRead = {
		email: "Email",
		firstname: "Name",
		surname: "Surname"
	}
	retMissing = "";
	var missing = results.getMissing();
	for(i=0;i<missing.length;i++){
		retMissing += humanRead[missing[i]] + " is required<br />";
	}
	if(results.isInvalid('email')) {
		retMissing += "Please enter a valid email address<br />";
	}
	if(results.isInvalid('phone')) {
		retMissing += "Please enter a valid phone number<br />";
	}
	if(results.isInvalid('mobile')) {
		retMissing += "Please enter a valid mobile number<br />";
	}
	if(retMissing != undefined && retMissing.length > 0) {
		dojo.byId('warning').innerHTML = retMissing;
	} else {
		xajax_classMethodS(classid,'iSaveUser',xajax.getFormValues('updateUser'));
		dojo.byId('warning').innerHTML = "Thank you. Your details were successfully updated";
	}
	
}

// validate and submit the change password form

function validateChangePass(classid) {
	var profile = {
		// required fields
		required: ["currentPass", "newPass", "confPass"],
		// validated fields
		confirm: {
			confPass : "newPass"
		}
	};
	var results = dojo.validate.check(dojo.byId('changePass'),profile);
	var humanRead = {
		currentPass: "Current Password",
		newPass: "New Password",
		confPass: "Confirm New Password"
	}
	retMissing = "";
	var missing = results.getMissing();
	for(i=0;i<missing.length;i++){
		retMissing += humanRead[missing[i]] + " is required<br />";
	}
	if(results.isInvalid('confPass')) {
		retMissing += "Passwords do not match<br />";
	}
	if(retMissing != undefined && retMissing.length > 0) {
		dojo.byId('passMsg').innerHTML = retMissing;
	} else {
		xajax_classMethodS(classid,'updatePass',xajax.getFormValues('changePass'));
		dojo.byId('passMsg').innerHTML = "";
		dojo.byId('currentPass').value = "";
		dojo.byId('newPass').value = "";
		dojo.byId('confPass').value = "";
	}
	
}

// validate Email to Friend Form

function validateEmailToFriend(classid) {
	var profile = {
		// required fields
		required: ["toName", "toEmail", "fromName", "fromEmail"],
		// validated fields
		constraints: {
			toName: [dojo.validate.isText],
			fromName: [dojo.validate.isText], 
			toEmail: [dojo.validate.isEmailAddress],
			fromEmail: [dojo.validate.isEmailAddress]
		}
	};

	var results = dojo.validate.check(dojo.byId('emailFriend'),profile);
	var humanRead = {
		toName: "To (name)",
		toEmail: "To (email)",
		fromName: "From (name)",
		fromEmail: "From (email)"
	}
	retMissing = "";
	var missing = results.getMissing();
	for(i=0;i<missing.length;i++){
		retMissing += humanRead[missing[i]] + " is required<br />";
	}
	if(results.isInvalid('toEmail') || results.isInvalid('fromEmail')) {
		retMissing += "Please use a valid email address<br />";
	}
	if(retMissing != undefined && retMissing.length > 0) {
		dojo.byId('emailFriendMsg').innerHTML = retMissing;
	} else {
		xajax_classMethodS(classid,'sendEmail',xajax.getFormValues('emailFriend'));
		dojo.byId('emailFriendMsg').innerHTML = "";
		emailSent('envelope');
	}
}

// Validate ARRANGE VIEWING form
function validateViewingForm(classid) {
	var profile = {
		// required fields
		required: ["name", "tel", "email"],
		// validated fields
		constraints: {
			tel: [dojo.validate.uk.isPhoneNumber],
			email: [dojo.validate.isEmailAddress]
		}
	};

	var results = dojo.validate.check(dojo.byId('arrangeViewing'),profile);
	var humanRead = {
		name: "Name",
		tel: "Telephone",
		email: "Email"
	}
	retMissing = "";
	var missing = results.getMissing();
	for(i=0;i<missing.length;i++){
		retMissing += humanRead[missing[i]] + " is required. ";
	}
	if(results.isInvalid('tel')) {
		retMissing += "Please enter a valid telephone number. ";
	}
	if(results.isInvalid('email')) {
		retMissing += "Please enter a valid email address. ";
	}
	if(retMissing != undefined && retMissing.length > 0) {
		dojo.byId('viewMsg').innerHTML = retMissing;
	} else {
		xajax_classMethodS(classid,'sendEmail',xajax.getFormValues('arrangeViewing'));
		dojo.byId('viewMsg').innerHTML = "";
		emailSent('viewing');
	}
}

// validate password reminder form

function validateAndSubmitReminder() {
	retError = "";
	var profile = {
		// required fields
		required: ["email"],
		// validated fields
		constraints: {
			email: [dojo.validate.isEmailAddress]
		}
	};

	var results = dojo.validate.check(dojo.byId('reminderForm'),profile);
	var humanRead = {
		email: "Email Address"
	}
	retMissing = "";
	var missing = results.getMissing();
	for(i=0;i<missing.length;i++){
		retMissing += humanRead[missing[i]] + " is required<br />";
	}
	if(results.isInvalid('email')) {
		retMissing += "Please enter a valid email address<br />";
	}
	if(retMissing != undefined && retMissing.length > 0) {
		dojo.byId('warning').innerHTML = retMissing;
	} else {
		xajax_sendReminder(xajax.getFormValues('reminderForm'));
	}
	
}

function checkUser(username) {
	if(username == '') {
 		document.getElementById('username').value = "username";
 	}
 }

function checkPass(password) {
	if(password == '') {
 		document.getElementById('password').value = "password";
 	}
} 

function entEsc(e) {
	var keynum;
	if(window.event) { // IE
		keynum = e.keyCode;
	} else if(e.which) { // Netscape/Firefox/Opera
		keynum = e.which;
	}
	if(keynum && keynum == 13) {
		blur();
		// alert('Enter key was pressed!');
	}
	if(keynum && keynum == 27) {
		blur();
		// alert('Esc key was pressed!');
	}
}

function setLoading(elemid){
	document.getElementById(elemid).src = "images/ajax-loader.gif";
}


/*********************************************************************
 * Large Image Viewing stuff
 *********************************************************************/

var blackOut = 0;

function handleScroll() {
	_scrollTop = getScrollTop();
	_clientHeight = getClientHeight();
	_clientWidth = getClientWidth();
	
	vmidPoint = _scrollTop + (_clientHeight / 2);
	hmidPoint = _clientWidth / 2;
	topPoint = vmidPoint - 240;
	leftPoint = hmidPoint - 255;
	
	$('viewing').style.top = topPoint + 'px';
	$('envelope').style.top = topPoint + 'px';
	
	if(blackOut == 1) {
		$('blackOut').style.top = _scrollTop + 'px';
		$('blackOut').style.height = _clientHeight + 'px';
		$('blackOut').style.width = _clientWidth + 'px';
		
		$('largeImg').style.top = topPoint + 'px';
		$('largeImg').style.left = leftPoint + 'px';
	}
}

window.onscroll = handleScroll;
window.onresize = handleScroll;

function showLargeImg() {
	blackOut = 1;
	handleScroll();
	Effect.Appear('blackOut',{to:0.80});
	Effect.Appear('largeImg',{duration: 2});
}

function closeLargeImg() {
	Effect.Fade('blackOut');
	blackOut = 0;
	Effect.Fade('largeImg');
	//retHTML = "&nbsp;";
	//setTimeout("dojo.byId('largeImg').innerHTML = retHTML",1500);
}