/*

 (c) 2010 The Company Merchant Limited, All rights reserved.
 
*/

var popuplayout="";
var tokenarray=new Object();
var target_x = 0;
var target_y = 0;
var isAddressList = false;
var globfuncname = "";
var globpcid = "";
document.write("<div id='TCMPCClookup' name='TCMPCClookup' style='display: none; height:250px; width:355px; position: absolute; z-index: 5000;'></div>");
//Set popup window code
var popup_body = "<table " +
				"id='TCM' border='0' cellpadding=0 cellspacing=0>" +
				"<tr><td valign='top'>" +
				"<table style=\"width:100%;\" border='0'>" +
 				"<tr><td style=\"height:18px;\" width='100%' nowrap><div id='TCMtitle1' name='TCMtitle1' " + 
				"onmousedown=\"javascript:getReadyToMove("+"'"+"TCMPCClookup"+"'"+", event);\">&nbsp;</div></td>" +
 				"<td align=\"right\"><div id=\"TCMtitlebar\" name=\"TCMtitlebar\"></div></td>" +
 				"</tr></table>" +
	"<table id='TCMPostcodeInfo' border=0 cellpadding=0 cellspacing=0>" +
 	"<tr><td id='TCMbodybackground' " + 
		"style=\"height: 114px; width:100%; vertical-align:top;\">" +
		"<div id='TCMbody' name='TCMbody'><div id='bigPBar' " + 
			"style=\"position:relative;margin-left:127px;margin-top:35;display:none;\"><img " +
			"src='"+TCMinstallpath+"/pccloader2.gif'></div></div>" +
		"<div id='TCMbodybutton' name='TCMbodybutton'></div></td>" +
	"</tr>" +
	"<tr><td style=\"height:18px; border-top:thin; border-top-color:#000000;" + 
			"font:Verdana, Arial, Helvetica, sans-serif; font-size:10px\">" +
		"<div id='TCMstatus'></div>" +
		"<div id='TCMstatusStartup'><div id='smlPBar4Startup' " +  
			"style=\"display:none;float:right;margin-right:15px;margin-top:2px;\"><img " +
			"src='"+TCMinstallpath+"/pccloader.gif'></div></div>" +
		"<div id='TCMstatusRetrieve'><div id='smlPBar4Retrieve' " + 
			"style=\"display:none;float:right;margin-right:15px;margin-top:2px;\"><img " +
			"src='"+TCMinstallpath+"/pccloader.gif'></div></div>" +
		"<div id='TCMstatusDone' style=\"display:none;\"></div>" +
		"<div id='TCMstatusError' style=\"display:none;\"></div>" +
		"<div id='TCMstatusProcessing' style=\"display:none;\"></div></td>" +
	"</tr></table>" +
"</td></tr>" +
"</table>";



function setPopUpWin()
{
	//preventSelection(document);
	popuplayout = popup_body;
}

window.onload=setPopUpWin;

function getElementById_PCC(id)
{
	var obj = null;
	obj = document.getElementById
    ? document.getElementById(id)
    : document.all
      ? document.all[id]
      : document.layers[id];
	return obj;
}


var has_inner = typeof(window.innerWidth) == 'number';
var has_element = document.documentElement && document.documentElement.clientWidth;

var tcmDiv;

var loop = 0;
var tcmXpos = 0;
var tcmYpos = 0;
var mouseX = mouseY = 0;
var tcm_shift_x, tcm_shift_y, tcm_next_x, tcm_next_y;

function move_tcmbox()
{
    if (document.layers)
    {
        tcmDiv.left = tcm_next_x;
        tcmDiv.top = tcm_next_y;
    }
    else
    {
        tcmDiv.style.left = tcm_next_x + 'px';
        tcmDiv.style.top = tcm_next_y + 'px';
    }
}

function calculate_shift_position()
{
    tcm_shift_x = has_inner
        ? pageXOffset
        : has_element
          ? document.documentElement.scrollLeft
          : document.body.scrollLeft;
    if (target_x < 0)
        tcm_shift_x += has_inner
            ? window.innerWidth
            : has_element
              ? document.documentElement.clientWidth
              : document.body.clientWidth;

    tcm_shift_y = has_inner
        ? pageYOffset
        : has_element
          ? document.documentElement.scrollTop
          : document.body.scrollTop;
    if (target_y < 0)
        tcm_shift_y += has_inner
            ? window.innerHeight
            : has_element
              ? document.documentElement.clientHeight
              : document.body.clientHeight;
}

