// JavaScript Document
function validate_contact_form(form)
{
	var return_value = false;
	if(form.name.value == "")
	{
		alert("Please enter your name");
		form.name.focus();
	}
	else if(!is_email(form.email.value) && phoneNo == "")
	{
		alert("Please enter a valid email address or telephone number");
		form.email.focus();
	}
	else
	{
		return_value = true;
	}
	return return_value;
}

function validate_newsletter_form(form)
{
	return_value = false;
	if(form.newsletterName.value == "" || form.newsletterName.value == form.newsletterName.defaultValue)
	{
		alert("Please enter your name");
		form.newsletterName.focus();
	}
	else if(!is_email(form.newsletterEmail.value))
	{
		alert("Please enter a valid email address");
		form.newsletterEmail.focus();
	}
	else
	{
		return_value = true;
	}
	return return_value;
}

function is_email(str)
{
  // are regular expressions supported?
  var supported = 0;
  if (window.RegExp)
  {
    var tempStr = "a";
    var tempReg = new RegExp(tempStr);
    if (tempReg.test(tempStr)) supported = 1;
  }
  if (!supported) 
    return (str.indexOf(".") > 2) && (str.indexOf("@") > 0);
  var r1 = new RegExp("(@.*@)|(\\.\\.)|(@\\.)|(^\\.)");
  var r2 = new RegExp("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$");
  return (!r1.test(str) && r2.test(str));
}

// Global variable to store image details
var newImage = document.createElement("img");
function swapImage(filename)
{
	clearImage();
	newImage = document.createElement("img");
	var img_path = filename;
	newImage.setAttribute("src", img_path);
	newImage.setAttribute("onLoad", setTimeout("insertImage()",0));
}

function clearImage()
{
	newImage = document.createElement("img");
	var holderDiv = document.getElementById('mainImageHolder');
	var oldImage = document.getElementById('mainImage');
	var removed = holderDiv.removeChild(oldImage);
}

function insertImage()
{
	var holderDiv = document.getElementById('mainImageHolder');
	var oldImage = document.getElementById('loadingImage');
	newImage.setAttribute("id", "mainImage");
	holderDiv.appendChild(newImage,oldImage);
}

function urldecode( str ) {
    // http://kevin.vanzonneveld.net
    // +   original by: Philip Peterson
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +      input by: AJ
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // %          note: info on what encoding functions to use from: http://xkr.us/articles/javascript/encode-compare/
    // *     example 1: urldecode('Kevin+van+Zonneveld%21');
    // *     returns 1: 'Kevin van Zonneveld!'
    // *     example 2: urldecode('http%3A%2F%2Fkevin.vanzonneveld.net%2F');
    // *     returns 2: 'http://kevin.vanzonneveld.net/'
    // *     example 3: urldecode('http%3A%2F%2Fwww.google.nl%2Fsearch%3Fq%3Dphp.js%26ie%3Dutf-8%26oe%3Dutf-8%26aq%3Dt%26rls%3Dcom.ubuntu%3Aen-US%3Aunofficial%26client%3Dfirefox-a');
    // *     returns 3: 'http://www.google.nl/search?q=php.js&ie=utf-8&oe=utf-8&aq=t&rls=com.ubuntu:en-US:unofficial&client=firefox-a'
    
    var histogram = {}, histogram_r = {}, code = 0, str_tmp = [];
    var ret = str.toString();
    
    var replacer = function(search, replace, str) {
        var tmp_arr = [];
        tmp_arr = str.split(search);
        return tmp_arr.join(replace);
    };
    
    // The histogram is identical to the one in urlencode.
    histogram['!']   = '%21';
    histogram['%20'] = '+';
    
    for (replace in histogram) {
        search = histogram[replace]; // Switch order when decoding
        ret = replacer(search, replace, ret) // Custom replace. No regexing   
    }
    
    // End with decodeURIComponent, which most resembles PHP's encoding functions
    ret = decodeURIComponent(ret);
 
    return ret;
}

