// functions for site

/* we can remove these excessive comments when the site goes live */
jQuery.noConflict(); // this is necessary when using jQuery with Prototype; all jQuery must be
					// placed in the wrapper at the bottom of the page

function HideContent(d) {
	document.getElementById(d).style.display = "none";
}

function ShowContent(d) {
	document.getElementById(d).style.display = "block";
}

function ReverseDisplay(d) {
	if (document.getElementById(d).style.display = "none") {
		document.getElementById(d).style.display = "block";
	}
	else { document.getElementById(d).style.display = "none"; }
}

function swapimage(img_name, img_src, div_name, div_id) {
	if (document.images) {
		document[img_name].src = img_src
		for (looper = 1; looper < 4; looper++) {
			if (looper == div_id) {
				document.getElementById(div_name + looper).style.backgroundImage = "url(/images/static/" + div_name + "backon.jpg)";
				document.getElementById(div_name + looper).style.color = eval(div_name + 'texton');
				document.getElementById(div_name + looper).style.fontWeight = '900';
			}
			else {
				document.getElementById(div_name + looper).style.backgroundImage = "url(/images/static/" + div_name + "backoff.jpg)";
				document.getElementById(div_name + looper).style.color = eval(div_name + 'text');
				document.getElementById(div_name + looper).style.fontWeight = '400';
			}
		}
	}
}

function swaplayer(img_name, div_id, div_name, colour) {
	changingBG = true;
	layer_name = 'featurenav';
	if (div_name == null) {
		changingBG = false;
	}
	for (looper = 1; looper < 5; looper++) {
		if (looper == div_id) {
			document.getElementById(img_name + looper).style.display = 'block';
			if (changingBG == true) { document.getElementById(div_name + "nav" + looper).style.backgroundImage = "url(/images/static/" + div_name + colour + looper + "backon.jpg)"; }
		}
		else {
			document.getElementById(img_name + looper).style.display = 'none';
			if (changingBG == true) { document.getElementById(div_name + "nav" + looper).style.backgroundImage = "url(/images/static/" + div_name + colour + looper + "backoff.jpg)"; }
		}
		document.getElementById(layer_name + looper).style.padding = '0';
	}
	document.getElementById(layer_name + div_id).style.padding = '0 0 3px 0';
}

function swaplayerHP(img_name, div_id, div_name, colour) {
	changingBG = true;
	layer_name = 'featurenav';
	if (div_name == null) {
		changingBG = false;
	}
	for (looper = 1; looper < 5; looper++) {
		//alert(div_name + "nav" + looper + "hp");
		if (looper == div_id) {
			document.getElementById(img_name + looper).style.display = 'block';
			if (changingBG == true) {
				document.getElementById("featurenav" + looper + "hp").style.backgroundImage = "url(/images/static/" + "homepage" + colour + looper + "backon.jpg)";
			}
		}
		else {
			document.getElementById(img_name + looper).style.display = 'none';
			if (changingBG == true) {
				//document.getElementById("featurenav" + looper + "hp").style.backgroundImage = "url(/images/static/" + "homepage" + colour + looper + "backoff.jpg)";
			}
			//alert(div_name + "nav" + looper + "hp\r\nfeaturenav" + looper + "hp");
		}
		document.getElementById(layer_name + looper + "hp").style.padding = '0';
	}
	document.getElementById(layer_name + div_id + "hp").style.padding = '0 0 3px 0';
}

function setHome() {
	theURL = document.location.href
	if (document.all) {
		document.body.style.behavior = 'url(#default#homepage)';
		document.body.setHomePage(theURL);

	}
	else if (window.sidebar) {
		if (window.netscape) {
			try {
				netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
			}
			catch (e) {
				alert("this action was aviod by your browser,if you want to enable,please enter about:config in your address line,and change the value of signed.applets.codebase_principal_support to true");
			}
		}
		var prefs = Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefBranch);
		prefs.setCharPref('browser.startup.homepage', theURL);
	}
	alert("Homepage changed");
}

function clearField(fieldID, origValue) {
	document.getElementById(fieldID).style.color = '#000';
	if (document.getElementById(fieldID).value == origValue) {
		document.getElementById(fieldID).value = '';
	}
	else {
		document.getElementById(fieldID).style.color = '#000';
	}
}