function float_tcmbox()
{
    var step_x, step_y;
    
    calculate_shift_position();

    if(tcmDisplay=="RIGHT")
    {
    	step_x = (tcm_next_x - target_x - tcm_shift_x) * .07;
    	if (Math.abs(step_x) < .5)
    	   	step_x = tcm_next_x - target_x - tcm_shift_x;    	
    }
    else
    {
    	step_x = (tcm_shift_x + target_x - tcm_next_x) * .07;
    	if (Math.abs(step_x) < .5)
        	step_x = tcm_shift_x + target_x - tcm_next_x;
    }
    
    step_y = (tcm_shift_y + target_y - tcm_next_y) * .07;
    if (Math.abs(step_y) < .5)
        step_y = tcm_shift_y + target_y - tcm_next_y;

    if (Math.abs(step_x) > 0 || Math.abs(step_y) > 0)
    {
        switch(tcmDisplay)
        {
        	case "LEFT":
        	{
        		tcm_next_x += step_x;
        		tcm_next_y += step_y;
        		break;
        	}
        	case "RIGHT":
        	{
        		tcm_next_x -= step_x;
        		tcm_next_y += step_y;
        		break;
        	}
        	case "TOP":
        	{
        		tcm_next_y += step_y;
        		break;
        	}
        	case "NONE":
        	{
        		tcm_next_x = tcm_shift_x + target_x;
        		tcm_next_y = tcm_shift_y + target_y;
        		break;
        	}     
        	default:
        	{
        		tcm_next_x += step_x;
        		tcm_next_y += step_y;
        	}   	
        }
        move_tcmbox();
    }

    loop = loop + 1;
    if(loop == 2){tcmDiv.style.display="block";}

    setTimeout("float_tcmbox()", 20);
};



