var maxSupportingDocs = 3;

$(document).ready(docReady);

function docReady() {

    if ($("select[size='4'][class='dropDownCheckList']").length > 0)
        $("select[size='4'][class='dropDownCheckList']").dropdownchecklist({ width: 183 });
   
    processFocusElement();
    var prm = Sys.WebForms.PageRequestManager.getInstance();
    prm.add_endRequest(requestEnd);
    prm.add_initializeRequest(SaveScrollPosition);
}

function beginRequest() {
    prm._scrollPosition = null;
}

function requestEnd() {

    processFocusElement();
    SetScrollPosition();
    UpdateCalenders();


    if ($("select[size='4'][class='dropDownCheckList']").length > 0)
        $("select[size='4'][class='dropDownCheckList']").dropdownchecklist({ width: 183 });

    //checkForAddedDocumentRows();
    
}

function processFocusElement()
{
    if ($("input[type=hidden][id$=FocusOnElementId]").length > 0 && $("input[type=hidden][id$=FocusOnElementId]").val() != "")
    {
        var focusOnElementId = $("input[type=hidden][id$=FocusOnElementId]").val();
        var hiddenFieldId = $("input[type=hidden][id$=FocusOnElementId]").attr("id");
        $.scrollTo($("#" + focusOnElementId), 800);
        $("#" + hiddenFieldId).val("");
    }
}

function selectAllCheckboxes(cssClass, select)
{
    $('.' + cssClass + ' input[type="checkbox"]').attr("checked", select);
}

function checkForAddedDocumentRows() {
    $("input[type=hidden][id^=addedClicked]").each(function() {
        var itemId = $(this).attr("id");
    });
}

function displayRow(conditionId, rowIndex)
{
    var rowSelecter = "#condition" + conditionId + "Row" + rowIndex;
    $(rowSelecter + " input[id$=IsSpecified]").val(true);
    $(rowSelecter).removeClass("notSpecified");
    $(rowSelecter).addClass("specified");
    showHideAddRemoveLinks(conditionId, rowIndex, false);

//    $("input[type=hidden][id=addedClicked" + conditionId.toString() + "0]").val("");
//    $("input[type=hidden][id=addedClicked" + conditionId.toString() + "1]").val("");
//    $("input[type=hidden][id=addedClicked" + conditionId.toString() + "2]").val("");
//    
//    $("input[type=hidden][id=addedClicked" + conditionId.toString() + rowIndex.toString() + "]").val("1");
}

function hideRow(conditionId, rowIndex)
{
    var rowSelecter = "#condition" + conditionId + "Row" + rowIndex;

    $(rowSelecter + " input[id$=IsSpecified]").val(false);
    $(rowSelecter).removeClass("specified");
    $(rowSelecter).addClass("notSpecified");
    showHideAddRemoveLinks(conditionId, rowIndex, true);
}

function showHideAddRemoveLinks(conditionId, rowIndex, showPreceedingRowLinks)
{
    if (showPreceedingRowLinks)
    {
        $("#addAnotherRow" + conditionId + "" + (rowIndex - 1)).fadeIn("normal");
        if (rowIndex - 1 != 0)
            $("#removeThisRow" + conditionId + "" + (rowIndex - 1)).fadeIn("normal");
    }
    else
    {
        $("#addAnotherRow" + conditionId + "" + (rowIndex - 1)).fadeOut("normal");
        $("#removeThisRow" + conditionId + "" + (rowIndex - 1)).fadeOut("normal");
    }
    
    var addRow = $("#addAnotherRow" + conditionId + "" + rowIndex);
    var remRow = $("#removeThisRow" + conditionId + "" + rowIndex);
    addRow.fadeIn("normal");
    remRow.fadeIn("normal");

    if (rowIndex == 0)
        remRow.hide();
    else if (rowIndex == maxSupportingDocs - 1)
        addRow.hide();
}

function initCriteria()
{
    $("tr.firstRowForCondition").each(checkConditionRow);
}

function checkConditionRow(itemIndex, item)
{
    var elem = $("#" + item.id + " + tr.specified"); // matches a row with class 'specified' that immediately follows the row with id item.id
    if (elem.length > 0)
    {
        var ids = elem.attr("id").replace("condition", "").split("Row");
        displayRow(ids[0], ids[1]);
        
        elem  = $("#" + elem.attr("id") + " + tr.specified");
        if (elem.length > 0)
        {
            ids = elem.attr("id").replace("condition", "").split("Row");
            displayRow(ids[0], ids[1]);
        }
    }
}

