window.addEvent("domready", function(){
  if($$('.help_tip').length > 0) setupTips();
  if($('domain_check')) setupDomainCheck();
  if($('username_check')) setupUsernameCheck();
  if($('bba-content-area-carousel')) setupCarousel();

  if($('alltopic')) setupAllTopic();
  if($('allnewsletter')) setupAllNewsletter();
});


var carousel_buttons, carousel_containers;
var carousel_button_off = "/bdm/images/bullet_off.gif";
var carousel_button_on = "/bdm/images/bullet_on.gif";
var carousel_delay = 6500;
var carousel_current = 1;
var carousel_timer;

function validateString(field, msg, min, max) {
	if (!field.value || field.value.length < min || 
		field.value.max > max) {
		alert(msg);
		field.focus();
		field.select();
		return false;
	}
	return true;
}

function validateEmailField(email, msg) {
	var re_mail = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z])+$/;
	if (!re_mail.test(email.value)) {
		alert(msg);
		email.focus();
		email.select();
		return false;
	}
	return true;
}

function validateEmailsSame(emaila, emailb, msg) {
	if (emaila.value!=emailb.value) {
		alert(msg);
		emailb.focus();
		emailb.select();
		return false;
	}
	return true;
}

function checkContactUsForm(){

	var error = false;

	if(!validateString($('uname'), "You must your name", 0, 255)) error = true;

	if(!error){
		if(!validateEmailField($('email'), "You must enter a valid email address")) error = true;
	}
	if(!error){
		if(!validateString($('comment'), "You must enter a comment", 0, 255)) error = true;
	}

	return !error;
}

function checkChangePasswordForm(){

	var error = false;

	if(!validateString($('old_password'), "You must enter your current password", 0, 100)) error = true;

	if(!error){
		if(!validateString($('password'), "You must enter a new password of at least 5 characters", 5, 100)) error = true;
	}
	if(!error){
		if(!validateEmailsSame($('password'), $('confirm'), "The new passwords entered do not match")) error = true;
	}

	return !error;
}

function checkProfileForm(){

	var error = false;

	if($('password').value != ""){
		if(!validateString($('password'), "You must enter a password of at least 5 characters", 5, 100)) error = true;

		if(!error){
			if(!validateEmailsSame($('password'), $('confirm'), "The passwords entered do not match")) error = true;
		}
	}

	if(!error){
		if(!validateString($('firstname'), "You must enter your firstname", 0, 255)) error = true;
	}
	if(!error){
		if(!validateString($('lastname'), "You must enter your last name", 0, 255)) error = true;
	}
	if(!error){
		if(!validateString($('jobtitle'), "You must enter your job title", 0, 255)) error = true;
	}
	if(!error){
		if(!validateString($('address1'), "You must enter an address", 0, 255)) error = true;
	}
	if(!error){
		if(!validateString($('town'), "You must your town", 0, 255)) error = true;
	}
	if(!error){
		if(!validateString($('postcode'), "You must your postcode", 0, 255)) error = true;
	}
	if(!error){
		if(!validateString($('direct'), "You must enter your direct dial telephone number", 0, 255)) error = true;
	}

	if(!error){
		var lchecks = $$('.leftChecks');
		for(var i = 0; i < lchecks.length; i++){
			lchecks[i].disabled = false;
		}
		var rchecks = $$('.rightChecks');
		for(var i = 0; i < rchecks .length; i++){
			rchecks[i].disabled = false;
		}
	}

	return !error;
}

function checkRegisterForm(){

	var error = false;

	if(!validateString($('reg_password'), "You must enter a password of at least 5 characters", 5, 100)) error = true;

	if(!error){
		if(!validateEmailsSame($('reg_password'), $('confirm'), "The passwords entered do not match")) error = true;
	}
	if(!error){
		if(!validateString($('firstname'), "You must enter your firstname", 0, 255)) error = true;
	}
	if(!error){
		if(!validateString($('lastname'), "You must enter your last name", 0, 255)) error = true;
	}
	if(!error){
		if(!validateString($('jobtitle'), "You must enter your job title", 0, 255)) error = true;
	}
	if(!error){
		if(!validateString($('address1'), "You must enter an address", 0, 255)) error = true;
	}
	if(!error){
		if(!validateString($('town'), "You must your town", 0, 255)) error = true;
	}
	if(!error){
		if(!validateString($('postcode'), "You must your postcode", 0, 255)) error = true;
	}
	if(!error){
		if(!validateString($('direct'), "You must enter your direct dial telephone number", 0, 255)) error = true;
	}

	if(!error){
		var lchecks = $$('.leftChecks');
		for(var i = 0; i < lchecks.length; i++){
			lchecks[i].disabled = false;
		}
		var rchecks = $$('.rightChecks');
		for(var i = 0; i < rchecks .length; i++){
			rchecks[i].disabled = false;
		}
	}

	return !error;
}

