﻿function NewWindow(mypage, myname, w, h, scroll, resize) {
    LeftPosition = (screen.width) ? (screen.width - w) / 2 : 0;
    TopPosition = (screen.height) ? (screen.height - h) / 2 : 0;
    settings = 'height=' + h + ',width=' + w + ',top=' + TopPosition + ',left=' + LeftPosition + ',scrollbars=' + scroll + ',resizable=' + resize
    if (win && !win.closed) win.close()
    win = window.open(mypage, myname, settings)
    if (win.window.focus) { win.window.focus(); }
}

function RebuildList(CssClass, textbox) {
    /* need to save this to a hidden field due to .net restrictions */
    $(textbox).val("");
    $(CssClass + " option").each(function () {
        if ($(textbox).val().length > 0)
            $(textbox).val($(textbox).val() + "," + $(this).val() + "|" + $(this).text());
        else
            $(textbox).val($(this).val() + "|" + $(this).text());
    });
}

function FilterList(source, added) {
    /* need to save this to a hidden field due to .net restrictions */
    $(source + " option").each(function () {
        sourceItem = $(this);
        $(added + " option").each(function () {
            addedItem = $(this);
            if (sourceItem.text() == addedItem.text())
                sourceItem.remove();
        });
    });

}



$(document).ready(function () {




    /* remove duplicates from the starting list */
    FilterList(".lb-local-area", ".lb-local-area-added");
    FilterList(".lb-care-setting", ".lb-care-setting-added");
    FilterList(".lb-care-group", ".lb-care-group-added");

    /* Start local area */
    $("#local-area-add").click(function () {
        $(".lb-local-area option:selected").each(function () {
            if ($(this).val() == "0") {
                $(".lb-local-area-added option").each(function () {
                    $(".lb-local-area").append("<option value='" + $(this).val() + "'>" + $(this).text() + "</option>");
                    $(this).remove();
                });
            }
            $(this).appendTo(".lb-local-area-added");
            SortList(".lb-local-area");
        });
        $(".lb-local-area-added option").each(function () {
            $(this).attr("selected", false);
        });

        /* if a new item is added then the all category isn't relevant */
        if ($(".lb-local-area-added option").length > 1) {
            $(".lb-local-area-added option").each(function () {
                if ($(this).val() == "0") {
                    found = false;
                    $(".lb-local-area option").each(function () {
                        if ($(this).val() == "0")
                            found = true;
                    });
                    if (!found)
                        $(".lb-local-area").append("<option value='" + $(this).val() + "'>" + $(this).text() + "</option>");

                    $(this).remove();
                }
            });
            SortList(".lb-local-area");
        }
        FilterList(".lb-local-area", ".lb-local-area-added");
        RebuildList(".lb-local-area-added", ".tb-local-area-added");
    });
    $("#local-area-remove").click(function () {
        $(".lb-local-area-added option:selected").each(function () {
            $(this).appendTo(".lb-local-area");
        });
        $(".lb-local-area option").each(function () {
            $(this).attr("selected", false);
        });
        FilterList(".lb-local-area", ".lb-local-area-added");
        SortList(".lb-local-area");
        RebuildList(".lb-local-area-added", ".tb-local-area-added");
    });

    /* Start care setting */
    $("#care-setting-add").click(function () {
        $(".lb-care-setting option:selected").each(function () {
            if ($(this).val() == "0") {
                $(".lb-care-setting-added option").each(function () {
                    $(".lb-care-setting").append("<option value='" + $(this).val() + "'>" + $(this).text() + "</option>");
                    $(this).remove();
                });
            }
            $(this).appendTo(".lb-care-setting-added");
            SortList(".lb-care-setting");
        });
        $(".lb-care-setting-added option").each(function () {
            $(this).attr("selected", false);
        });

        /* if a new item is added then the all category isn't relevant */
        if ($(".lb-care-setting-added option").length > 1) {
            $(".lb-care-setting-added option").each(function () {
                if ($(this).val() == "0") {
                    found = false;
                    $(".lb-care-setting option").each(function () {
                        if ($(this).val() == "0")
                            found = true;
                    });
                    if (!found)
                        $(".lb-care-setting").append("<option value='" + $(this).val() + "'>" + $(this).text() + "</option>");

                    $(this).remove();
                }
            });
            SortList(".lb-care-setting");
        }
        FilterList(".lb-care-setting", ".lb-care-setting-added");
        RebuildList(".lb-care-setting-added", ".tb-care-setting-added");
    });

    $("#care-setting-remove").click(function () {
        $(".lb-care-setting-added option:selected").each(function () {
            $(this).appendTo(".lb-care-setting");
        });
        $(".lb-care-setting option").each(function () {
            $(this).attr("selected", false);
        });
        FilterList(".lb-care-setting", ".lb-care-setting-added");
        SortList(".lb-care-setting");
        RebuildList(".lb-care-setting-added", ".tb-care-setting-added");
    });



    /* Start care group */
    $("#care-group-add").click(function () {
        $(".lb-care-group option:selected").each(function () {
            if ($(this).val() == "0") {
                $(".lb-care-group-added option").each(function () {
                    $(".lb-care-group").append("<option value='" + $(this).val() + "'>" + $(this).text() + "</option>");
                    $(this).remove();
                });
            }
            $(this).appendTo(".lb-care-group-added");
            SortList(".lb-care-group");
        });
        $(".lb-care-group-added option").each(function () {
            $(this).attr("selected", false);
        });

        /* if a new item is added then the all category isn't relevant */
        if ($(".lb-care-group-added option").length > 1) {
            $(".lb-care-group-added option").each(function () {
                if ($(this).val() == "0") {
                    found = false;
                    $(".lb-care-group option").each(function () {
                        if ($(this).val() == "0")
                            found = true;
                    });
                    if (!found)
                        $(".lb-care-group").append("<option value='" + $(this).val() + "'>" + $(this).text() + "</option>");

                    $(this).remove();
                }
            });
            SortList(".lb-care-group");
        }

        FilterList(".lb-care-group", ".lb-care-group-added");
        RebuildList(".lb-care-group-added", ".tb-care-group-added");
    });

    $("#care-group-remove").click(function () {
        $(".lb-care-group-added option:selected").each(function () {
            $(this).appendTo(".lb-care-group");
        });
        $(".lb-care-group option").each(function () {
            $(this).attr("selected", false);
        });
        FilterList(".lb-care-group", ".lb-care-group-added");
        SortList(".lb-care-group");
        RebuildList(".lb-care-group-added", ".tb-care-group-added");
    });

    /* buttons */

    $("#btn-new-care-setting").click(function () {
        newValue = $(".tb-new-care-setting").val();
        if (newValue != "") {
            $(".lb-care-setting-added").append("<option value='10000'>" + newValue + "</option>");
            RebuildList(".lb-care-setting-added", ".tb-care-setting-added");
        }
    });

    $("#btn-new-care-group").click(function () {
        newValue = $(".tb-new-care-group").val();
        if (newValue != "") {
            $(".lb-care-group-added").append("<option value='10000'>" + newValue + "</option>");
            RebuildList(".lb-care-group-added", ".tb-care-group-added");
        }
    });

});


function SortList(target) {
    var $r = $(target + " option");
    $r.sort(function (a, b) {
        if (a.text < b.text) return -1;
        if (a.text == b.text) return 0;
        return 1;
    });
    $($r).remove();
    $(target).append($($r));
}