function showPCBox(content,status,funcname,pcid,xpos,ypos,accesspoint)
{
 
	debugstop = new Date( ); 

    if (status=="startup")
    {
    calculate_shift_position();

	if (document.layers)
	{
		// Netscape 4 cannot perform init move
		// when the page loads.
		tcm_next_x = 0;
		tcm_next_y = 0;		  		
	}
	else
	{
		  switch(tcmDisplay)
		  {
		  	case'NONE':
		  	{
		  		if(isNaN(parseInt(xpos)) || isNaN(parseInt(ypos)))
		  		{
		  			tcm_next_x = tcm_shift_x + target_x;
					tcm_next_y = tcm_shift_y + target_y;
		  		}
		  		else
		  		{
		  			if(tcmXpos > 0 || tcmYpos > 0)
		  			{
		  				tcm_next_x = tcmXpos;
		  				tcm_next_y = tcmYpos;
		  			}
		  			else
		  			{
		  				tcm_next_x = xpos;
		  				tcm_next_y = ypos;
		  			}
		  		}	
		  		break;	
		  	}
		  	case'TOP':
		  	{
		  		if (isNaN(parseInt(xpos)))
		  		{
		  			if(tcmXpos > 0)
 	   				{
		  				tcm_next_x = tcmXpos;
 	   				}
		  		}
		  		else
 	   			{
 	   				if(tcmXpos > 0)
 	   				{
		  				tcm_next_x = tcmXpos;
 	   				}
 	   				else
 	   				{
 	   					tcm_next_x = xpos;
 	   				}
 	   			}		  			
		  		tcm_next_y = tcm_shift_y + target_y;  	
		  		break;	
		  	}
		  	case'RIGHT':
		  	{
		  		if(tcm_next_x==undefined)
		  		{
		  			var w = window_width();
		  			tcm_next_x = w - parseInt(tcmDiv.style.width);
		  		}
		  		tcm_next_y = tcm_shift_y + target_y;
		  		break;	
		  	}
		  	default:
				tcm_next_x = tcm_shift_x + target_x;
				tcm_next_y = tcm_shift_y + target_y;  	
		  };		
		
		move_tcmbox();
	}
    	
      tcmBodyBackgroundDiv=getElementById_PCC("TCMbodybackground").style.height="160px";
      tcmBodyBackgroundDiv=getElementById_PCC("TCMbodybackground").style.width="355px";
   	  tcmTitleDiv=getElementById_PCC("TCMtitlebar").innerHTML = getPUTitleBar();
	  tcmProgressBarDiv=getElementById_PCC("bigPBar").style.display="inline";  //big progressbar     
      tcmStatusDiv=getElementById_PCC("TCMstatusStartup").style.display="block";

       if (isNaN(parseInt(xpos)))
 	   {  
		  target_x = tcmXpos;
		  target_y = tcmYpos;
       }
	   else
	   {
	   	  if(tcmXpos > 0 || tcmYpos > 0)
	   	  {
	   	  	target_x = tcmXpos;
		  	target_y = tcmYpos;	
	   	  }
	   	  else
	   	  {
	   	  	target_x = xpos;
		   	target_y = ypos;
	   	  }
		  
	   }

	   float_tcmbox();
	   fading("in","TCMPCClookup");
    }
    else if (status=="retrieve")
    {
      tcmStatusDiv=getElementById_PCC("TCMstatusStartup").style.display="none";	
      tcmTitleDiv=getElementById_PCC("TCMtitlebar").innerHTML = getPUTitleBar();
      tcmStatusDiv=getElementById_PCC("TCMstatusRetrieve").style.display="block";
    }
    else if (status=="select")
    {
      tcmStatusDiv=getElementById_PCC("TCMstatusRetrieve").style.display="none";
      globfuncname = funcname;
	  globpcid = pcid;
	  funcname='"'+funcname+'"';
	  pcid='"'+pcid+'"';
	  var chsAddrStyle = "";
	  if(isAddressList == true)
	  {
	  		chsAddrStyle = "display:inline;";
	  		tcmStatusDiv=getElementById_PCC("TCMstatusDone").style.display="block";
	  }
	  else
	  {
	  		chsAddrStyle = "display:none";
	  		tcmStatusDiv=getElementById_PCC("TCMstatusError").style.display="block";
	  }
	  buttoncontent = "<br><div id='TCMSelectBtn' align=right><a id=tcmcancelbutton href='javascript:hidePCBox();'></a><a id=tcmpostcodebutton name=tcmpostcodebutton href='javascript:TCMgetAddress("+funcname+","+pcid+","+accesspoint+");' style='"+chsAddrStyle+"' ></a></div>";
	  tcmBodyDiv=getElementById_PCC("TCMbody").innerHTML=content;
	  tcmBodyDiv=getElementById_PCC("TCMbodybutton").innerHTML=buttoncontent;
	  tcmTitleDiv=getElementById_PCC("TCMtitlebar").innerHTML = getPUTitleBar();
	  tcmSelBox=getElementById_PCC("tcmselectbox").ondblclick = function(){TCMgetAddress(globfuncname,globpcid);}
    }
    else if (status=="complete")
    {
      clearTCMStatuBar();	
      tcmBodyDiv=getElementById_PCC("TCMbody").innerHTML=content;
      tcmStatusDiv=getElementById_PCC("TCMstatusProcessing").style.display="block";
    }
}


function clearTCMStatuBar()
{
	getElementById_PCC("TCMstatus").style.display="none";
	getElementById_PCC("TCMstatusStartup").style.display="none";
	getElementById_PCC("TCMstatusRetrieve").style.display="none";
	getElementById_PCC("TCMstatusDone").style.display="none";
	getElementById_PCC("TCMstatusError").style.display="none";
	getElementById_PCC("TCMstatusProcessing").style.display="none";
}


function TCMgetAddress(funcname,id,accesspoint)
{
	var selObj = getElementById_PCC('tcmselectbox');
	var selIndex = selObj.selectedIndex;

    RoyalMailID = selObj.options[selIndex].value;

   showPCBox(sResp,"complete",funcname,id,"","",accesspoint);

   url=TCMinstallpath+"/proxy."+scripttype+"?accesspoint="+accesspoint+"&addressid="+RoyalMailID+"&token="+tokenarray[id]+"&uniq="+today.getUTCMilliseconds( );
	
    var oXmlHttpRes = pccXmlHttp.createRequest();
	
	oXmlHttpRes.open("get", url, true);
	oXmlHttpRes.onreadystatechange = function () {

      if (oXmlHttpRes.readyState == 4) {
			if (oXmlHttpRes.status == 200) {
				if (oXmlHttpRes.responseText)
				{
				   sResp=oXmlHttpRes.responseText;
				   if (sResp=="N")
				   {
					   hidePCBox();
				   }
				   else
				   {
					   // call users function
					   var addr = parseAddressDetailXML(sResp);
					   eval(funcname+"(addr);");
				   }
				}
			} 
		}    
	}
	oXmlHttpRes.send(null);
    hidePCBox();
}