function checkRadio (frmName, rbGroupName) {
 var radios = document[frmName].elements[rbGroupName];
 for (var i=0; i <radios.length; i++) {
  if (radios[i].checked) {
   return true;
  }
 }
 return false;
} 

function validate_questionnaire(form)
{
	var D = form.dob.value;
	
	if(!isDate(D))
	{
		alert('Please enter a valid date in the format DD/MM/YYYY');
		return false;
	}
	else
	{
		var aDate = D.split('/');
		var age = calculate_age(aDate[1], aDate[0], aDate[2]);
		//alert(age);
		if(age < 16)
		{
			alert('We can only offer home testing kits if you are 16 or over. Please\n contact your local sexual health clinic or ring our free confidential\nhelpline forfurther advice or help in finding yournearest clinic on\n0800 0461303.');
			window.location = '/find_your_local_clinic/';
			return false;
		}
		else
		{
			var return_value = false;
			if (!checkRadio(form.name,"q1"))
			{
				alert("Please select an answer for question 1");
			}
			else if (!checkRadio(form.name,"q2"))
			{
				alert("Please select an answer for question 2");
			}
			else if (!checkRadio(form.name,"q3"))
			{
				alert("Please select an answer for question 3");
			}
			else if (!checkRadio(form.name,"q4"))
			{
				alert("Please select an answer for question 4");
			}
			else if (!checkRadio(form.name,"q5"))
			{
				alert("Please select an answer for question 5");
			}
			else if (!checkRadio(form.name,"q6"))
			{
				alert("Please select an answer for question 6");
			}
			else if (!checkRadio(form.name,"q7"))
			{
				alert("Please select an answer for question 7");
			}
			else if (!checkRadio(form.name,"q8"))
			{
				alert("Please select an answer for question 8");
			}
			else
			{
				return_value = true;
			}
		}
		return return_value;
	}
}

function validate_questionnaire2(form)
{
	var return_value = false;
	if(form.yourName.value == "")
	{
		alert("Please enter your name");
		form.yourName.focus();
	}
	else if(form.phone.value == "")
	{
		alert("Please your telephone number");
		form.phone.focus();
	}
	else if(form.useAddr.value == "1" && form.address.value == "")
	{
		alert("Please your address");
		form.address.focus();
	}
	else if(form.useAddr.value == "1" && form.postcode.value == "")
	{
		alert("Please your postcode");
		form.postcode.focus();
	}
	else if(!checkRadio(form.name,"time"))
	{
		alert("Please select a preferred time");
	}
	else
	{
		return_value = true;
	}
	return return_value;
}

function validate_kit_request(form)
{
	var return_value = false;
	var tmpGender = "";
	for(i=0;i<form.gender.length;i++)
	{
		if(form.gender[i].checked)
		{
			tmpGender = form.gender[i].value;
		}
	}
	if(form.yourName.value == "")
	{
		alert("Please enter your name");
		form.yourName.focus();
	}
	else if(form.address.value == "")
	{
		alert("Please your address");
		form.address.focus();
	}
	else if(form.postcode.value == "")
	{
		alert("Please your postcode");
		form.postcode.focus();
	}
	else if(!checkRadio(form.name,"gender"))
	{
		alert("Please select your gender");
	}
	else if(tmpGender == "Female" && !checkRadio(form.name,"testType"))
	{
		alert("Please select the type of test required");
	}
	else if(form.find_out.value == "")
	{
		alert("Please tell us how you found out about us");
		form.find_out.focus();
	}
	else if(form.find_out.value == "Other" && form.other.value == "")
	{
		alert("Please tell us how you found out about us");
		form.find_out.focus();
	}
	else
	{
		return_value = true;
	}
	return return_value;
}

function showHideTestType(form)
{
	var tmpGender = "";
	for(i=0;i<form.gender.length;i++)
	{
		if(form.gender[i].checked)
		{
			tmpGender = form.gender[i].value;
		}
	}
	var e = document.getElementById("testTypeHolder");
	if(tmpGender == "Female")
	{
		e.style.display = "block";
	}
	else
	{
		e.style.display = "none";
	}
}

