//Empties a list box
function EmptyDdl(objDdl)
{
	if (objDdl == null)
		return;
	objDdl.selectedIndex = -1;
	var iListBoxLength = objDdl.options.length;
	for (var i = 0; i < iListBoxLength; i++)
		objDdl.remove(0);
}

//Adds an option item with text optionText to the objDdl dropdownlist
function AddToDdl(objDdl, optionText, optionValue)
{
	var objOption = new Option(optionText, optionValue);
	objDdl.options[objDdl.options.length] = objOption;
}

function AddToDdlSet(objDdl, optionText, optionValue, key)
{
	var objOption = new Option(optionText, optionValue);
	objDdl.add(objOption);
	if (optionValue == key)
		 objOption.selected = true;
}

function createRequestObject()
{
    var request;
    if(window.XMLHttpRequest)
    {
        request = new XMLHttpRequest();
    }
    else
        if(window.ActiveXObject)
		{
		request = new ActiveXObject("Microsoft.XMLHTTP");
		}

    return request;
}



//Get states for the given country
function XMLHTTPGetDdlValues(dependencyName, dependencyValue)
{
	var objHTTP = createRequestObject();
	var sParams = ""
	sParams += "Name=" + dependencyName + "&";
	sParams += "Value=" + dependencyValue;
	objHTTP.open("POST", "GetDdlData.aspx?" + sParams, false);
	objHTTP.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	objHTTP.send("<ListBoxRequest Dummy='DUMMY'> </ListBoxRequest>");
	var szReply = objHTTP.responseText;
	
	if (objHTTP.status != 200)
	{
		//failure
		szReply = "";
	}
	return szReply;
}

function XMLHTTPPostDdlSelectedValue(ddlName, ddlValue)
{
	var objHTTP = createRequestObject();
	var sParams = "Post=True&"
	sParams += "Name=" + ddlName + "&";
	sParams += "Value=" + ddlValue;
	objHTTP.open("POST", "GetDdlData.aspx?" + sParams, false);
	objHTTP.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	objHTTP.send("<ListBoxRequest Dummy='DUMMY'> </ListBoxRequest>");
}

function PopulateDdlSet(objDdl, dependencyName, dependencyValue, key)
{
	//EmptyDdl(objDdl)
	//AddToDdl(objDdl, "Laden...", 0)
	var sXML = XMLHTTPGetDdlValues(dependencyName, dependencyValue);
	
	var keystring = "<option value=\"" + key + "\">";
	var selectedkeystring = "<option value=\"" + key + "\" selected='true'>";
	
	sXML = sXML.replace(/<Response>/, "").replace(/<\/Response>/, "").replace(keystring, selectedkeystring);
	select_innerHTML(objDdl,sXML);
	
	
	//EmptyDdl(objDdl)
	
	/*var objXmlDom = new ActiveXObject("Microsoft.XMLDOM");
	if (!objXmlDom.loadXML(sXML))
	{
		AddToDdl(objDdl, "Error", 0)
		var sErr = "Error:\n" + sXML;
		alert(sErr);
	}
	else
	{
		var nodes = objXmlDom.selectNodes("/Response/Option");
		for (var i = 0; i < nodes.length; i++)
		{
			AddToDdlSet(objDdl, nodes[i].getAttribute("Text"), nodes[i].getAttribute("Value"), key);
		}
	}
	*/
}

function PopulateDdl(objDdl, dependencyName, dependencyValue)
{
	//EmptyDdl(objDdl)
	//AddToDdl(objDdl, "Laden...", 0)
	var sXML = XMLHTTPGetDdlValues(dependencyName, dependencyValue);
	sXML = sXML.replace(/<Response>/, "").replace(/<\/Response>/, "");
	select_innerHTML(objDdl,sXML);
	
	//EmptyDdl(objDdl)
	
	/*
	var objXmlDom = new ActiveXObject("Microsoft.XMLDOM");
	if (!objXmlDom.loadXML(sXML))
	{
		AddToDdl(objDdl, "Error", 0)
		var sErr = "Error:\n" + sXML;
		alert(sErr);
	}
	else
	{
		var nodes = objXmlDom.selectNodes("/Response/Option");
		for (var i = 0; i < nodes.length; i++)
		{
			AddToDdl(objDdl, nodes[i].getAttribute("Text"), nodes[i].getAttribute("Value"));
		}
	}
	*/
}


function select_innerHTML(objeto,innerHTML){
/******
* select_innerHTML - corrige o bug do InnerHTML em selects no IE
* Veja o problema em: http://support.microsoft.com/default.aspx?scid=kb;en-us;276228
* Versão: 2.1 - 04/09/2007
* Autor: Micox - Náiron José C. Guimarães - micoxjcg@yahoo.com.br
* @objeto(tipo HTMLobject): o select a ser alterado
* @innerHTML(tipo string): o novo valor do innerHTML
*******/
    objeto.innerHTML = ""
    var selTemp = document.createElement("micoxselect")
    var opt;
    selTemp.id="micoxselect1"
    document.body.appendChild(selTemp)
    selTemp = document.getElementById("micoxselect1")
    selTemp.style.display="none"
    if(innerHTML.toLowerCase().indexOf("<option")<0){//se não é option eu converto
        innerHTML = "<option>" + innerHTML + "</option>"
    }
    innerHTML = innerHTML.toLowerCase().replace(/<option/g,"<span").replace(/<\/option/g,"</span")
    selTemp.innerHTML = innerHTML
      
    
    for(var i=0;i<selTemp.childNodes.length;i++){
  var spantemp = selTemp.childNodes[i];
  
        if(spantemp.tagName){     
            opt = document.createElement("OPTION")
    
   if(document.all){ //IE
    objeto.add(opt)
   }else{
    objeto.appendChild(opt)
   }       
    
   //getting attributes
   for(var j=0; j<spantemp.attributes.length ; j++){
    var attrName = spantemp.attributes[j].nodeName;
    var attrVal = spantemp.attributes[j].nodeValue;
    if(attrVal){
     try{
      opt.setAttribute(attrName,attrVal);
      opt.setAttributeNode(spantemp.attributes[j].cloneNode(true));
     }catch(e){}
    }
   }
   //getting styles
   if(spantemp.style){
    for(var y in spantemp.style){
     try{opt.style[y] = spantemp.style[y];}catch(e){}
    }
   }
   //value and text
   opt.value = spantemp.getAttribute("value")
   opt.text = spantemp.innerHTML
   //IE
   opt.selected = spantemp.getAttribute('selected');
   opt.className = spantemp.className;
  } 
 }    
 document.body.removeChild(selTemp)
 selTemp = null
}
			




