
var selectContainer;// array holding alle the selecter on current page
var selectContainerCount;

var searchableHits;

function updateData(baseURL,elementid,kategoriid,sektionid,rubrikid,regionid,kortsogx,kortsogy,kortsograd,prisfra,pristil,annoncetype)
{
getElements();
xmlHttp=GetXmlHttpObject()
if (xmlHttp==null)
  {
  alert ("Your browser does not support AJAX!");
  return;
  }
  var url = generateUrl(baseURL, elementid, kategoriid, sektionid, rubrikid, regionid, kortsogx, kortsogy, kortsograd, prisfra, pristil, annoncetype);

xmlHttp.onreadystatechange = stateChanged;
xmlHttp.open("POST",url,true);
xmlHttp.send(null);
}
// is used to change the stage i the dropdown call the function to change the value in dropdown
function stateChanged()
{ 
    if (xmlHttp.readyState==4)
    { 
        if(xmlHttp.status == 200)
		    {			    
              if(xmlHttp.responseText.substring(0,5)=='ERROR')
              {
                // do nothing
              }
              else {             

                  var card = eval('(' + xmlHttp.responseText + ')');
                 
                  for (k in card)
                  {
                      switch (k) 
                                {
                          case 'n1':
                            ClearAndSetStateListItems(card.n1,"navdata1");
                            break;    
                          case 'n2':
                            ClearAndSetStateListItems(card.n2,"navdata2");
                            break;
                          case 'n3':
                            ClearAndSetStateListItems(card.n3,"navdata3");
                            break;
                          case 'n4':
                            ClearAndSetStateListItems(card.n4,"navdata4");
                            break;
                          case 'n5':
                            ClearAndSetStateListItems(card.n5,"navdata5");
                            break;
                          case 'n6':
                            ClearAndSetStateListItems(card.n6,"navdata6");
                            break;
                          case 'n7':
                            ClearAndSetStateListItems(card.n7,"navdata7");
                            break;
                          case 'n8':
                            ClearAndSetStateListItems(card.n8,"navdata8");
                            break;
                          case 'n9':
                            ClearAndSetStateListItems(card.n9,"navdata9");
                            break;
                          case 'n10':
                            ClearAndSetStateListItems(card.n10,"navdata10");
                            break;
                          case 'n11':
                            ClearAndSetStateListItems(card.n11,"navdata11");
                            break;
                          case 'n12':
                            ClearAndSetStateListItems(card.n12,"navdata12");
                            break;
                          case 'n13':
                            ClearAndSetStateListItems(card.n13,"navdata13");
                            break;
                          case 'n14':
                            ClearAndSetStateListItems(card.n14,"navdata14");
                            break;
                          case 'n15':
                            ClearAndSetStateListItems(card.n15,"navdata15");
                            break;
                          case 'n16':
                            ClearAndSetStateListItems(card.n16,"navdata16");
                            break;
                          case 'n17':
                            ClearAndSetStateListItems(card.n17,"navdata17");
                            break;
                          case 'n18':
                            ClearAndSetStateListItems(card.n18,"navdata18");
                            break;
                          case 'n19':
                            ClearAndSetStateListItems(card.n19,"navdata19");
                            break;
                          case 'n20':
                            ClearAndSetStateListItems(card.n20,"navdata20");
                            break;
                        
                          default:
                          }
                    }
                }
             }
            else
            {
            alert("There was a problem retrieving data from the server." );
            }
     }
}