function hidePCBox()
{
   if(fadeIn == 0)
   {
   	  tcmDiv.style.display="none";
   }
   else
   {
   	  clearTCMStatuBar();
   	  tcmStatusDiv=getElementById_PCC("TCMstatusProcessing").style.display="block";
      fading("out","TCMPCClookup");
   }
}


function ChoosePostcode(id,funcname,accesspoint,lookuptype,xpos,ypos)
{
	loop = 0;

	if(isNaN(parseInt(xpos))){xpos = 0;}
	if(isNaN(parseInt(ypos))){ypos = 0;}

        tcmXpos = xpos;
        tcmYpos = ypos;

	
	if(tcmPosition == "MOUSE")
	{	
		if(tcmDisplay == "RIGHT")
		{
			target_x = tcm_shift_x = tcm_next_x = window_width();
		}
		else if(tcmDisplay == "LEFT")
		{
			target_x = tcm_shift_x = tcm_next_x = 0;
		}
		target_y = 0;
		tcmXpos = mouseX + xpos; 
		tcmYpos = mouseY + ypos; 
	}
	else
	{
		if(tcmXpos == 0 && tcmYpos == 0)
		{
			tcmXpos = xpos;
			tcmYpos = ypos;
		}
	}
	
	tcmDiv=getElementById_PCC("TCMPCClookup");
   
	if(fadeIn == 1)
    {
	    tcmDiv.style.opacity=0;
	    tcmDiv.style.filter = 'alpha(opacity=' + 0 + ')';
    }	
    
    var oXmlHttpRes = pccXmlHttp.createRequest();
	debugstart = new Date( ); 
	
	today = new Date( ); 
	pccVal=escape(getElementById_PCC(id).value);
	calledfrom=location.href;

    if (pccVal.length < 5 ) 
	{
		alert("Please provide a full postcode, not a partial postcode");
	    return;
	}
	
 	tcmDiv.innerHTML=popuplayout;	
    showPCBox("","startup",funcname,id,xpos,ypos,accesspoint);
 
	gotkey=false;				
    for(key in tokenarray) 
    {  
       if (key==id) gotkey=true;
    }					
   
	if (!gotkey)
	{
		getToken(id,accesspoint,lookuptype);
	}

    if (isNaN(parseInt(tokenarray[id])))
	{
		alert("Sorry, there was a problem talking to the postcode database. Please try again in a few minutes.");
        hidePCBox();
        return;
	}

    showPCBox("","retrieve",funcname,id,xpos,ypos,accesspoint);

url=TCMinstallpath+"/proxy."+scripttype+"?postcode="+pccVal+"&accesspoint="+accesspoint+"&token="+tokenarray[id]+"&uniq="+today.getUTCMilliseconds( );
	oXmlHttpRes.open("get", url, true);
	oXmlHttpRes.onreadystatechange = function () {
		if (oXmlHttpRes.readyState == 4) {
			if (oXmlHttpRes.status == 200) {
				if (oXmlHttpRes.responseText)
				{
				   sResp=oXmlHttpRes.responseText;
				   if (sResp=="N")
				   {
					   	hidePCBox();
				   }
				   else
				   {
			   	   	sResp=parseAddressListXML(sResp);
                       			showPCBox(sResp,"select",funcname,id,xpos,ypos,accesspoint);
				   }
				}
			} 
		}    
	}		
	oXmlHttpRes.send(null);
}


function getToken(id,accesspoint,lookuptype)
{
	var oXmlHttpRes = pccXmlHttp.createRequest();
	
	today = new Date( ); 
	calledfrom=location.href;

    url=TCMinstallpath+"/proxy."+scripttype+"?accesspoint="+accesspoint+"&lookuptype="+lookuptype+"&calledfrom="+encodeURIComponent(calledfrom);
	oXmlHttpRes.open("get", url, false);
	oXmlHttpRes.send(null);
	if (oXmlHttpRes.responseText)
	{
	   tokenarray[id] = oXmlHttpRes.responseText;
	}
}

