/*
 *
 * Name: postcode.js
 * Author: Sumon Mahbubur Rahman
 *
 * 
 */
//
// show address confirmation page
//
function showAddressConf( bldg, strt, area, city, pocd ){
  var confAddr = "<form name='frmADDR' action='javascript:setParentAddress()'><table>\n";
  confAddr += "  <tr class='tooltip'>\n";
  confAddr += "    <td align='center' >\n";
  confAddr += "    House number:\n";
  confAddr += "    </td>\n";
  confAddr += "    <td align='center'>\n";
  confAddr += "      <input type='text' name='txtBLDG' id='txtBLDG' class='capitalize' value='"+ bldg+"'>\n";
  confAddr += "    </td>\n";
  confAddr += "  </tr>\n";
  confAddr += "  <tr class='tooltip'>\n";
  confAddr += "    <td colspan='2' align='center'>\n";
  confAddr += strt+', '+area+', '+city+', '+pocd  + "\n";
  confAddr += "\n<input type='hidden' name='hidSTRT' id='hidSTRT' value='"+strt+"'>\n";
  confAddr += "\n<input type='hidden' name='hidAREA' id='hidAREA' value='"+area+"'>\n";
  confAddr += "\n<input type='hidden' name='hidCITY' id='hidCITY' value='"+city+"'>\n";
  confAddr += "\n<input type='hidden' name='hidPOCD' id='hidPOCD' value='"+pocd+"'>\n";
  confAddr += "    </td>\n";
  confAddr += "  </tr>\n";
  confAddr += "  <tr>\n";
  confAddr += "    <td colspan='2' align='center'>\n";
  confAddr += "      <input type='submit'class='button' value='Ok' onclick='javascript:setParentAddress()'>\n";
  confAddr += "    </td>\n";
  confAddr += "  </tr>\n";
  confAddr += "  </table></form>\n";
  confAddr += " <script defer>setTimeout('"+ "setFocus()"+"',500);</script>\n";
  parent.xTips.width = 300;  
  parent.xTips.title = "Confirm address";
  parent.xTips.description = confAddr;
  parent.xTips.tooltipBody = confAddr;
  parent.xTips.resizeTips  = false;
  parent.xTips.showTips();
}
//
// set focus to building
//
function setFocus(){
  var element = document.getElementById('txtBLDG');
  element.focus();
}
//
// set parent window address
//
function setParentAddress(){
  var pocd = document.getElementById('hidPOCD').value;
  var bldg = document.getElementById('txtBLDG').value;
  var strt = document.getElementById('hidSTRT').value;  
  var area = document.getElementById('hidAREA').value;
  var city = document.getElementById('hidCITY').value;
  if (bldg !=""){
    strt = bldg+" "+strt;
    bldg= "";
  }
  window.parent.xTips.closeTooltip(window.parent.xTips);
  window.parent.setAddress(pocd, bldg, strt, area, city);

}

//
// Find post code look up
//
function lookupPostcode(pId){  
  var postcode = document.getElementById(pId);
  if (!postcode || postcode.value == ""){
    alert("Please enter any postcode to lookup");
    return;
  }
  var description = '<p align="center" class="data">loading addresses...</p>';
  xTips.titleClass = 'wintitle';
  xTips.width = 300;  
  xTips.targetEl = postcode;
  xTips.triggerEl = document.getElementById('spnPost');
  showTooltip( description );  
  addressRequest(postcode.value);
}
//
//  get address
//
function showTooltip( desc ){
  if (!desc || desc == ''){
    return;
  }
  xTips.title = "Select address";
  xTips.description = desc;
  xTips.tooltipBody = desc;
  xTips.resizeTips  = true;
  xTips.showTips();

}
//
// request http from js
//                     
function addressRequest(postcode){            
	// initialise the addresses global variable
	addresses = "";
	var async = true;
	var app = "tucanonline";
	//var sess= document.getElementById('hidSESS').value;
	var url = location.protocol + "//" + location.host+ "/"+app +"/postcode.php?postcode="+postcode;
	try{
		var xmlhttp = XmlHttp.create();
		xmlhttp.open("GET", url, async);
		xmlhttp.setRequestHeader ("Content-type", "text/xml");
		xmlhttp.onreadystatechange = function (){onResponse(xmlhttp)};
		xmlhttp.send(null);
	}catch(ex){
		alert(ex);
	}
}
  
