/* ========================== */
/* script by mdr@fundament.nl */
/* ========================== */

var provinceArray  = new Array();
var cityArray      = new Array();
var districtArray       = new Array();
var neighbourhoodArray  = new Array();
var modelArray     = new Array();
var tagArray       = new Array();
var html           = new Array();
var fromjsvar = '';                                              
var tags;

function reset(s) {
  sndReq(xmlClientUrl+'/search?switchto='+s+'&reset=true&XMLOnly=true&searchdistricts=' + searchdistricts + '&searchneighbourhoods=' + searchneighbourhoods);
  for(i=0; i<provinceArray.length; i++) {
    if (provinceArray[i] != undefined)       document.getElementById('province'+provinceArray[i]).className = 'hc-item hc-item_off';
    if (cityArray[i] != undefined)     document.getElementById('city'+cityArray[i]).className = 'hc-item hc-item_off';
    if (districtArray[i] != undefined)       document.getElementById('district'+districtArray[i]).className = 'hc-item hc-item_off';
    if (neighbourhoodArray[i] != undefined)  document.getElementById('neighbourhood'+neighbourhoodArray[i]).className = 'hc-item hc-item_off';
    if (modelArray[i] != undefined)    document.getElementById('model'+modelArray[i]).className = 'hc-item hc-item_off';
  }
}


function hideinfo() {
  document.getElementById('infoback').style.display = 'none';
  document.getElementById('infotext').style.display = 'none';
}

function showinfo() {
  /*
  switch (initType) {
    case 'piv':
      document.getElementById('prijs_periode').className = 'stap_4_header_2';
      document.getElementById('stap_4_info').innerHTML ='selecteer start of einddatum';
      document.getElementById('stap_4_info_piv').className = 'selectieinfo selectieinfo_piv_enabled';
      document.getElementById('prijsselectbox').className = 'prijsselectie_piv';
    default:

  }
  */
  
}
/*function showinfo(s) {
  var bordercolor = '';
  var theinfo = '';
  switch (initType) {
    case 'koop': bordercolor = '#AF4040'; break;
    case 'huur': bordercolor = '#D0861E'; break;
    case 'piv' : bordercolor = '#5EB54F'; break;
  }
  switch (s) {
    case 'info1':
      theinfo = 'selecteer &eacute;&eacute;n of meerdere provincies'; break;
    case 'info2':
      theinfo = 'selecteer &eacute;&eacute;n of meerdere plaatsen'; break;
    case 'info3':
      theinfo = (initType=='piv')?'selecteer start of einddatum':'selecteer een prijsklasse'; break;
    case 'info4':
      theinfo = 'selecteer &eacute;&eacute;n of meerdere woningsoorten'; break;
  }
  var newLeft = (document.getElementById(s).offsetLeft-8);
  document.getElementById('infoback').style.display = 'block';
  document.getElementById('infoback').style.left = newLeft+'px';
  document.getElementById('infotext').style.display = 'block';
  document.getElementById('infotext').style.left = newLeft+'px';
  document.getElementById('infotext').innerHTML = theinfo;
  document.getElementById('infotext').style.borderColor = bordercolor;
}*/


/* remove empty (undefined) items from array */
function trimArray(a) {
  var counter = 0;
  var retval = '';
  for (var i=0; i<a.length; i++) {
    if (a[i] != undefined) {
      if (counter > 0) retval += ',';
      retval += (a[i]);
      counter++;
    }
  }
  return retval;
}


var selectArr = new Array();

