﻿
			var blankText = "-------------------";
			var lastSelection="";
			var step=1;
			var step1Type="";
			var step2Type="";
			var shopReady=false;
			var dau="";
			var dau2="";
	        var shopref=0;
	        var shopzoneref=0;
			
			function initAddress(){
				var form=document.forms.mainForm;
				if(form==null)return form;
				if(form.id_area==null)return;
				var id_area=parseInt(form.id_area.value,10);
				var id_district=parseInt(form.id_district.value,10);
				var id_estate=parseInt(form.id_estate.value,10);
				var id_street=parseInt(form.id_street.value,10);
				var id_bldg=parseInt(form.id_bldg.value,10);
				var str_street=form.str_street.value;
				var str_estate=form.str_estate.value;
				var str_bldg=form.str_bldg.value;
				
				
				if(id_area>0){
					switch(id_area){
						case 1:
							form.area[0].checked=true;
							break;
						case 2:
							form.area[2].checked=true;
							break;
						case 3:
							form.area[1].checked=true;
							break;
					} writeDebug("b"+form.str_street.value);	
					getDistrict(id_area,false);
					 writeDebug("b"+form.str_street.value);	
					if(id_district>0){
						var s=null;
					    var sel=form.districtSelect;
					    for(var j=0;j<sel.options.length;j++){
					        writeDebug(sel.options[j].value+":"+id_district);
						    if(sel.options[j].value==id_district){
							    sel.selectedIndex=j;						
							    break;
						    }
					    }	
					   				
						returnDistrict(sel);
						
					}
					
					//alert(form.str_street.value);
					if(id_estate==0){
						lastSelection="ds";
						setValue(id_street,str_street);
						lastSelection="dse";
						setValue(id_estate,str_estate);
						lastSelection="desb";
						setValue(id_bldg,str_bldg);
					}else{
						lastSelection="de";
						setValue(id_estate,str_estate);
						lastSelection="des";
						setValue(id_street,str_street);
						lastSelection="desb";
						setValue(id_bldg,str_bldg);
					}
					
				}				
			}
			
			function checkShopList(){
				shopReady=false;
				var form=document.forms.mainForm;
				var a=form.id_area.value;
				var d=form.id_district.value;
				var s=form.id_street.value;
				var e=form.id_estate.value;
				var b=form.id_bldg.value;
				var shopHTML="";
				var url="/services/checkshop.html";
				writeDebug("check shop>"+url);
				var params= Object.extend({ 
		            lang:info.lang,
			        a:a,
			        d:d,
			        s:s,
			        e:e,
			        b:b
			        //,index:index
		        },arguments[3] || { }
		        );
        		//$('test').submit();
				new Ajax.Request( url, {
					onSuccess:function(transport){
					    //alert(transport.responseText);
					    //var r=transport.responseText.evalJSON();
				        var r=('/*-secure-\n'+transport.responseText+'\n*/').evalJSON();
				        //writeDebug("check shop> result ["+r.result+"]");
				        if(r.result==false){
				            $('checkShopDiv').update(label["order.js.address.shopNotFound"]);
				        }else{
				            shopHTML='<span class="addrTitle">'+label["order.js.shop.contact"]+':</span><br/> '+r.contact+'<br/>';
				            shopHTML+='<span class="addrTitle">'+label["order.js.shop.address"]+':</span><br/>'+r.address;
				            $('checkShopDiv').update(shopHTML);
				            
				            dau=r.dau;
				            dau2=r.dau2;      
                            shopref=r.shopref;
                            shopzoneref=r.shopzoneref;
                            
				            shopReady=true;
				        } 
					},
					onFailure:function(transpot){
						alert('check shop error '+transpot.status);			
					},
					method: 'post',
		            parameters: params
				});
				//alert(1);
				
			}
			
			function returnDistrict(sel){
			    clearDistrict();
			    sel = $(sel)
				var form=document.forms.mainForm;
				form.id_district.value = sel.value;
				form.str_district.value = sel.options[sel.selectedIndex].text;
				$('div_step1').show();
				step=1;
				checkShopList();
				//clearDistrict();
			}
			
			function setValue(id,value){
				var type=lastSelection;
				var desc=value;
				var form = document.forms.mainForm;
				if (type == 'de' || type=='dse'){
					form.id_estate.value = id;
					form.str_estate.value= desc;		    		
				} else if (type == 'des' || type=='ds'){
					form.id_street.value = id;
					form.str_street.value = desc;
		    		
				} else if (type == 'desb'){
					form.id_bldg.value = id;
					form.str_bldg.value = desc;	    		
				}
				
				if(step==1){
					step1Type=type;
					$('step1Desc').update(desc);					
					$('div_step1').hide();
					$('div_step1_remove').show();
					
					if(type=="de"){
						$('div_step2a').show();
						$('step2_label').update(label["order.js.address.street"]);
					}else{
						$('div_step2b').show();
						$('step2_label').update(label["order.js.address.estates"]);
					}
					['div_step2a_remove','div_step2b_remove'].each(Element.hide);
					step=2;
					
				}else if(step==2){
					step2Type=type;
					$('step2Desc').update(desc);
					if(type=="des"){
						$('div_step2a').hide();
						$('div_step2a_remove').show();
					}else{
					    $('div_step2b').hide();
						$('div_step2b_remove').show();
						
					}
					
					
					
					$('div_bldg').show();
					$('div_bldg_remove').hide();
					
					step=3;
				}else if(step==3){
					$('bldgDesc').update(desc);
					$('div_bldg').hide();
    				$('div_bldg_remove').show();
				}


				$("addressLayer").hide();
				if (arguments[2] == undefined) {
				    checkShopList();
				 }
			}

			
			function clearDistrict(){
				//return;
				var form=document.forms.mainForm;
				step1Type="";
				step2Type="";
				lastSelection="";
				step=1;
				
				[
				'div_step1',
				'div_step1_remove',
				'div_step2a',
				'div_step2b',
				'div_step2a_remove',
				'div_bldg',
				'div_bldg_remove'
				].each(Element.hide);
				 			    			
    			//alert(form.id_street.value)
    			form.id_estate.value = '0';
    			form.str_estate.value = '';
    			form.id_street.value = '0';
    			form.str_street.value = '';
    			form.id_bldg.value = '0';
    			form.str_bldg.value = '';
    			
				
    			$('step1Desc').update(blankText);
    			$('step2Desc').update(blankText);
    			$('bldgDesc').update(blankText);
    			$('addressLayer').hide();
			}
			
			function getDistrict(area,async) {
			    if(async==undefined)async=true;
			   
				var form=document.forms.mainForm;
				form.id_area.value = area;
				var str_area = "";
				if(area == "1")
				{
				    str_area = info.lang =="tc"?"香港":"HK";
				}else if(area == "2")
				{
				    str_area = info.lang =="tc"?"新界":"NT";
				}else if(area == "3")
				{
			        str_area = info.lang =="tc"?"九龍":"KLN";
				}else if (area =="4")
				{
				    str_area = info.lang =="tc"?"澳門":"Macau";
				}
				form.str_area.value = str_area;
				var url=info.addressXmlRoot+"/area/district/"+area+".xml";
				var disSel=form.districtSelect;

				writeDebug("get district>"+url);
				disSel.options.length=1;
				new Ajax.Request( url, {
					onSuccess:getDistrictCallBack,
					onFailure:function(transpot){
						alert('get district error '+transpot.status);			
					},
					method: 'get',
					asynchronous:async
				});
				clearDistrict();
				if (arguments[2] == undefined) {
				    checkShopList();
				 }
			}
			
			function getDistrictCallBack(transpot){
				var form=document.forms.mainForm;
				var disSel=form.districtSelect;
				var rootNode=transpot.responseXML.documentElement;
				var itemNodes=rootNode.getElementsByTagName("item");
				
				for(var i=0;i<itemNodes.length;i++){
					var item=itemNodes[i];
					//alert(XmlTools.readAttribute);
					
					var id=XmlTools.readAttribute(item,"id");
					var desc=XmlTools.readText(item);
					//writeDebug(id+"="+desc);
					disSel.options[disSel.options.length]=new Option(desc,id);
				}
				
			}
			
			function removeItem(type) {			
				var form=document.forms.mainForm;	
    			if (type == "de"){ //HK
    				[
					'div_step1',
					'div_step1_remove',
					'div_step2a',
					'div_step2a_remove',
					'div_step2b',
					'div_step2b_remove',
					'div_bldg',
					'div_bldg_remove'
					].each(Element.hide);
					
					$('div_step1').show();
    				
    				form.id_estate.value = '0';
    				form.str_estate.value = '';
    				form.id_street.value = '0';
    				form.str_street.value = '';
    				form.id_bldg.value = '0';
    				form.str_bldg.value = '';
    				
					$('step1Desc').update(blankText);
					$('step2Desc').update(blankText);
					$('bldgDesc').update(blankText);
					$('addressLayer').hide();
    				
    				step=1;
    				
    			} else if (type == "des"){ //NT
				
					[
					'div_step2a_remove',
					'div_bldg_remove',
					'div_bldg'
					].each(Element.hide);
					$('div_step2a').show();   				
    				
    				
    				form.id_street.value = '0';
    				form.str_street.value = '';
    				form.id_bldg.value = '0';
    				form.str_bldg.value = '';
    				
    				$('step2Desc').update(blankText);
					$('bldgDesc').update(blankText);
					$('addressLayer').hide();
					
    				step=2;
    			} else if (type == "dse"){ //NT
				
					[
					'div_step2b_remove',
					'div_bldg_remove',
					'div_bldg'
					].each(Element.hide);
					$('div_step2b').show();
    				
    				
    				form.id_street.value = '0';
    				form.str_street.value = '';
    				form.id_bldg.value = '0';
    				form.str_bldg.value = '';
    				
    				
    				$('step2Desc').update(blankText);
					$('bldgDesc').update(blankText);
					$('addressLayer').hide();
					
    				step=2;
    			}else if (type == "desb"){ //KL
				
					$('div_bldg_remove').show();
					$('div_bldg').show();
					
    				$('div_bldg_remove').hide();
    				$('div_bldg').show();
    				
    				form.id_bldg.value = '0';
    				form.str_bldg.value = '';

					$('bldgDesc').update(blankText);
					$('addressLayer').hide();
    				step=3;
    			}
   }

   function initDefaultAddress() {
       if (document.forms.defaultForm == undefined) {
           return;
        }
       $('centerpane').hide();
       var form = document.forms.defaultForm;
       var a = form.id_area.value;
       var d = form.id_district.value;
       var s = form.id_street.value;
       var e = form.id_estate.value;
       var b = form.id_bldg.value;
       var shopHTML = "";
       var url = "/services/checkshop.html";
       writeDebug("check shop>" + url);
       var params = Object.extend({
           lang: info.lang,
           a: a,
           d: d,
           s: s,
           e: e,
           b: b
           //,index:index
       }, arguments[3] || {}
		        );
       //$('test').submit();
       new Ajax.Request(url, {
       onSuccess: function(transport) {
               var r = ('/*-secure-\n' + transport.responseText + '\n*/').evalJSON();
               if (r.result ) {
                    $('defaultaddress').show();
                }
                $('centerpane').show();
           },
           onFailure: function(transpot) {
               $('centerpane').show();
               alert('check shop error ' + transpot.status);
           },
           method: 'post',
           parameters: params
       });				
    }

    /*function checkDefaultShopList() {
				var form=document.forms.defaultForm;
				var a=form.id_area.value;
				var d=form.id_district.value;
				var s=form.id_street.value;
				var e=form.id_estate.value;
				var b=form.id_bldg.value;
				var shopHTML="";
				var url="/services/checkshop.html";
				writeDebug("check shop>"+url);
				var params= Object.extend({ 
		            lang:info.lang,
			        a:a,
			        d:d,
			        s:s,
			        e:e,
			        b:b
			        //,index:index
		        },arguments[3] || { }
		        );
        		//$('test').submit();
				new Ajax.Request( url, {
					onSuccess:function(transport){
					    //alert(transport.responseText);
					    //var r=transport.responseText.evalJSON();
				        
				        //writeDebug("check shop> result ["+r.result+"]");
				        if(r.result==false){
				             $('defaultaddress').hide();
		                    $('new_address').value = 'update';
		                    $('updateMsg').show();
		                    $('mainForm').contact.value = $('defaultForm').contact.value;
				        }else{
				           document.defaultForm.submit();
				        } 
					},
					onFailure:function(transpot){
						alert('check shop error '+transpot.status);			
					},
					method: 'post',
		            parameters: params
				});				
			}*/
			
			function checkNewAddress() {
			    document.defaultForm.submit();
			    /*if(document.defaultForm.new_address.value != 'y')
		        {
			        $('defaultaddress').hide();
			        $('new_address').value = 'update';
			        $('updateMsg').show();
			        $('mainForm').contact.value = $('defaultForm').contact.value;
        			
		        }else
		        {
		            //checkDefaultShopList();
		            document.defaultForm.submit();
		        }*/
			}
			
			function changeIframe(type,left,top,async) {
			    if(async==undefined)async=true;
				var form=document.forms.mainForm;
				var layer=$("addressLayer");
				var content = $("addressContent");
				var disSel=form.districtSelect;
				var district=disSel.options[disSel.selectedIndex].value;
				
				lastSelection=type;
				content.update("loading...");
				//if(info.mode == 'express')left = left - 130;
				left = left + 220;
				//if(document.defaultForm.new_address.value == 'update')top -= 30;
				
				layer.show().setStyle({left:left+"px",top:top+"px"})
				
				var url="";

				if(type=='de'){
					url=info.addressXmlRoot+"/area/district/"+district+"/estate.xml";
					writeDebug("get estate>"+url);
				}else if( type=='ds'){
					url=info.addressXmlRoot+"/area/district/"+district+"/street.xml";
					writeDebug("get street>"+url);
				}else if(type=='dse'){
					url=info.addressXmlRoot+"/area/district/"+district+"/street/"+form.id_street.value+"/estate.xml";
					writeDebug("get estate>"+url);
				}else if(type=='des'){
					url=info.addressXmlRoot+"/area/district/"+district+"/estate/"+form.id_estate.value+"/street.xml";
					writeDebug("get street>"+url);
				}else{
				    //alert(form.id_estate.value);
				    //alert(form.id_street.value);
					url=info.addressXmlRoot+"/area/district/"+district+"/estate/"+form.id_estate.value+"/street/"+form.id_street.value+"/bldg.xml";
					writeDebug("get building>"+url);
	            }
				new Ajax.Request( url, {
					onSuccess:iframeCallBack,
					onFailure:function(transpot){
						//alert('iframe error '+transpot.status);	
						var optionsHtml="";
			            optionsHtml+=templates.selectAddressItem.evaluate({id:0,desc:'N/A',label:label});
			            $("addressContent").update(optionsHtml);
					},
					method: 'get',
					asynchronous:async
				});
			}
			
			function iframeCallBack(transpot){
				var rootNode=transpot.responseXML.documentElement;
				var itemNodes=rootNode.getElementsByTagName("item");
				var optionsHtml="";
			    optionsHtml+=templates.selectAddressItem.evaluate({id:0,desc:'N/A',label:label});
				for(var i=0;i<itemNodes.length;i++){
					var item=itemNodes[i];
					var obj={id:XmlTools.readAttribute(item,"id"),desc:XmlTools.readText(item.firstChild)};
					optionsHtml+=templates.selectAddressItem.evaluate(obj);
				}
				$("addressContent").update(optionsHtml);
				$("paging").update("");
			}
			
			
		
	var lastAddr=1;
	var lastAddrClass="addrItem1";
	
	function submitNewForm(){
		var form = $('mainForm');
	    if (validation(form))
	    { 
		    if(shopReady==false)
		    {
			    alert(label["order.js.address.shopNotFound"]);
			    form.contact.focus();
			    return ;
		    }
		
		
		    if (dau != '')
		    {
			    form.dau.value = dau;
		    }
		    if (dau2 != '')
		    {
			    form.dau2.value = dau2;
			}
			//submitNewForm
			
			if ($('updateDefaultAddress').checked)
		    {
			    var url = 'updateAddress.html'; 
			    new Ajax.Request(url, 
			    {	method: 'post',
				    parameters: {
					    int_user_ref: $('int_user_ref').value, 
					    int_area_ref: form.id_area.value,
					    str_area: form.str_area.value,
					    
					    int_district_ref: form.id_district.value,
					    str_district: form.str_district.value,
					    
					    int_street_ref: form.id_street.value,
					    str_street: form.str_street.value,
    					
					    int_estate_ref: form.id_estate.value,
					    str_estate: form.str_estate.value,
    					
					    int_bldg_ref: form.id_bldg.value,
					    str_bldg: form.str_bldg.value,
    					
					    str_block: form.str_block.value,
					    str_floor: form.str_floor.value,
					    str_flat: form.str_flat.value,
    					
					    str_new_address: 'y',
    					
					    int_shop_ref: shopref,
					    int_shop_zone_ref: shopzoneref,
    					
					    action: 'update'
				    },
				    onSuccess: function(login) 
				    {
					    //var obj = new Object();
					    //obj["loginStatus"] = 'guest';
					    //alert('success');
					    form.submit();
				    },
				    onFail: function(status)
				    {
					    //alert('fail');
					    //form.submit();
				    }
			    });
		    }else
		    {
			    form.submit();
		    }
		    //form.submit();
		}
	}
	
	function selectAddr(index){
		restoreAddr();
		var form=document.defaultForm;
		var layer=getHtmlElement("addrLayer"+index);
		var contactInput=getHtmlElement("contact"+index);
		var addrInput=getHtmlElement("addr"+index);
		form.address.value=addrInput.value;
		form.contact.value=contactInput.value;
		
		lastAddrClass=layer.className;
		layer.className="addrItemSelected";
		lastAddr=index;
	}
	
	function restoreAddr(){
		var layer=getHtmlElement("addrLayer"+lastAddr);
		if(lastAddr==null)return;
		
		layer.className=lastAddrClass;
}

