var isMac = (navigator.platform.indexOf('Mac') != -1);
var isIE = (navigator.appName == "Microsoft Internet Explorer");
var popupWindow;
var timerId;
var MasterPageRoot = "mpRoot_cphBody_";

// Opens a new browser window with the specified URL

function openPopUpWindow(url, pageWidth, pageHeight, centreWindow) 
{ 
	if (pageWidth == null) pageWidth = 660;
	if (pageHeight == null) pageHeight = 480;
	if (centreWindow == null) centreWindow = true;
	
	var winFeatures = "status=yes,scrollbars=yes,resizable=yes,width=" + pageWidth + ",height=" + pageHeight;
	if (centreWindow) winFeatures += GetScreenCenterString(pageWidth, pageHeight);
	
    popupWindow = window.open(url, "_blank", winFeatures);

    return false;
}

function closePopUpWindow()
{
	popupWindow.close();
}

function openNewPage(url) 
{ 
	top.location.href = url;

    return false;
}

function GetScreenCenterString(pageWidth, pageHeight)
{
	var winLeft = (screen.width - pageWidth) / 2; 
	var winTop = (screen.height - pageHeight) / 3;
	
	if (winLeft < 0) winLeft = 0;
	if (winTop < 0) winTop = 0; 
	
	return ",left=" + winLeft + ",top=" + winTop;
}

function GetPageElement(elemName)
{
    var elem = null;

    if (elemName != null && elemName.length > 0)
    {
        elem = document.getElementById(elemName.replace(/\$/gi, "_"));

        if (elem == null) {
            elem = document.getElementsByName(elemName)[0];
        }

        if (elem == null) {
       //   alert("Error: can't find page element: '" + elemName + "'");
        }
    }
    
    return elem;
}

function GetDropDownListValue(elem)
{
	return elem[elem.selectedIndex].value;		
}

function GetDropDownListText(elem)
{
	return elem[elem.selectedIndex].text;		
}

function SetVisibility(elem, vis)
{
	elem.style.display = vis;
}

function SetSpanVisibility(elemName, isOn)
{
	var toggleSpan = GetPageElement(elemName);
	
	if (toggleSpan != null)
	{
		SetVisibility(toggleSpan, (isOn) ? "block" : "none");
	}
}

function SetDivIFrameVisibility(elemName, isOn)
{
	var toggleSpan = GetPageElement(elemName);
	var toggleSpan_i = GetPageElement(elemName + "_i");
	
	if (window.opera) disableIframe = true;
	
	if (toggleSpan != null)
	{
		SetVisibility(toggleSpan, (isOn) ? "block" : "none");
	}
	
	if (toggleSpan != null && toggleSpan_i != null)
	{
		if (isOn)
		{
			var disableIframe = false;								
			if (window.opera) disableIframe = true;
	
			SetVisibility(toggleSpan, "block");
			toggleSpan_i.style.width = toggleSpan.offsetWidth;
			toggleSpan_i.style.height = toggleSpan.offsetHeight;
			toggleSpan_i.style.top = toggleSpan.style.top;
			toggleSpan_i.style.left = toggleSpan.style.left;
			toggleSpan_i.style.zIndex = toggleSpan.style.zIndex - 1;
			toggleSpan_i.style.visibility = (disableIframe ? "none" : "visible");	
			if (isIE) toggleSpan_i.style.display = (disableIframe ? "none" : "block");	
		}
		else
		{
			SetVisibility(toggleSpan, "none");
			toggleSpan_i.style.visibility = "hidden";	
	//		if (isIE) toggleSpan_i.style.display = "hidden";								
		}
	}
}


function ToggleSpanVisibility(elemName)
{
	var toggleSpan = GetPageElement(elemName);
	
	if (toggleSpan != null)
	{
		SetVisibility(toggleSpan, (IsVisible(toggleSpan)) ? "none" : "block");
	}
}

function SetElementVisibility(elem, isOn)
{
	if (elem != null)
	{
		SetVisibility(elem, (isOn) ? "block" : "none");
	}
}

function IsVisible(elem)
{
	return (elem.style.display == "block" || elem.style.display == "inline");
}

function UpdateFormAction(newAction)
{
	document.forms[0].action = newAction;
}

function ToggleCheckBoxGroup(checkBox, groupId, inputName)
{
	var inputGroup = eval("document.forms[0]." + inputName);
	
	for (var i = 0; i < inputGroup.length; i++)
	{
		var inputArray = inputGroup[i].value.split("|");
		
		if (inputArray[1] == groupId || groupId == '')
		{
			inputGroup[i].checked = checkBox.checked;
		}
	}			
}

function ChangeContent(element, text)
{
	if (element != null)
	{
		if (document.all)
		{
			element.innerHTML = text;
		}
		else if (document.layers)
		{
			element.document.open();
			element.document.write(text);
			element.document.close();
		}
		else
		{
			element.innerHTML = text;
		}
	}
}