function slideUpDownElement(elementSelector, show, focusAfterShow)
{
    if (show)
    {
        if (focusAfterShow)
            $(elementSelector).slideDown("normal", function() { $.scrollTo($(elementSelector), 800, { offset: -30 }); });
        else
            $(elementSelector).slideDown("normal");
    }
    else
        $(elementSelector).slideUp("normal");
}

function displayADRow(rowIndex)
{
    $("#compListADRow" + rowIndex + " input[id$=AttachedDoc" + rowIndex + "Hid]").val(true);
    //$("#compListADRow" + rowIndex).show("fast", function () { $("#compListADRow" + rowIndex).removeAttr("style"); } );
    $("#compListADRow" + rowIndex).removeAttr("style"); 
    $("#removeThisADRow" + rowIndex).removeAttr("disabled");
    $("#addAnotherADRow" + (rowIndex - 1)).hide();
    $("#removeThisADRow" + (rowIndex - 1)).hide();
    if (rowIndex == 3)
    {
        $("#addAnotherADRow" + (rowIndex - 2)).hide();
        $("#removeThisADRow" + (rowIndex - 2)).hide();
    }
}

function hideADRow(rowIndex)
{
    $("#compListADRow" + rowIndex + " input[id$=IsSpecified]").val(false);
    $("#compListADRow" + rowIndex).hide();
    $("#addAnotherADRow" + (rowIndex - 1)).show();
    $("#removeThisADRow" + (rowIndex - 1)).show();
}

function initAttachedDocs()
{
    if ($("input[id$='AttachedDocChk']").attr("checked") == true)
    {
        $("#compListAttachedDocs").show();
        $("#compListAttachedDocs tr[id^=compListADRow]").each(checkAttachedDocRow);
    }
}

function checkAttachedDocRow(itemIndex, item)
{
    if ($("#" + item.id + " input[id$=IsSpecified]").val().toLowerCase() == 'true')
        displayADRow(itemIndex + 1);
}

function showHideExistingSuppDocs(triggerElemId, wrapperId)
{
    var wrapper = $("#" + wrapperId);
    
    if (wrapper.is(":visible"))
        wrapper.slideUp("normal", function() { $("#" + triggerElemId).val("Show all"); });
    else
        wrapper.slideDown("normal", function() { $("#" + triggerElemId).val("Show just first 3"); });
}

function showHideAllConditions()
{
    var view;

    if ($("#viewAllConditionsLastAction").val() == "view")
        view = false;
    else
        view = true;

    slideUpDownElement('div[id^=conditionsList]', view);

    $("#viewAllConditionsLastAction").val((view ? "view" : "hide"));
    $("#viewAllConditions").val((view ? "Hide" : "View") + " all conditions below");
}

function showCondition(conditionId)
{
    var show = $('div#conditionsList-' + conditionId).is(':not(:visible)');
    
    slideUpDownElement('#conditionsList-' + conditionId, show, true);
    $("#conditionButton-" + conditionId).val((show ? 'Hide conditions' : 'View conditions'));
}

function allCheckBoxesChecked()
{
    var count = $("input[type='checkbox']:checked").length;
    
    if (count == 3)
        $(".ProceedButton").css("display", "inline");
    else
        $(".ProceedButton").css("display", "none");
}

function showHideAdvancedSearch() {
    var view;

    if ($(".Content div").hasClass("advancedSearchShow")) {

        view = true;
        $(".advancedSearchShow").addClass("advancedSearchHide");
        $(".advancedSearchShow").removeClass("advancedSearchShow");


        $(".advancedSearchHide").html("Hide Advanced Search options &#187;");
        $(".hiddenField1").val("show");
    }

    else if ($(".Content div").hasClass("advancedSearchHide")) {
        view = false;
        $(".advancedSearchHide").addClass("advancedSearchShow");
        $(".advancedSearchHide").removeClass("advancedSearchHide");

        $(".advancedSearchShow").html("Show Advanced Search options &#187;");
        $(".hiddenField1").val("hide");
    }
       
    slideUpDownElement('.advancedSearchBox', view);
}

function roundNumber(num, dec) {
    var result = Math.round(num * Math.pow(10, dec)) / Math.pow(10, dec);
    return result;
}

