/************************************************************
* Geo Web Solutions (C) 2006 Bentley Systems Netherlands BV *
* -------------------------------------------------------   *
* This script page contains a number of generic functions   *
* needed for this website.                                  *
************************************************************/


/*****************VARIABLES AND CONSTANTS******************/

var _mapWidth=725;            // width of the flashobject in the website
var _mapHeight=550;           // height of the flashobject in the website

var _serviceName = 'VRD_Plattegrond';     // Name of the Geo Web Solutions service to use
//var sxCoord = 195946;		// hart van overzichtskaart (variable werkt niet; invoeren onder functie StartParams())
//var syCoord = 321121;		// hart van overzichtskaart (variable werkt niet; invoeren onder functie StartParams())
//sMapResolution = 24;		// resolutie waarmee Flash-map opgestart wordt (variable werkt niet; invoeren onder functie StartParams())
        
var _searchName = 'Adressen';  // Name of the Search to present to the user
var _questionOne = 'ZOEKVELD1'; // Name of the first Question (column) for this search
var _questionTwo = 'ZOEKVELD2';    // Name of the second Question (column) for this search
var _questionThree = 'Huisletter';    // Name of the third Question (column) for this search

var isIE = (document.all) ? true : false;
var sVersion = "2.0.0";
var xmlns = "http://www.bentley.com/FlexiMap"
var xmlns_xsi = "http://www.w3.org/2001/XMLSchema-instance";
var xsi_schemaLocation = "http://www.bentley.com/FlexiMap FMRequest.xsd";
var host = window.location.hostname;

var _answerOne='';
var _answerTwo='';

var tabs= 'MAP,SEARCH,INFO,HELP';
var tabTitle = "KAART,ZOEK ADRES,INFORMATIE,UITLEG"

function initWebsite(){

  var arrTabTitles = tabTitle.split(",");
  for (var i=0;i<arrTabTitles.length;i++) {
    document.getElementById("tab" + i).innerHTML = arrTabTitles[i];
  }

  initSearch();
  buildStartParams();

}

function initSearch(){

  startSearch('Adres','GUI1');

}

function letterSearch(sChar)
{
  //clear divtags
  document.getElementById("divAnswer1").innerHTML = '<font class="plus" style="color:000000">Een ogenblik aub...</font>';
  document.getElementById("divAnswer2").innerHTML = '';
  setTimeout('loadFirstQuestion("'+ sChar +'")', 100)
}

function retrieveXML(sendXML)
{
  var xmlObj;
  if(isIE)
  {
    xmlObj = new ActiveXObject("MSXML2.XMLHTTP");
  }
  else
  {
    xmlObj = new XMLHttpRequest();
  }

  xmlObj.open("POST","http://" + window.location.hostname + "/scripts/fleximap.dll", false);
  xmlObj.setRequestHeader("Content-Length", sendXML.length);
  xmlObj.setRequestHeader("Content-Type","application/x-www-form-urlencoded")
  xmlObj.send(sendXML);

  return xmlObj.responseXML;
}

function loadFirstQuestion(sValue)
{

  var frag;
  if(isIE)
  {
    frag = new ActiveXObject("Microsoft.XMLDOM");
  }
  else
  {
    frag = document.implementation.createDocument("", "", null);
  }

  var fragRoot = frag.createElement("fragroot");
  frag.appendChild(fragRoot);

  var fragRequest = frag.createElement("FMGetList");
  fragRoot.appendChild(fragRequest);
  fragRequest.setAttribute("version", sVersion);
  fragRequest.setAttribute("xmlns", xmlns);
  fragRequest.setAttribute("xmlns:xsi", xmlns_xsi);
  fragRequest.setAttribute("xsi:schemaLocation", xsi_schemaLocation);

  var fragService = frag.createElement("Service");
  var fragServiceText = frag.createTextNode(_serviceName);
  fragService.appendChild(fragServiceText);
  fragRequest.appendChild(fragService);

  var fragSQ = frag.createElement("SearchQuery");
  fragSQ.setAttribute("name", _searchName);
  fragRequest.appendChild(fragSQ);
  var fragSQCol = frag.createElement("Column");
  fragSQCol.setAttribute("name", _questionOne);
  if (sValue!="")
  {
    fragSQCol.appendChild(frag.createTextNode(sValue));
  }
  fragSQ.appendChild(fragSQCol);

  var sendXML;
  if(isIE)
  {
    sendXML = fragRequest.xml;
  }
  else
  {
    var ser = new XMLSerializer();
    sendXML = ser.serializeToString(fragRequest);
  }

  var responseXML = retrieveXML(sendXML);
  var responseTag = responseXML.documentElement.tagName;

  var elColumn = responseXML.documentElement.getElementsByTagName("Column")[0];
  var bshowFirst = false;
  var sHtml = '';
  for(idx = 0; idx < elColumn.childNodes.length; idx++)
  {
    elItem = elColumn.childNodes[idx];
    if(elItem.childNodes.length > 0)
    {
      sHtml += '<option value="' + elItem.childNodes[0].nodeValue + '">' + elItem.childNodes[0].nodeValue + '</option>';
    }
  }
  if(sHtml=='')
  {
    sHtml = '<br> - geen resultaten -';
  }
  else
  {
    sHtml = '<select size="1" style="background-color:ffffff" style="color:000000" width="150em" name="listbox1" id="listbox1" onClick="loadSecondQuestion(listbox1.value)">' + sHtml + '</select>';
    bshowFirst = true;
  }
  sHtml='<br><br><font class="plus" style="background-color:ffffff" style="color:000000">Straten:</font><br>' + sHtml;

  //alert(sHtml);
  document.getElementById("divAnswer1").innerHTML = sHtml;
  
  if(bshowFirst)
    loadSecondQuestion(listbox1.value);

  return true;
}

