
// Handle the safe mode check box on the login screen
function handleLoginCheckbox(objCheck, usernameID, passwordID)
{
    document.getElementById(usernameID).disabled = objCheck.checked;
    document.getElementById(passwordID).disabled = objCheck.checked;
}

// validation function for username and password
function validateLoginFields(checkID, usernameID, passwordID)
{
    if (document.getElementById(checkID).checked == false)
    {
        if (document.getElementById(usernameID).value.search(/^\s*$/) == 0)
        {
            alert("Please enter a username.");
            return false;
        }
        
        if (document.getElementById(passwordID).value.search(/^\s*$/) == 0)
        {
            alert("Please enter a password.");
            return false;
        }
    }
    
    return true;
}

// display an object
function showDiv(objID, displayType)
{
    if (displayType == null){
        displayType = "block";
    }
        
    document.getElementById(objID).style.display = displayType;
    setXY(objID);
}

// hide an object
function hideDiv(objID)
{
    document.getElementById(objID).style.display = "none";
}

var isUpdated = false;
function formUpdated()
{
    isUpdated = true;
}
function Updated()
{
    return isUpdated;
}

function checkAll(objCheck, objID)
{
    if (objCheck.checked == true)
    {
        obj = document.getElementById(objID);
        allChecks = obj.getElementsByTagName("input");
        
        for (var a = 0; a < allChecks.length; a++)
        {
            if (allChecks[a].type == "checkbox")
            {
                allChecks[a].checked = true;
            }
        }
    }
    formUpdated();
}

function updateHiddenForChecks(objID, hiddenID)
{
    obj = document.getElementById(objID);
    hidObj = document.getElementById(hiddenID);
    allChecks = obj.getElementsByTagName("input");
    
    newArr = new Array();
    for (var a = 0; a < allChecks.length; a++)
    {
        if (allChecks[a].type == "checkbox")
        {
            if (allChecks[a].checked == true)
            {
                newArr.push(allChecks[a].value);
            }
        }
    }
    
    // now fill in the hidden object
    hidObj.value = newArr.join(",");
}

function setXY(popupID){
    var objPopup = document.getElementById(popupID);
    var top = 0;
    var left = 0;
    var width = 0;
    var height = 0;
    
    if (navigator.appName.indexOf("Microsoft")!=-1)
    {
        var objParent = document.body.parentElement;
        width = objParent.offsetWidth;
        height = objParent.offsetHeight;
    }
    else
    {
        width = window.innerWidth;
        height = window.innerHeight;
    }
    
    if (objPopup.offsetHeight + 50 > height){
        var newHeight = height - 50;
        objPopup.style.height = newHeight.toString() + "px";
    }
    
    left = (width / 2) - (objPopup.offsetWidth / 2);
    top = (height / 2) - (objPopup.offsetHeight / 2);
    
    // set the location
    objPopup.style.top = top.toString() + "px";
    objPopup.style.left = left.toString() + "px";
}

function checkActiveDirectory(objCheck, startUp)
{
    var objForm = document.getElementById('tablePasswordHolder');
    var arrObj = objForm.getElementsByTagName('span');
    if (!startUp){
        for (var a = 0; a < arrObj.length; a++){
            arrObj[a].enabled = !objCheck.checked;
        }
    }
    
    if (objCheck.checked == true){
        objForm.style.display = "none"; 
        arrObj = objForm.getElementsByTagName('input');
        for (var a = 0; a < arrObj.length; a++){
            if (arrObj[a].type == "password"){
                arrObj[a].value = "";
            }
        }       
    }else{
        objForm.style.display = "block";
    }
}

function AddTo(sourceID, destinationID, hiddenID)
{
    var objS = document.getElementById(sourceID);
    var objD = document.getElementById(destinationID);
    var objH = document.getElementById(hiddenID);
	var found;
	for (var a = 0; a < objS.options.length; a++)
	{
		if (objS.options[a].selected) {
			found = false;
			for( var b = 0; b < objD.options.length; b++)
			{
				if (objD.options[b].value == objS.options[a].value) {
					found = true;
					break;
				}
			}
			if (!found) {
				objD.options.add(new Option(objS.options[a].text, objS.options[a].value));
			}
		}
	}
	
	UpdateHiddenList(objD, objH);
	return false;
}

function RemoveFrom(sourceID, hiddenID)
{
    var objS = document.getElementById(sourceID);
    var objH = document.getElementById(hiddenID);
	for (var a = objS.options.length - 1; a >= 0; a--)
	{
		if (objS.options[a].selected) {
			objS.remove(a);
		}
	}
	
	UpdateHiddenList(objS, objH);
	return false;
}

function UpdateHiddenList(obj, objHidden)
{
    var tmpArr = new Array();
	for (var a = 0; a < obj.options.length; a++)
	{
	    tmpArr.push(obj.options[a].value);
	}
	objHidden.value = tmpArr.join(",");
}

function validateListBox(source, args)
{
    if (document.getElementById(source.controltovalidate).options.length > 0){
        args.IsValid = true;
    }else{
        args.IsValid = false;
    }
}

