<!-- Hide script from aged browsers
function TrimData(dataString) {
	return dataString.replace(/^\ +/,"").replace(/\ +$/,"") //Trim spaces
	}
function TextCheck(elementID,mandatory,maxlength,illegalChars,regExp,friendlyName) {
	var errorText = "";
	var elementObj = document.getElementById(elementID);
	elementObj.value = TrimData(elementObj.value);
	if ((mandatory == true) && (elementObj.value == "")) //Check for presence of data
		errorText += "Please enter a value for " + friendlyName + ".\n";
	if (maxlength != "") //Check the data does not exceed a given length
		{
		if (elementObj.value.length > maxlength)
			errorText += "Please restrict " + friendlyName + " to " + maxlength + " characters.\n";
		}
	if (illegalChars != "")
		errorText += CharCheck(elementObj,illegalChars,friendlyName);
	if ((regExp != null) && (elementObj.value != ""))
		{
		if (regExp.test(elementObj.value.toUpperCase()) == false)
			errorText += "Please enter a valid " + friendlyName;
		}
	if (errorText != "")
		{
		alert(errorText);
		// If element Obj is part of a date, set the focus into the box but do not select the value
		if ((elementID.substring(elementID.length - 2,elementID.length) == "_d") || (elementID.substring(elementID.length - 2,elementID.length)) == "_m")
			{
			return false;
			}

        try
        {
		    elementObj.focus();
		    elementObj.value = elementObj.value + "";
		    elementObj.select();
        }
        catch(e)
        {
            //Likely that the control can't receive focus since hidden/disabled
        }
        finally
        {
		    return false;
        }
		}
	return true;
	}
function CharCheck(elementObj,chars,friendlyName) {
	var error = ""
	for (i=0;i<chars.length;i++)
		{
		if (elementObj.value.indexOf(chars.charAt(i)) != -1)
			error += chars.charAt(i);
		}
	if (error != "")
		error = "Please remove the \'" + error + "\' character(s) from " + friendlyName + ".\n";
	return error
	}
function PasswordCheck(strElementID) {//Check that two fields match
	var objPassword1 = document.getElementById(strElementID);
	var objPassword2 = document.getElementById(strElementID + "_conf");
	if (objPassword1.value != objPassword2.value)
		{
		alert("The passwords supplied do not match. Please re-enter your password");
		objPassword1.value = "";
		objPassword2.value = "";
		objPassword1.focus();
		return false;
		}
	return true;
	}
function NumericCheck(elementID,friendlyName) {//Verify that any data input is numeric
	var elementObj = document.getElementById(elementID);
	if (/^\d*$/.test(elementObj.value) == false)
		{
		alert("Please use only numbers for " + friendlyName + ".");
		elementObj.select();
		return false;
		}
	return true;
	}
function DateCheck(formID,mandatory) {//Validate a date
	var formObj1 = document.getElementById(formID + "_d");	//Day
	var formObj2 = document.getElementById(formID + "_m");	//Month	
	var formObj3 = document.getElementById(formID + "_y");	//Year

    if (formObj1.value.length == 1)
        formObj1.value = "0" + formObj1.value;

    if (formObj2.value.length == 1)
        formObj2.value = "0" + formObj2.value;

	var DC_date = formObj3.value + "-" + formObj2.value + "-" + formObj1.value;
	
	if ((DC_date == "--") && (mandatory == false))//No date entered so valid in respect that it's not invalid!
		return true;
	
	var reg = /^([1][9]|[2][01])(\d{2})-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$/
	if (reg.test(DC_date) == false)
		{
		alert("Please enter a valid date in the format dd/mm/yyyy");
		formObj1.focus();
		formObj1.value = formObj1.value + "";
		return false;
		}
	
	var reg = /^(0[469]|11)$/
	if ((reg.test(formObj2.value) == true) && (formObj1.value == "31"))
		{
		alert("There are not 31 days in this month.");
		formObj2.focus();
		formObj2.value = formObj2.value + "";
		return false;
		}
	if ((formObj2.value == "2") || (formObj2.value == "02"))
		{
		var leapYear = (formObj3.value % 4 == 0 && (formObj3.value % 100 != 0 || formObj3.value % 400 == 0));
		if (formObj1.value > 29 || (formObj1.value == 29 && !leapYear))
			{
			alert("February doesn't have that many days!");
			formObj1.focus();
			formObj1.value = formObj1.value + "";
			return false;
			}
		}
	return true;
	}