var quickSearchData = {};
function quickSearchIframe() {
    var optionsHtml = "";
    for (var i = 0; i < quickSearchData.address.length; i++) {
        optionsHtml += templates.selectQuickAddressItem.evaluate(quickSearchData.address[i]);
    }
    //optionsHtml += templates.selectQuickAddressPage.evaluate(quickSearchData);
    if (quickSearchData.address.length == 0) {
        if (quickSearchData.msg != "") {
            optionsHtml = label[quickSearchData.msg];
        } else {
            optionsHtml = label["order.js.address.not.found"];
        }
    }
    $("addressContent").update(optionsHtml);
    optionsHtml = templates.selectQuickAddressPage.evaluate(quickSearchData);
    $("paging").update(optionsHtml);
}

function setQuickAddressValue(id) {
    var sa = quickSearchData.address[id-1];
var form=document.forms.mainForm;
form.id_area.value = sa.areaRef;
form.id_district.value = sa.districtRef;
form.id_estate.value = sa.estateRef;
form.id_street.value = sa.streetRef;
form.id_bldg.value = sa.bldgRef;
switch (sa.areaRef) {
case "2":
    form.area[2].checked = true;
    break;
case "3":
    form.area[1].checked = true;
    break;
default:
    if (form.area[0]) { form.area[0].checked = true; } else { form.area.checked = true }
    
}
getDistrict(sa.areaRef, false, true);
var sel = form.districtSelect;
for (var j = 0; j < sel.options.length; j++) {
    if (sel.options[j].value == sa.districtRef) {
        sel.selectedIndex = j;
        form.str_district.value = sel.options[j].text;
        break;
    }
}
if (sa.estateRef == 1) sa.estateRef = 0;
if (sa.estateRef == 0) {
    lastSelection = "ds";
    setValue(sa.streetRef, sa.street,true);
    lastSelection = "dse";
    setValue(sa.estateRef, sa.estate, true);
    lastSelection = "desb";
    setValue(sa.bldgRef, sa.bldg, true);
} else {
    lastSelection = "de";
    setValue(sa.estateRef, sa.estate, true);
    lastSelection = "des";
    setValue(sa.streetRef, sa.street, true);
    lastSelection = "desb";
    setValue(sa.bldgRef, sa.bldg, true);
}
form.str_block.focus();
checkShopList();
 }

 function quickSearch(left, top,  page) {
     sw = page == undefined ? $('qSearch').value : quickSearchData.sw;
     page = page == undefined ? 0 : page;
    var params= Object.extend({ lang:info.lang,sw:sw,region:info.region,p:page});
    
    var layer = $("addressLayer");
    var content = $("addressContent");
    content.update("loading...");
    $("paging").update("");
    left = left + 220;
    layer.show().setStyle({ left: left + "px", top: top + "px" })
    
    new Ajax.Request("/quicksearch.aspx", {
        onSuccess: function(transport) {
            //var r=transport.responseText.evalJSON();
            var r = ('/*-secure-\n' + transport.responseText + '\n*/').evalJSON();
            //writeDebug("check shop> result ["+r.result+"]");
            quickSearchData = r;
            quickSearchIframe();
        },
        onFailure: function(transpot) {
            alert('check shop error ' + transpot.status);
        },
        method: 'post',
        parameters: params
    });
}

function showAddressSearch() {
    if (info.showAddressSearch && $('addressSearchDv')) {
        $('addressSearchDv').show();
     }
 }
 
 Event.observe(window, "load", showAddressSearch);
 Event.observe(window, "load", initAddress);
Event.observe(window, "load", initDefaultAddress);

