﻿
MSDropDown.makeAdropDown = function() {
    var alldps = this.getdps();
    var idMain = this.settings.idpostfixmain;
    var idChild = this.settings.idpostfixchild;
    var idhidden = this.settings.idhidden;
    var idA = this.settings.idpostfixa;
    var idtitlediv = this.settings.idposttitlediv;
    var idtitle = this.settings.idposttitle;
    var ddclass = this.styles.ddclass;
    var childclass = this.styles.childclass;
    var arrowclass = this.styles.arrowclass;
    var arrow = this.styles.arrow;
    var titleclass = this.styles.titleclass;
    var counter = 0;
    for (i in alldps) {
        var id = i;
        //hide original dropdown
        this.setOutOfVision(id);

        var values = alldps[i];
        var selectProp = values["selectAttributes"];
        var selectAction = values["selectAction"];
        //make a dropdown
        var position = values.position;
        //*********************************Ny bredd för width + titlewidth
        var width = (values.width + 15) + 'px';
        var titlewidth = values.width - 15 + 'px';
        var top = position.top + 'px'; //remove 100 when finalize
        var left = position.left + 'px';
        var dd_id = id + idMain; //+counter;
        if ($("#" + dd_id).length > 0) { $("#" + dd_id).remove(); }
        var childid = dd_id + idChild;
        var childtitledivid = dd_id + idtitlediv;
        var titleid = dd_id + idtitle;
        var hiddeninput = dd_id + idhidden;
        var onchange = values.onchange;
        //alert(onchange)
        //make main holder //
        var childheight = '';
        //alert("values.length " + values.length)
        //*********************************Öka höjd på dropdown
        if (values.length > this.getVisibleRows()) childheight = '145';
        var ddhtml = "";
        var zIndex = this.zIndex--;
        var css = (selectProp["disabled"] == true) ? " " + this.styles.disabled : this.styles.enabled;
        ddhtml += "<div  id='" + dd_id + "' class='" + ddclass + "' style='position:relative;width:" + width + ";z-Index:" + zIndex + "'>"; //main div
        if (selectProp["disabled"] == true) {
            //****************************Felstavat på height i båda strängar
            ddhtml += "<div id='" + childtitledivid + "' class='" + css + "'><div class='" + arrowclass + "'><img src='" + arrow + "' border='0' align='right' /></div><div style='white-space:nowrap;width:" + titlewidth + "' class='" + titleclass + "' id='" + titleid + "'>Loading...</div><input style='text-indent:-400px;position:absolute; top:0; left:0; border:none; background:transparent;cursor:pointer;width:0px;height:0px;' type='text' value='' id='" + hiddeninput + "' name='" + hiddeninput + "' /></div>"; //title div	
        } else {
            ddhtml += "<div id='" + childtitledivid + "' class='" + css + "' onclick=\"MSDropDown.openDropDown('" + dd_id + "')\"><div class='" + arrowclass + "'><img src='" + arrow + "' border='0' align='right' /></div><div style='white-space:nowrap;width:" + titlewidth + "' class='" + titleclass + "' id='" + titleid + "'>Loading...</div><input style='position:absolute; top:0; left:0; border:none; background:transparent;cursor:pointer;width:0px;height:0px;' type='text' value='' id='" + hiddeninput + "' name='" + hiddeninput + "' /></div>"; //title div
        };
        ddhtml += "<div id='" + childid + "' class='coloredScroll " + childclass + "' style='width:" + (values.width + 2) + "px'>"; //child div
        var ahtml = "";
        //create a tag
        var sValue = "";
        var sImg = "";
        for (var aCount = 0; aCount < values.length; aCount++) {
            var curretna = values[aCount];
            var aID = dd_id + "_a_" + aCount;
            var value = curretna.value;
            if (aCount == 0) {
                var selectedID = aID;
            };
            var text = curretna.text;
            var selected = curretna.selected;
            var icon = curretna.icon;
            //get selected text
            if ($("#" + id + " option:selected").text() == text) {
                sValue = text;
                selectedID = aID;
                var showIcon = this.getSetting("iconWithTitle");
                if (icon != undefined && showIcon == true) {
                    sImg = "<img hspace='2' align='absMiddle' src='" + icon + "' />";
                };
            }
            var isDisabled = curretna.disabled;
            var img = "";
            var sTitle = (this.getShowTitle() == true) ? text : '';
            var innerStyle = (curretna.style != undefined) ? curretna.style : '';
            if (curretna.optstart != undefined) {
                var optLabel = (curretna.optstart.label == undefined) ? '' : curretna.optstart.label;
                ahtml += "<div style='display:block;clear:both;'><span style='font-weight:bold;font-style:italic'>" + optLabel + "</span><div style='display:block;text-indent:10px;clear:both:'>";
            };
            if (icon != undefined) { img = "<img id='" + aID + "_icon' class='icon' align='left' src='" + icon + "' />"; };
            if (isDisabled == undefined || isDisabled == false) {
                ahtml += "<a id='" + aID + "' title='" + sTitle + "' style='display:block;" + innerStyle + "'+ href='javascript:void(0);' value='" + (value) + "' onclick=\"MSDropDown.setSelected('" + dd_id + "', '" + text + "', '" + aID + "', '" + value + "', '" + icon + "')\">"; //a tag start
            } else {
                ahtml += "<a id='" + aID + "' title='" + sTitle + "' style='cursor:pointer;filter:alpha(opacity=50);-moz-opacity:.50;opacity:.50;display:block;" + innerStyle + "' href='javascript:void(0);' value='" + (value) + "'>"; //a tag start
            };
            ahtml += img + '<span>' + text + "</span></a>"; //a tag end
            if (curretna.optend == "end") {
                ahtml += "</div></div>"; //opt group end
            };
            //ahtml += "<a id='"+aID+"' title='"+sTitle+"' style='display:block' href=\"javascript:void(0);MSDropDown.setSelected('"+dd_id+"','"+text+"','"+aID+"')\">"+img + '<span>'+text+"</span></a>" //a tag
        };
        sValue = (sValue == '') ? values[0].text : sValue;
        ddhtml += ahtml;
        ddhtml += "</div>"; //child div end
        ddhtml += "</div>" //main div end			
        counter++;
        $("#" + id).after(ddhtml);
        //deafult opening
        if (selectProp["disabled"] == false) {
            //will do something
        } else {
            $("#" + dd_id).css({ opacity: 0.4 });
        };
        //apply events
        this.applyEvents(dd_id, values, id);
        if (childheight != '') $("#" + childid).css({ overflowY: 'scroll', overflowX: 'hidden', height: childheight + 'px' });
        //selected
        $("#" + titleid).html(sImg + sValue);
        this.manageSelection(id, selectedID);
        //i m not using this now;
        //this.setOutOfVision(hiddeninput);
    }

}
;

