// Mighty Oaks Javascript Functions
// Wriiten by Matt R 23rd May 2007
// for Kariba Creative Media

function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}

addLoadEvent(function() 
{
	if ($('memberlogin_wrapper'))
	{
		new Effect.Opacity('memberlogin_wrapper', {duration:0, from:1.0, to:0});
		new Effect.Opacity('memberlogin', {duration:0, from:1.0, to:0});
		$('memberlogin').hide();
		$('memberlogin_wrapper').hide();
	}
});

function addloader(div) {
	new Insertion.Before(div, "<div id=\"" + div + "_loader\" class=\"centre\">Loading...<br><img src=\"includes/images/loader.gif\" /></div>");
}

function removeloader(div)
{
	if ($(div))
	{
		$(div).remove();
	}
}

function submit_contactform()
{
	// Setup Defaults
	var myform = document.contact_form;
	var ErrorColour = '#FF0000';
	
	// Reset all Background Colours
	
	myform.name.style.backgroundColor = '';
	myform.telephone.style.backgroundColor = '';
	myform.emailaddress.style.backgroundColor = '';
	
	// Check all fields
	
	var checked = 1;
		
	if (checked == 1 && myform.name.value == "")
	{
		myform.name.style.backgroundColor = ErrorColour;
		myform.name.focus();
		alert('You must enter a name.')
		checked = 0;
	}
	if (checked == 1 && myform.name.value.length < 3)
	{
		myform.name.style.backgroundColor = ErrorColour;
		myform.name.focus();
		alert('You must enter a name that is longer than 3 characters.')
		checked = 0;
	}
	if (checked == 1 && myform.emailaddress.value == "")
	{
		myform.emailaddress.style.backgroundColor = ErrorColour;
		myform.emailaddress.focus();
		alert('You must enter an email address.')
		checked = 0;
	}
	
	var emailaddress = myform.emailaddress.value;
	
	if (checked == 1 && emailCheck(emailaddress) != true)
	{
		myform.emailaddress.style.backgroundColor = ErrorColour;
		myform.emailaddress.focus();
		alert('You must enter a valid email address .')
		checked = 0;
	}
	if (checked == 1 && myform.telephone.value == "")
	{
		//alert('You must enter an email address.')
		var confirm_tel = confirm('Are you sure you want to submit the form without a telephone number included?');
		if (!confirm_tel)
		{
			myform.telephone.style.backgroundColor = ErrorColour;
			myform.telephone.focus();
			checked = 0;
		}
	}
	if (checked == 1 && myform.code.value == "")
	{
		myform.code.style.backgroundColor = ErrorColour;
		myform.code.focus();
		alert('You must enter the security code.')
		checked = 0;
	}	
	
	// Pre Check the security code to avoid the form reloading
	if (checked == 1)
	{
		//alert ('Checking codes');
		// Declare Variables
		var security_code = myform.code.value.escapeHTML();
		
		var url = 'ajax.php?method=securitycode&code=' + security_code;

		new Ajax.Request(url, {
			method: 'get',
			onComplete: function(request) {
				if (request.responseText)
				{
					var confirmed = confirm(request.responseText + ' (The code is case sensitive)\n\n Would you like to try a different code?');
					if (confirmed)
					{
						// Declare Variables
						var name = myform.name.value.escapeHTML();
						var emailaddress = myform.emailaddress.value.escapeHTML();
						var telephone = myform.telephone.value.escapeHTML();
						var message = myform.message.value.escapeHTML();
						var code = myform.code.value.escapeHTML();
						
						window.location = 'index.php?s=contactingus&name=' + name + '&emailaddress=' + emailaddress + '&telephone=' + telephone + '&message=' + message + '&code=' + code;
					}
					checked = 0;
				}
				else
				{
					// If all fields checked, submit form via Ajax
					if (checked == 1)
					{
						// Declare Variables
						var name = myform.name.value.escapeHTML();
						var emailaddress = myform.emailaddress.value.escapeHTML();
						var telephone = myform.telephone.value.escapeHTML();
						var message = myform.message.value.escapeHTML();
						var code = myform.code.value.escapeHTML();
						
						var url = 'ajax.php?method=contact&submit=true&name=' + name + '&emailaddress=' + emailaddress + '&telephone=' + telephone + '&message=' + message + '&code=' + code;
				
						new Ajax.Request(url, {
							method: 'get',
							onLoading: function() {
								$('contact_form_return').remove();
								addloader('contact_form');
							},
							onFailure: function() {
								alert('Mighty Oaks Ajax Error : Please try again');
							},
							onComplete: function(request) {
								document.getElementById('contact_form').innerHTML = request.responseText;
								removeloader('contact_form_loader');
							}
						});
				
					}
				}
			}
		});
	}
	
}

