var NS = (document.layers) ? 1 : 0;
var IE = (document.all) ? 1: 0;
var MZ = (window.XMLHttpRequest && !NS) ? 1: 0;

var IsAdvancedSearch = false;
var IsMailingRequests = false;
var bShowAllItems = false;
var sSelectedType ='';
var sTypesOpotropuseIds='';
var IsOpotropuse=false;
var sLanguage="5";
var selAllText = " ";

var bDontUpdateTypes = false;
if(!IE)
	bDontUpdateTypes=true;
	
// Call the ChangeAllListsByChoosenType functions:
function SetListsByTypes()
{
	if(!IsMailingRequests)
	{
		if(IsAdvancedSearch)
			ChangeAllAdvancedSearchListsByChoosenType();
		else 
			ChangeAllListsByChoosenType();
	}
}
/////////////////////////////////////////////////////////////////////////////////
// Update sTypesOpotropuseIds Parameter with all the TypesOpotropuse numbers from the RTA Types tables, 
// and then call the ChangeAllListsByChoosenType function:
function ChangeAllAdvancedSearchListsByChoosenType()
{
	loadXMLFromUrl('/Lapam/Templates/GetXMLValues.aspx?GetTypesBindTo=OpotropusTemplate', '', '', true);
}
function UpdateOpotropuseIdsNChangeListsByType(sOpotropuseIDs)
{
	sTypesOpotropuseIds=sOpotropuseIDs;	
	if(sTypesOpotropuseIds=='')
		sTypesOpotropuseIds=';2;';
	
	ChangeAllListsByChoosenType();		
}
/////////////////////////////////////////////////////////////////////////////////
// Main function:
function ChangeAllListsByChoosenType()
{
	try
	{
		if(!bDontUpdateTypes)
		{
			//this is the value from the 2 radio's button (bShowAllItems = show all items or just the actives)
			var obj = document.getElementsByName('ShowListAllItems');
			bShowAllItems = obj[1].checked;

			sSelectedType = GetChoosenType();
			
			IsOpotropuse = (sTypesOpotropuseIds.indexOf(';'+sSelectedType+';')>-1);

			UpdateTypesListBox();
			UpdatePublisherListBox();
			UpdateSubjectListBox();
			UpdateCitiesListBox();
			UpdateDistrictsListBox();
		}
	} 
	catch (e) 
	{ 
		// alert('ChangeAllListsByChoosenType Error ' + e.message + ' occurred.'); 
	} 
}

