﻿/*'------------------------------------------------------------------------------------
' Namn:         Contacts Filtering.js
' Beskrivning:  AJAX adhoc-filtrering på kontaktuppgifter i ÖSterstrsöms CS-db av kontakter
' Logg:
'
' När        Vem   Vad
'----------- ----  ------------------------------------------------------------------
' 2007-10    API   Initial version
' 2008-09-08 DKL   Ändrade så att alla komboboxar, utom Namn, fylls initialt  vid laddning av sidan. Skapade även en ny hantering av dropdownsfiltreringen.
'		   Alla dropdowns filtrerar varandra hela tiden.
'------------------------------------------------------------------------------------
*/

var CONNID = 6207;
var CATID = 236;


function getAdminURL(sURL)
{
	if(typeof(sURL) != "string")
		sURL = "";
	var sessionId = null;
	if(AdminURL.length > 0 && (!EnableAnonymousAccess || ((sessionId = getCookie("SessionID")) != null && sessionId != "" && sessionId != "")))
		return AdminURL + Lang + sURL;
	//if(SiteURL.length == 0)
		SiteURL = location.href.substring(0, location.href.lastIndexOf("/")+1).toLowerCase();
	//sURL = SiteURL + "~js/DelegateHttpRequest.ashx?Action=sendrequest&Lang=" + Lang + "&URL=" + sURL;

	return SiteURL + 'cs/' + sURL;
}


initNavigation();

function GetContact(url) {
        	var httpRequest;
        	
        if (window.XMLHttpRequest) { // Mozilla, Safari, ...
            httpRequest = new XMLHttpRequest();
            if (httpRequest.overrideMimeType) {
                httpRequest.overrideMimeType('text/xml');
                // See note below about this line
            }
        } 
        else if (window.ActiveXObject) { // IE
            try {
                httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
                } 
                catch (e) {
                           try {
                                httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
                               } 
                             catch (e) {}
                          }
                                       }

        if (!httpRequest) {
            alert('Giving up :( Cannot create an XMLHTTP instance');
            return false;
        }
        httpRequest.onreadystatechange = function() { FillContainer(httpRequest); };  
        httpRequest.open('POST', url, true);
        httpRequest.send('');

    }

    function FillContainer(httpRequest) {
 
     
        if (httpRequest.readyState == 4) {
            if (httpRequest.status == 200) {
                document.getElementById("contactContainer").innerHTML = httpRequest.responseText;
               } else {
                alert('There was a problem with the request.');
            }
        }

    }



function ShowContact( di ) {

	if ( di != -1 ) 
	{
		var url = 'http://' + location.host + '/default.aspx?di=' + di + '&ptdi=1429';
		GetContact(url); 
		
	}
}


function MakeRequest(url, params, dropdownName, dropdownFillValue, forNameBox) {
        	var httpRequest;
        	
        if (window.XMLHttpRequest) { // Mozilla, Safari, ...
            httpRequest = new XMLHttpRequest();
            if (httpRequest.overrideMimeType) {
                httpRequest.overrideMimeType('text/xml');
                // See note below about this line
            }
        } 
        else if (window.ActiveXObject) { // IE
            try {
                httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
                } 
                catch (e) {
                           try {
                                httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
                               } 
                             catch (e) {}
                          }
                                       }

        if (!httpRequest) {
            alert('Giving up :( Cannot create an XMLHTTP instance');
            return false;
        }
	
		if (dropdownName != "") {
			httpRequest.onreadystatechange = function() { FillDropDown(httpRequest, dropdownName, dropdownFillValue); };  
		        httpRequest.open('POST', url, true, 'IUSR_CS_Contacts_AA', 'F2u0l0A0j7ax');
		        httpRequest.send(params);
		}
    }

    function FillDropDown(httpRequest, dropdownName, dropdownFillValue) {
 
     var dropdown = document.getElementById(dropdownName);
        
        if (httpRequest.readyState == 4) {
            if (httpRequest.status == 200) {
                var xmldom = httpRequest.responseXML;
                
                var rows = xmldom.getElementsByTagName('row');
                
                 for (i=0; i < rows.length; i++)
                 {
			var Exists = ExistsInDropDown(dropdownName, rows[i].getAttribute(dropdownFillValue));

			if ( !Exists ) 
			{
				var optn = document.createElement("OPTION");
				optn.text = rows[i].getAttribute(dropdownFillValue);
		        	optn.value = rows[i].getAttribute("documentid");
		        	dropdown.options.add(optn);        
		        }
		}

                
               } else {
                alert('There was a problem with the request.');
            }
        }

    }
    
