﻿var div_suggestId = "#div_suggest";
var seaCntrolClass = ".search";
var hoverList = null;
var searchControl;
var valueControl;
var parentControls;
var searchText;
var stype;
var tabIndex = 0;
var keySel = false;
var canEnter = false;
var getDp = false;
var url="../Ajax/AjaxServices.aspx";

var oldm;
var oldmID;

$(document).ready(function() {
    if ($("#tab").is("table")) { tabReady(); }
    var tmp = $(seaCntrolClass);
    $("form").keydown(function(e) { if (e.keyCode == 13) { return KeySelect(); } });
    tmp.keydown(function(e) {
        if (e.keyCode == 13 && !canEnter)
            return false;
        else
            return KeyLis(e);
    });
    tmp.focus(function() { GetText(this); });
    tmp.blur(function() { SetText(this); });
    tmp.attr("autocomplete", "off");
    $("body").click(function() { SetDefault(); });
    
        tmp.each(function() {
        var t = $(this);
        var j = eval("(" + t.attr("rel") + ")");
        var c = $("#" + j.VC);
        if ($.trim(t.val()) == "") {
            c.val("");
        } else if ($.trim(c.val()) == "") {
            t.val("");
        }

    });
});


function tabReady() {
    var m = $("#tabBtn > div");
    
    m.click(function() { changeClick(this) });
    var j = eval("(" + $.trim($("#hf_TabState").val()) + ")");

    oldmID = "#" + j.currentTab;
    oldm = $(oldmID);

    if (j.isAdd) {
        m.attr("disabled", "disabled");
    } else {
    if (!j.fileTakeEnabled) {
        $("#m5").attr("disabled", "disabled");
    }
    }
    
    oldm.addClass("selected")
    oldm.attr("disabled", "disabled");
    $("div[id$='_con']").hide();
    $(oldmID + "_con").show();
}

function changeClick(self) {
    var newm = $(self);
    var newmID = "#" + newm.attr("id");
    if (oldm != null) {
        oldm.removeClass();
        oldm.removeAttr("disabled");
        $(oldmID + "_con").hide();
    }
    newm.addClass("selected");
    newm.attr("disabled", "disabled");

    $(newmID + "_con").show();
    oldmID = newmID;
    oldm = newm;
}

$.exclSuggest = function(sugtype, pid) {
if (keySel) {
    keySel = false;
    return false;
}
if ($.trim(sugtype).length < 1)
    return false;

var tb_value = $.trim($(searchControl).val());

if (tb_value.length < 1) {
    $(div_suggestId).hide();
    //$("select").show();
    return false;
}

var offs = $(searchControl).offset();
$(div_suggestId).css({ position: "absolute", left: (offs.left + 220) + "px", top: (offs.top + 21) + "px" });

var jdata={ type: "suggest", stype: sugtype, value: tb_value, excl:"true" };
if(pid != undefined){
    if(isNaN(pid)){pid=0;}
    jdata={ type: "suggest", stype: sugtype, value: tb_value, excl:"true", parid:pid };
}
$.post(
            url,
            jdata,
            function(data) {

                if (data.length > 0) {
                    makeList(data);
                    $(div_suggestId).show();
                    //$("select").hide();

                    stype = sugtype;
                    return true;
                }
                else {
                    $(div_suggestId).hide();
                    //$("select").show();
                    $(searchControl)[0].focus();
                    return false;
                }
            },
            "json"
            );
return false;
}

$.suggest = function(sugtype, turl) {
    if(turl != undefined ){
        url=turl;
    }
    
    if (keySel) {
        keySel = false;
        return false;
    }
    if ($.trim(sugtype).length < 1)
        return false;

    var tb_value = $.trim($(searchControl).val());

    if (tb_value.length < 1) {
        $(div_suggestId).hide();
        //$("select").show();
        return false;
    }
    if (sugtype == "unit")
                getDp = true;
    var offs = $(searchControl).offset();
    $(div_suggestId).css({ position: "absolute", left: (offs.left+220) + "px", top: (offs.top + 21) + "px" });

    $.post(
            url,
            { type: "suggest", stype: sugtype, value: tb_value },
            function(data) {

                if (data.length > 0) {
                    makeList(data);
                    $(div_suggestId).show();
                    //$("select").hide();

                    stype = sugtype;
                    return true;
                }
                else {
                    $(div_suggestId).hide();
                    //$("select").show();
                    $(searchControl)[0].focus();
                    return false;
                }
            },
            "json"
            );
    return false;
}