function SaveScrollPosition() {
    var theDiv = document.getElementById("tableDiv");
    if (theDiv != null)
        document.cookie = theDiv.id + "=" + theDiv.scrollTop;
    
    var anotherDiv = document.getElementById("messagesTable");
    if (anotherDiv != null)
        document.cookie = anotherDiv.id + "=" + anotherDiv.scrollTop;

    var yetAnotherDiv = document.getElementById("thirdTable");
    if (yetAnotherDiv != null)
        document.cookie = yetAnotherDiv.id + "=" + yetAnotherDiv.scrollTop;
}

function SetScrollPosition() {
    var strCook = document.cookie;
    if (strCook.length > 0) {
        var cookies = strCook.split(";");
        for (var i = 0; i < cookies.length; i++) {
            var mySplit = cookies[i].split("=");
            try {
                document.getElementById(mySplit[0].replace(" ", "")).scrollTop = mySplit[1];
            }
            catch (e) {
            }
        }
    }
}


function UpdateCalenders() {
    $(".validFrom").datepicker({ showOn: 'button', buttonImage: '/includes/images/Calendar_scheduleHs.png', buttonImageOnly: true });
    $(".validTo").datepicker({ showOn: 'button', buttonImage: '/includes/images/Calendar_scheduleHs.png', buttonImageOnly: true });
}

//auto-complete stuff

function AutoCompleteFromRegistration(textElem, ev, resultsDivId, methodName, doSearch) {
    if (doSearch != "0") {
        manufacturerAutoComplete(textElem, ev, resultsDivId, methodName, doSearch);
    }
}

function manufacturerAutoComplete(textElem, ev, resultsDivId, methodName) {
    $("#hidden1").val(textElem.id);
    $("#hidden2").val(resultsDivId);

    var evt = (window.event) ? event : ev;
    var asciiCode = (evt.keyCode) ? evt.keyCode : evt.which;

    if (asciiCode != 16 && asciiCode != 17 && asciiCode != 37 && asciiCode != 39) {
        if (asciiCode == 40) //if down pressed
        {
            if ($("#" + resultsDivId).is(":visible")) {
                var selectedItem = $("#" + resultsDivId + " ul").data("selectedItem");
                if (selectedItem != $("#" + resultsDivId + " ul li").length)
                    selectedItem++;
                $("#" + resultsDivId + " ul").data("selectedItem", selectedItem);
                $("#" + resultsDivId + " ul li").removeClass("selected");
                $("#" + resultsDivId + " ul li:nth-child(" + selectedItem + ")").addClass("selected");
            }
            else
                $("" + resultsDivId).slideDown("slow");
        }
        else if (asciiCode == 38) //if up pressed
        {
            var selectedItem = $("#" + resultsDivId + " ul").data("selectedItem");
            selectedItem = (selectedItem > 0) ? selectedItem - 1 : 0;
            $("#" + resultsDivId + " ul").data("selectedItem", selectedItem);
            $("#" + resultsDivId + " ul li").removeClass("selected");
            if (selectedItem > 0)
                $("#" + resultsDivId + " ul li:nth-child(" + selectedItem + ")").addClass("selected");
        }
        else if (asciiCode == 13) // if return pressed
        {
            selectManufacturerSuggestion();
        }
        else {
            var lastEmptySetLength = $("#" + resultsDivId).data("lastEmptySetLength");

            if (
          textElem && textElem.value != null && textElem.value != ""
          && (lastEmptySetLength == null || textElem.value.length <= lastEmptySetLength)
          ) {
                $("div[id$='UpdateProgress2']").attr('style', 'visibility:visible;');
                $(".LoadingTable").attr('style', 'visibility:visible;');
                $.ajax
        ({
                type: "POST",
            url: "/acaProducts/webservices/aca.asmx/" + methodName,
            data: "{\"startString\":\"" + textElem.value + "\",\"contextKey\":\"" + getContextKey() + "\"}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            processData: false,
            success: fillProductManufacturerSuggestions
        });
            }
            else if (lastEmptySetLength == null) {
                $("#" + resultsDivId).slideUp("slow");
                $("#" + resultsDivId).text("");
                $("#" + resultsDivId).html("");

                ShowHideControlIfIE6("manufacturerProductDetails", false);
            }
        }
    }

    return (asciiCode != 13);
}