//DKL 2008-09-07 - Lägga till påfyllning av alla komboboxar utom Kontakter, initialt när sidan laddas.
function initNavigation() { 
FillCountry("ddCountry", "All - 28EAE920-D389-4aaa-AA46-6379C7DBD82F"); 
//FillDepartment with all departments
FillDepartment("ddDepartment", "All - 4F46046B-AC60-4a62-AFE2-F5C2ADEF83F7", "")
//FillOffice with all offices
FillOffice("ddOffice", "All - 3EA85FB7-F727-486b-97C5-1F1C446DB7CB", "")
}

function GetSelectedText(dropdownName) {
	var r = document.getElementById(dropdownName);
	if ( r != null)
		return r.options[r.options.selectedIndex].text;
	else
		return false;
}


function GetSelectedValue(dropdownName) {
	var r = document.getElementById(dropdownName);
	if ( r != null) 
		return r.options[r.options.selectedIndex].value;
	else
		return false;
}


function FillCountry(dropdownName,Department)
{
	var url = getAdminURL("WebApi/ContentStudio_Document_EPT_XmlIndexQuery.ashx?ConnectionID=" + CONNID + "&action=query&PageNumber=1&PageSize=100");
	var params = "<root><parameters>" + 
	"<parameter name=\"categoryID\">" + CATID + "</parameter>" + 
	"<parameter name=\"f1\">Country</parameter>" + 
	"<parameter name=\"f2\">Department</parameter>" + 
	"<parameter name=\"r1\">1</parameter>";
	
	//Alla "Countries" ska visas
   	 if (Department == "All - 28EAE920-D389-4aaa-AA46-6379C7DBD82F")
   	 {
	    params = params + "<parameter name=\"filter\">[Country] NOT LIKE ''</parameter>";
	}

	params = params + "<parameter name=\"aggregateTyp\">SelectDistinctValues</parameter>" +
	"<parameter name=\"aggregateType\">SelectDistinctValues</parameter>" +
	"</parameters></root>";
	          
	MakeRequest(url, params, dropdownName, "Country");		
}


function FillDepartment(dropdownName, Country, Office)
{
  var dropdown = document.getElementById(dropdownName);
  
    var url = getAdminURL("WebApi/ContentStudio_Document_EPT_XmlIndexQuery.ashx?ConnectionID=" + CONNID + "&action=query&PageNumber=1&PageSize=100");
	var params = "<root><parameters>" + 
    "<parameter name=\"categoryID\">" + CATID + "</parameter>" + 
    "<parameter name=\"f1\">Department</parameter>" + 
    "<parameter name=\"f2\">Country</parameter>" +     
    "<parameter name=\"f3\">Office</parameter>" +
    "<parameter name=\"r1\">1</parameter>";
    
    //Filtrering baserat på:
    // 1. Initialt alla "Department"s ska visas
    if (Country == "All - 4F46046B-AC60-4a62-AFE2-F5C2ADEF83F7")
    {
        params = params + "<parameter name=\"filter\">[Department] NOT LIKE ''</parameter>";
    }
    // 2. Töm och filtrera enbart på Office om Country och Office inte är vald
    else if (Country == "AllforOffice" && GetSelectedValue("ddCountry") == "-1" && GetSelectedValue(Office) != "-1" && GetSelectedValue(dropdownName) == "-1")
    {      
  	ClearDropDown(dropdownName);
	var sOffice = GetSelectedText(Office);
        params = params + "<parameter name=\"filter\">[Department] NOT LIKE '' AND [Office] LIKE '" + sOffice + "'</parameter>";
    }
    // 3. Filtrera på Country och Office
    else if (Office != "" && GetSelectedValue(Country) != "-1" && GetSelectedValue(dropdownName) == "-1" && Office != "AllforCountry")
    {
	ClearDropDown(dropdownName);
        var sCountry = GetSelectedText("ddCountry");
        var sOffice= GetSelectedText(Office);
        params = params + "<parameter name=\"filter\">[Department] NOT LIKE '' AND [Country] LIKE '" + sCountry + "' AND [Office] LIKE '" + sOffice + "'</parameter>";
    }
    // 4. Annars töm och filtrera på Country
    else if (Office == "AllforCountry")
    {
	ClearDropDown(dropdownName);
        var sCountry = GetSelectedText(Country);
        params = params + "<parameter name=\"filter\">[Department] NOT LIKE '' AND [Country] LIKE '" + sCountry + "'</parameter>";
    }
    else
    {
    return;
    }
    
    params = params + "<parameter name=\"aggregateTyp\">SelectDistinctValues</parameter>" +
    "<parameter name=\"aggregateType\">SelectDistinctValues</parameter>" +
    "</parameters></root>";
    
    MakeRequest(url, params, dropdownName, "Department");
}