function makeList(data) {

    $(div_suggestId).html("<ul></ul>");

    var con = $(div_suggestId + " > ul");

    $.each(data, function(index, json) {
        var controlID = index + "" + "_sugList";
        var list = "<li id='" + controlID + "'><div class='name'>" + json.name + "</div><div class='spell'>" + json.spell + "</div><div class='value'>" + json.value + "</div></li>";
        con.append(list);
    });
    $("div[class='value']").hide();
    $(div_suggestId + " li").eq(0).addClass("hover");
    hoverList = $(div_suggestId + " .hover");
    $(div_suggestId + " li").click(function() {
        hoverList = $(this);
        KeySelect();
    });
    canEnter = true;
}

function KeyLis(e) {
    if ((e.keyCode == 38 || e.keyCode == 40 || e.keyCode == 37 || e.keyCode == 39)) {

        if (e.keyCode == 40 || e.keyCode == 39) {
            keySel = true;
            if (hoverList.next().is("li"))
                hoverList.next().addClass("hover");
            else
                $(div_suggestId + " li").eq(0).addClass("hover");

            hoverList.removeClass();
            hoverList = $(div_suggestId + " .hover");
            return false;
        }
        if (e.keyCode == 38 || e.keyCode == 37) {
            keySel = true;
            if (hoverList.prev().is("li"))
                hoverList.prev().addClass("hover");
            else {
                var startList = $(div_suggestId + " li");
                startList.eq(startList.length - 1).addClass("hover");
            }

            hoverList.removeClass();
            hoverList = $(div_suggestId + " .hover");
            return false;
        }

        $(searchControl)[0].focus();
        keySel = false;
        return false;
    }
}

function KeySelect() {
            keySel = true;
            if (searchControl != null || hoverList != null) {
                var stext = $.trim(hoverList.children(".name").text());
                var svalue = $.trim(hoverList.children(".value").text())
                $(searchControl).val(stext);
                $(valueControl).val(svalue);
                searchText = stext;
                $(div_suggestId).hide();
                //$("select").show();
                hoverList = null;

                if (parentControls != null) {
                    if ($.isArray(parentControls)) {
                        $.post(
                    url,
                    { type: "parenttext", stype: stype, value: svalue },
                    function(json) {

                        if ($.isArray(json.value)) {
                            $.each(json.value, function(index, arr) {
                                var p = $("#" + parentControls[index]);
                                if (p != null) {
                                     if (getDp && p.is("select") && $.isArray(arr)) {
                                        var opeHtml = "";
                                        var pval = $("#" + p.attr("rel"));
                                        $.each(arr, function(ind, arrs) {
                                            opeHtml += "<option value=\"" + arrs.v + "\">" + arrs.t + "</option>";
                                        });
                                        p.children().remove();
                                        p.append(opeHtml); 
                                        pval.val(p.val());
                                        
                                    } else {
                                        p.html(arr);
                                    }
                                }
                            });
                        }
                    },
                    "json"
                );

                    }
                }
            }
            canEnter = false;
            try {
                tabIndex++;
                $("*[tabindex='" + tabIndex + "']")[0].focus();
            } catch (e) { }
            return false;
        }
        
function deptChange(dept) {
            var dcontr = $(dept);
            var dcontrVal = $("#" + dcontr.attr("rel"));
            dcontrVal.val(dcontr.val());
        }

function GetText(control) {
    if (hoverList != null)
        SetDefault();

    var thiscontrol = $(control);
    if (searchControl != control) {
        searchControl = control;
        searchText = "";
    }

    var controls = eval("(" + thiscontrol.attr("rel") + ")");
    valueControl = "#" + controls.VC;
    parentControls = controls.PC ? controls.PC : null;
    //alert(parentControls);

    var text = $.trim(thiscontrol.val());
    if (text != "") {
        searchText = text;
    }

    try { tabIndex = parseInt(thiscontrol.attr("tabindex")); } catch (e) { }
    keySel = false;
    return false;
}

function SetText(control) {
    var text = $.trim($(control).val());

    if (text == "" && control == searchControl) {
        $(valueControl).val("");
        searchText = "";
        searchControl = "";
        hoverList = null;
    } else if (text != searchText && searchText != "" && control == searchControl) {
        $(control).val(searchText);
    } else if (text != "" && !canEnter && $(valueControl).val()=="") {
        $(control).val(""); 
    }
}

function SetDefault() {
    if (hoverList != null && $(searchControl).is("input")) {
        KeySelect();
    }
}

function degreeChange(t,cid){
    var c=$('#'+cid);
    if($(t).val()=='00'){
        c.attr("disabled", "disabled")
    }else{
        c.removeAttr("disabled");
    }
}