function fillField(fieldID, origValue) {
	if (document.getElementById(fieldID).value.length < 1) {
		document.getElementById(fieldID).value = origValue;
		document.getElementById(fieldID).style.color = '#999';
	}
}

function showSubMenu(name, div, id, site) {
	var id = id
	tabName = 'nav' + id;
	// wipe all menu on states first - assume 1-9 nav items change here if more or less
  	for (looper = 2; looper < sectionitems; looper++) {
  	tabNameall = 'nav' + looper;
  	document.getElementById(tabNameall).className = '';
  	}
	if (document.getElementById(tabName).className != 'current') {
		document.getElementById(tabName).className = 'selectSection';
	}
	   if (id != sectionnosub1 && id != sectionnosub2 && id != sectionnosub3 && id != sectionnosub4 && id != sectionnosub5 && id != sectionnosub6 && id != sectionnosub7) {
    		document.getElementById(div).style.display = 'block';
    		ajaxy(name, 'subMenu', id, site);
    		return false;
    	}
		else {
    		document.getElementById(div).style.display = 'none';
    	}
}

function overMenu(div,id) {
	document.getElementById(div).style.display = 'block';
}

function hideLayer(div, outSub, id) {
	if (outSub == true) { overSubMenu == false }
	if (overSubMenu == false) {
		document.getElementById(div).style.display = 'none';
		return false;
	} else {
		document.getElementById(div).style.display = 'block';
	}
}

function HideContent(d) {
	document.getElementById(d).style.display = "none";
}

function ShowContent(d) {
	document.getElementById(d).style.display = "block";
}

function ReverseDisplay(d) {
	if (document.getElementById(d).style.display == "none") {
		document.getElementById(d).style.display = "block";
	}
	else { document.getElementById(d).style.display = "none"; }
}

// AJAXy submenu stuff
function ajaxy(url, target, id, site) {

	if (window.XMLHttpRequest) {
		req = new XMLHttpRequest();
	} else if (window.ActiveXObject) {
		req = new ActiveXObject("Microsoft.XMLHTTP");
	}
	if (req != undefined) {
		url = site + "/submenu/" + url
		req.onreadystatechange = function() { ajaxyDone(url, target); };
		req.open("get", url, true);
		req.send("");
	}
}

function ajaxyDone(url, target) {
	if (req.readyState == 4) { // only if req is "loaded"
		if (req.status == 200) { // only if "OK"
			document.getElementById(target).innerHTML = req.responseText;
		} else {
			document.getElementById(target).innerHTML = " ajaxy Error:\n" + req.status + "\n" + req.statusText;
		}
	}
}

function oc(a) {
	var o = {};
	for (var i = 0; i < a.length; i++) {
		o[a[i]] = '';
	}
	return o;
}

function init() {
	overSubMenu = false;
	outSub = false;
	var dontDoSub = new Array("3", "12");
	ReverseDisplay('Main-Ajax-box');
}

function showdets(whichLayer, dir) {

	var elem, vis;
	if (document.getElementById) // this is the way the standards work
		elem = document.getElementById(whichLayer);
	else if (document.all) // this is the way old msie versions work
		elem = document.all[whichLayer];
	else if (document.layers) // this is the way nn4 works
		elem = document.layers[whichLayer];
	vis = elem.style;

	if (vis.display == '' && elem.offsetWidth != undefined && elem.offsetHeight != undefined)
		vis.display = (elem.offsetWidth != 0 && elem.offsetHeight != 0) ? 'block' : 'none';
	vis.display = (vis.display == '' || vis.display == 'block') ? 'none' : 'block';
}

function revealAll() {
	for (i = 1; i <= 100; i = i + 1) {
		thisLayer = 'dets' + i;
		try {
			showdets(thisLayer, 'in');

		}
		catch (e) {

		}
	}
}