function FillOffice(dropdownName, Country, Department)
{
    var dropdown = document.getElementById(dropdownName);

	var url = getAdminURL("WebApi/ContentStudio_Document_EPT_XmlIndexQuery.ashx?ConnectionID=" + CONNID + "&action=query&PageNumber=1&PageSize=100");
	var params = "<root><parameters>" + 
    "<parameter name=\"categoryID\">" + CATID + "</parameter>" + 
    "<parameter name=\"f1\">Office</parameter>" + 
    "<parameter name=\"f2\">Department</parameter>" + 
    "<parameter name=\"f3\">Country</parameter>" +
    "<parameter name=\"r1\">1</parameter>";
    
    //1. Initialt, visa alla Offices
    if (Country == "All - 3EA85FB7-F727-486b-97C5-1F1C446DB7CB")
    {
         params = params + "<parameter name=\"filter\">[Department] NOT LIKE '' AND [Country] NOT LIKE '' AND [Office] NOT LIKE ''</parameter>";
    }
    //2. Filtrera bara på Country 
    else if (Department == "AllforCountry")// && sDepartment != "-1")
    {   
         var sCountry = GetSelectedText(Country);
    	 ClearDropDown(dropdownName);
         params = params + "<parameter name=\"filter\">[Department] NOT LIKE '' AND [Country] LIKE '" + sCountry + "' AND [Office] NOT LIKE ''</parameter>";
    }
   //3. Bara Department om inte Country är valt(men inte ändra om man bara väljer Deparment-alternativet, dvs. längst upp)
    else if (GetSelectedValue(Country) == "-1" && GetSelectedValue(Department) != "-1") 
    {   
         var sDepartment= GetSelectedText(Department);
         ClearDropDown(dropdownName);
         params = params + "<parameter name=\"filter\">[Department] LIKE '" + sDepartment + "' AND [Country] NOT LIKE '' AND [Office] NOT LIKE ''</parameter>"; 
    }
    //4. Filtrera på både Department och Country(men inte ändra om man bara väljer Deparment-alternativet, dvs.längst upp)
    else if (GetSelectedValue(dropdownName) == "-1" && GetSelectedValue(Department) != "-1")
    {
        var sDepartment= GetSelectedText(Department);
        var sCountry = GetSelectedText(Country);
    	ClearDropDown(dropdownName);
        params = params + "<parameter name=\"filter\">[Department] LIKE '" + sDepartment + "' AND [Country] LIKE '" + sCountry + "' AND [Office] NOT LIKE ''</parameter>"; 
    }
    else
    {
    return;
    }
     params = params + "<parameter name=\"aggregateTyp\">SelectDistinctValues</parameter>" +
    "<parameter name=\"aggregateType\">SelectDistinctValues</parameter>" +
    "</parameters></root>";
    
    MakeRequest(url, params, dropdownName, "Office");
}

