﻿function onDateChanged(sender, eventArgs) 
{
    var clickedControl = sender;
    var clickedControlId = sender.get_clientControlId();
    var associatedControlId = window.controlMappings[clickedControlId];
    var associatedControl = getElement(associatedControlId);
    var selectDate = new Date(clickedControl.GetSelectedDate());
    var calendarSpanId = window.controlMappings[clickedControlId + "_calendar"];
    var showHideSpanId = window.controlMappings[clickedControlId + "_link"];
    var showHideSpan = getElement(showHideSpanId);
    associatedControl.value = getShortDateFormat(selectDate);

    toggleCalendar(calendarSpanId, showHideSpan);

    if (typeof associatedControl.onkeyup !== 'undefined' && associatedControl.onkeyup != null)
        associatedControl.onkeyup();
}

function toggleCalendar(calendarSpanId, showHideSpan) {
    var calendarSpan = getElement(calendarSpanId);

    if (calendarSpan && showHideSpan) {
        if (calendarSpan.style.display == "none") {
            calendarSpan.style.display = "block";
            showHideSpan.innerHTML = hideCalendarText;
        }
        else {
            calendarSpan.style.display = "none";
            showHideSpan.innerHTML = showCalendarText;
        }
    }
}

function getShortDateFormat(date) 
{
    // default short date pattern
    var pattern = 'M/d/yyyy';

    // try to get the preferred short date pattern from the browser
    try 
    {
        pattern = Sys.CultureInfo.CurrentCulture.dateTimeFormat.ShortDatePattern;
    } 
    catch (e) { alert(e); }
 
    return date.localeFormat(pattern);
}

function deleteDoc(divToDelete, baseFieldId, subformId, subformRow) {
    var divD = getElement(divToDelete);
    var pnode = divD.parentNode;
    pnode.removeChild(divD);

    // now remove it from the storage
    var hidS = pnode.nextSibling;
    while (hidS.nodeType != 1)
        hidS = hidS.nextSibling;

    // get the id from the parameter
    var delP = divToDelete.split("_");

    var docs = hidS.value.split('|');
    if (docs.length == 1) {
        hidS.value = "";
    }
    else {
        var tempS = "";
        for (i = 0; i < docs.length; i++) {
            // get the doc id
            var doc = docs[i].split("^");
            if (doc[0] == delP[3])
                continue;

            if (tempS == "") {
                tempS = docs[i];
            }
            else {
                tempS += "|" + docs[i];
            }
        }

        hidS.value = tempS;
    }

    try {        
        if (typeof ValueChanged !== 'undefined')
            ValueChanged(baseFieldId, hidS.value, 'Document', subformId, subformRow);
    }
    catch (err) { }
}

function SingleSelectStandardsTree_NodeChecked(sender, eventArgs) {
    if (eventArgs.get_node().get_checked()) {
        var CheckedNodeId = eventArgs.get_node().get_id();

        // uncheck the other checked nodes if we're single select
        var i = 0;
        var j = 0;
        var nodes = sender.get_nodes().getNode(0).get_nodes(); // Get the nodes under the parent node
        var childNodes;
        var allChecked = true;

        sender.beginUpdate();
        // Loop through each organization and uncheck all other nodes.
        for (i = 0; i < nodes.get_length(); i++) {
            childNodes = nodes.getNode(i).get_nodes();

            for (j = 0; j < childNodes.get_length(); j++) {
                if (childNodes.getNode(j).get_id() != CheckedNodeId && childNodes.getNode(j).get_checked()) {
                    childNodes.getNode(j).set_checked(false);
                }
            }
        }
        sender.endUpdate();
    }
}

