/**
 * Show an error alert only on localhost.
 */
function showError(anError, optionalMsg) {
	if (window.location.hostname == 'localhost') {
    	var wholeMessage = optionalMsg ? optionalMsg : '';
    	wholeMessage += (anError.message ? anError.message : anError);
		alert(wholeMessage);
	}	
}

function openBrWindow(theURL,winName,features) 
{ 
    window.open(theURL,winName,features);
}


function closeWindow()
{
	window.close();
}

function addOption(selectbox,text,value, selected )
{
	var optn = document.createElement("OPTION");
	optn.text = text;
	optn.value = value;
	if(selected != null || selected != false) {
		optn.selected=true;
	}
	selectbox.options.add(optn);
}

function moveTo(field, name)
{

	if(field.value.length == field.size)
		document.getElementById(name).focus();
}

function setFieldValue(fieldToSet, fieldFrom)
{
	var field1 = document.getElementById(fieldToSet);
	var field2 = document.getElementById(fieldFrom);
	
	field1.value = field2.value;
}

function setFieldFromCombo(fieldToSet, comboField)
{
	var field1 = document.getElementById(fieldToSet);
	var field2 = document.getElementById(comboField);
	var comboValue = field2.options[field2.selectedIndex].value;
	field1.value = comboValue;
}

function disableEnableField(fieldToEnable, valueToCheck, fieldToCheck)
{
	var enableMe = document.getElementById(fieldToEnable);
	if(fieldToCheck.value == valueToCheck) {
		enableMe.disabled = true;
		enableMe.className="disabledField";
	} else {
		enableMe.disabled = false;
		enableMe.className="";
	}
}

function enableField(fieldToEnable)
{
	var enableMe = document.getElementById(fieldToEnable);
	enableMe.disabled = false;
	enableMe.className="";
}

function disableField(fieldToDisable)
{
	var enableMe = document.getElementById(fieldToDisable);
	enableMe.disabled = true;
	enableMe.className="disabledField";
}

var key_count=0;
var current_focus;

function setDateFocus(new_focus, fieldName)
{
	current_focus = new_focus
	if(current_focus == 'dd') {
		key_count = 0
		fieldName.select()
	} else if(current_focus == 'mm') {
		key_count = 0
		fieldName.select()
	} else if(current_focus == 'yyyy') {
		key_count = 0
		fieldName.select()
	}
}

function moveDateFocus(fieldName, moveTo)
{

	key_count ++
	if(current_focus == 'dd') {
		if(fieldName.value.length == 2 && key_count >= 2) {
			key_count = 0
			document.getElementById(moveTo).focus()
		}
	} else if(current_focus == 'mm') {
		if(fieldName.value.length == 2 && key_count >= 2) {
			key_count = 0
			document.getElementById(moveTo).focus()
		}
	}
}

function setFocus(name)
{
	document.getElementById(name).focus()
}

function setFieldValue(fieldName, fieldValue)
{
	document.getElementById(fieldName).value = fieldValue;
}

function buildDate(name, datefield)
{
	var days = document.getElementById(name+"Day").value;
	var months = document.getElementById(name+"Month").value;
	var years = document.getElementById(name+"Year").value;
	
	//do nothing for empty dates
	if(days == "" && months == "" && years == "") {
		document.getElementById(datefield).value = "";
		return;
	}
	
	var fullDate = days+"/"+months+"/"+years;
		
	document.getElementById(datefield).value = fullDate;

	
}

function transferAddress() 
{
	var lifeAddressLineOneHidden = document.getElementById('lifeAddressLineOne').value;
	var lifeAddressLineTwoHidden = document.getElementById('lifeAddressLineTwo').value;
	var lifeAddressLineThreeHidden = document.getElementById('lifeAddressLineThree').value;
	var lifeAddressLineFourHidden = document.getElementById('lifeAddressLineFour').value;
	
	var address = document.getElementById('secondLifeAddressLineOne');
	var addressTwo = document.getElementById('secondLifeAddressLineTwo');
	var addressThree = document.getElementById('secondLifeAddressLineThree');
	var addressFour = document.getElementById('secondLifeAddressLineFour');

	
	address.value = lifeAddressLineOneHidden;
	addressTwo.value = lifeAddressLineTwoHidden;
	addressThree.value = lifeAddressLineThreeHidden;
	addressFour.value = lifeAddressLineFourHidden;

}

function clearSearchFields()
{
	var surname = document.getElementById('surname');
	var name = document.getElementById('name');
	var dobDay = document.getElementById('dobDay');
	var dobMonth = document.getElementById('dobMonth');
	var dobYear = document.getElementById('dobYear');
	var dob = document.getElementById('dob');
	
	surname.value="";
	name.value="";
	dobDay.value="";
	dobMonth.value="";
	dobYear.value="";
	dob.value="";
}


// Removes leading whitespaces
function LTrim( value ) {
	
	var re = /\s*((\S+\s*)*)/;
	return value.replace(re, "$1");
	
}

// Removes ending whitespaces
function RTrim( value ) {
	
	var re = /((\s*\S+)*)\s*/;
	return value.replace(re, "$1");
	
}

// Removes leading and ending whitespaces
function trim( value ) {
	
	return LTrim(RTrim(value));
	
}


/*
 * These two functions are needed for labels
 * before selects in IE6, because IE6 has a bug
 * that selects the top item of a select if you click the
 * label.
 */
function SelectOnFocusIn()
/*
 * Save the selected index.
 */
{
	try {
		if (navigator.appName == 'Microsoft Internet Explorer') {
    		var eSrc = window.event.srcElement;
    		if (eSrc) {
    			eSrc.tmpIndex = eSrc.selectedIndex;
    		}
		}
	} catch (e) {
		showError(e);
	}
}
//restore the selectedIndex
function SelectOnFocus()
{
	try {
		if (navigator.appName == 'Microsoft Internet Explorer') {
    		var eSrc = window.event.srcElement;
    		if (eSrc) {
    			eSrc.selectedIndex = eSrc.tmpIndex;
    		}
		}
	} catch (e) {
		showError(e);
	}
}

/**
 * Include another javascript file,
 * by appending a script tag to the page's head tag.
 */
function includeJSFile(src)
{
	try {
		scriptTag = document.createElement('script');
		scriptTag.type = 'text/javascript';
		scriptTag.src = src;
		var headTag = document.getElementsByTagName('head')[0];
		if (headTag) {
    		headTag.appendChild(scriptTag);
		}
	} catch (anError) {
		// should probably do something.
	}
	
}