/*
	Moveable window functions
*/
var pickedUp = new Array("", false);
function getReadyToMove(element, evt) 
{
	document.onclick = null;
	document.onmousemove = checkLoadedObjects;
	document.onmouseup = dropLoadedObject;
	pickedUp[0] = element;
	pickedUp[1] = true;
	pickedUp[2] = 0;
	if(tcmPosition == 'MOUSE')
	{
		pickedUp[2] = tcm_next_y - tcmYpos;
	}
	else
	{
		if(tcmYpos > 0)
		{
			pickedUp[2] = tcm_next_y - tcmYpos;
		}		
	}
}

function checkLoadedObjects(evt) 
{
  if (pickedUp[1] == true) 
  {
  	if (!evt) evt = window.event;
  	var currentSelection = document.getElementById(pickedUp[0]);
  	currentSelection.style.position = "absolute";
  	currentSelection.style.top = (evt.clientY + 1 + pickedUp[2]) + "px";
  	currentSelection.style.left = (evt.clientX + 1) + "px";
  }
}

function dropLoadedObject(evt) 
{
  if (pickedUp[1] == true) 
  {
    calculate_shift_position();  	
  	if (!evt) evt = window.event;
  	var currentSelection = document.getElementById(pickedUp[0]);
  	currentSelection.style.position = "absolute";
  	//set X params
  	tcmXpos = evt.clientX + 1;
  	target_x = tcmXpos;
	tcm_next_x = tcmXpos;
  	//tcm_next_x = tcm_shift_x + target_x;  	
  	currentSelection.style.left = tcmXpos + "px";
	//set Y params
  	tcmYpos = evt.clientY + 1;
  	target_y = tcmYpos;
  	tcm_next_y = tcm_shift_y + target_y - 1;  	
  	currentSelection.style.top = tcmYpos + "px";
  	pickedUp = new Array("", false);
  	document.onmousemove = null;
  	document.onmouseup = null;
  	document.onmousedown = null;
  }
}


/* Set MouseClick location as x,y */
function setMousePos(e)
{
	if (!e) e = window.event; 
  	if (e)
  	{ 
  		if (e.clientX || e.clientY)
    	{
      		mouseX = e.clientX;  // + document.body.scrollLeft;
      		mouseY = e.clientY;  // + document.body.scrollTop;
    	}
  	}	
}

function setBtnEvent(event,cBtn)
{
	if(tcmPosition == 'MOUSE')
	{
		setMousePos(event);
	}	
}



/*
	Fading 
*/
function fading(ftype,obj_name)
{
	if(fadeIn!=1){return;}
	var fade=(ftype=="out")?99:1;
	var obj_style=document.getElementById(obj_name).style;
	var pace=setInterval(fadestep,20);

	
	function fadestep()
	{
		if(fade<100 && ftype=="in")
		{
			if(fadeIn==0){fade=100;}
			else{fade+=5;}
			obj_style.filter="alpha(opacity="+fade+")";
			obj_style.opacity=(fade/100);
		}
		else if(fade>0 && ftype=="out")
		{
			if(fadeIn==0){fade=0;ms=0;}
			else{fade-=5;}
			obj_style.filter="alpha(opacity="+fade+")";
			obj_style.opacity=(fade/100);
		}
		else
		{
			clearInterval(pace);
			if(ftype=="out"){obj_style.display="none";}
		}
	}
};



function window_width()
{
        var w = 0;
        if (self.innerHeight)
        {
                w = self.innerWidth;
        }
        else if (document.documentElement && document.documentElement.clientHeight)
        {
                w = document.documentElement.clientWidth;
        }
        else if (document.body)
        {
                w = document.body.clientWidth;
        }
        return w;
}