function checkU16(D)
{
	var aDate = D.split('-');
	var age = calculate_age(aDate[1], aDate[2], aDate[0]);
	if(age < 16)
	{
		alert('We can only offer home testing kits if you are 16 or over. Please contact\nyour local sexual health clinic or ring our free confidential helpline for\nfurther advice or help in finding your nearest clinic on 0800 0461303.');
		window.location = '/find_your_local_clinic/';
	}
}

function calculate_age(birth_month,birth_day,birth_year)
{
    today_date = new Date();
    today_year = today_date.getYear();
    today_month = today_date.getMonth();
    today_day = today_date.getDate();
    age = (today_year + 1900) - birth_year;
    if ( today_month < (birth_month - 1))
    {
      age--;
    }
    if (((birth_month - 1) == today_month) && (today_day < birth_day))
    { 
      age--;
    }
    if (age > 1900)
    {
    age -= 1900;
    }
  return age;
}

function validate_feedback(form)
{
	var return_value = false;
	if (!checkRadio(form.name,"gender"))
	{
		alert("Please select your gender");
	}
	else if (!checkRadio(form.name,"age"))
	{
		alert("Please select your age");
	}
	else if (!checkRadio(form.name,"useful"))
	{
		alert("Please tell us how useful you found our website");
	}
	else if (!checkRadio(form.name,"chlamydia_test"))
	{
		alert("Have you been offered a Chlamydia test?");
	}
	else if (!checkRadio(form.name,"respect"))
	{
		alert("Did you feel you were treated with respect by the service offering you a test?");
	}
	else if (!checkRadio(form.name,"given_test"))
	{
		alert("If you have taken a test, were you happy with the way your results were given?");
	}
	else if (!checkRadio(form.name,"advise"))
	{
		alert("Would you advise a friend to be checked out for Chlamydia?");
	}
	else
	{
		return_value = true;
	}
	return return_value;
}

function isDate(txtDate) {
    var objDate,  // date object initialized from the txtDate string
        mSeconds, // txtDate in milliseconds
        day,      // day
        month,    // month
        year;     // year
    // date length should be 10 characters (no more no less)
    if (txtDate.length !== 10) {
        return false;
    }
    // third and sixth character should be '/'
    if (txtDate.substring(2, 3) !== '/' || txtDate.substring(5, 6) !== '/') {
        return false;
    }
    // extract month, day and year from the txtDate (expected format is mm/dd/yyyy)
    // subtraction will cast variables to integer implicitly (needed
    // for !== comparing)
    month = txtDate.substring(3, 5) - 1; // because months in JS start from 0
    day = txtDate.substring(0, 2) - 0;
    year = txtDate.substring(6, 10) - 0;
    // test year range
    if (year < 1000 || year > 3000) {
        return false;
    }
    // convert txtDate to milliseconds
    mSeconds = (new Date(year, month, day)).getTime();
    // initialize Date() object from calculated milliseconds
    objDate = new Date();
    objDate.setTime(mSeconds);
    // compare input date and parts from Date() object
    // if difference exists then date isn't valid
    if (objDate.getFullYear() !== year ||
        objDate.getMonth() !== month ||
        objDate.getDate() !== day) {
        return false;
    }
    // otherwise return true
    return true;
}

function showGoogle() {
	document.getElementById("googleFrame").style.display = "block";
	/*document.getElementById("googleFrame").style.width = 	document.body.scrollWidth;
	document.getElementById("googleFrame").style.height = document.body.scrollHeight;*/
	//document.body.style.backgroundImage = "none";
	//document.body.style.backgroundColor = "#FFFFFF";
	//document.f.q.focus();	
	document.getElementById("pageContent").style.display = "none";	
	
}
function hideGoogle() {
	document.getElementById("googleFrame").style.display = "none";
	//document.body.style.backgroundImage = "url(../images/bodybkgd.gif)";
	//document.body.style.backgroundColor = "#000000";
	document.getElementById("pageContent").style.display = "block";		
}