function CmbCheck(elementID,friendlyName) {
	var elementObj =  document.getElementById(elementID);
	if (elementObj.value == "")
		{
		alert("Please select a value for " + friendlyName + ".");
		elementObj.focus();
		return false;
		}
	return true;
	}
function RadCheck(elementName,friendlyName) {
	var arElements = document.getElementsByName(elementName);
	for (var i=0;i<arElements.length;i++)
		{
		if (arElements[i].checked == true)
			return true;
		}
	alert("Please select an option for " + friendlyName + ".");
	return false;
	}
function SelectOther(CmbObj,ElementID) {
	var TextObj = document.getElementById(ElementID)
	if (CmbObj.value == '-other-')
		{
		TextObj.disabled = false;
		TextObj.focus();
		}
	else
		{
		TextObj.value = ""
		TextObj.disabled = true;
		}
	}

//========================================================

//Function to check whether any data has been added to a listbox
function LstCheck(elementID,friendlyName)
	{
	var elementObj = document.getElementById(elementID);
	if (elementObj.length == 0)
		{
		alert("Please add an item for " + friendlyName + ".")
		elementObj.focus();
		return false;
		}
	return true;
	}
function RemoveItem(elementID)
	{
	var elementObj = document.getElementById(elementID);
	if (elementObj.selectedIndex == -1)
		alert("Please select which entries you would like to remove");
	else
		{
		for(var i=(elementObj.length-1);i>=0;i=i-1)
			{
			if (elementObj.options[i].selected == true)
				elementObj.options[i] = null;
			}
		}
	}
function SelectAll(elementID)
	{
	var elementObj = document.getElementById(elementID);
	if (elementObj.length > 0)
		{
		for(var i=0;i<elementObj.length;i++)
			{
			elementObj.options[i].selected=true;
			}
		}
	}
function AddItem(elementID)
	{
	var objLst = document.getElementById("lst" + elementID);
	var objText = document.getElementById("txt" + elementID);
	var strValue = objText.value;
	
	for(var i=0;i<objLst.length;i++)
		{
		if (objLst.options[i].text.toUpperCase() == strValue.toUpperCase())
			{
			alert("Duplicate Entry");
			objText.value = "";
			objText.focus();
			return false;
			}
		}
	
	var objOption = document.createElement("OPTION");
	objOption.text = strValue;
	objOption.value = strValue;
	objLst.add(objOption);
	
	objText.value = "";
	objText.focus();
	
	return true;
	}

function PopUp(url,width,height) {
	var MWL=(screen.availWidth-width)/2
	var MWT=(screen.availHeight-height)/2
	var options = 'menubar=no,toolbar=no,location=no,directories=no,status=no,scrollbars=yes,resizeable=no,left=' + MWL + ',top=' + MWT + ',width=' + width + ',height=' + height
	window.open(url,'_Blank',options)
	}
function HelpWindow(fieldNo) {
	PopUp('app_help.asp?id=' + fieldNo,640,480)
	}

function CalculateAge(strDate) {
  try
	{
    if (strDate != "--")
		{
		    //Parse into date object in format of yyyy/mm/dd not yyyy-mm-dd
		    var DOB = new Date(Date.parse(strDate.replace(/-/g,"/")));
		    var today = new Date();
		    var diff = today - DOB;
		    if (!isNaN(diff))
		    {
		        diff = Math.floor(diff/(1000*60*60*24*365.2422)); //Difference in years
		        document.getElementById("citizenAge").innerHTML = diff;
		    }
		}
	}
	catch(e)
	{
	    document.getElementById("citizenAge").innerHTML = "unknown";
	}
}

function BuildDateString(formID) {
    var strDay = document.getElementById(formID + "_d").value;
    var strMonth = document.getElementById(formID + "_m").value;
    var strYear = document.getElementById(formID + "_y").value;
    var strDate = strYear + "-" + strMonth + "-" + strDay;
    return strDate;
}

