var isChanging = false;
var active = 'sales-leads';
var previous;
var pckey1 = "";

if (typeof(pckey) != "undefined") {
    pckey1 = pckey;
};


function showDetails(details) {	
		//if we're already changing, delay the call by 1 second
		if (isChanging) {
			//setTimeout("showDetails("+details+")",1000);
			return false;
		} 
		
		//give up if the user clicked the page we're already looking at
		if (details == active) return false;
		
		//fade out the currently active element
		if (document.getElementById(active))
		{
			var activeDetailsDiv = document.getElementById(active);
			new Effect.Parallel([
				new Effect.Fade(activeDetailsDiv,{duration:0.7}),
				new Effect.Move(activeDetailsDiv,{x:-1000,duration:0.5,mode:'relative'})]);
			previous = active;
		}
		
		//grab the new div and fade it in - delay of 0.5 to stop the content jumping about
		var newDetailsDiv = document.getElementById(details);
		Effect.Appear(newDetailsDiv, {duration:0.5, delay:0.5, afterFinish:function callback(obj) {changeFinished()}});
		active = details;
		//flag that a change is in progress
		isChanging = true;
}


function changeFinished() {
	//set changing flag to false
	isChanging = false;
	var previousDetailsDiv = document.getElementById(previous);
	new Effect.Move(previousDetailsDiv,{x:1000,duration:0.0,mode:'relative'});
} 


function extend(product) {
	
	extendDiv = $('extend-'+product);
	if (extendDiv.style.display=='none') {
		new Effect.SlideDown(extendDiv);
		$('extendlink-'+product).style.display='none';
	}
}

function retract(product) {
	retractDiv = $('extend-'+product);
	if (retractDiv.style.display!='none') {
		new Effect.SlideUp(retractDiv);
		$('extendlink-'+product).style.display='block';
	}

}

//********* The Amazing AJAX Address Looker Upper! *********//

function initAddressForm() {
	Field.disable($('addr2'));
	Field.disable($('town'));
	Field.disable($('county'));

	$('addr2').value = "";
	$('town').value = "";
	$('county').value = "";
	$('addr').options.length = 1;
	
	$('addr').options[0].text = '-- Enter Postcode to Automatically Fill Address --';
}

function loadAddress(transport) {
	
	var xmlRoot = loadXMLString(transport.responseText).getElementsByTagName('entries')[0];
	
	var addressList = xmlRoot.getElementsByTagName('address');

	if (!addressList.length) {
		$('addr').options[0].text = '--- No Addresses Found At Postcode '+$F('postcode')+' ---';
		return 0;	
	}

	firstAddress = xmlRoot.getElementsByTagName('address')[0];

	$('addr').options.length = 0;
	

	
	if ($('addr').length != (addressList.length+1)) {
		for (i = 0; i < addressList.length;i++)
			{
				var address = addressList[i].getElementsByTagName('addr')[0];
				var newAddress = document.createElement('option');
				newAddress.value = address.firstChild.nodeValue;
				newAddress.text = address.firstChild.nodeValue;
				$('addr').options.add(newAddress);
			}
		$('addr').selectedItem = 1;

	}
	
	var addressLine2 = addressList[0].getElementsByTagName('addr2')[0];
	if (addressLine2.firstChild) {
		$('addr2').value = addressLine2.firstChild.nodeValue;
	}
	
	var townName = addressList[0].getElementsByTagName('town')[0];
	if (townName.firstChild) {
		$('town').value = townName.firstChild.nodeValue;
	}
	
	var countyName = addressList[0].getElementsByTagName('county')[0];
	if (countyName.firstChild) {
		$('county').value = countyName.firstChild.nodeValue;
	}
}

function loadXMLString(txt) 
{
	try //Internet Explorer
	{
		xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc.async="false";
		xmlDoc.loadXML(txt);
		return(xmlDoc); 
	}
	catch(e)
	{
		try //Firefox, Mozilla, Opera, etc.
		   {
		   parser=new DOMParser();
		   xmlDoc=parser.parseFromString(txt,"text/xml");
		   return(xmlDoc);
		   }
		catch(e) {alert(e.message)}
	}
return(null);
}

function getAddress(){
	var postcode = $F('postcode').split(' ').join('');
	if (verifyPostcode()) {
		var url = '/postcodes.php';
		new Ajax.Request(url,{	method:'get', 
					parameters:'postcode='+postcode+'&key='+pckey1,
					onSuccess: loadAddress });
	}
	else initAddressForm();
	Field.focus($('postcode'));
}

function enableAddress() {
	Field.enable($('addr2'));
	Field.enable($('town'));
	Field.enable($('county'));
	$('addressmenu-cell').innerHTML = "<input type='text' name='addr' id='addr' size='50' maxlength='50' value='"+$F('addr')+"' />"
}