// process response message
//
function onResponse(xmlhttp) {
  if (xmlhttp.readyState != XMLHTTP_COMPLETED) return;
  var addresses = '';
  var response = xmlhttp.responseText;
  //debug(response);
  try {
    addresses += "<p align='center' class='data'> No address available against this postcode";
    addresses += "</p>";
    var xmldoc = XmlDocument.create();
    var errText = "";
    xmldoc.loadXML(response);
    var xmlerr = xmldoc.parseError;
    if (xmlerr.errorCode != 0) {
      /*errText = "Error (" + xmlerr.errorCode + "): " + xmlerr.reason
                + "\n"
                + "Error in line " + xmlerr.line + " character " + xmlerr.linepos
                + "\n"
                + xmlerr.srcText
                + "\n---------------------\n\n";
                alert(errText);*/
      showTooltip(addresses);
      return false;
    }
    var adr = xmldoc.getElementsByTagName("Addresses");
    if (adr && adr.length == 1){
      var adrs = adr[0].getElementsByTagName("Address");
      if (adrs.length > 0 ) addresses = '<table>\n';
      for (var i =0; adrs && i < adrs.length; i++){
        addresses += "<tr class='tooltip'><td align='center' ><a href='javascript:selectAddress("+(i+1)+")'>\n";
        var addInfo = get_nodeval( adrs[i].getElementsByTagName('Building')[0] );
        if ( addInfo != "" ){
          addresses += addInfo + ", ";
        }
        addresses += "\n<input type='hidden' name='hidBLDG"+(i+1)+ "' id='hidBLDG"+(i+1)+ "' value='"+addInfo+"'>\n";
        var addInfo = get_nodeval( adrs[i].getElementsByTagName('Street')[0] );
        if ( addInfo != "" ){
          addresses += addInfo + ", ";
        }
        addresses += "\n<input type='hidden' name='hidSTRT"+(i+1)+ "' id='hidSTRT"+(i+1)+ "' value='"+addInfo+"'>\n";
        var addInfo = get_nodeval( adrs[i].getElementsByTagName('Area')[0] );
        if ( addInfo != "" ){
          addresses += addInfo + ", ";
        }
        addresses += "\n<input type='hidden' name='hidAREA"+(i+1)+ "' id='hidAREA"+(i+1)+ "' value='"+addInfo+"'>\n";
        var addInfo = get_nodeval( adrs[i].getElementsByTagName('City')[0] );
        if ( addInfo != "" ){
          addresses += addInfo + ", ";
        }
        addresses += "\n<input type='hidden' name='hidCITY"+(i+1)+ "' id='hidCITY"+(i+1)+ "' value='"+addInfo+"'>\n";
        var addInfo = get_nodeval( adrs[i].getElementsByTagName('Postcode')[0] );
        if ( addInfo != "" ){
          addresses += addInfo;
        }
        addresses += "\n<input type='hidden' name='hidPOCD"+(i+1)+ "' id='hidPOCD"+(i+1)+ "' value='"+addInfo+"'>\n";
        addresses += "</a></td></tr>\n";
      }
      if (adrs.length > 0 ) addresses += '</table>';
    }
    showTooltip(addresses);
  } catch (ex) {
    alert(ex);
  }
}
//
// Select address
//
function selectAddress(aI) {
	var pocd = document.getElementById('hidPOCD'+aI).value;
	var bldg = document.getElementById('hidBLDG'+aI).value;
	var strt = document.getElementById('hidSTRT'+aI).value;
	var area = document.getElementById('hidAREA'+aI).value;
	var city = document.getElementById('hidCITY'+aI).value;
	//var ctry = document.getElementById('hidCTRY'+aI).value;
	showAddressConf(bldg, strt, area, city, pocd );
}

//
// set address from lookup page
//
function setAddress(pocd, bldg, strt, area, city){
	document.getElementById("postcode").value = pocd;
	document.getElementById("building").value = bldg;
	document.getElementById("street").value = strt;
	document.getElementById("area").value = area;
	document.getElementById("city").value = city;
	//document.getElementById("selCtry").value = "GBR";
	document.getElementById("building").focus();
}
//
//
//
function onblurPostcode( pID ) {
	lookupPostcode(pID);
	objElm = document.getElementById(pID);
	objElm['onblur'] = function(evt){
		if(objElm.showPopup == 'N'){
			objElm.showPopup = 'Y';
			return;
		}
		var iconEl = document.getElementById('imgPOCD');
		if(!iconEl) return;
		if(typeof iconEl.onclick == 'function'){
			iconEl.onclick();
		}
	};
}
function cancelTipClose(){
  window.parent.xTips.closeTooltip(window.parent.xTips);
}
// Flag - this file is loaded and executes
//
document.postcode_js = true;
                                                                                                                           