function loadSecondQuestion(sValue)
{

  //reset second answer if available
  _answerTwo = '';
  _answerOne = sValue;
  updateChoices();


  if (sValue =="")
  {
    return false;
  }

  var frag;
  if(isIE)
  {
    frag = new ActiveXObject("Microsoft.XMLDOM");
  }
  else
  {
    frag = document.implementation.createDocument("", "", null);
  }

  var fragRoot = frag.createElement("fragroot");
  frag.appendChild(fragRoot);

  var fragRequest = frag.createElement("FMGetList");
  fragRoot.appendChild(fragRequest);
  fragRequest.setAttribute("version", sVersion);
  fragRequest.setAttribute("xmlns", xmlns);
  fragRequest.setAttribute("xmlns:xsi", xmlns_xsi);
  fragRequest.setAttribute("xsi:schemaLocation", xsi_schemaLocation);

  var fragService = frag.createElement("Service");
  var fragServiceText = frag.createTextNode(_serviceName);
  fragService.appendChild(fragServiceText);
  fragRequest.appendChild(fragService);

  var fragSQ = frag.createElement("SearchQuery");
  fragSQ.setAttribute("name", _searchName);
  fragRequest.appendChild(fragSQ);
  var fragSQCol = frag.createElement("Column");
  fragSQCol.setAttribute("name", _questionOne);
  fragSQCol.appendChild(frag.createTextNode(sValue));
  fragSQ.appendChild(fragSQCol);

  fragSQCol = frag.createElement("Column");
  fragSQCol.setAttribute("name", _questionTwo);
  fragSQ.appendChild(fragSQCol);

  var sendXML;
  if(isIE)
  {
    sendXML = fragRequest.xml;
  }
  else
  {
    var ser = new XMLSerializer();
    sendXML = ser.serializeToString(fragRequest);
  }

  var responseXML = retrieveXML(sendXML);
  var responseTag = responseXML.documentElement.tagName;

  var elColumn = responseXML.documentElement.getElementsByTagName("Column")[0];

  var numAntwoorden = 0;
  var sHtml = '';
  
        sHtml += '<option value="">--- Selecteer ---</option>';

  for(idx = 0; idx < elColumn.childNodes.length; idx++)
  {
    elItem = elColumn.childNodes[idx];

    if(elItem.childNodes.length > 0)
    {
      sHtml += '<option value="' + elItem.childNodes[0].nodeValue + '">' + elItem.childNodes[0].nodeValue + '</option>';
      numAntwoorden++;
    }
  }
  if(sHtml=='')
  {
    sHtml = '<br> - geen resultaten -';
  }
  else
  {
    sHtml = '<select size="1" style="background-color:ffffff" style="color:000000"  width="130em" name="listbox2" id="listbox2" onClick="questionsDone(listbox2.value)">' + sHtml + '</select>';

  }
  sHtml='<br><br><font class="plus" style="background-color:ffffff" style="color:000000">Huisnummer:</font><br>' + sHtml;

  //alert('aantal items in pulldown: ' + numAntwoorden);

  document.getElementById("divAnswer2").innerHTML = sHtml;  
 
}