/////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////
// get the choosen type value:
function GetChoosenType()
{
	var sTypeControlName='';
	var sSelectedVal='';
	
	try
	{
		if(IsAdvancedSearch)
			sTypeControlName='Types';
		else if(IsMailingRequests)
			sTypeControlName='Types';
		else
			sTypeControlName='SearchUC1_Types';

		var oTypeControl = document.getElementById(sTypeControlName);
		
		var oTypeOptions = oTypeControl.options;
		
		for(var i=0;i<oTypeOptions.length;i++)
		{
			if(oTypeOptions[i].selected)
			{
				sSelectedVal=oTypeOptions[i].value;
				break;
			}
		}
	} 
	catch (e) 
	{ 
		// alert('GetChoosenType Error ' + e.message + ' occurred.'); 
	} 
	return sSelectedVal;
}
/////////////////////////////////////////////////////////////////////////////////
// update Publishers in the Regular Search and Advanced Search:
function UpdatePublisherListBox()
{
	try
	{
		var sDBTableName='PUBLISHER';
		var oTest;
		var sPublisherControlName='';
		
		if(IsAdvancedSearch)
		{
			sPublisherControlName='slbPublisher';
			if(document.getElementsByName(sPublisherControlName+":lbItemsCollection")== null)
			{
				if(document.getElementsByName(sPublisherControlName+"_lbItemsCollection"))
				sPublisherControlName='';
			
			}
			else
			{
			if(document.getElementsByName(sPublisherControlName+":lbItemsCollection")(0)==null)
				sPublisherControlName='';
			}
			oTest = document.getElementById('Phrase');
		}
		else if(IsMailingRequests)
		{
			sPublisherControlName='';
		}
		else
		{
			sPublisherControlName='SearchUC1_Publishers';	
			oTest = document.getElementById('SearchUC1_Phrase');
		}

		if(sPublisherControlName != '')
		{
			sURL = "/Lapam/Templates/GetXMLValues.aspx?BoundListName=" + sDBTableName + "&SelectedVal=-1&ShowAllItems=" + bShowAllItems;
			if(oTest.value=='sigipublishers')
				document.location = sURL;
			else
				loadXMLFromUrl(sURL, -1, sPublisherControlName, false);
				//loadXMLFromUrl(sURL, sSelectedType, sListToUpdate2, false);
		}
	} 
	catch (e) 
	{ 
		// alert('UpdatePublisherListBox Error ' + e.message + ' occurred.'); 
	} 
}
/////////////////////////////////////////////////////////////////////////////////
// update Subjects in the Regular Search and Advanced Search:
function UpdateSubjectListBox()
{
	try
	{
		var sDBTableName='SUBJECTS';
		var oTest;
		var sSubjectControlName='';
		
		if(IsAdvancedSearch)
		{
			sSubjectControlName='slbSubject';
			if(document.getElementsByName(sSubjectControlName+":lbItemsCollection") == null)
			{
			if(document.getElementsByName(sSubjectControlName+"_lbItemsCollection"))
				sSubjectControlName='';
			}
			else
			{
			if(document.getElementsByName(sSubjectControlName+":lbItemsCollection")(0)==null)
				sSubjectControlName='';
			}
			oTest = document.getElementById('Phrase');
		}
		else if(IsMailingRequests)
		{
			sSubjectControlName='';
		}
		else
		{
			sSubjectControlName='SearchUC1_Subjects';	
			oTest = document.getElementById('SearchUC1_Phrase');
		}
					
		if(sSubjectControlName != '')
		{
			sURL = "/Lapam/Templates/GetXMLValues.aspx?BoundListName=" + sDBTableName + "&SelectedVal=" + sSelectedType + "&ShowAllItems=" + bShowAllItems;
			if(oTest.value=='sigisubjects')
				document.location = sURL;
			else
				loadXMLFromUrl(sURL, sSelectedType, sSubjectControlName, false);
		}
	} 
	catch (e) 
	{ 
		// alert('UpdateSubjectListBox Error ' + e.message + ' occurred.'); 
	} 
}
/////////////////////////////////////////////////////////////////////////////////
// Show and Hid all the AdvancedSearch List Controls:
function ShowNHideAdvancedSearchListControl(sControlName, Show)
{	
	try
	{
		var indx = 0;
		var sControlTbl='slb' + sControlName + '_slbTbl';
		var sControlTrSpace='tr' + sControlName + '';
		
		oTbl = document.getElementById(sControlTbl);
		oTrSpace = document.getElementById(sControlTrSpace);

		if(oTbl!=null && oTrSpace!=null)
		{
			if(Show)
			{
				oTbl.style.display='inline';
				oTrSpace.style.display='inline';
			}
			else
			{
				oTbl.style.display='none';
				oTrSpace.style.display='none';

				sControlName='slb' + sControlName
						
				var objListCollection = document.getElementsByName(sControlName + ':lbItemsCollection');
				if(objListCollection == null)
				{
					objListCollection = document.getElementsByName(sControlName + '_lbItemsCollection');
				}
				var objListSelected = document.getElementsByName(sControlName + ':lbItemsSelected');
				if(objListSelected == null)
				{
					objListSelected = document.getElementsByName(sControlName + '_lbItemsSelected');
				}
				var objListAllItems = document.getElementsByName(sControlName + ':lbAllItems');
				if(objListAllItems == null)
				{
					objListAllItems = document.getElementsByName(sControlName + '_lbAllItems');
				}
				oListCollection = objListCollection(0);
				oListSelected = objListSelected(0);
				oListAllItems = objListAllItems(0);

				if(oListCollection.length>0)
					for(i=oListCollection.length-1;i>=0;i--)
						oListCollection.remove(i);
				if(oListSelected.length>0)
					for(i=oListSelected.length-1;i>=0;i--)
						oListSelected.remove(i);
				
				if(oListAllItems.length>0)
				{
					//for(i=oListAllItems.length-1;i>=0;i--)
					for(i=0;i<oListAllItems.length;i++)
					{
						oListAllItems.options(i).selected=false;
						indx++;
						opt = new Option(oListAllItems.options(i).text, oListAllItems.options(i).value);
						oListCollection.add(opt, indx);	
					}
				}
			}//end if(Show)
		}//end if(oTbl!=null && oTrSpace!=null)
	}// end try
	catch (e) 
	{ 
		// alert('ShowNHideAdvancedSearchListControl Error ' + e.message + ' occurred.'); 
	} 
}
/////////////////////////////////////////////////////////////////////////////////
// update slbTypes in the Advanced Search:
function UpdateTypesListBox()
{
	try
	{
		if(IsAdvancedSearch)
		{
			var sControlName='Types';
			if(sSelectedType!='-1')
				ShowNHideAdvancedSearchListControl(sControlName, false);
			else
				ShowNHideAdvancedSearchListControl(sControlName, true);
		}
	} 
	catch (e) 
	{ 
		// alert('UpdateTypesListBox Error ' + e.message + ' occurred.'); 
	} 
} 
/////////////////////////////////////////////////////////////////////////////////
// update Cities in Advanced Search:
function UpdateCitiesListBox()
{
	try
	{
		if(IsAdvancedSearch)
		{
			var sControlName='Cities';
			if(IsOpotropuse)
				ShowNHideAdvancedSearchListControl(sControlName, false);
			else
				ShowNHideAdvancedSearchListControl(sControlName, true);
		}			
	} 
	catch (e) 
	{ 
		// alert('UpdateCitiesListBox Error ' + e.message + ' occurred.'); 
	} 
}
/////////////////////////////////////////////////////////////////////////////////
// update Districts in Advanced Search:
function UpdateDistrictsListBox()
{
	try
	{
		if(IsAdvancedSearch)
		{
			var sControlName='Districts';
			if((sSelectedType=='-1') || (IsOpotropuse))
				ShowNHideAdvancedSearchListControl(sControlName, true);
			else
				ShowNHideAdvancedSearchListControl(sControlName, false);
		}			
	} 
	catch (e) 
	{ 
		// alert('UpdateDistrictsListBox Error ' + e.message + ' occurred.'); 
	} 
}
/////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////
// load the request parameters with httpRequest:
function loadXMLFromUrl(url, sSelectedVal, sUpdateListName, bGetOpotropusIds) 
{
	try
	{
		var httpRequest;

		if (typeof netscape != 'undefined' && typeof netscape.security != 'undefined') 
		{ 
			try 
			{
				//// alert("is netscape!"); 
				netscape.security.PrivilegeManager.enablePrivilege('Universa-lBrowserRead'); 
			} 
			catch (e) 
			{ 
				//// alert('loadXMLFromUrl - Netscape Error ' + e.message + ' occurred.'); 
			} 
		}
		
		if (window.ActiveXObject)
		{ 
			httpRequest = new ActiveXObject('Microsoft.XMLHTTP'); 
		} 
		else if (window.XMLHttpRequest)
		{ 
			httpRequest = new XMLHttpRequest(); 
		} 

		if (httpRequest) 
		{ 
			httpRequest.open('GET', url, true); 
			httpRequest.onreadystatechange = function (evt)
			{ 
				if (httpRequest.readyState == 4) 
				{ 
					var sXml = httpRequest.responseText;
					if(bGetOpotropusIds)
						UpdateOpotropuseIdsNChangeListsByType(sXml);
					else
						GetValsFromXML(sXml, sSelectedVal, sUpdateListName);
				} 
			}; 
			httpRequest.send(null); 
		} 
		else 
		{ 
			// alert("Error: object httpRequest not set !");
		} 
	} 
	catch (e) 
	{ 
		// alert('loadXMLFromUrl Error ' + e.message + ' occurred.'); 
	} 
} 
/////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////
// get all the values from XML, fillter them, and send them to UpdateLists function:
function GetValsFromXML(sXML, sSelectedVal, sUpdateListName)
{	
	try
	{
		//// alert(sXML);
		var objXML = new ActiveXObject("Microsoft.XMLDOM");
		objXML.loadXML(sXML);
		
		if(sSelectedVal==-1 || sUpdateListName.toUpperCase().indexOf("TYPE")>0)
			sCodeId = "CODE_ID";
		else
			sCodeId = "TYPE_ID";

		var SelectByCulture = (objXML.selectNodes("/NewDataSet/*[C_CULTURE_ID=" + sLanguage + "]").length>0);
		
		//if((sSelectedVal==-1)&&(!IsAdvancedSearch)&&(!IsMailingRequests))
		if(SelectByCulture)
			var oXMLNodes = objXML.selectNodes("/NewDataSet/*[C_CULTURE_ID=" + sLanguage + "]");
		else if(sSelectedVal==-1 || sSelectedVal.length==0){
			if(IsAdvancedSearch)
				var oXMLNodes = objXML.selectNodes("/NewDataSet/*");
			}
		else
			var oXMLNodes = objXML.selectNodes("/NewDataSet/*[" + sCodeId + "=" + sSelectedVal + "]");

		//// alert(sXML);
		//// alert(oXMLNodes.length);

		if(IsAdvancedSearch || IsMailingRequests)
			UpdateAdvancedSearchList(sUpdateListName, oXMLNodes);
		else
			UpdateRegularSearchList(sUpdateListName, oXMLNodes);
	} 
	catch (e) 
	{ 
		// alert('GetValsFromXML Error ' + e.message + ' occurred.'); 
	} 
}
/////////////////////////////////////////////////////////////////////////////////
// update the Lists in the RegularSearch:
function UpdateRegularSearchList(sListName, oXMLNodes)
{
	try
	{
		var oList = document.getElementById(sListName);
		var SelectedVal='';
		
		for(i=0;i<oList.length;i++)
			if(oList.options(i).selected)
			{
				SelectedVal=oList.options(i).value;
				break;
			}
		
		for(i=oList.length;i>=0;i--)
		{			
			oList.remove(i);
		}
		
		var sCodeName = "CODE_NAME";
		var sCodeId = "CODE_ID";

		var selText = selAllText;
		var SelValue = "-1";
		var opt = new Option(selText, SelValue);
		oList.add(opt, 0);
		
		if(oXMLNodes!=null)
		for(i=0;i<oXMLNodes.length;i++)
		{
			selText = oXMLNodes(i).selectSingleNode(sCodeName).text;
			SelValue = oXMLNodes(i).selectSingleNode(sCodeId).text;
			opt = new Option(selText, SelValue);
			if(SelectedVal==SelValue)
				opt.selected=true;
			else
				opt.selected=false;
			
			oList.add(opt, i+1);
			
		}
	} 
	catch (e) 
	{ 
		// alert('UpdateRegularSearchList Error ' + e.message + ' occurred.'); 
	} 
}