function fillProductManufacturerSuggestions(manufacturerData) {

    val = textElemId = $("#hidden1").val();
    val = resultElemId = $("#hidden2").val();
    var marginLeftvalue = 0;
    //var marginLeftvalue = 0;

    if ($("#individualAutoCompleteMargin").length > 0)
        marginLeftvalue = $("#individualAutoCompleteMargin").val();
    else if ($("#batchAutoCompleteMargin").length > 0)
        marginLeftvalue = $("#batchAutoCompleteMargin").val();
    else if ($("#autoCompleteMarginLeft").length > 0)
        marginLeftvalue = $("#autoCompleteMarginLeft").val();
    
    var html = "";
    var width = $("input[type='text'][id='" + textElemId + "']").width();
        
    if (manufacturerData.length == 0) {
        if($("#" + resultElemId).css('position') == 'absolute'){
            html = "<div class='jquery_autocomplete' style='padding: 0; margin-left:" + marginLeftvalue + "px;'><iframe></iframe><ul style='width:" + width + "px;'><li><em>No suggestions</em></li></ul></div>";
        }
    
        else
        {
            html = "<div class='jquery_autocomplete' style='position: absolute; padding: 0; margin-left:" + marginLeftvalue + "px;'><iframe></iframe><ul style='width:" + width + "px;'><li><em>No suggestions</em></li></ul></div>";
        }
        
        $("#" + resultElemId).data("lastEmptySetLength", $("input[type='text'][id='" + textElemId + "']").val().length);
    }

    else {

        if ($("#" + resultElemId).css('position') == 'absolute') {
            html = "<div class='jquery_autocomplete' style='padding: 0; margin-left:" + marginLeftvalue + "px;'><iframe></iframe><ul style='width:" + width + "px;'>";
        }

        else {
            html = "<div class='jquery_autocomplete' style='position: absolute; padding: 0; margin-left:" + marginLeftvalue + "px;'><iframe></iframe><ul style='width:" + width + "px;'>";
        }       
        
        for (var index = 0; index < manufacturerData.length; index++)
            html += '<li onclick="selectManufacturerSuggestion()" onmouseover="manufacturerSuggestionHover(' + (index + 1) + ')">' + manufacturerData[index] + '</li>';

        html + "</ul></div>";
        $("#" + resultElemId).data("lastEmptySetLength", null);
    }

    ShowHideControlIfIE6("manufacturerProductDetails", true);

    $("#" + resultElemId).html(html);
    $("#" + resultElemId + " ul").data("selectedItem", 0);
    //$("#manufacturer-autocomplete-loading").text("");

    $("div[id$='UpdateProgress2']").attr('style', 'visibility:hidden;');
    $(".LoadingTable").attr('style', 'visibility:hidden;');
    
    $("#" + resultElemId).slideDown("slow");
}

function selectManufacturerSuggestion() {

    val = textElemId = $("#hidden1").val();
    val = resultElemId = $("#hidden2").val();

    var selectedItem = $("#" + resultElemId + " ul").data("selectedItem");

    if (selectedItem != null && selectedItem > 0) {
        var selectedText = $("#" + resultElemId + " ul li:nth-child(" + selectedItem + ")").text();
        $("input[type='text'][id='" + textElemId + "']").val(selectedText);
    }
    
    ShowHideControlIfIE6("manufacturerProductDetails", false);
    
    $("#" + resultElemId).empty();
}

function manufacturerSuggestionHover(itemNum) {

    val = textElemId = $("#hidden1").val();
    val = resultElemId = $("#hidden2").val();

    $("#" + resultElemId + " ul").data("selectedItem", itemNum);
    $("#" + resultElemId + " ul li").removeClass("selected");
    $("#" + resultElemId + " ul li:nth-child(" + itemNum + ")").addClass("selected");
}

function cancelIfReturnPressed(ev) {
    var evt = (window.event) ? event : ev;
    var asciiCode = (evt.keyCode) ? evt.keyCode : evt.which;

    if (asciiCode == 13) {
        evt.cancelBubble = true;
        evt.returnValue = false;
    }

    ShowHideControlIfIE6("manufacturerProductDetails", false);

    return (asciiCode != 13);
}

function ShowHideControlIfIE6(controlId, hide) {
    if ($.browser.msie && $.browser.version.substr(0, 1) == "6") {
        if (hide)
            $("*[id$=" + controlId + "]").css("display", "none");
        else
            $("*[id$=" + controlId + "]").css("display", "inline");
    }
}



