var ID_Dictionary;
var ID_MasterCombo;
var ID_DependentCombo;
var RelatedObjectsArray;
var SeleccionaItem;
var LoadingCombo = false;

function LoadCombo (idDictionary, idMasterCombo, idDependentCombo, idMoreDependentsComboArray, 
				disableArray, idRelatedObjectsArray, insertSelecionaItem)
{
	LoadingCombo = true;
	ID_Dictionary = idDictionary;
	ID_MasterCombo = idMasterCombo;
	ID_DependentCombo = idDependentCombo;
	RelatedObjectsArray = idRelatedObjectsArray;
	
	if (insertSelecionaItem != null)
		SeleccionaItem = insertSelecionaItem;
	else
		SeleccionaItem = true;

	ClearList(document.getElementById(ID_DependentCombo));

	var mastercombo = document.getElementById(ID_MasterCombo)

	if ((mastercombo.options[mastercombo.selectedIndex].text == GetString('Selecciona')) //'<%Response.write(rm.getString(Params, "Selecciona"))%>')
	 || (mastercombo.options[mastercombo.selectedIndex].text == ''))
	{
		document.getElementById(ID_DependentCombo).disabled = true;
		ChangeStateRelatedObjects(RelatedObjectsArray, true);
	}
	else
	{
		var dropDependent = document.getElementById(ID_DependentCombo);
		dropDependent.disabled = true;
		dropDependent.options[0]= new Option(GetString('lblCargando'),0);//'<%Response.write(rm.getString(Params, "lblCargando"))%>|',0);
	}
	
	if (idMoreDependentsComboArray != null)
	{
		var cont;
		for (cont=0; cont < idMoreDependentsComboArray.length; cont++)
		{
			if (idMoreDependentsComboArray[cont] != null)
			{
				var combo = document.getElementById(idMoreDependentsComboArray[cont]);
				ClearList(combo);
				if (disableArray)
					combo.disabled = true;
			}
		}
	}
	ReLoadCombo();
	LoadingCombo = false;
}

function ClearList(List)
{
	if (List)
	{
		List.innerHTML = '';
	}
}

function ChangeStateRelatedObjects(relatedObjectsArray, disabled)
{
	if (relatedObjectsArray != null)
	{
		var cont;
		for (cont=0; cont < relatedObjectsArray.length; cont++)
		{
			if (relatedObjectsArray[cont] != null)
			{
				var obj = document.getElementById(relatedObjectsArray[cont]);
				if (obj != undefined)
				{
					obj.disabled = disabled;
				}
			}
		}
	}
}

