/* ========================== */
/* script by mdr@fundament.nl */
/* ========================== */

var provinceArray  = new Array();
var cityArray      = 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&amp;XMLOnly=true');
  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 (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:

  }
  
}

/* 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 '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');
}


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 = '';  
  var 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');
}


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)?'complex':'complexen';
      count = projectcount;
      break;
  }
 //alert('debug-5.3: inside create indicator'+ count);
  document.getElementById('indicator1').innerHTML = count + '&nbsp;' + text + ' gevonden';
}



function setKindOfRealEstate(truefalse,type){
//alert('debug-6: start Kind Of Realestate');
  var items=xmldoc.getElementsByTagName('realestate');
  //alert('debug-6.1: itemlength: '+items.length);
  var pivItems=0;
  //alert('debug-6.2:items: '+items[0].firstChild.nodeValue+' en '+items[1].firstChild.nodeValue);
  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:resetOptions("'+ type +'","'+paramState+'"); 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 resetOptions(type,paramState){
     if (paramState=='new'){
      document.getElementById('kindofrealestate_'+type+'_existing').className ='hc-item_off';
      document.getElementById('kindofrealestate_'+type+'_existing').innerHTML='Bestaande bouw';
      }else{
      document.getElementById('kindofrealestate_'+type+'_new').className ='hc-item_off';
      document.getElementById('kindofrealestate_'+type+'_new').innerHTML='Nieuwbouw';
      }
   }
   
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');
}

function createElements(j) {
//alert('debug-7.1:start createElements');
  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') {
				if(flashProvincieOk){
         	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>';
				}
      } 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' && flashProvincieOk) {
    if(curClicked!='') {
      sendProvincesToFlash(flashprovinces);
    }
  }

  html[j]+= (tagStripped2!='')?'</select>':'</ul>';
	if(flashProvincieOk){
		if (tagStripped1 != curClicked && tagStripped1 != 'province') {
			document.getElementById(tagStripped1).innerHTML = html[j];
		}
	}else{
		if (tagStripped1 != curClicked) {
			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?switchto='+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();
  initUrl = (initType=='null')?xmlClientUrl+'/search':xmlClientUrl+'/search?switchto='+initType+'&XMLOnly=true';
  //alert(initUrl);
  sndReq(initUrl);
  if (initType!='null') {
    switchButton(initType);
  }
  document.getElementById('container').style.height = document.body.offsetHeight-2+'px';
  showinfo();
}


this.onload = init;