function updateChoices()
{
  var sStr='<font class="plain">Gevonden resultaat:&nbsp;' +  _answerOne + ' ' + _answerTwo + '</font></div>';
  document.getElementById("answers").innerHTML = sStr;
}

function questionsDone(sValue)
{
  
  _answerTwo = sValue;
  updateChoices();

if(_answerTwo !='') {
        buildStartParams();
        loadFirstQuestion(listbox1.value);
        loadSecondQuestion(listbox1.value);
              
  		     } 
    
}


/*-------------------------------------------------------------------------------------*
 * buildStartParams:                                                   		       *
 * Initialize Flash with parameters provided in the searchquery                        *
 * variables sServicename is already set, xcoord, ycoord en mapresolution hier invoeren
 *-------------------------------------------------------------------------------------*/
function buildStartParams()
{
  var movieVars = "fmClient.swf?fm=http://"+ host + "/Scripts/FlexiMap.dll";
  movieVars += "&commurl=report.asp&commtarget=fraReport";
  movieVars += "&service=" + _serviceName;
  movieVars += "&highlight=true";  
  movieVars += "&xcoord=192500&ycoord=320706&mapresolution=15";

  var sSQ='';
  // check if a searchquery has been executed, if so add to startup string
  if (_answerOne != '')
  {
    sSQ='&sq='+_searchName + '&' + _questionOne + '=' + _answerOne;
    if (_answerTwo != '')
    {
      sSQ +='&' + _questionTwo + '=' + _answerTwo;
    }
  }
  
  if(sSQ !='' ) {
    change_tab('tab0');
  //movieVars nogmaals opvoeren m.u.v. laatste regel (x,y, res) om te voorkomen dat de coördinaten en resolutie uit de searchquery hierdoor overschreven worfden 
      var movieVars = "fmClient.swf?fm=http://"+ host + "/Scripts/FlexiMap.dll";
      movieVars += "&commurl=report.asp&commtarget=fraReport";
      movieVars += "&service=" + _serviceName;
      movieVars += "&highlight=true";      
  }
  
  
  movieVars += sSQ;
  //call function that (re)initializes Flash
  startFlash(movieVars);

}

/*----------------------------------------------------------------*
 * startFlash:                                                    *
 * Initialize Flash with or without specific startparameters      *
 *----------------------------------------------------------------*/
function startFlash(MovieandVars)
{

  var flashHtml = "<object classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000'";
  flashHtml += "codebase='http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0'";
  flashHtml += "WIDTH='"+ _mapWidth + "' HEIGHT='"+ _mapHeight + "' id='fmClient' ALIGN='middle'>";
  flashHtml += "<param name=movie value='"+ MovieandVars + "'>";
  flashHtml += "<param name=allowScriptAccess value='sameDomain'>";
  flashHtml += "<param name=quality value='high'>";
  flashHtml += "<param name=bgcolor value='#'>";
  flashHtml += "<param name=scale value='noscale'>";
  flashHtml += "<embed src='"+ MovieandVars + "' quality=high bgcolor=# WIDTH='"+ _mapWidth + "' HEIGHT='"+ _mapHeight + "' scale='noscale' NAME='fmClient'";
  flashHtml += "align='middle' allowScriptAccess='sameDomain' type='application/x-shockwave-flash' pluginspage='http://www.macromedia.com/go/getflashplayer'></embed>";
  flashHtml += "</object>";

  //alert(flashHtml);
  var divFlash = document.getElementById("flashMap");
  divFlash.innerHTML = flashHtml;

}

  
       
/*----------------------------------------------------------------*
 * startSearch:                                                    *
 * Initialize Search with or without specific startparameters      *
 *----------------------------------------------------------------*/       
       