function AddDocumentToDisplay(fieldId, subformId, subformRow, baseFieldId, newRevisionsPermission, multiSelect, documentId, revision, title)
{
    var dispDiv = getElement("disp_" + fieldId + "_" + subformId + "_" + subformRow);
    if (!multiSelect && dispDiv.innerHTML != "") {
        alert(singleSelectTerm);
        return;
    }

    var DocUrl = documentBaseUrl + "&ID=" + documentId + "&Mode=ARCHIVE&Revision=";
    var PubUrl = documentBaseUrl + "&ID=" + documentId + "&Mode=PUBLISH";
    var CurUrl = "";
    if (newRevisionsPermission)
        CurUrl = documentBaseUrl + "&ID=" + documentId + "&Mode=CURRENT";
    
    var hidStorage = dispDiv.nextSibling;
    while (hidStorage.nodeType != 1)
        hidStorage = hidStorage.nextSibling;
        
    if(revision == 0)
    {
        revision = revision0Term;
        DocUrl = DocUrl + '1';
    }       
    else 
    {
        DocUrl = DocUrl + revision;
    }

    if (IsDocumentSelected(hidStorage, documentId))
        return;

    linkText = "<div id='" + fieldId + '_' + subformId + '_' + subformRow + '_' + documentId + "'>" + title + " (" + idTerm + ": " + documentId + " " + revisionTerm + ": " + revision + " <a href='" + DocUrl + "' target='_blank' class='LinkText'>" + viewTerm + "</a> ) &nbsp; <a href='" + PubUrl + "' target='_blank' class='LinkText'>" + pubRevisionTerm + "</a>";
    if (CurUrl != "")
        linkText += " &nbsp; <a href='" + CurUrl + "' target='_blank' class='LinkText'>" + curRevisionTerm + "</a>";
    linkText += " &nbsp; <span class='LinkText' onclick='deleteDoc(" + '"' + fieldId + '_' + subformId + '_' + subformRow + '_' + documentId + '",' + baseFieldId + ',' + subformId + ',' + subformRow + ");'>" + deleteTerm + "</span></div>";
    
    dispDiv.innerHTML += linkText;

    if (hidStorage.value == "")
        hidStorage.value = documentId + "^" + title + "^" + revision;
    else
        hidStorage.value += "|" + documentId + "^" + title + "^" + revision;

    try
    {
        if (typeof ValueChanged !== 'undefined')
            ValueChanged(baseFieldId, hidStorage.value, 'Document', subformId, subformRow);
    }
    catch (err) {}
}

function IsDocumentSelected(hiddenValue, documentId) {
    var valueParts = hiddenValue.value.split("|");

    for (var i = 0; i < valueParts.length; i++) {
        var documentParts = valueParts[i].split("^");
        if (documentParts[0] == documentId) {
            return true;
        }
    }

    return false;
}

function SetListFieldSelectedValueText(label, listValues) {
    selectedIds = "";

    if (listValues && listValues.options.length > 0) {
        label.innerHTML = "";
        for (i = 0; i < listValues.options.length; i++) {
            if (listValues.options[i].selected) {
                if (selectedIds != "")
                    selectedIds += "|";

                selectedIds += listValues.options[i].value;
                label.innerHTML += ", " + listValues.options[i].text;
            }
        }
        if (label.innerHTML != "" && label.innerHTML != ", ") {
            label.innerHTML = label.innerHTML.substring(2);
            label.style.display = "block";
        }
        else {
            label.style.display = "none";
        }
    }
    else {
        label.style.display = "none";
    }
}

function GetCurrentSelectedOptions(list) {
    var selectedOptions = [];
    var selectedItemCount = 0;

    for (var i = 0; i < list.options.length; i++) {
        if (list.options[i].selected) {
            selectedOptions[selectedItemCount++] = new Option(list.options[i].text, list.options[i].value);
        }
    }

    return selectedOptions;
}

function RemoveAllOptionsFromListField(targetList) {
    for (j = targetList.options.length - 1; j >= 0; j--) {
        targetList.options.remove(j);
    }
}

function AddTargetListOption(targetList, text, value, currentSelectedValues) {
    var targetOption = new Option(text, value);
    targetOption.selected = $.inArray(value, currentSelectedValues) != -1;
    targetList.options.add(targetOption);
}

function BreakoutMultiSelectValues(fieldType, fieldValue) {
    var selectedValues = [];
    if (fieldType == 'List')
        selectedValues = fieldValue.split('|');
    else {
        var splitVals = fieldValue.split('|');
        for (svi = 0; svi < splitVals.length; svi++) {
            var splitVal = splitVals[svi].split('^');
            selectedValues[svi] = splitVal[0];
        }
    }

    return selectedValues;
}

function lstValues_OnSelectedIndexChange(baseFieldId, fieldId, subformId, rowId, selectedValuesLabelId, fieldClientId) {
    var lblSelectedValues = getElement(selectedValuesLabelId);
    var listValues = getElement(fieldClientId);

    SetListFieldSelectedValueText(lblSelectedValues, listValues);

    try {
        if (ValueChanged)
            ValueChanged(baseFieldId, selectedIds, 'List', subformId, rowId);
    }
    catch (err)
    { }
}