//var curClicked;
function changeClass(sId, iD, t) {
  selectArr[sId] = (selectArr[sId] == undefined)?true:undefined;

  var paramtype;
  var theArray = new Array();
  className = (selectArr[sId])?'hc-item hc-item_vi':'hc-item';
  curClicked = (document.getElementById(t+iD).parentNode.parentNode["id"])
  switch (curClicked) {
    case 'province':
      paramtype = 'provinces'; provinceArray[iD] = (provinceArray[iD]==undefined)?iD:undefined; theArray = provinceArray; break;
    case 'city':
      paramtype = 'cities'; cityArray[iD] = (cityArray[iD]==undefined)?iD:undefined; theArray = cityArray; break
    case 'district':
      paramtype = 'districts'; districtArray[iD] = (districtArray[iD]==undefined)?iD:undefined; theArray = districtArray; break
    case 'neighbourhood':
      paramtype = 'neighbourhoods'; neighbourhoodArray[iD] = (neighbourhoodArray[iD]==undefined)?iD:undefined; theArray = neighbourhoodArray; break
    case 'model':
      paramtype = 'models'; modelArray[iD] = (modelArray[iD]==undefined)?iD:undefined; theArray = modelArray; break
    default: break;
  }

  var idString = trimArray(theArray);
  if (idString == '')
  {
     curClicked = '';
  }

  document.getElementById(t+iD).className = className;
  sndReq(xmlClientUrl+'/search?'+paramtype+'='+idString+'&XMLOnly=true&searchdistricts=' + searchdistricts + '&searchneighbourhoods=' + searchneighbourhoods);
}


function reformatDate(s) {
  var s1 = s.substr(0,1);
  var s2 = s.substr((s.length-4),4);
  return s1+'-'+s2;
}


function formatPrice(s) {
  var arS = new Array();
  var tel = 0;

  while (s.length>3) {
    arS[tel++] = s.substr(s.length-3);
    s = s.substr(0, s.length-3);
  }

  for (var tel2 = tel-1; tel2>=0; tel2--) {
    s += ("."+arS[tel2]);
  }
  return('&euro;&nbsp;'+s);
}


function changeOption(thisid, thisvalue) {
  var params = '';  
  thisid = thisid.substr(5, thisid.length)

  switch (thisid) {
    case 'startingprices':
      thisid = 'pricefrom';
      break;
    case 'endingprices':
      thisid = 'priceto';
      break;
    case 'startingdates':
      thisid = 'buildfrom'; 
      thisvalue = reformatDate(thisvalue);
      break;
    case 'endingdates':
      thisid = 'buildto';
      thisvalue = reformatDate(thisvalue);
      break;
  }
  params = thisid+'='+thisvalue;
  sndReq(xmlClientUrl+'/search?'+params+'&XMLOnly=true&searchdistricts=' + searchdistricts + '&searchneighbourhoods=' + searchneighbourhoods);
}


function switchClassOn(s) {
  if(!selectArr[s]) document.getElementById(s).className = 'hc-item hc-item_on';
}


function switchClassOff(s) {
  if(!selectArr[s]) document.getElementById(s).className = 'hc-item hc-item_off';
}


function switchType(searchType) {
  switch (searchType) {
      case 'piv':
        tags.push('startingdates/date');
        tags.push('endingdates/date');
        document.getElementById('startingprices').style.display = 'none';
        document.getElementById('endingprices').style.display = 'none';
        document.getElementById('startingdates').style.display = 'block';
        document.getElementById('endingdates').style.display = 'block';

        break;
      case 'koop':
        tags.push('startingprices/price');
        tags.push('endingprices/price');
        document.getElementById('startingprices').style.display = 'block';
        document.getElementById('endingprices').style.display = 'block';
        document.getElementById('startingdates').style.display = 'none';
        document.getElementById('endingdates').style.display = 'none';
        break;
      case 'huur':
        tags.push('startingprices/price');
        tags.push('endingprices/price');
        document.getElementById('startingprices').style.display = 'block';
        document.getElementById('endingprices').style.display = 'block';
        document.getElementById('startingdates').style.display = 'none';
        document.getElementById('endingdates').style.display = 'none';
        break;
    }
}


/* indicator to show number of houses found */
function createIndicator(housecount, projectcount, type) {
    var count;
    var text;

    switch (type) {
    case 'koop':
      text = (housecount==1)?'koopwoning':'koopwoningen';
      count = housecount;
      break;
    case 'huur':
      text = (housecount==1)?'huurwoning':'huurwoningen';
      count = housecount;
      break;
    case 'piv':
      text = (projectcount==1)?'project':'projecten';
      count = projectcount;
      break;
  }
  
  document.getElementById('indicator1').innerHTML = count;
  //document.getElementById('indicator2').innerHTML = text + ' gevonden';
}