function parseAddressListXML(xml)
{
	xml = xml.replace(/\&+/g,'-=38=-');
	
	try //Internet Explorer
  	{
  		xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
  		xmlDoc.async="false";
  		xmlDoc.loadXML(xml);
  	}  
	catch(e)
  	{
  		try // Firefox, Mozilla, Opera, etc.
    	{
    		parser=new DOMParser();
    		xmlDoc=parser.parseFromString(xml,"text/xml");
    	}
  		catch(e)
    	{
    		alert(e.message);
    		return;
    	}
  	}
  
  	var rv = options = nodeKey = nodeVal = "";
	var x=xmlDoc.getElementsByTagName("address");
	
	if(x.length > 0)
	{
		nodeKey = x[0].getElementsByTagName("key")[0].childNodes[0].nodeValue;
		nodeKey = nodeKey.replace(/-=38=-/g,'&');
		nodeVal = x[0].getElementsByTagName("value")[0].childNodes[0].nodeValue;
		nodeVal = nodeVal.replace(/-=38=-/g,'&');
		
		if(nodeKey == '1')
		{
			isAddressList = false;
			options = "<option>" + nodeVal + "</option>";	
		}
		else
		{
			isAddressList = true;
			options = options + "<option value='" + nodeKey + "'";
			options = options + " selected ";
			options = options + ">";
			options = options + nodeVal;
			options = options + "</option>";
			if(x.length > 1)
			{
				for (i=1;i<x.length;i++)
				{ 
					nodeKey = x[i].getElementsByTagName("key")[0].childNodes[0].nodeValue;
					nodeKey = nodeKey.replace(/-=38=-/g,'&');
					nodeVal = x[i].getElementsByTagName("value")[0].childNodes[0].nodeValue;
					nodeVal = nodeVal.replace(/-=38=-/g,'&');
					options = options + "<option value='" + nodeKey + "'>";
					options = options + nodeVal;
					options = options + "</option>";
				}
			}
		}
	}
	else
	{
		options = "<option>Invalid request</option>";
	}
	rv = rv + "<select id='tcmselectbox' class='pccselectbox' name='tcmselectbox' size='6' style='width: 100%;' ondblclick=''>";
	rv = rv + options;
	rv = rv + "</select>";
  	return rv;
}



function parseAddressDetailXML(xml)
{
	xml = xml.replace(/\&+/g,'-=38=-');
	
	try //Internet Explorer
  	{
  		xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
  		xmlDoc.async="false";
  		xmlDoc.loadXML(xml);
  	}  
	catch(e)
  	{
  		try // Firefox, Mozilla, Opera, etc.
    	{
    		parser=new DOMParser();
    		xmlDoc=parser.parseFromString(xml,"text/xml");
    	}
  		catch(e)
    	{
    		alert(e.message);
    		return;
    	}
  	}
  
	var itemNames = new Array("organisationname","departmentname","thoroughfarename","thoroughfaredescription","doubledependantlocality","dependantlocality","locality","DPS","line1","line2","line3","line4","line5","issmalluser","households","postcode","fulladdressnopostcode","fulladdress","buildingNumber","buildingName","subBuildingName");
	var itemVal = "";
	var rv = new AddressDetail();
	var x=xmlDoc.getElementsByTagName("addressdetail");
	//Get the first node
	try
	{
		itemVal = x[0].getElementsByTagName(itemNames[0])[0].childNodes[0].nodeValue;
		itemVal = itemVal.replace(/-=38=-/g,'&');
	}		
	catch(e){itemVal = "";}
	rv.organisationname = itemVal;
	//Geting other nodes
	for (i=1;i<itemNames.length;i++)
	{ 
		try
		{	
			itemVal = x[0].getElementsByTagName(itemNames[i])[0].childNodes[0].nodeValue;
			itemVal = itemVal.replace(/-=38=-/g,'&');
			//itemVal = itemVal.replace(/\n/g," ");
		}
		catch(e){itemVal = "";}
		//
		switch(itemNames[i])
		{
			case itemNames[1]:
			{
				rv.departmentname = itemVal;
				break;
			}
			case itemNames[2]:
			{
				rv.thoroughfarename = itemVal;
				break;
			}
			case itemNames[3]:
			{
				rv.thoroughfaredescription = itemVal;
				break;
			}
			case itemNames[4]:
			{
				rv.doubledependantlocality = itemVal;
				break;
			}
			case itemNames[5]:
			{
				rv.dependantlocality = itemVal;
				break;
			}
			case itemNames[6]:
			{
				rv.locality = itemVal;
				break;
			}
			case itemNames[7]:
			{
				rv.DPS = itemVal;
				break;
			}
			case itemNames[8]:
			{
				rv.line1 = itemVal;
				break;
			}
			case itemNames[9]:
			{
				rv.line2 = itemVal;
				break;
			}
			case itemNames[10]:
			{
				rv.line3 = itemVal;
				break;
			}
			case itemNames[11]:
			{
				rv.line4 = itemVal;
				break;
			}
			case itemNames[12]:
			{
				rv.line5 = itemVal;
				break;
			}
			case itemNames[13]:
			{
				rv.issmalluser = itemVal;
				break;
			}
			case itemNames[14]:
			{
				rv.households = itemVal;
				break;
			}
			case itemNames[15]:
			{
				rv.postcode = itemVal;
				break;
			}
			case itemNames[16]:
			{
				rv.fulladdressnopostcode = itemVal;
				break;
			}
			case itemNames[17]:
			{
				rv.fulladdress = itemVal;
				break;
			}
            case itemNames[18]:
            {
                rv.buildingNumber = itemVal;
                break;
            }
            case itemNames[19]:
            {
                rv.buildingName = itemVal;
                break;
            }
            case itemNames[20]:
            {
                rv.subBuildingName = itemVal;
                break;
            }			
		}
	}	
	//Add postcode to fulladdress if needed
	var is_added = true;
	var res = "";
	var str1 = rv.fulladdress.toUpperCase();
	var str2 = rv.postcode.toUpperCase();
	var pos = str1.search(str2);
	if(pos < 0)
	{
		is_added = false;
	}
	else
	{
		/*	res = str1.slice(pos);
		if(res == "" || str2.length != res.length)
		{
			is_added = false;
		}*/
	}
	if(!is_added)	
	{
		rv.fulladdress = rv.fulladdress + " \n" + rv.postcode;
	}
  	return rv;
}