function ChecksignupForm()
{errorfound = false;
	if (document.signupform.firstname.value == "")
	{document.getElementById('firstname').innerHTML = 'firstname error';
		errorfound = true}
		else
			{document.getElementById('surname').innerHTML = '';}
	if (document.signupform.surname.value == "")
	{document.getElementById('surnameerror').innerHTML = 'surname error';
		errorfound = true}
		else
			{document.getElementById('nickname').innerHTML = '';}
	if (document.signupform.nickname.value == "")
	{document.getElementById('nicknameerror').innerHTML = 'nickname error';
		errorfound = true}
		else
			{document.getElementById('postcode').innerHTML = '';}
	if (document.signupform.postcode.value == "")
	{document.getElementById('postcodeerror').innerHTML = 'postcode error';
		errorfound = true}
		else
			{document.getElementById('passwordx').innerHTML = '';}
	if (document.signupform.passwordx.value.length < 2)
	{document.getElementById('passwordxerror').innerHTML = 'password error';
		errorfound = true}
		else
			{document.getElementById('email').innerHTML = '';}
	if (document.signupform.email.value != document.signupform.email2.value)
    {document.getElementById('email2error').innerHTML = 'emails dont match';
		errorfound = true}
		else
			{document.getElementById('email2').innerHTML = '';}
	if (document.signupform.email.value.indexOf ('@',0) == -1 || document.signupform.email.value.indexOf ('.',0) == -1)
    {document.getElementById('emailerror').innerHTML = ' email error';
		errorfound = true}
		else
			{document.getElementById('emailerror').innerHTML = '';}
  if (errorfound) 
    return false;
	   else
		  return true;
}

function Checkpasswordreminderform() {
	errorfound = false;
	
	if (document.passwordreminderform.email.value.indexOf ('@',0) == -1 || document.passwordreminderform.email.value.indexOf ('.',0) == -1)
    {document.getElementById('emailerror').innerHTML = ' email error';
		errorfound = true}
		else
			{document.getElementById('emailerror').innerHTML = '';}
  if (errorfound) 
    return false;
	   else
		  return true;
}



function makeContentBigger() {
	document.getElementById('articletable').style.fontSize = '150%';
}

function makeContentSmaller() {
	document.getElementById('theArticleHolder').style.fontSize='75%';
}

function Checkuserdetailsform() {
{errorfound = false;
	if (document.userdetailsform.firstname.value == "")
	{document.getElementById('firstnameerror').innerHTML = 'firstname error';
		errorfound = true}
		else
			{document.getElementById('firstnameerror').innerHTML = '';}
	if (document.userdetailsform.surname.value == "")
	{document.getElementById('surnameerror').innerHTML = 'surname error';
		errorfound = true}
		else
			{document.getElementById('surnameerror').innerHTML = '';}
	if (document.userdetailsform.nickname.value == "")
	{document.getElementById('nicknameerror').innerHTML = 'nickname error';
		errorfound = true}
		else
			{document.getElementById('nicknameerror').innerHTML = '';}
	if (document.userdetailsform.postcode.value == "")
	{document.getElementById('postcodeerror').innerHTML = 'postcode error';
		errorfound = true}
		else
			{document.getElementById('postcodeerror').innerHTML = '';}
	if (document.userdetailsform.passwordx.value.length < 2)
	{document.getElementById('passwordxerror').innerHTML = 'password error';
		errorfound = true}
		else
			{document.getElementById('passwordxerror').innerHTML = '';}
	if (document.userdetailsform.email.value.indexOf ('@',0) == -1 || document.userdetailsform.email.value.indexOf ('.',0) == -1)
    {document.getElementById('emailerror').innerHTML = ' email error';
		errorfound = true}
		else
			{document.getElementById('emailerror').innerHTML = '';}
  if (errorfound) 
    return false;
	   else
		  return true;
}
}

function pause(seconds) {
	var milliseconds = seconds * 100;
	var dt = new Date();
	while ((new Date()) - dt <= milliseconds) { /* Do nothing */ }
}

/* jQuery stuff for signup, edit details, etc. */