function ReLoadCombo(xmlhttpajax)
{
	var dropMaster = document.getElementById(ID_MasterCombo);
	if(xmlhttpajax==null)
	{
		if (dropMaster.value != '')
		{
			Dictionary.ID = ID_Dictionary; 
			Dictionary.FilterBy = dropMaster.value;
			Dictionary.InsertSelectItem = SeleccionaItem;
			Dictionary.GetDictionary('ReLoadCombo');
		}
	}
	else
	{
		if (xmlhttpajax.readyState != 4)
		{
			return;
		}
		var dropDependent = document.getElementById(ID_DependentCombo)
		if ((dropMaster.options[dropMaster.selectedIndex].text == GetString('Selecciona'))
			|| (dropMaster.options[dropMaster.selectedIndex].text == ''))
		{
			dropDependent.disabled = true;
			ChangeStateRelatedObjects(RelatedObjectsArray, true);

			return;			
		}
		else
		{
			dropDependent.disabled = false;
			//dropDependent.options[0] = null;
			ChangeStateRelatedObjects(RelatedObjectsArray, false);
		}
		
		var moz = (typeof document.implementation != 'undefined') && (typeof document.implementation.createDocument != 'undefined');
		var respuesta = '';

		if((IE6) || (IE5) || (IE4) || (IE) || (OPERA)) //Internet Explorer
		{
			respuesta = new String(xmlhttpajax.responseText); 
			var start = respuesta.indexOf('<root>',0);
			var end = respuesta.indexOf('</root>',start);
			var srcDrop = new String(dropDependent.outerHTML);
			var srcDropSearch = srcDrop.toLowerCase();
			var endtag = srcDropSearch.indexOf('</select>');
			
			var srcDropLoaded;
			srcDropLoaded = srcDrop.substring(0, endtag);
			srcDropLoaded +=	respuesta.substring(start + 6,end);
			srcDropLoaded += '</select>';
			dropDependent.outerHTML = srcDropLoaded;
			
			dropDependent = document.getElementById(ID_DependentCombo)
			dropDependent.options[0] = null;

		}
		else if(FIREFOX)
		{
			respuesta = new String(xmlhttpajax.responseText); 
			var start=respuesta.indexOf('<root>',0);
			var end=respuesta.indexOf('</root>',start);
			dropDependent.innerHTML = respuesta.substring(start + 6,end);
		}		
		else
		{
			respuesta = new String(xmlhttpajax.responseText); 
			var startroot = respuesta.indexOf('<root>',0);
			var endroot = respuesta.indexOf('</root>',startroot);

			respuesta = respuesta.substring(startroot + 6, endroot);
			var start=respuesta.indexOf('<option',0);
			var cont = 1;
			while (start>=0)
			{
				var end=respuesta.indexOf('</option>',start);
				
				var opcionTotal = new String(respuesta.substring(start + 1, end))
				var startAtributo = opcionTotal.indexOf('value="',0);
				var endAtributo = opcionTotal.indexOf('"', startAtributo + 7);
				var endtag = opcionTotal.indexOf('>', startAtributo);
				var opcion = new String;
				var atributo = new String;
				opcion=opcionTotal.substring(endtag + 1,end);
				if (startAtributo > -1)
				{
					atributo=opcionTotal.substring(startAtributo + 7,endAtributo);
				}
				if(opcion!='')
				{
					listItem = new Option(opcion,atributo);
					dropDependent.options[cont] = listItem;
					cont += 1;
				}
				start= respuesta.indexOf('<option',end);
			}
			dropDependent.options[0] = null;
		}

		xmlhttpajax = null;
	}
}

function LoadCombo2 (idDictionary, idMasterCombo, idDependentCombo, idMoreDependentsComboArray, 
				disableArray, idRelatedObjectsArray, insertSelecionaItem)
{
	LoadingCombo = true;
	ID_Dictionary = idDictionary;
	ID_MasterCombo = idMasterCombo;
	ID_DependentCombo = idDependentCombo;
	RelatedObjectsArray = idRelatedObjectsArray;
	
	if (insertSelecionaItem != null)
		SeleccionaItem = insertSelecionaItem;
	else
		SeleccionaItem = true;

	ClearList(document.getElementById(ID_DependentCombo));

	var mastercombo = document.getElementById(ID_MasterCombo)

	if ((mastercombo.options[mastercombo.selectedIndex].text == GetString('drop.Indiferente')) //'<%Response.write(rm.getString(Params, "Selecciona"))%>')
	 || (mastercombo.options[mastercombo.selectedIndex].text == ''))
	{
		document.getElementById(ID_DependentCombo).disabled = true;
		ChangeStateRelatedObjects(RelatedObjectsArray, true);
	}
	else
	{
		var dropDependent = document.getElementById(ID_DependentCombo);
		dropDependent.disabled = true;
		dropDependent.options[0]= new Option(GetString('lblCargando'),0);//'<%Response.write(rm.getString(Params, "lblCargando"))%>|',0);
	}
	
	if (idMoreDependentsComboArray != null)
	{
		var cont;
		for (cont=0; cont < idMoreDependentsComboArray.length; cont++)
		{
			if (idMoreDependentsComboArray[cont] != null)
			{
				var combo = document.getElementById(idMoreDependentsComboArray[cont]);
				ClearList(combo);
				if (disableArray)
					combo.disabled = true;
			}
		}
	}
	ReLoadCombo2();
	LoadingCombo = false;
}