function setKindOfRealEstate(truefalse,type){
  var items=xmldoc.getElementsByTagName('realestate');
  var khp=new Array('koop','huur','piv');
  for(var i=0;i<3;i++){
    document.getElementById('kindofrealestate_'+khp[i]+'_existing').className ='hc-item_off';
    document.getElementById('kindofrealestate_'+khp[i]+'_existing').innerHTML="Bestaande bouw";
    document.getElementById('kindofrealestate_'+khp[i]+'_new').className ='hc-item_off';
    document.getElementById('kindofrealestate_'+khp[i]+'_new').innerHTML="Nieuwbouw";
  }
  var pivItems=0;
  for(i=0;i<items.length;i++){
    var paramState=items[i].firstChild.nodeValue;
    var aTekst="";
    if(paramState == "new")aTekst="Nieuwbouw";
    else aTekst="Bestaande bouw";
    var str='kindofrealestate_'+type+'_'+paramState;
    if (type=="piv") pivItems++;
    document.getElementById(str).className = 'hc-item_on';
    document.getElementById(str).innerHTML = "<a href=\"javascript:changeKoR('"+paramState+"','"+type+"')\" title=\"\">"+aTekst+"</a>";
  }
   if(type == "piv" && pivItems == 1 && paramState != "new"){
    document.getElementById('datepriceselect').style.display='none';
    document.getElementById('prijsselectbox').className = 'prijsselectie_piv prijsselectie_disabled';
    document.getElementById('stap_4_info').innerHTML ='geen selectie mogelijk';
  }
}

function changeKoR(state, type) {
  if(state=="existing" && type=="piv"){
   document.getElementById('datepriceselect').style.display='none';
    document.getElementById('prijsselectbox').className = 'prijsselectie_piv prijsselectie_disabled';
    document.getElementById('stap_4_info').innerHTML ='geen selectie mogelijk';
   }
   sndReq(xmlClientUrl+'/search?kindofrealestate='+state+'&XMLOnly=true&searchdistricts=' + searchdistricts + '&searchneighbourhoods=' + searchneighbourhoods);
}

function createElements(j) {
  var selected = '';
  var slashIndex   = (tags[j].indexOf('/'));
  var tagStripped1 = (slashIndex!=-1)?tags[j].substring(0, tags[j].indexOf('/')) :tags[j];
  var tagStripped2 = (slashIndex!=-1)?tags[j].substring((tags[j].indexOf('/')+1)):'';
  /* xml subnodes are treated different in ff */
  var items = (tagStripped2)?xmldoc.getElementsByTagName(tagStripped1)[0].getElementsByTagName(tagStripped2):xmldoc.getElementsByTagName(tags[j]);
  html[j] = (tagStripped2!='')?'<select id="test_'+tagStripped1+'" onchange="changeOption(this.id, this.value)">':'<ul>';
  var flashprovinces = new Array();

  // use ordinal to change order of items
/*  var sortitems = new Array();
  
  for(i=0; i < items.length; i++) {
    if(items[i].getAttribute('ordinal') != null) {
      var new_i = (items[i].getAttribute('ordinal'));
      sortitems[new_i] = items[i];
    }
  }
  
  if(sortitems.length > 0) {
    sortitems = (trimArray(sortitems))
    items = sortitems.split(',')
  }
*/  
  for(i=0, k=0, l=0; i < items.length; i++) {
    if (items[i].firstChild.nodeValue != null) {
      className = (items[i].getAttribute('selected'))?'hc-item hc-item_off':'hc-item hc-item_on';
      if (tagStripped2!='') {
        // last endingprice is selected
        if(tagStripped1 == 'endingprices') {
          k++;
          if(k == xmldoc.getElementsByTagName('endingprices')[0].getElementsByTagName('price').length) {
            selected = 'selected="selected"';
          }
        }
        // last endingdate is selected
        if(tagStripped1 == 'endingdates') {
          l++;
          if(l == xmldoc.getElementsByTagName('endingdates')[0].getElementsByTagName('date').length) {
            selected = 'selected="selected"';
          }
        }
        var formattedItem = (tagStripped1 == 'startingprices' || tagStripped1 == 'endingprices')?formatPrice(items[i].firstChild.nodeValue):items[i].firstChild.nodeValue;
        html[j] += '<option '+selected+' id="'+tagStripped1+'_'+i+'" value="'+items[i].firstChild.nodeValue+'">'+formattedItem+'</option>';
      } else if (tagStripped1 == 'province') {
        flashprovinces[i] = (items[i].getAttribute('id'));
      } else {
        html[j] += '<li id="'+tags[j]+items[i].getAttribute('id')+'" class="'+className+'" onclick="changeClass(this.id, '+items[i].getAttribute('id')+', \''+tags[j]+'\');" onmouseover="switchClassOn(this.id);" onmouseout="switchClassOff(this.id);" title="'+items[i].firstChild.nodeValue+'">'+items[i].firstChild.nodeValue+'</li>';
      }
    }
  }
  
  if (tagStripped1 == 'province') {
    if(curClicked!='') {
      //sendProvincesToFlash(flashprovinces)
    }
  }
  

  html[j]+= (tagStripped2!='')?'</select>':'</ul>';

  if (tagStripped1 != curClicked && tagStripped1 != 'province') {
    document.getElementById(tagStripped1).innerHTML = html[j];
  }
}