/////////////////////////////////////////////////////////////////////////////////
// update the 3 Lists in the AdvancedSearch (3 lists: AllItems, CollectionItems and SelectedItems) :
function UpdateAdvancedSearchList(sListName, oXMLNodes)
{
	try
	{
		var objListCollection = document.getElementsByName(sListName+":lbItemsCollection");
		if(objListCollection == null)
		{
			objListCollection = document.getElementsByName(sListName+"_lbItemsCollection");
		}
		var objListSelected = document.getElementsByName(sListName+":lbItemsSelected");
		if(objListSelected == null)
		{
			objListSelected = document.getElementsByName(sListName+"_lbItemsSelected");
		}
		var objListAllItems = document.getElementsByName(sListName+":lbAllItems");
		if(objListAllItems == null)
		{
			objListAllItems = document.getElementsByName(sListName+"_lbAllItems");
		}
		oListCollection = objListCollection(0);
		oListSelected = objListSelected(0);
		oListAllItems = objListAllItems(0);

		if(oListAllItems.length>0)
			for(i=oListAllItems.length-1;i>=0;i--)
				oListAllItems.options(i).selected=false;			
		if(oListCollection.length>0)
			for(i=oListCollection.length-1;i>=0;i--)
				oListCollection.remove(i);
		if(oListSelected.length>0)
			for(i=oListSelected.length-1;i>=0;i--)
				oListSelected.remove(i);
				
		if(sListName.toUpperCase().indexOf("TYPE")>0)
		{
			sCodeName = "TYPE_NAME";
			sCodeId = "TYPE_ID";
		}
		else
		{
			sCodeName = "CODE_NAME";
			sCodeId = "CODE_ID";
		}
		
		strMatchValues=';;';
				
		for(i=0;i<oXMLNodes.length;i++)
		{
			SelValue = oXMLNodes(i).selectSingleNode(sCodeId).text;
			strMatchValues += SelValue + ';';
		}
		
		var indx=0;
		for(i=0;i<oListAllItems.length;i++)
		{
			sVal = ';' + oListAllItems.options(i).value + ';';
			if(strMatchValues.indexOf(sVal)>0)
			{
				indx++;
				opt = new Option(oListAllItems.options(i).text, oListAllItems.options(i).value);
				oListCollection.add(opt, indx);			
			}
		}
	} 
	catch (e) 
	{ 
		// alert('UpdateAdvancedSearchList Error ' + e.message + ' occurred.'); 
	} 
}