function ReLoadCombo2(xmlhttpajax)
{
	var dropMaster = document.getElementById(ID_MasterCombo);
	if(xmlhttpajax==null)
	{
		if (dropMaster.value != '')
		{
			Dictionary.ID = ID_Dictionary; 
			Dictionary.FilterBy = dropMaster.value;
			Dictionary.InsertSelectItem = SeleccionaItem;
			Dictionary.bIndiferente = true;
			Dictionary.GetDictionary('ReLoadCombo2');
		}
	}
	else
	{
		if (xmlhttpajax.readyState != 4)
		{
			return;
		}
		var dropDependent = document.getElementById(ID_DependentCombo)
		if ((dropMaster.options[dropMaster.selectedIndex].text == GetString('drop.Indiferente'))
			|| (dropMaster.options[dropMaster.selectedIndex].text == ''))
		{
			dropDependent.disabled = true;
			ChangeStateRelatedObjects(RelatedObjectsArray, true);

			return;			
		}
		else
		{
			dropDependent.disabled = false;
			//dropDependent.options[0] = null;
			ChangeStateRelatedObjects(RelatedObjectsArray, false);
		}
		
		var moz = (typeof document.implementation != 'undefined') && (typeof document.implementation.createDocument != 'undefined');
		var respuesta = '';

		if((IE6) || (IE5) || (IE4) || (IE) || (OPERA)) //Internet Explorer
		{
			respuesta = new String(xmlhttpajax.responseText); 
			var start = respuesta.indexOf('<root>',0);
			var end = respuesta.indexOf('</root>',start);
			var srcDrop = new String(dropDependent.outerHTML);
			var srcDropSearch = srcDrop.toLowerCase();
			var endtag = srcDropSearch.indexOf('</select>');
			
			var srcDropLoaded;
			srcDropLoaded = srcDrop.substring(0, endtag);
			srcDropLoaded +=	respuesta.substring(start + 6,end);
			srcDropLoaded += '</select>';
			dropDependent.outerHTML = srcDropLoaded;
			
			dropDependent = document.getElementById(ID_DependentCombo)
			dropDependent.options[0] = null;

		}
		else if(FIREFOX)
		{
			respuesta = new String(xmlhttpajax.responseText); 
			var start=respuesta.indexOf('<root>',0);
			var end=respuesta.indexOf('</root>',start);
			dropDependent.innerHTML = respuesta.substring(start + 6,end);
		}		
		else
		{
			respuesta = new String(xmlhttpajax.responseText); 
			var startroot = respuesta.indexOf('<root>',0);
			var endroot = respuesta.indexOf('</root>',startroot);

			respuesta = respuesta.substring(startroot + 6, endroot);
			var start=respuesta.indexOf('<option',0);
			var cont = 1;
			while (start>=0)
			{
				var end=respuesta.indexOf('</option>',start);
				
				var opcionTotal = new String(respuesta.substring(start + 1, end))
				var startAtributo = opcionTotal.indexOf('value="',0);
				var endAtributo = opcionTotal.indexOf('"', startAtributo + 7);
				var endtag = opcionTotal.indexOf('>', startAtributo);
				var opcion = new String;
				var atributo = new String;
				opcion=opcionTotal.substring(endtag + 1,end);
				if (startAtributo > -1)
				{
					atributo=opcionTotal.substring(startAtributo + 7,endAtributo);
				}
				if(opcion!='')
				{
					listItem = new Option(opcion,atributo);
					dropDependent.options[cont] = listItem;
					cont += 1;
				}
				start= respuesta.indexOf('<option',end);
			}
			dropDependent.options[0] = null;
		}

		xmlhttpajax = null;
	}
}