var buttonArray = new Array('koop','huur','piv');

function switchButton(s) {
	//alert(s);
	for (i=0; i<buttonArray.length; i++) {
    document.getElementById('button_'+buttonArray[i]).className = '';
  }
  document.getElementById('button_'+s).className = 'selected';
  setBox(s);
  Set_Cookie_Caller(s);
}


function switchTo(s) {
  //switchButton(s);
  location.href = 'index.jsp?section='+s;
}


function glowButton(s) {
  document.getElementById(s).className = 'button_switch '+s+'_over';
}

function restoreButton(s) {
  document.getElementById(s).className = 'button_switch '+s;
}


function setFade(s) {
  document.getElementById('toonknop').src = 'gfx/toon_'+s+'.gif';
  //document.getElementById('container').style.backgroundImage = 'url("gfx/main_'+s+'.jpg")';
  if (ie)
  {
    try
    {
      document.getElementById('fade').filters(0).src = 'gfx/fade_'+s+'.png';
      document.getElementById('fade').filters(0).sizingMethod = 'scale';
    }
    catch (e)
    {
       //Sometimes thrown when user has misconfigured or old directx.
    }
  }
  else
  {
    document.getElementById('fade').style.background = 'url("gfx/fade_'+s+'.png")';
  }
}

function setColors(s) {
  document.getElementById('box_2_0').className = 'box box_2_0 box_2_0_'+s;
  document.getElementById('box_2_1').className = 'box box_2_1 box_2_1_'+s;
}


function setBox(s) {
  if(document.getElementById('box_1_3')){
    document.getElementById('box_1_3').className = 'box box_1_3 box_1_3_'+s;
  }
}

//function searchHover() {
//  document.getElementById('fadebackground').className = 'fadebackground fadebackgroundhover';
//}

//function searchHoverOff() {
//  document.getElementById('fadebackground').className = 'fadebackground';
//}


function init() {
  //externalLinks();
  setInitType();
   if(initType == 'null')
   {
      initUrl = xmlClientUrl+'/search?XMLOnly=true&searchdistricts=' + searchdistricts + '&searchneighbourhoods=' + searchneighbourhoods;
   }
   else
   {
      initUrl = xmlClientUrl+'/search?switchto='+initType+'&XMLOnly=true&searchdistricts=' + searchdistricts + '&searchneighbourhoods=' + searchneighbourhoods;
   }
  sndReq(initUrl);
  if (initType!='null') {
    switchButton(initType);
  }
  //document.getElementById('container').style.height = document.body.offsetHeight-2+'px';
  showinfo();
}


this.onload = init;