function AddressDetail()
{
	this.organisationname = "";
	this.departmentname = "";
	this.thoroughfarename = "";
	this.thoroughfaredescription = "";
	this.doubledependantlocality = "";
	this.dependantlocality = "";
	this.locality = "";
	this.DPS = "";
	this.line1 = "";
	this.line2 = "";
	this.line3 = "";
	this.line4 = "";
	this.line5 = "";
	this.issmalluser = "";
	this.households = "";
	this.postcode = "";
	this.fulladdressnopostcode = "";
	this.fulladdress = "";
}



function getPUTitleBar()
{
 	return "<div id='TCMCloseBtn' align=right><a id=tcmclosebutton href='javascript:hidePCBox();'></a></div>";	
}


/* Prohibit Page Emphesizing */
    function preventSelection(element)
    {  
    	var    preventSelection = false;
      
    	function addHandler(element, event, handler)
    	{
		    if (element.attachEvent)
    		element.attachEvent('on' + event, handler);
		    else
		    if (element.addEventListener)
		    element.addEventListener(event, handler, false);
	    }

    	function removeSelection()
    	{
    		if (window.getSelection) 
    		{ 
    			window.getSelection().removeAllRanges(); 
    		}
		    else if (document.selection &&	document.selection.clear)
		    {
    			document.selection.clear();
		    }
    	}

    	function killCtrlA(event)
    	{
		    var event = event || window.event;
		    var sender = event.target || event.srcElement;
		    if (sender.tagName.match(/INPUT|TEXTAREA/i)) return;
		    var key = event.keyCode || event.which;
		 	if (event.ctrlKey && key == 'A'.charCodeAt(0))	// 'A'.charCodeAt(0) можно заменить на 65
    		{
			    removeSelection();
			    if (event.preventDefault)    event.preventDefault();
			    else    event.returnValue = false;
		    }
	    }

	   addHandler(element, 'mousemove', function(){
	    		if(preventSelection)    removeSelection();
			    });

    	addHandler(element, 'mousedown', function(event){
			    var event = event || window.event;
			    var sender = event.target || event.srcElement;
			    preventSelection = !sender.tagName.match(/INPUT|TEXTAREA/i);
			   });

	   addHandler(element, 'mouseup', function(){
		    if (preventSelection)    removeSelection();
		    preventSelection = false;
		    });
    	addHandler(element, 'keydown', killCtrlA);
    	addHandler(element, 'keyup', killCtrlA);
    }


/*
	AJAX Class
*/
	function pccXmlHttp(){}
		
	pccXmlHttp.createRequest = function()
	{
		var xmlreq = false;
		if (window.XMLHttpRequest) 
		{
			xmlreq = new XMLHttpRequest();
		} 
		else if (window.ActiveXObject) 
		{
	   		// Try ActiveX
			try 
			{ 
				xmlreq = new ActiveXObject("Msxml2.XMLHTTP");
			} 
			catch (e1) 
			{ 
				// first method failed 
				try 
				{
					xmlreq = new ActiveXObject("Microsoft.XMLHTTP");
				} 
				catch (e2) 
				{
				 	alert("Could not create HTTP Request.");
				} 
			}
		}
		return xmlreq;
	}
	
	