function startSearch(searchname, GUItype)
{

  var sHtml = ' Klik op een letter om straatnamen te zoeken die beginnen met de gekozen letter of type een gedeelte van de straatnaam in en klik op ZOEKEN.<br><br>  ';
      
     sHtml += '<table height=50 width=260 cellpadding=1 cellspacing=1 border=0>';
     sHtml += '<tr><td align="center" class="click_cell" onClick="letterSearch(\'A\')\;">A</td>';
     sHtml += '<td align="center" class="click_cell" onClick="letterSearch(\'B\')\;">B</td>';
     sHtml += '<td align="center" class="click_cell" onClick="letterSearch(\'C\')\;">C</td>';
     sHtml += '<td align="center" class="click_cell" onClick="letterSearch(\'D\')\;">D</td>';
     sHtml += '<td align="center" class="click_cell" onClick="letterSearch(\'E\')\;">E</td>';
     sHtml += '<td align="center" class="click_cell" onClick="letterSearch(\'F\')\;">F</td>';
     sHtml += '<td align="center" class="click_cell" onClick="letterSearch(\'G\')\;">G</td>';
     sHtml += '<td align="center" class="click_cell" onClick="letterSearch(\'H\')\;">H</td>';
     sHtml += '<td align="center" class="click_cell" onClick="letterSearch(\'I\')\;">I</td>';
     sHtml += '<td align="center" class="click_cell" onClick="letterSearch(\'J\')\;">J</td>';
     sHtml += '<td align="center" class="click_cell" onClick="letterSearch(\'K\')\;">K</td>';
     sHtml += '<td align="center" class="click_cell" onClick="letterSearch(\'L\')\;">L</td>';
     sHtml += '<td align="center" class="click_cell" onClick="letterSearch(\'M\')\;">M</td>';
     sHtml += '</tr><tr>';
     sHtml += '<td align="center" class="click_cell" onClick="letterSearch(\'N\')\;">N</td>';
     sHtml += '<td align="center" class="click_cell" onClick="letterSearch(\'O\')\;">O</td>';
     sHtml += '<td align="center" class="click_cell" onClick="letterSearch(\'P\')\;">P</td>';
     sHtml += '<td align="center" class="click_cell" onClick="letterSearch(\'Q\')\;">Q</td>';
     sHtml += '<td align="center" class="click_cell" onClick="letterSearch(\'R\')\;">R</td>';
     sHtml += '<td align="center" class="click_cell" onClick="letterSearch(\'S\')\;">S</td>';
     sHtml += '<td align="center" class="click_cell" onClick="letterSearch(\'T\')\;">T</td>';
     sHtml += '<td align="center" class="click_cell" onClick="letterSearch(\'U\')\;">U</td>';
     sHtml += '<td align="center" class="click_cell" onClick="letterSearch(\'V\')\;">V</td>';
     sHtml += '<td align="center" class="click_cell" onClick="letterSearch(\'W\')\;">W</td>';
     sHtml += '<td align="center" class="click_cell" onClick="letterSearch(\'X\')\;">X</td>';
     sHtml += '<td align="center" class="click_cell" onClick="letterSearch(\'Y\')\;">Y</td>';
     sHtml += '<td align="center" class="click_cell" onClick="letterSearch(\'Z\')\;">Z</td>';
     sHtml += '</tr></table>';
     sHtml += '<table height=50 width=260 cellpadding=1 cellspacing=1 border=0>';
               sHtml += '<tr><td>';
               sHtml += '<form name="info2">';
               sHtml += '<input style="background-color:ffffff" style="width: 155px;" name="txtChar" id="txtChar" type="text" value="">';
               sHtml += '</form></td>';
               sHtml += '<td align="right" onClick="letterSearch(document.info2.txtChar.value)"><img src="images/zoeken.gif" alt="Zoek straatnaam"  class="clkImg" border="0"/></td>';
               sHtml += '</tr>';  
          sHtml += '</tr></table>';
       
  //  alert(sHtml);
  
  var divSearch = document.getElementById("GWSsearch");
  divSearch.innerHTML = sHtml;

} 
       
/************************ICON BOTTEM FUNCTIONS********************
/**************************************************************/
function showLegend(legendName) {
          var fileName= 'legend/' + legendName + '.jpg';
         parent.fraLegend.document.location.replace(fileName);
         change_tab('tab3');
        }


function goHome()
        {
          var Filename = "http://www.bentley.com/";
          document.location.replace(Filename);
        }

function showHelp()
        {
          parent.fraReport.location.href = "manual.html";
          return true;
        }

/************************EXPOSING FUNCTIONS********************
/**************************************************************/
var exposedParams;

/*------------------------------------------------------------*
 * addParams (used starting at version 2.0)                   *
 * This function will be used by Flash to expose parameters   *
 * Function must be named "addParams" and accept 1 parameter  *
 * ==============Content must NOT be changed================= *
 * If string from Flash is too long, this function will be    *
 * called until entire string is passed                       *
 *------------------------------------------------------------*/