function do_memberlogin()
{
	element = $('memberlogin_wrapper');

	if (element.style.display == 'none')
	{
		$('memberlogin_wrapper').show();
		$('memberlogin').show();
		//new Effect.Appear(element, { duration: 3.0, afterFinish: function() { new Effect.Opacity('memberlogin_wrapper', {duration:3, from:1.0, to:0.5}); } });
		new Effect.Opacity('memberlogin_wrapper', {duration:3, from:0, to:0.7, afterFinish: function() { new Effect.Opacity('memberlogin', { duration: 2.0, from:0, to:1}); }});
		//new Effect.Opacity('memberlogin_contents', {duration:0, from:0, to:1});
		$('memberlogin_close').onclick = function() { new Effect.Fade('memberlogin_wrapper'); new Effect.Fade('memberlogin'); };
		window.setTimeout('Effect.Fade(\'memberlogin_wrapper\')',30000);
		window.setTimeout('Effect.Fade(\'memberlogin\')',30000);
	}
	else
	{
		new Effect.Fade(element, { duration: 3.0 });
	}
}

function do_memberlogin_submit(formObj)
{
	//document.formObj.submit();
	new Effect.Puff('memberlogin_contents', {beforeStart: function() { document.formObj.submit(); } });
}

function toggle_input(element, value)
{
	if (element.value == "")
	{
		element.value = value;
	}
	else
	{
		if (element.value == value)
		{
			element.value = "";
		}
	}
}

function submit_polls(poll_id) 
{
	var allchecked = 0;
		
	for (i=0; i < document.pollsform.vote_id.length; i++) 
	{	
		if (document.pollsform.vote_id[i].checked) 
		{
			allchecked = 1;
			var vote_id = document.pollsform.vote_id[i].value;
		}
	}
	
	if (allchecked == 1)
	{
		var div_id = 'polls';
		
		var url = 'index.php?type=ajax&s=polls&m=process&poll_id=' + poll_id + '&vote_id=' + vote_id;
		
		new Ajax.Request(url, {
			method: 'get',
			onLoading: function() {
				$(div_id).innerHTML = '<div class="loader"><img src="../includes/images/loader.gif" /></div>';
			},
			onComplete: function(request) {
				document.getElementById(div_id).innerHTML = request.responseText;
			}
		});
	}
	else
	{
		alert('You need to select an option in order to vote.');	
	}
}

//
// Contact Form Styles
//
function emailCheck (emailStr) {
	var emailPat=/^(.+)@(.+)$/
	var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
	var validChars="\[^\\s" + specialChars + "\]"
	var quotedUser="(\"[^\"]*\")"
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
	var atom=validChars + '+'
	var word="(" + atom + "|" + quotedUser + ")"
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")
	var matchArray=emailStr.match(emailPat)
	if (matchArray==null) {
		alert("Email address seems incorrect (check @ and .'s)")
		return false
	}
	var user=matchArray[1]
	var domain=matchArray[2]

	if (user.match(userPat)==null) {
		alert("The username doesn't seem to be valid.")
		return false
	}
	var IPArray=domain.match(ipDomainPat)
	if (IPArray!=null) {
		// this is an IP address
		  for (var i=1;i<=4;i++) {
			if (IPArray[i]>255) {
				alert("Destination IP address is invalid!")
			return false
			}
		}
		return true
	}
	
	var domainArray=domain.match(domainPat)
	if (domainArray==null) {
		alert("The domain name doesn't seem to be valid.")
		return false
	}
	
	var atomPat=new RegExp(atom,"g")
	var domArr=domain.match(atomPat)
	var len=domArr.length
	if (domArr[domArr.length-1].length<2 || 
		domArr[domArr.length-1].length>3) {
	   alert("The address must end in a three-letter domain, or two letter country.")
	   return false
	}
	if (len<2) {
	   var errStr="This address is missing a hostname!"
	   alert(errStr)
	   return false
	}
	return true;
}

function check_visit_form()
{
	
	// Setup Defaults
	var myform = document.joinform;
	var ErrorColour = '#FF0000';
	var checked = 1;
	
	// Reset all Background Colours
	
	myform.join_name.style.backgroundColor = '';
	myform.join_job_title.style.backgroundColor = '';
	myform.join_company_name.style.backgroundColor = '';
	myform.join_telephone.style.backgroundColor = '';
	myform.join_emailaddress.style.backgroundColor = '';
	myform.join_notes.style.backgroundColor = '';
		
	if (checked == 1 && (myform.join_name.value == "" || myform.join_name.value == "Name"))
	{
		myform.join_name.style.backgroundColor = ErrorColour;
		myform.join_name.focus();
		alert('You must enter a name.')
		checked = 0;		
	}	
	if (checked == 1 && (myform.join_job_title.value == "" || myform.join_job_title.value == "Job Title"))
	{
		myform.join_job_title.style.backgroundColor = ErrorColour;
		myform.join_job_title.focus();
		alert('You must enter a job title.')
		checked = 0;
	}
	if (checked == 1 && (myform.join_company_name.value == "" || myform.join_company_name.value == "Company Name"))
	{
		myform.join_company_name.style.backgroundColor = ErrorColour;
		myform.join_company_name.focus();
		alert('You must enter a company name.')
		checked = 0;
	}
	
	if (checked == 1 && (myform.join_emailaddress.value == "" || myform.join_emailaddress.value == "Email"))
	{
		myform.join_emailaddress.style.backgroundColor = ErrorColour;
		myform.join_telephone.focus();
		alert('You must enter an email address.')
		checked = 0;
	}
	
	if (checked == 1)
	{
		document.myform.submit();
	}
}