jQuery(function($) {

	$("#login_username_field").val("email address");
	$("#login_password_field").val("password");

	// some triggers
	$("a#rantsignup, a#compsignup").click(function(){
		$("a#show_signup").click();
	});
	
	$("a#rantlogin").click(function(){
		alert("Enter your email address and password in the fields provided at the top of the page.");
	});

	$("form#loginform").submit(function(){
		sendloginform(document.getElementById('loginform'), 'mainheader_top_left');
		return false;
	});

	// when a user clicks on the sign up link ...
	$("a#show_signup").click(function(){
		// load the sign up form into the ajax box
		$("#Main-Ajax-box")
			.load("/ajaxwrapper.asp?action=GetSignupForm", [], function(){
				/* this function is called once the sign up form has been loaded.
				 it finds the close box link and applies a function to it which
				 hides the ajax box when the button is clicked */
				$("#close_ajax").click(function(){
					$("#Main-Ajax-box").hide();
				});
				// let's make the DOB submission containers act nice
				$("[name=dobdd],[name=dobmm],[name=dobyyyy]").click(function() {
					if($(this).val() == "DD" || $(this).val() == "MM" || $(this).val() == "YYYY") {
						$(this).val("");
					}
				});
				// also we add the form submit stuff
				$("img#submitx").click(function(){
					var submit = true;
					var additional_info = '';
					// check not empty
					$('input.formfield').removeClass('redo')
						.not('[name=workpostcode]').each(function(){
						if($(this).val() == '') {
							$(this).addClass('redo');
							submit = false;
						}
					}).end()
					.filter("[name=dobdd],[name=dobmm],[name=dobyyyy]").each(function(){
							if(! /^[0-9]+$/.match($(this).val())) {
								$(this).addClass('redo');
								submit = false;
							}
						});

					var select_title = $('#title');

					if (select_title.attr('selectedIndex') > 0) {
						select_title.removeClass('redo');
					} else {
						select_title.addClass('redo');
						submit = false;
					}

					if($("input[name=email]").val() != '' && $("input[name=email]").val() != $("input[name=email2]").val()) {
						$("input[name=email],input[name=email2]").addClass('redo');
						additional_info += ' The e-mail addresses you provided did not match.';
					}
					
					if(submit) {
						sendajaxformwithdiv(document.getElementById('signupform'));
					} else {
						alert('You have not filled in all the required fields.' + additional_info);
					}
				});
			})
			.toggle(); // show the form
	});
	
	// much of this is repeating the above ... would be nice to compress them when
	// i have time
	$("a#show_details").click(function(){
		$("#Main-Ajax-box")
			.load("/ajaxwrapper.asp?action=GetMyDetails", [], function(){
				$("div.protectedchange").hide();
				$("#editprotected").click(function(){
					$("div.protectedchange").toggle();
				});
				$("#close_ajax").click(function(){
					$("#Main-Ajax-box").hide();
				});
				$("[name=dobdd],[name=dobmm],[name=dobyyyy]").click(function() {
					if($(this).val() == "DD" || $(this).val() == "MM" || $(this).val() == "YYYY") {
						$(this).val("");
					}
				});
				$("img#submitx").click(function(){
					var submit = true;
					var additional_info = '';
					$('input.formfield').removeClass('redo')
						.not('[name=workpostcode]').each(function(){
						if($(this).val() == '') {
							$(this).addClass('redo');
							submit = false;
						}
					}).end()
					.filter("[name=dobdd],[name=dobmm],[name=dobyyyy]").each(function(){
							if(! /^[0-9]+$/.match($(this).val())) {
								$(this).addClass('redo');
								submit = false;
							}
						});
					if($("#editprotected").is(":checked")) {
						// check the confirm email / confirm password
						if($("input[name=email1]").val() != $("input[name=email2]").val()) {
								$("input[name=email1],input[name=email2]").addClass('redo');
								additional_info += " The new e-mail addresses you provided did not match."
								submit = false;
						}
						if($("input[name=newpw1]").val() != $("input[name=newpw2]").val()) {
								$("input[name=newpw1],input[name=newpw2]").addClass('redo');
								additional_info += " The new passwords you provided did not match."
								submit = false;						
						}
					}
					if(submit) {
						sendajaxformwithdiv(document.getElementById('userdetailsform'));
					} else {
						alert('You have not filled in all the required fields.' + additional_info);
					}
				});
			})
			.toggle();
	});
});
