<!--
/* Launching script for the LOCATOR popup application
 * (C)2004 Wienerberger AG
 * @ask andreas.langegger@wienerberger.com
 *
 * This function can be called to open the LOCATOR popup window.
 * As a parameter the reference to the form object has to be specified.
 *
 * The following form fields are allowed so far:
 *
 * - call_method     (hidden, OPTIONAL, if not used => country will be shown, values: map_direct, map_region, map_vicinitysearch, map_directsearch, list_vicinitysearch, list_directsearch, list_route)
 * - label_code*     (hidden, MANDATORY, value domain: see Locator Tech Specs Document!)
 * - country_code*   (hidden, MANDATORY, value domain: Top Level Domain codes)
 * - language_code*  (hidden, MANDATORY, value domain: ISO639 2-letters
 * - location_type(s)* (...type or types?! hidden, OPTIONAL, CSV-sep. location types, value domain: see Locator Tech Specs Document!)
 * - region_code    (list box, OPTIONAL, value domain: see Belge Region Codes!)
 * - keywords       (input field, OPTIONAL)
 * usw.... siehe TechSpecs document!!!
 *
 */
 
var geoUrl = 'http://business9.geolook.at/wienerberger/map.php';
var showUrl = false;
var testMode = false;

function launchLocatorDirectly(queryString) {
   url = geoUrl + "?" + queryString;
   if (testMode) appendLog(url)
   if (showUrl == true) proceed = confirm("URL: " + url);
   else proceed = true;
   
   if (proceed) {
      loc = window.open(url, 'locator', 'height=510,width=784,location=no,menubar=no,resizable=no,scrollbars=no,status=no,toolbar=no');
      loc.focus();
   }   
}

function launchLocator(formObj) {
   var queryString = "";
   // call_method
   if (formObj.call_method) queryString += '&call_method='+formObj.call_method.value;

   // label/country/language_code
   if (formObj.label_code) queryString += '&label_code='+formObj.label_code.value;
   else queryString += '&label_code=wb'; // default is 'wb'
   if (formObj.country_code) queryString += '&country_code='+formObj.country_code.value;
   else { alert('ERROR: Country code not specified in locator launch form!'); return; }
   if (formObj.language_code) queryString += '&language_code='+formObj.language_code.value;
   else { alert('ERROR: Language code not specified in locator launch form!'); return; }
   
   // location type(s)
   if (formObj.location_type)
      queryString += '&location_type='+formObj.location_type.value;
   
   // menuconfig
   if (formObj.mnco)
      queryString += '&mnco='+formObj.mnco.value;

   // location_id
   if (formObj.location_id)
      queryString += '&location_id='+formObj.location_id.value;

   // region_code
   if (formObj.region_code) {
      for(i=0;i<formObj.region_code.length;++i)
         if(formObj.region_code.options[i].selected == true)
            queryString += '&region_code='+formObj.region_code.options[i].value;
   }
   
   // address fields
   if (formObj.addr_street)
      queryString += '&addr_street='+uniEncode(formObj.addr_street.value);
   if (formObj.addr_postalcode)
      queryString += '&addr_postalcode='+uniEncode(formObj.addr_postalcode.value);
   if (formObj.addr_locality)
      queryString += '&addr_locality='+uniEncode(formObj.addr_locality.value);
   if (formObj.addr_country_code)
      queryString += '&addr_country_code='+uniEncode(formObj.addr_country_code.value);
   
   // product code
   if (formObj.product_code) {
      for(i=0;i<formObj.product_code.length;++i)
         if(formObj.product_code.options[i].selected == true)
            queryString += '&product_code='+formObj.product_code.options[i].value;
   }
   
   // max distance
   if (formObj.max_distance) {
      for(i=0;i<formObj.max_distance.length;++i)
         if(formObj.max_distance[i].checked)
            queryString += '&max_distance='+formObj.max_distance[i].value;
   }

   // keywords
   if (formObj.keywords)
      queryString += '&keywords='+uniEncode(formObj.keywords.value);

   // list_maplinks
   if (formObj.list_maplinks)
      queryString += '&list_maplinks='+formObj.list_maplinks.value;

   // startpage
   if (formObj.start)
      queryString += '&start='+formObj.start.value;
   
   // DE Extrawurst
   if (formObj.notfoundpage)
      queryString += '&notfoundpage='+formObj.notfoundpage.value;

   //document.write(geoUrl + queryString);

   url = geoUrl + "?" + queryString;
   if (testMode) appendLog(url);
   if (showUrl == true) proceed = confirm("URL: " + url);
   else proceed = true;
   
   if (proceed == true) {
      //atdjudra 20070918: changed from height=510 widht=784 to following:
      loc = window.open(url, 'locator', 'height=510,width=950,location=no,menubar=no,resizable=no,scrollbars=no,status=no,toolbar=no');
      loc.focus();
   }
}