function addParams(params)
{
  // DO NOT PUT ALERT BOXES IN THIS FUNCTION
  // FUNCTION IS CALLED WITH AN INTERVAL
  exposedParams += params;
}
/*------------------------------------------------------------*
 * submitParams (used starting at version 2.0)                *
 * This function will be called from Flash when the entire    *
 * string is transferred to addParams                         *
 * Now a function can be called to process the exposed params *
 *------------------------------------------------------------*/
 
var _mapResol;
var _xcoord;
var _ycoord;

function submitParams()
{
   var arrAllParams = exposedParams.split('|');
   
   for (var i = 0;i< arrAllParams.length;i++)
   {
     var tmp = arrAllParams[i];
     var arrOneParam = arrAllParams[i].split('=');
     var param = arrOneParam[0].toLowerCase();
     var val= arrOneParam[1];

     switch (param)
     {
       case 'mapresolution':
         _mapResol=val;
         break;
       case 'xcoord':
         _xcoord=val;
         break;
       case 'ycoord':
         _ycoord = val;
       
       break;
     } 
   }
		 
}

/*------------------------------------------------------------*
 * fleximap:                                                  *
 * This function will be used by Flash to expose parameters   *
 * Function must be named "fleximap" and accept 1 parameter   *
 * Content can be adjusted to suit specific needs             *
 *------------------------------------------------------------*/
function fleximap(params)
{
	//alert(params);
	var arrAllParams = params.split('|');
	
	for (var i = 0;i< arrAllParams.length;i++)
	{
		var tmp = arrAllParams[i];
		var arrOneParam = arrAllParams[i].split('=');
		var param = arrOneParam[0].toLowerCase();
		var val= arrOneParam[1];

		switch (param) {
		case 'fm':
			fm=val;
			break;
		case 'servicekey':
			servicekey=val;
			break;
		case 'service':
			service=val;
			break;
		case 'mapwidth':
			mapwidth=val;
			break;
		case 'mapheight':
			mapheight=val;
			break;
		case 'mapresolution':
			mapresolution=val;
			alert(mapresolution);
			break;
		case 'xcoord':
			xcoord=val;
			break;
		case 'ycoord':
			ycoord=val;
			break;
		case 'maplayers':
			maplayers=val;
			break;
		case 'redline':	
			 change_tab('tab2');	  
			 window.open( "inspraak.asp?redline=" +  val + "&service=" + service + "&xcoord="+xcoord+"&ycoord="+ycoord+"&mapresolution="+mapresolution, "fraReport" );
			break;
	 	case 'info':
			//infopoint.addItem(val);
			searchCoords=val;
			break;
		}
	}
	//now clear the variables that have been exposed
	exposedParams='';
	return;
}

  function fleximap_fraJS(params)
      {
      
        var fraJS = parent.fraJS;
        
        var redlineParams = params.split('Redline');
        var arrAllParams = params.split('|');
        for (var i = 0;i< arrAllParams.length;i++)
        {

          var tmp = arrAllParams[i];
          var arrOneParam = arrAllParams[i].split('=');
          var param = arrOneParam[0].toLowerCase();
          var val= arrOneParam[1];
           
          switch (param)
          {
          case 'fm':
            fm=val;
            fraJS.fm=val;
            //fraJS.rlpoint.length = 0;
            break;
          case 'servicekey':
            fraJS.sessionkey=val;
            break;
          case 'service':
            fraJS.service=val;
            break;
          case 'mapwidth':
            fraJS.mapwidth=val;
            break;
          case 'mapheight':
            fraJS.mapheight=val;
            break;
          case 'mapresolution':
            fraJS.mapresolution=val;
            break;
          case 'xcoord':
            fraJS.xcoord=val;
            break;
          case 'ycoord':
            fraJS.ycoord = val;
            
           
            break;
          case 'redline':
          
            if (val.toUpperCase()=='CLEAR') {
            	fraJS.rlpoint.length=0;
            }
            else {
            	fraJS.rlpoint.addItem(val);
            }
          
            break;
         case 'info':
            fraJS.infopoint.addItem(val);
            break;
          }
        }

        
        
        fraJS.document.flparams.flashparams.value += params.replace(/\|/g, " ") + "<br>\n";

        return;
      }
      
/************************   - DIV LAYERS -   *******************
/**************************************************************/ 
 function MM_reloadPage(init) {  //reloads the window if Nav4 resized
   if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
     document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
   else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
 }
MM_reloadPage(true);


