﻿var bDisableMouseOn = false;
var dmsSelect = new Array();

function ShowDivSelect(sItem)
{
    if(bDisableMouseOn)
        return;    
    
    var id = sItem.id;    
    var divSelect = document.getElementById(id.replace("div_", "divSelect_"));
    var divText = document.getElementById(id.replace("div_", "divText_"));    
    var divSep = document.getElementById(id.replace("div_", "divSep_"));
    
    //We need to see if we want to adjust the position of the select
    var selectX = findPosX(sItem);
    var selectWidth = parseInt(divSelect.style.width);
    var textWidth = parseInt(divText.style.width);
    
    //alert((selectX + selectWidth) + " : " + (parseInt(GetViewPort().x) + 28));
    //Get the window size    
    if((selectX + selectWidth) > (parseInt(GetViewPort().x) + 28))
    {
        //we need to reverse the div        
        divSelect.style.left = selectX - selectWidth + textWidth + "px";                
    }        
    
    divText.style.borderBottom = "solid 1px white";
    divSelect.style.display = "block";        
    divSep.style.display = "block";
    
    bDisableMouseOn = true;        
}

function HideDivSelect(e, el)
{
    if(!triggerMouseArea(e, el))
        return;    

    var id = el.id;
    var divSelect = document.getElementById(id.replace("div_", "divSelect_"));
    var divText = document.getElementById(id.replace("div_", "divText_"));
    var divSep = document.getElementById(id.replace("div_", "divSep_"));
    
    
    divText.style.borderBottom = "solid 1px black";
    divSelect.style.display = "none";    
    divSep.style.display = "none";
    divSelect.scrollTop = "0px";
    
    bDisableMouseOn = false;
}

function xContains (container, containee) {
  var isParent = false;
  do {
    if ((isParent = container == containee))
      break;
    if(containee)
	    containee = containee.parentNode;

  }
  while (containee != null);
  return isParent;
}

function triggerMouseArea(e,el)
{
	var rel = (window.event) ? e.toElement : e.relatedTarget;
	return !(xContains(el,rel));
}

function GetViewPort()
{
    var retObj = new Object();    
    
    if (self.innerHeight) // all except Explorer
    {
	    retObj.x = self.innerWidth;
	    retObj.y = self.innerHeight;
    }
    else if (document.documentElement && document.documentElement.clientHeight)
	    // Explorer 6 Strict Mode
    {
	    retObj.x = document.documentElement.clientWidth;
	    retObj.y = document.documentElement.clientHeight;
    }
    else if (document.body) // other Explorers
    {
	    retObj.x = document.body.clientWidth;
	    retObj.y = document.body.clientHeight;
    }
    
    return retObj;
}

function SetClick(el, ClientID, text, value)
{    
    var objItem = eval("obj" + ClientID);  
    
    if(objItem["Keys"] == null && objItem["Text"] == null)    
    {
        objItem["Keys"] = new Array();
        objItem["Text"] = new Object();
    }
     
    var aKeys = objItem["Keys"];     
    var objText = objItem["Text"];
    var hdnField = document.getElementById(objItem["hdnField"]);
    var txtField = document.getElementById(objItem["txtField"]);
    
    if(el.checked)
    {
        aKeys[aKeys.length] = value;
        objText[value] = text;
        
        objItem["Keys"] = aKeys;                
    }
    else
    {
        var newArray = new Array();
       
        for(var i=0; i < aKeys.length; i++)
        {            
            if(aKeys[i] != value)                            
                newArray[newArray.length] = aKeys[i];            
        }             
        
        if(newArray.length == 0)                    
            aKeys = new Array();        
        else
        {
            aKeys = new Array();
            for(var i=0; i < newArray.length; i++)
                aKeys[aKeys.length] = newArray[i];
        }
        
        objItem["Keys"] = aKeys;
    }
    
    var arrValues = new Array();
    
    for(var i=0; i < aKeys.length; i++)
        arrValues[arrValues.length] = objText[aKeys[i]];
    
    //Set the hidden field and the Text
    hdnField.value = aKeys.join(",");
    
    if(arrValues.length == 0)
        txtField.innerHTML = "Select one or more ...";
    else
    {
        var valStr = arrValues.join(", ");
        if(valStr.length > 35)
        {
            valStr = valStr.substring(0, 35);
            valStr = valStr.substring(0, valStr.lastIndexOf(",")) + " ...";
        }
        
        txtField.innerHTML = valStr;
    }
}