function appendLog(str) {
   document.forms["log"].elements["logWindow"].value = document.forms["log"].elements["logWindow"].value + str + "\n";
}

// disable early submit by hitting RETURN key in input fields
function checkCR(evt) {
   var evt  = (evt) ? evt : ((event) ? event : null);
   var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
   if ((evt.keyCode == 13) && (node.type=="text")) {return false;}
}
document.onkeypress = checkCR;

/* ***************************
** Most of this code was kindly 
** provided to me by
** Andrew Clover (and at doxdesk dot com)
** http://and.doxdesk.com/ 
** in response to my plea in my blog at 
** http://worldtimzone.com/blog/date/2002/09/24
** It was unclear whether he created it.
*/
function utf8(wide) {
  var c, s;
  var enc = "";
  var i = 0;
  while(i<wide.length) {
    c= wide.charCodeAt(i++);
    // handle UTF-16 surrogates
    if (c>=0xDC00 && c<0xE000) continue;
    if (c>=0xD800 && c<0xDC00) {
      if (i>=wide.length) continue;
      s= wide.charCodeAt(i++);
      if (s<0xDC00 || c>=0xDE00) continue;
      c= ((c-0xD800)<<10)+(s-0xDC00)+0x10000;
    }
    // output value
    if (c<0x80) enc += String.fromCharCode(c);
    else if (c<0x800) enc += String.fromCharCode(0xC0+(c>>6),0x80+(c&0x3F));
    else if (c<0x10000) enc += String.fromCharCode(0xE0+(c>>12),0x80+(c>>6&0x3F),0x80+(c&0x3F));
    else enc += String.fromCharCode(0xF0+(c>>18),0x80+(c>>12&0x3F),0x80+(c>>6&0x3F),0x80+(c&0x3F));
  }
  return enc;
}

var hexchars = "0123456789ABCDEF";

function toHex(n) {
  return hexchars.charAt(n>>4)+hexchars.charAt(n & 0xF);
}

var okURIchars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-";

function encodeURIComponentNew(s) {
  var s = utf8(s);
  var c;
  var enc = "";
  for (var i= 0; i<s.length; i++) {
    if (okURIchars.indexOf(s.charAt(i))==-1)
      enc += "%"+toHex(s.charCodeAt(i));
    else
      enc += s.charAt(i);
  }
  return enc;
}

function uniEncode(fld)
{
	if (fld == "") return "";
	var encodedField = "";
	var s = fld;
	if (typeof encodeURIComponent == "function")
	{
		// Use JavaScript built-in function
		// IE 5.5+ and Netscape 6+ and Mozilla
		encodedField = encodeURIComponent(s);
	}
	else 
	{
		// Need to mimic the JavaScript version
		// Netscape 4 and IE 4 and IE 5.0
		encodedField = encodeURIComponentNew(s);
	}
	//alert ("New encoding: " + encodeURIComponentNew(fld) + "\n           escape(): " + escape(fld));
	return encodedField;
}
-->