function FillName(dropdownName, Country, Department, Office)
{
    var dropdown = document.getElementById(dropdownName);
    ClearDropDown(dropdownName);
    	
    sCountry = GetSelectedText(Country);
	
    var url = getAdminURL("WebApi/ContentStudio_Document_EPT_XmlIndexQuery.ashx?ConnectionID=" + CONNID + "&action=query&PageNumber=1&PageSize=100");
    var params = "<root><parameters>" + 
    "<parameter name=\"categoryID\">" + CATID + "</parameter>" + 
	"<parameter name=\"f1\">Name</parameter>" + 
	"<parameter name=\"f2\">Office</parameter>" + 
	"<parameter name=\"f3\">Department</parameter>" + 
	"<parameter name=\"f4\">Country</parameter>" +
	"<parameter name=\"r1\">1</parameter>";
	
    //1. Filtrera på enbart Country
    if (Department == "AllforCountry" && Office == "AllforCountry")
    {
        params = params + "<parameter name=\"filter\">[Department] NOT LIKE '' AND [Country] LIKE '" + sCountry + "' AND [Office] NOT LIKE '' AND [Name] NOT LIKE '' </parameter>";
    }
    //2. Department
    else if (Office == "AllforDepartment")
    {
        sDepartment = GetSelectedText(Department);
        //2a. Enbart på Department (om inte land är valt)
        if (GetSelectedValue(Country) == "-1")
          params = params + "<parameter name=\"filter\">[Department] LIKE '" + sDepartment + "' AND [Country] NOT LIKE '' AND [Office] NOT LIKE '' AND [Name] NOT LIKE '' </parameter>";
        //2b. Filtrera på Department och land
        else
          params = params + "<parameter name=\"filter\">[Department] LIKE '" + sDepartment + "' AND [Country]  LIKE '" + sCountry + "' AND [Office] NOT LIKE '' AND [Name] NOT LIKE '' </parameter>";
    }    
    //3. Office
    else if (Department == "AllforOffice")
    {
         sOffice = GetSelectedText(Office);
         //TODO: If Department är valt filtrera
         if (GetSelectedValue("ddDepartment")=="-1")
            params = params + "<parameter name=\"filter\">[Department] NOT LIKE '' AND [Country] NOT LIKE '' AND [Office] LIKE '" + sOffice +"' AND [Name] NOT LIKE '' </parameter>"; 
         else
            params = params + "<parameter name=\"filter\">[Department] LIKE '" + GetSelectedText("ddDepartment") + "' AND [Country] NOT LIKE '' AND [Office] LIKE '" + sOffice +"' AND [Name] NOT LIKE '' </parameter>"; 
    } 
    //4. Department, Office och land
    else
    {   
        sDepartment = GetSelectedText(Department);
        sOffice = GetSelectedText(Office);
 	    params = params + "<parameter name=\"filter\">[Department] LIKE '" + sDepartment + "' AND [Country] LIKE '" + sCountry + "' AND [Office] LIKE '" + sOffice +"' AND [Name] NOT LIKE '' </parameter>";
    }   
    params = params + "</parameters></root>";
        
	MakeRequest(url, params, dropdownName, "Name");       
}


function ClearDropDown(dropdownName) {
	var i;
	var dropdown = document.getElementById(dropdownName);
	
	for ( i = dropdown.options.length - 1; i >= 1; i--) 
		dropdown.options[i] = null;
		
}

function resetFilter() {
	ClearDropDown("ddCountry");
	ClearDropDown("ddDepartment");
	ClearDropDown("ddOffice");
	ClearDropDown("ddName");
	initNavigation();
}

function ExistsInDropDown(dropdownName, myValue) {

	var Found = false;
	var i;
	var dropdown = document.getElementById(dropdownName);
	var res;

	for ( i = 0; i < dropdown.options.length; i++) 
	{		
	if ( dropdown.options[i].text.toLowerCase() == myValue.toLowerCase() ) {
			Found = true;   
			i = dropdown.options.length;
		}
	}

	return Found;
}