//Form Verification Scripts

var tickImg = '<img src="/images/tick.png" alt="Verified" />';
var crossImg = '<img src="/images/cross.png" alt="Failed Verification" />';


function verifyForm() {
	var formIsGood = true;
	
	var alertString = '';

	if (!$F('contact')) {
		alertString += 'You have not entered a contact name\n\n'
		new Effect.Highlight($('contact'), {startcolor:'#ff99ff'});
		formIsGood = false;
	}
	
	if (!verifyEmails()) {
		alertString += 'The email address you entered is invalid, or different to the verification address you entered\n\n';
		new Effect.Highlight($('email'), {startcolor:'#ff99ff'});
		new Effect.Highlight($('email2'), {startcolor:'#ff99ff'});
		Field.select($('email'))
		formIsGood = false;
	}

	if (!verifyTel()) {
		alertString += 'You have not entered a valid telephone number\n\n'
		new Effect.Highlight($('tel'), {startcolor:'#ff99ff'});
		formIsGood = false;	
	}

	if (!$F('name')) {
		alertString += 'You have not entered your company name\n\n'
		new Effect.Highlight($('name'), {startcolor:'#ff99ff'});
		formIsGood = false;
	}

	if (!verifyPostcode()) {
		alertString += 'You have not entered a valid address\n\n'
		new Effect.Highlight($('postcode'), {startcolor:'#ff99ff'});
		formIsGood = false;
	}	
	if (!$F('addr')) {
		alertString += 'You have not entered your address\n\n'
		new Effect.Highlight($('addr'), {startcolor:'#ff99ff'});
		formIsGood = false;
	}
	
	if (!formIsGood) {
		alert(alertString)
	}
	
	else {
		enableAddress();
	}
	
	return formIsGood;
}

function verifyTel() {
	var tel = $F('tel');
	var telNoSpaces = tel.split(' ').join('');
	
	var re = /^0[1278][0-9]{8,9}$/;
	if (re.test(telNoSpaces)) {
		$('tel-verified').innerHTML=tickImg;
		return true;		
	}
	$('tel-verified').innerHTML=crossImg;
	return false
	
}

function verifyEmails() {
	var email1 = $F('email');
	var email2 = $F('email2');
	
	
	var re = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/;
	if (re.test(email1)) {
		$('email-verified').innerHTML=tickImg;
		if (email1 == email2) {
			$('email2-verified').innerHTML=tickImg;
			return true;
		} 		
		else {
			$('email2-verified').innerHTML=crossImg;
			return false;
		}
	}
	else {
		$('email-verified').innerHTML=crossImg;	
		$('email2-verified').innerHTML='';
		return false;
	}
}

function verifyPostcode() {

	var re = /^[A-Za-z]{1,2}[0-9]{1,2}[A-Za-z]?[0-9][A-Za-z]{2}$/
	var postcode = $F('postcode').split(' ').join('');
	if (re.test(postcode)) {
		$('postcode-verified').innerHTML=tickImg;
		return 1;		
	}
	else {
		$('postcode-verified').innerHTML=crossImg;
		return 0;
	}
}

//gMenu!

function unfurl(block){
		mbid = 'menu_block_container' + block;
		mbi = $('menu_block'+block);
		
		var alreadyOpen = false;
		
		openBlocks = document.getElementsByClassName('menu-open')
		
		for (i=0;i<openBlocks.length;i++) {
			if (openBlocks[i] == mbi) {
				alreadyOpen = true;
			}
			new Effect.SlideUp(openBlocks[i],{duration:0.3});
			openBlocks[i].removeClassName('menu-open');
		}
		
		$(mbid).style.display="block";
		
		if (!alreadyOpen) {
			new Effect.SlideDown(mbi,{duration:0.3});
			mbi.addClassName('menu-open');
		}
}

//TwitterScroll()

function twitterScroll() {
	new Effect.Move($('twitter_update_list'), {x:0, y:30, mode:'relative'})
}

function scrollTicker() {
	new Effect.Move($('ticker'), {x:-10, y:0, mode:'relative', duration:0.6});
	setTimeout('scrollTicker()',300);
	
}


//IT Support Form Validation

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_validateForm() { //v4.0
  var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
  for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);
    if (val) { nm=val.name; if ((val=val.value)!="") {
      if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
        if (p<1 || p==(val.length-1)) errors+='- '+nm+' must contain an e-mail address.\n';
      } else if (test!='R') { num = parseFloat(val);
        if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';
        if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
          min=test.substring(8,p); max=test.substring(p+1);
          if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
    } } } else if (test.charAt(0) == 'R') errors += '- '+nm+' is required.\n'; }
  } if (errors) alert('The following error(s) occurred:\n'+errors);
  document.MM_returnValue = (errors == '');
}