/**** manage selection ***/
MSDropDown.setSelected = function(id, value, aID, val, imgsrc) {
    //****************************Ta bort sista elementet i arrayen
    var parentID = id.split("_");
    parentID.pop();
    parentID = parentID.join("_");
    this.selected[parentID].current = aID;
    var sID = id;
    var oPorop = prop;
    var targetDiv = sID + this.settings.idposttitle; //"_title";
    var hiddeninput = sID + this.settings.idhidden;
    var prop = this.getdps(parentID);

    $("#" + parentID + " option:selected").text(value.toString());
    //working here... (problem in ie if value is not defined)
    $("#" + parentID + " option:selected").val(val.toString());
    //check if there is any method;
    if ($("#" + parentID).attr("onfocus") != undefined) {
        $("#" + parentID).focus();
        $("#" + hiddeninput).focus();
    };
    if ($("#" + parentID).attr("onchange") != undefined) {
        $("#" + parentID).change();
    };
    $("#" + hiddeninput).val(value);
    var showIcon = this.getSetting("iconWithTitle");
    if (imgsrc.toString() != 'undefined' && showIcon == true) {
        value = "<img hspace='2' align='absmiddle' src='" + imgsrc + "' />" + value;
    }
    $("#" + targetDiv).html(value);
    this.manageSelection(parentID, aID);
    //alert(this.selected[parentID].current);
    this.closeDropDown();
};