function handleDropDownCategoryChange(obj, suppressError) {
    if (!obj){
        document.getElementById('spanExpirationDate').style.display = "inline";
        document.getElementById('spanQuarterInfo').style.display = "inline";
        return;
    }
    var expire = (obj.selectedIndex <= 0 ? false : arrayCategories[obj.options[obj.selectedIndex].value][0]);
    var quarter = (obj.selectedIndex <= 0 ? false : arrayCategories[obj.options[obj.selectedIndex].value][1]);
    var comment = (obj.selectedIndex <= 0 ? "" : arrayCategories[obj.options[obj.selectedIndex].value][2]);
    
    document.getElementById('spanExpirationDate').style.display = (expire == true ? "inline" : "none");
    document.getElementById('spanQuarterInfo').style.display = (quarter == true ? "inline" : "none");
    
    if (expire == true && comment.length > 0 && suppressError == false){
        alert(comment);
    }
    
    // clear the fields
    if (expire == false){
        var arrayText = document.getElementById('spanExpirationDate').getElementsByTagName('input');
        arrayText[0].value = "";
    }
    
    if (quarter == false){
        var arrayText = document.getElementById('spanQuarterInfo').getElementsByTagName('select');
        arrayText[0].selectedIndex = 0;
    }
}

function validateUploadHidden(source, args){
    var obj = document.getElementById(source.controltovalidate);
    if (obj.parentNode.style.display != 'none'){
        if (obj.value == ""){
            args.IsValid = false;
        }else{
            args.IsValid = true;
        }
    }
}

function validateMultiSelectInput(source, args){
    var objStations = document.getElementById('multiselectStations');
    var objMarkets = document.getElementById('multiselectMarkets');
    var objLicensees = document.getElementById('multiselectLicensees');
    
    var arrayStations = document.getElementById('multiselectStations').getElementsByTagName('input');
    var arrayMarkets = document.getElementById('multiselectMarkets').getElementsByTagName('input');
    var arrayLicensees = document.getElementById('multiselectLicensees').getElementsByTagName('input');
    
    if (arrayStations[0].value != "" || arrayMarkets[0].value != "" || arrayLicensees[0].value != ""
        || document.getElementById(source.controltovalidate).checked == true){
        args.IsValid = true;   
    }else{
        args.IsValid = false;
        source.errormessage = "Please select one or more stations, markets,\nor licensees to which this document should be assigned.\n\nIf you don't want this document to be seen under any stations/markets/licensees, you should delete it instead."
    }
}

function validateRadioBand(source, args){
    var objParent = document.getElementById(source.controltovalidate).parentNode;
    
    var arrayInput = document.getElementsByTagName('input');
    for (var a = 0; a < arrayInput.length; a++){
        if (arrayInput[a].type == "radio" && arrayInput[a].checked == true){
            args.IsValid = true;
            return;
        }
    }
    args.IsValid = false;
    return;
}

/********************************/
/* Multi-select functions below */
/********************************/
function multiselect_Click (objSelection) {
	// optional arg (1): strFakeStatus  | If specified, the function will assume strFakeStatus
	//                                  | is the current value of the "selected" attribute.

	if ((objSelection.getAttribute("readonly") == "true") || (objSelection.getAttribute("disabled_x") == "true") || (objSelection.getAttribute("value") == "")) return;

	var boolWasSelected = (((arguments.length > 1) ? arguments[1] : objSelection.getAttribute("selected")) == "true");

	objSelection.setAttribute ("selected", (boolWasSelected ? "false" : "true"));
	objSelection.className = (boolWasSelected ? "deselected" : "selected");

	return;
}  // function multiselect_Click (objSelection)


function multiselect_MouseOver (objSelection) {

	if ((objSelection.getAttribute("readonly") == "true") || (objSelection.getAttribute("disabled_x") == "true") || (objSelection.getAttribute("value") == "")) return;
	objSelection.style.border = "1px dashed Highlight";

	return;
}  // function multiselect_MouseOver (objSelection)


function multiselect_MouseOut (objSelection) {

	if ((objSelection.getAttribute("readonly") == "true") || (objSelection.getAttribute("disabled_x") == "true") || (objSelection.getAttribute("value") == "")) return;
	objSelection.style.border = "1px solid Window";

	return;
}  // function multiselect_MouseOut (objSelection)


function multiselect_GetValues (strID) {
	// optional arg(1): strDelimiter  | Defaults to "|".

	// Returns all selected values as one large "|"-delimited string.
	// (Unless strDelimiter is specified, in which case it will be used instead.)

	var objMultiSelect = document.getElementById(strID);
	if (! objMultiSelect) return "";

	var arrayReturnValue = new Array();
	var arrayCells = objMultiSelect.getElementsByTagName("td");
	for (var i = 0; i < arrayCells.length; i++) if (arrayCells.item(i).getAttribute("selected") == "true") arrayReturnValue.push(arrayCells.item(i).getAttribute("value"));

    // retrieve hidden
    var arrayInput = objMultiSelect.getElementsByTagName("input");
    arrayInput[0].value = arrayReturnValue.join(",");
}  // function multiselect_GetValues (strID)


function multiselect_SelectAll (strID) {
	// Sets the "selected" attribute to "true" for all cells.

	var objMultiSelect = document.getElementById(strID);
	if (! objMultiSelect) return "";

	var strReturnValue = "";
	var arrayCells = objMultiSelect.getElementsByTagName("td");
	for (var i = 0; i < arrayCells.length; i++) multiselect_Click(arrayCells.item(i), "false");

	objMultiSelect.focus();

	return true;
}  // function multiselect_SelectAll (strID)


function multiselect_DeselectAll (strID) {
	// Sets the "selected" attribute to "false" for all cells.

	var objMultiSelect = document.getElementById(strID);
	if (! objMultiSelect) return "";

	var strReturnValue = "";
	var arrayCells = objMultiSelect.getElementsByTagName("td");
	for (var i = 0; i < arrayCells.length; i++) multiselect_Click(arrayCells.item(i), "true");

	objMultiSelect.focus();

	return true;
}  // function multiselect_DeselectAll (strID)