// generate the XMLHttp object used in ajax 
function GetXmlHttpObject()
{
var xmlHttp=null;
try
  {
  // Firefox, Opera 8.0+, Safari
  xmlHttp=new XMLHttpRequest();
  }
catch (e)
  {
  // Internet Explorer
  try
    {
    xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
    }
  catch (e)
    {
    xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
  }
return xmlHttp;
}

// empty a dropdown and refill with updatede values 
// data: the data to fill the dropdown
// dropdownid: dropdown id for a special dropdown 
function ClearAndSetStateListItems(data, dropdownid)
{
    var itemList = document.getElementById(dropdownid);

    if (itemList != null && itemList.className != "taxoNarrowField" && itemList.className != "narrowField") {

        var index = itemList.value;
        if (itemList.options != null)
        {
            //empty a dropdown
            for (var count = itemList.options.length-1; count >-1; count--)
            {
                itemList.options[count] = null;
            }

            for (var count = 0; count < data.length; count++) {
                
                var value = data[count].value;
                value = value.replace("''","");
                value = value.toLowerCase();
            
                if (data[count].count == -1)
                {
                    optionItem = new Option(data[count].name, 0,  false, true);
                }
                else if (value == index) {             
                    if (document.getElementById("MatchingAdsAmount")) {
                        document.getElementById("MatchingAdsAmount").innerHTML = "Match: " + data[count].count + " annoncer";
                    }
                    optionItem = new Option(data[count].name + " (" + data[count].count + ")", value, false, true);
                }
                else
                {

                    optionItem = new Option(data[count].name + " (" + data[count].count + ")", value, false, false);
                }

                // gray out the option if count i 0

                if(data[count].count=='0')
                {
                   optionItem.style.color ='gray';
                } 

                itemList.options[itemList.length] = optionItem;
            }            
        }
    }
}

// generate the url for every ajax call
// return: a new full url with all value
function generateUrl(baseURL, elementid, kategoriid, sektionid, rubrikid, regionid, kortsogx, kortsogy, kortsograd, prisfra, pristil, annoncetype)
{
    // get element returns all present dropdown i corrent context getElements(); 
    // the new base url 
    var newurl = baseURL;
    if (baseURL.indexOf("?")>-1)
    {newurl += "&"}
    else
    {newurl += "?"}
    newurl +="regionid="+regionid+"&kortsogx="+kortsogx+"&kortsogy="+kortsogy+"&kortsograd="+kortsograd;

    if((kategoriid !="0" && kategoriid != "") || (sektionid != "0"&& sektionid != "")|| (rubrikid != "0" && rubrikid != ""))
    {
        if (rubrikid != "0")
            {
            newurl += "&rubrikid="+rubrikid;
            }
        if (sektionid != "0")
            {
            newurl += "&sektionid="+sektionid;
            }
        if (kategoriid != "0")
            {
            newurl += "&kategoriid="+kategoriid;
            }

        if (prisfra != "0" && prisfra != "" && prisfra != undefined) 
            {
            newurl += "&prisfra=" + prisfra;
        }
        if (pristil != "0" && pristil != "" && pristil != undefined) 
        {
            newurl += "&pristil=" + pristil;
        }
        if (annoncetype != "" && annoncetype != undefined) 
        {
            newurl += "&annoncetype=" + annoncetype;
        }
    }
    else
        {
        alert("Request URL must contain kategoriid or sektionid or rubrikid ");
        }
      
      // alert(document.forms[0].navdata1.getAttribute("lang"));
    var ddtemp="";
    var isrange = false;
    var ddRangeStart = ""
    var ddRangeEnd = ""
    var ddtempprev = "";
    
    for (var i in selectContainer)
    {
        ddtemp = document.getElementById(i)
        if (ddtemp!=null && ddtemp.id.indexOf('navdata')>-1)
        {
            ddRangeStart = ""
            ddRangeEnd = ""
            if ((ddtemp.value != '0') && (ddtemp.type=='checkbox') && (ddtemp.checked == 1))
            {
                newurl+="&"+i+"="+escape(selectContainer[i]);
            }
            else if ((ddtemp.type=='select-one') && (ddtemp.selectedIndex>-1) && (ddtemp.value != '0' || ((ddtemp.value=='0' && ddtemp.options[ddtemp.selectedIndex].text.substring(0,1)=='0'))))
            {
                isrange = false;
                isrange = document.getElementById(ddtemp.id+"_2") == "[object]" || document.getElementById(ddtemp.id+"_2") == "[object HTMLSelectElement]" || ddtemp.id.indexOf("_2")>-1;
                
                if (ddtemp.getAttribute("lang") != "" && ddtemp.getAttribute("lang")==elementid)
                {
                    //alert(ddtemp.getAttribute("lang"));
                    //Do nothing - this is done because of depending navigators 
                }
                else 
                {
                    if (isrange == true) 
                    {
                        if (ddtemp.id.indexOf("_2") > -1) {
                            ddRangeEnd = document.getElementById(ddtemp.id);
                            if (ddtempprev == "[object]" || ddtempprev == "[object HTMLSelectElement]") {
                                ddRangeStart = document.getElementById(ddtempprev.id)
                            }
                        }
                        if (ddRangeEnd == "[object]" || ddRangeEnd == "[object HTMLSelectElement]") {
                            if (ddRangeStart.selectedIndex != 0 || ddRangeEnd.selectedIndex != ddtemp.length - 1) {
                                newurl += "&" + ddRangeStart.id + "=" + escape(selectContainer[ddRangeStart.id]);
                                newurl += "&" + ddRangeEnd.id + "=" + escape(selectContainer[ddRangeEnd.id]);
                            }
                        }
                    }
                    else
                    {
                        newurl+="&"+i+"="+escape(selectContainer[i]);
                    }
                }
            }
        }
        else
        {
            newurl+="&"+i+"="+escape(selectContainer[i]);
        }
        ddtempprev = ddtemp;
    }
    //alert(newurl);
    return newurl;

}




// generate a list with all the dropdown on current page
function getElements()
{
    selectContainerCount=0;
    selectContainer = new Array();
    var tempValue ="";

    for(var i = 1;i<=20;i++)
    {
        var temp
        if (document.getElementById("navdata"+i) != null)
        {
            temp = document.getElementById("navdata"+i)
            // if the value is not null the dropdown is added to the list.
            tempValue = temp.value;
            selectContainer[temp.id] = tempValue;
            selectContainerCount++; 
        }
        
        
        if (document.getElementById("navdata"+i+"_2") != null)
        {
            temp = document.getElementById("navdata"+i+"_2")
            
            // if the value is not null the dropdown is added to the list.
        
            tempValue = temp.value;
            selectContainer[temp.id] = tempValue;
            selectContainerCount++; 
        }
    }
    appendElements("AntalDage", "0")
    appendElements("Forhandler", "0")
    appendElements("Medbillede", "")
    var Fritekst = getQueryStringParameter("Fritekst")
    if (Fritekst != "")
    {
        selectContainer["Fritekst"] = unescape(Fritekst);
    }
    
}

function appendElements(ElementName, ignoreValue)
{
    temp = document.getElementById(ElementName)
    if(temp != null )
    {
        if (temp.value != ignoreValue)
        {
            switch (document.getElementById(ElementName).type) 
                {
                  case 'hidden':
                    //alert(temp.value)
                    selectContainer[ElementName] = temp.value;
                    break; 
                  case 'text':
                    //alert(temp.value)
                    selectContainer[ElementName] = temp.value;
                    break; 
                  case 'select-one':
                    //alert(temp.selected)
                    selectContainer[ElementName] = temp.options[temp.selectedIndex].value;
                    break; 
                  case 'checkbox':
                    if (temp.checked)
                    {
                        //alert(temp.value)
                        selectContainer[ElementName] = temp.value;
                    }
                    break; 
                }
            
            
            selectContainerCount++; 
        }
    }
}


function getQueryStringParameter(name)
{  
    name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");  
    var regexS = "[\\?&]"+name+"=([^&#]*)";  
    var regex = new RegExp( regexS );  
    var results = regex.exec( window.location.href );  
    if( results == null )   
        return "";  
    else
        return results[1];
}