function setupCarousel(){
  carousel_buttons = $$('.carousel_button');
  carousel_containers = $$('.carousel_content');
  carousel_containers.fade("hide");
  carousel_containers[0].fade("in");
  for(var i = 0; i < carousel_buttons.length; i++) carousel_buttons[i].addEvent("click", function(){ changeCarousel(this.id); return false; });
  var carousel_timer = rotateCarousel.periodical(carousel_delay);
}
function rotateCarousel(){
  carousel_current++;
  if(carousel_current > carousel_containers.length) carousel_current = 1;
  changeCarousel("carousel_related_"+carousel_current);
}
function changeCarousel(button_id){
  for(var i = 0; i < carousel_containers.length; i++) carousel_containers[i].fade("hide"); 
  for(var i = 0; i < carousel_buttons.length; i++){
    carousel_buttons[i].removeClass("on").addClass("off");
    carousel_buttons[i].getElement("img").set("src", carousel_button_off );
  }
  carousel_current = button_id.split("_")[2];
  $('carousel_container_'+button_id.split("_")[2]).fade("in");
  $(button_id).removeClass("off").addClass("on");
  $(button_id).getElement("img").set("src", carousel_button_on);
}

var tocheck, userCheck;

function disableInputs(bool){
  var inputs = $$('.domain_enable');
  for(var i = 0; i < inputs.length; i++){
    inputs[i].disabled = bool;
  }
}


function setupAllTopic(){
	$("alltopic").addEvent("click", function(){selectAllLeft(this.checked);});

	// Click all?
	if($("alltopic").checked) return;

	var checks = $$('.leftChecks');
	var checkit = true;
	for(var i = 0; i < checks.length; i++){
		if(!checks[i].checked){
			checkit = false;
			break;
		}
	}

	if(checkit) $("alltopic").click();
}

function setupAllNewsletter(){
	$("allnewsletter").addEvent("click", function(){selectAllRight(this.checked);});

	// Click all?
	if($("allnewsletter").checked) return;

	var checks = $$('.rightChecks');
	var checkit = true;
	for(var i = 0; i < checks.length; i++){
		if(!checks[i].checked){
			checkit = false;
			break;
		}
	}

	if(checkit) $("allnewsletter").click();
}

function selectAllLeft(bool){
  var checks = $$('.leftChecks');
  for(var i = 0; i < checks.length; i++){
    checks[i].checked = bool;
    checks[i].disabled = bool;
  }
}
function selectAllRight(bool){
  var checks = $$('.rightChecks');
  for(var i = 0; i < checks .length; i++){
    checks[i].checked = bool;
    checks[i].disabled = bool;
  }
}

function setupDomainCheck(){
  disableInputs(true);

  tocheck = $('domain_check');
  tocheck.addEvent("keyup", checkDomain);
}

function setupUsernameCheck(){
  userCheck = $('user');
  userCheck.addEvent("keyup", checkUsername);
}

function checkDomain(){
  if(validateEmail(tocheck.value)){
    var myRequest = new Request({url: '/handler/checkdomain', method: 'post', onSuccess: function(responseText, responseXML) {
        if(responseText == "1"){ tocheck.setStyle("border-color", "green"); disableInputs(false); $('domain_na').setStyle("display", "none"); $('domain_taken').setStyle("display", "none"); }
        else if(responseText == "2"){ tocheck.setStyle("border-color", "red"); disableInputs(true); $('domain_na').setStyle("display", "none"); $('domain_taken').setStyle("display", "block"); }
        else{ tocheck.setStyle("border-color", "red"); disableInputs(true); $('domain_na').setStyle("display", "block"); $('domain_taken').setStyle("display", "none"); }
    }}).send("e="+tocheck.value);
  } else {
    disableInputs(true);
    $('domain_na').setStyle("display", "none");
    tocheck.setStyle("border-color", "#9E9E9E"); 
  }
}

function checkUsername(){
    if($('user_original')){
	if(userCheck.value == $('user_original').value){
		$('username_check').setStyle("display", "block");
		$('button_placeholder').setStyle("display", "none");
		userCheck.setStyle("border-color", "#9E9E9E"); 
		return;
	}
    }

    if(userCheck.value.length < 4){
	$('username_check').setStyle("display", "none");
	$('button_placeholder').setStyle("display", "block");
	userCheck.setStyle("border-color", "#9E9E9E"); 
	 return;
    }
    var myRequest = new Request({url: '/handler/checkusername', method: 'post', onSuccess: function(responseText, responseXML) {
        if(responseText == "1"){
		$('username_check').setStyle("display", "block");
		userCheck.setStyle("border-color", "green");
		$('username_taken').setStyle("display", "none");
		$('button_placeholder').setStyle("display", "none");
	}
        else{
		$('username_check').setStyle("display", "none");
		userCheck.setStyle("border-color", "red");
		$('username_taken').setStyle("display", "block");
		$('button_placeholder').setStyle("display", "block");
	}
    }}).send("u="+userCheck.value);
}


function validateEmail(address) {
  var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
  if(reg.test(address) == false) return false;
  return true;
}

function setupTips(){
 var tips = $$('.help_tip');
 var myTips = new Tips(tips);
  myTips.addEvent('show', function(tip, el){
    tip.fade('in');
  });
  myTips.addEvent('hide', function(tip, el){
    tip.fade('out');
  });
  for(var i = 0; i < tips.length; i++) tips[i].addEvent("click", function(){ return false; });
}

function bookmark(){
  var url = window.location; 
  var title = document.getElementsByTagName('title')[0].innerHTML;
  if ((navigator.appName == "Microsoft Internet Explorer") && (parseInt(navigator.appVersion) >= 4)) window.external.AddFavorite(url,title);
  else if (navigator.appName == "Netscape") window.sidebar.addPanel(title,url,"");
  else alert("Press CTRL-D (Netscape) or CTRL-T (Opera) to bookmark");
}