function LookupAddress() {
	var postcode	= document.getElementById('txtPostcode').value;
	var property	= document.getElementById('txtLine1').value;
	var flat			= document.getElementById('txt24').value;
	var street		= document.getElementById('txt10').value;
	var locality	= document.getElementById('txt11').value;
	var town			= document.getElementById('txt12').value;
	var county		= document.getElementById('txt13').value;
	
	if (postcode == "" && property == "" && flat == "" && street == "" && locality == "" && town == "" && county == "")
		alert("Please enter at least one line of the address");
	else
	{
		var docURL="address.aspx?postcode=" + postcode + "&property=" + property + "&flat=" + flat + "&street=" + street + "&locality=" + locality + "&town=" + town + "&county=" + county;
		PopUp(docURL,640,480);
		
		//Clear out the search elements and un-hide the address fields
		document.getElementById('txtPostcode').value = '';
		document.getElementById('txtLine1').value = '';
        $("tr.address").removeClass("hide");
	}
}

function CaptureImage(citizenId, strImageType, strFieldID) {
	var currentLoadAction = window.onload;
	window.onload = function() {
		var captureOk = CaptureImageDirect(citizenId, strImageType, strFieldID);
		if (currentLoadAction != null) {
			currentLoadAction();
		}
		else {
			if (captureOk)
				document.getElementById("btn_submit").click();
		}
	}
}

function CaptureImageDirect(citizenId, strImageType, strFieldID) {
    try
	{
		var ctrl = document.getElementById("imageCapture");
		if (ctrl == null || ctrl.ImageWidth == undefined)
			{
			document.getElementById("bin" + strFieldID + "_chooseUpload").style.display = "block";
			return false;
			}
		else
		{
			//ctrl.ImageQuality = 70;
			if (strImageType == "photograph")
			{
				ctrl.ImageWidth = 200;
				ctrl.ImageHeight = 240;
			}
			else if (strImageType == "Proof")
			{
				ctrl.ImageWidth = 840;
				ctrl.ImageHeight = 1200;
			}
	
	        var holderInput = document.getElementById("bin" + strFieldID);
	        if (holderInput != null && holderInput.value != "")
	            ctrl.SetImageDataAsString(holderInput.value);
			var success = ctrl.CaptureImage();
			
			if (!success)
			{
				if (strImageType == "photograph" && window.location.href.indexOf("imagetofile.asp") < 0)
				{
					window.location = "journal.asp?ref=" + citizenId;
				}
				return false;
			}
			
			if (holderInput == null)
			{
				ctrl.SaveImageToFile();
			}
			else
			{
				holderInput.value = ctrl.GetImageDataAsString();
			}
			
			if (strImageType == "photograph")
			{
				//Don't do anything
			}
			else if (strImageType == "Proof")
			{
				document.getElementById("btn_proof" + strFieldID).value = "Re-scan image";
			}
			
			return true;
		}
	}
	catch (Err)
	{
		return false;
	}
}

function FixImageLength(elementID) {
    //Set the limit for field size.
	var FormLimit = 102399

	//Get the value of the large input object.
	var TempVar = new String
	TempVar = document.getElementById(elementID).value;

	//If the length of the object is greater than the limit, break it into multiple objects.
	if (TempVar.length > FormLimit)
	{
		document.getElementById(elementID).value = TempVar.substr(0, FormLimit)
		TempVar = TempVar.substr(FormLimit)

		while (TempVar.length > 0)
		{
			var objTEXTAREA = document.createElement('INPUT')
			objTEXTAREA.type = 'hidden'
			objTEXTAREA.name = elementID
			objTEXTAREA.value = TempVar.substr(0, FormLimit)
			document.frm_proof.appendChild(objTEXTAREA)
			
			TempVar = TempVar.substr(FormLimit)
		}
	}
}

function ToTitleCase(str) {
    return str.replace(/\b([a-z])/g, function (_, initial) {
      return initial.toUpperCase();
  });
}

function InputTextToTitleCase(elementID) {
    document.getElementById(elementID).value = ToTitleCase(document.getElementById(elementID).value);
}

function MonitorDateBoxesForKeypress() {
    //Detect any day/month boxes
    $("input[size='2'][maxlength='2']").keypress(
        function(event) {
            if (event.which == "47") {
                //Detect forward slash and move to next input
                event.preventDefault();
                $(event.target).next().focus();
            }
            else if ((event.which < "48" || event.which > "57") && event.which > '30') {
                //Disregard non-numeric keypresses (apart from control keys etc)
                event.preventDefault();
            }
        }
    )
}

// stop hiding script -->