function GetSpanContent(element)
{
	var text = "";
	
	if (element != null)
	{
		if (document.all)
		{
			text = element.innerHTML;
		}
		else if (document.layers)
		{
			text = element.document;
		}
		else
		{
			text = element.innerHTML;
		}
	}
	
	return text;
}

function Pluralise(count, singular, plural)
{
	return ((count == 1) ? singular : plural);
}

function SearchButtonPress(btnSearch, txtSearchId)
{
    var doSearch = false;
    var txtSearch = GetPageElement(txtSearchId);

	if (txtSearch.value.length > 2)
	{
		btnSearch.value = 'please wait...';
		doSearch = true;
	}
	else
	{
		alert("Please enter at least 3 characters for the search.");
	}
		
	return doSearch;
}

function DisableEnterKey()
{
	if (window.event != null && window.event.keyCode == 13) return false;
}

function UpdateTextBoxHighLite(elem, cssClass)
{
	if (elem.value.length == 0)
	{
		elem.className = cssClass + "HighLite";
	}
	else
	{
		elem.className = cssClass;
	}
}

function UpdateComboBox(lstControl, txtControlId)
{
	var lstValue = GetDropDownListValue(lstControl);
	var txtControl = GetPageElement(txtControlId);
	
	if (lstValue == "other")
	{
		txtControl.value = "";
		SetElementVisibility(txtControl, true);
	}
	else
	{
		txtControl.value = lstValue;
		SetElementVisibility(txtControl, false);
	}
	
}

function CheckDatePicker(elem, doHighLite, cssClass)
{	
	var myDate = myParseDate(elem.value);
	
	if ((myDate == null || isNaN(myDate)) && elem.value.length > 0)
	{
		alert("The date you have entered is not a valid date!\n\n The date must be in the form: DD/MM/YYYY");
	}
	else
	{
		if (doHighLite) UpdateTextBoxHighLite(elem, cssClass);
	}
	
	return true;
}

function myParseDate(dateString)
{
	var theDate;
		
	try
	{
		if (dateString == "1/01/0001")
		{
			theDate = null;
		}
		else
		{
			var dateArray = dateString.split("/");			
			var theMonth = parseInt(dateArray[1], 10) - 1;
			var theYear = parseInt(dateArray[2], 10);
			if (theYear < 100) theYear = theYear + 2000;
			
			theDate = new Date(theYear, theMonth, dateArray[0]);
		}
	}
	catch(e)
	{
		theDate = null;
	}
	
	return theDate;
}

function FormatDate(theDate)
{
	var dateString = "";
	var theDay = theDate.getDate();
	var theMonth = theDate.getMonth() + 1;
	var theYear = theDate.getFullYear();
	
	if (theDay < 10) theDay = "0" + theDay;
	if (theMonth < 10) theMonth = "0" + theMonth;
	
	dateString = theDay + "/" + theMonth + "/" + theYear;
				
	return dateString;
}

function IsValidDate(theDate)
{
	var isValid = true;
	
	if (theDate == null) return false;
	if (theDate == Number.NaN) return false;
	if (theDate == undefined) return false;
	if (theDate.toString() == 'Invalid Date') return false;
	if (theDate.toString() == 'NaN') return false;
	if (theDate.toString() == '1/01/0001') return false;
	
	return isValid;
}

function CheckIsNumber(elem, errorMsg)
{	
	if (elem.type.toLowerCase() == "text")
	{		
		if (!IsNumeric(elem.value))
		{
			alert("Error: " + errorMsg);
			elem.value = "0";		
		}		
	}
}

function IsNumeric(sText)
{ 
	var validChars = "0123456789."; 
	var isNumber = true;
   
	for (i = 0; i < sText.length; i++)
	{
		var thisChar = sText.charAt(i);
		if (validChars.indexOf(thisChar) == -1) isNumber = false;
	}
	
	return isNumber;
}


function CopyControlValue(srcControlPrefix, dstControlPrefix, srcId, dstId, controlTag, controlType)
{
	var srcControl;
	var dstControl;
				
	if (srcId == null || dstId == null)
	{
		srcControl = GetPageElement(srcControlPrefix + controlTag);
		dstControl = GetPageElement(dstControlPrefix + controlTag);
	}
	else
	{
		srcControl = GetPageElement(srcControlPrefix + controlTag + srcId);
		dstControl = GetPageElement(dstControlPrefix + controlTag + dstId);
	}
	
	if (srcControl != null && dstControl != null)
	{
		switch (controlType.toLowerCase())
		{
			case "dropdownlist":
				dstControl.selectedIndex = srcControl.selectedIndex;
				break;
			case "checkbox":
				dstControl.checked = srcControl.checked;
				break;
			case "radio":
				dstControl.checked = srcControl.checked;
				break;
			default:
				dstControl.value = srcControl.value;
				break;		
		}
	}
}

