//<?php
var last_modified = "Thu, 01 Jun 1970 00:00:00 GMT";
// var cached_content = '';

var UA='';
if(navigator.userAgent.indexOf("Opera")!=-1)		 { UA='opera';     } 
else if(navigator.userAgent.indexOf("Safari")!=-1)	 { UA='safari';    }
//else if(navigator.userAgent.indexOf("Konqueror")!=-1){ UA='konqueror'; }
else if(navigator.userAgent.indexOf("Gecko")!=-1)    { UA='gecko';     }
else if(navigator.userAgent.indexOf("MSIE")!=-1)     { UA='ie';        }

var as_MouseStartX;
var as_MouseStartY;
var as_TableStartX;
var as_TableStartY;
var as_dragging = false;
var as_FromMovePage = false;

var as_zip1 = null;
var as_zip2 = null;
var as_pref = null;
var as_addr = null;
var as_icon = null;

function AddressSearchInitLayer(){

	elem = document.createElement('iframe');
	elem.id = "ADDRESS_SEARCH_DUMMY_LAYER"; 
	elem.style.position = 'absolute';
	elem.style.display  = 'none'; 
	elem.setAttribute('scrolling', 'no');
	elem.setAttribute('frameborder', '0');
	elem.style.zIndex = 101;
	document.getElementsByTagName("body").item(0).appendChild(elem); 
	
	elem = document.createElement('div');
	elem.id = "ADDRESS_SEARCH_OVER_LAYER"; 
	elem.style.position = 'absolute';
	elem.style.display  = 'none'; 
	elem.style.backgroundColor = '#FFFFFF';
	elem.style.zIndex = 102;
	elem.onClick = AddressSearchClosePopupMenu;
	document.getElementsByTagName("body").item(0).appendChild(elem); 
	
	elem = document.createElement('div');
	elem.id = "ADDRESS_SEARCH_RESULT"; 
	elem.style.position = 'absolute';
	elem.style.display  = 'none'; 
	elem.style.backgroundColor = '#FFFFFF';
	elem.style.zIndex = 103;
	document.getElementsByTagName("body").item(0).appendChild(elem); 

}

function AddressSearchCheckFromZip(icon, param1, param2, param3, param4){
	as_icon = icon;
	as_zip1 = param1;
	as_zip2 = param2;
	as_pref = param3;
	as_addr = param4;
	if(!document.getElementById('ADDRESS_SEARCH_RESULT')){ AddressSearchInitLayer(); }
	var zip;
	if(as_zip2){
	    zip = as_zip1.value + as_zip2.value;
	} else {
	    zip = as_zip1.value;
	}
	AddressSearchSendData( 'KEY=ZIP&PAGE=0&ZIP=' + encodeURIComponent(zip) );
}

function AddressSearchCheckFromTown(icon, param1, param2, param3, param4){
	as_icon = icon;
	as_zip1 = param1;
	as_zip2 = param2;
	as_pref = param3;
	as_addr = param4;
	if(!document.getElementById('ADDRESS_SEARCH_RESULT')){ AddressSearchInitLayer(); }
    town = as_addr.value;
	AddressSearchSendData( 'KEY=TOWN&PAGE=0&TOWN=' + encodeURIComponent(town) );
}

function AddressSearchMovePage(key, zip, town, page){

	as_FromMovePage = true;

	if(key=='ZIP'){
		AddressSearchSendData( 'KEY=ZIP&PAGE=' + page + '&ZIP=' + encodeURIComponent(zip) );
	} else if(key=='TOWN'){
		AddressSearchSendData( 'KEY=TOWN&PAGE=' + page + '&TOWN=' + encodeURIComponent(town) );
	}

}

function AddressSearchShowPopupMenu( html ){

	var elem  = document.getElementById('ADDRESS_SEARCH_OVER_LAYER');
	var ps = AddressSearchGetPageSize();
	with(elem.style){
		width   = ps[0] + 'px';
		height  = ps[1] + 'px';
		left    = '0px';
		top     = '0px';
		display = '';
	}
	AddressSearchSetOpacity(elem, 0);

	elem = document.getElementById("ADDRESS_SEARCH_RESULT");
	if(!as_FromMovePage){
		if(as_icon){
			var pos = new Array(2);
			AddressSearchGetPosition(as_icon, pos);
			var lx = pos[0];
			var ly = pos[1] + as_icon.offsetHeight;
		} else {
			lx = 0;
			ly = 0;
		}
		with(elem.style){
			left    = lx + 'px';
			top     = ly + 'px';
			display = '';
		}
	}

	html = html.replace(/images/g, as_image_folder);
	elem.innerHTML = html;

	var dummy_layer = document.getElementById('ADDRESS_SEARCH_DUMMY_LAYER');
	dummy_layer.style.left    = elem.style.left;
	dummy_layer.style.top     = elem.style.top;
	dummy_layer.style.width   = elem.offsetWidth + 'px';
	dummy_layer.style.height  = elem.offsetHeight + 'px';
	dummy_layer.style.display = 'block';

	as_FromMovePage = false;

	document.getElementById("ADDRESS_SEARCH_RESULT_HEADER").onmousedown = AddressSearchOnMouseDown;
	document.onmousemove = AddressSearchOnMouseMove;
	document.onmouseup   = AddressSearchOnMouseUp;

}

function AddressSearchSetData(zip, pref, address){

	var dum = zip.split('-');

	if(as_zip1){
		if(as_zip2){
			as_zip1.value = dum[0];
			as_zip2.value = dum[1];
		} else {
			as_zip1.value = dum[0] + '-' + dum[1];
		}
	}
	if(as_pref && as_addr){
		AddressSearchSelectList(as_pref, pref);		
		as_addr.value = address;
	} else if(as_addr){
		as_addr.value = pref + address;
	}

	AddressSearchClosePopupMenu();

}

function AddressSearchClosePopupMenu(){

	if(document.getElementById("ADDRESS_SEARCH_RESULT_HEADER")){
		document.getElementById("ADDRESS_SEARCH_RESULT_HEADER").onmousedown = AddressSearchOnMouseDown;
	}
	document.onmousemove = "";
	document.onmouseup   = "";

	document.getElementById("ADDRESS_SEARCH_RESULT").style.display='none';
	document.getElementById('ADDRESS_SEARCH_OVER_LAYER').style.display='none';
	document.getElementById('ADDRESS_SEARCH_DUMMY_LAYER').style.display='none';

	as_FromMovePage = false;

}

// SUBROUTINES FOR XMLHTTP

function AddressSearchSendData( postdata ){

	var req = AddressSearchCreateXMLHTTP();
  	if( !req ){ return; }
	req.onreadystatechange = function(){
    	AddressSearchGetResponse( req, AddressSearchWriteResult );
  	}

	req.open( 'post', as_cgi, true );
  	//req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=SHIFT_JS");
  	req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;");
	req.send( postdata );

}

function AddressSearchCreateXMLHTTP(){
	if( window.XMLHttpRequest ){ 		// IE以外
    	return new XMLHttpRequest();
  	} else if( window.ActiveXObject ){	// IE用(バージョンにより異なる)
    	try {
      		return new ActiveXObject("MSXML2.XMLHTTP");
    	} catch (e) {
      		try {
        		return new ActiveXObject("Microsoft.XMLHTTP");
      		} catch(e2) {
        		return null;
      		}
    	}
  	}
	return null
}

function AddressSearchGetResponse( req, callback ){

 	if( req.readyState == 4  && req.status == 200 ){
		if( req.responseText ){ callback(req); }
        if(req.getAllResponseHeaders().match("Last-Modified")){ last_modified = req.getResponseHeader("Last-Modified"); }
  	}

}

function AddressSearchWriteResult( req ){

	// var elem = document.getElementById("RESULT");
	// var res = decodeURIComponent(req.responseText);
    // elem.innerHTML=res;

	var res = decodeURIComponent(req.responseText);

	if(res == 'INVALID_ACCESS'){
		alert("不正なアクセスです。"); return;
	} else if(res == 'ZIP_ERROR1'){
		alert("郵便番号が指定されていません。"); return;
	} else if(res == 'ZIP_ERROR2'){
		alert("郵便番号に使用できない文字が含まれています。"); return;
	} else if(res == 'ZIP_ERROR3'){
		alert("郵便番号は７文字以内で指定してください。"); return;
	} else if(res == 'TOWN_ERROR'){
		alert("町名が指定されていません。"); return;
	} else if(res == 'ZENKAKU_ERROR'){
		alert("町名は全角文字だけで指定してください。"); return;
	} else if(res == 'NO_DATA'){
		alert("該当する住所が見つかりませんでした。"); return;
	} else if(res == 'DB_ERROR'){
		alert("該当する住所が見つかりませんでした。"); return;
	}

	if(res != ''){
		var data = res.split('|')
		if(data[0] == 'complete'){
			AddressSearchSetData(data[1], data[2], data[3]);
		} else {
			AddressSearchShowPopupMenu(res);
		}
	}

}

// SUBROUTINES FOR DRAGGING

function AddressSearchOnMouseDown(e) {

	if(as_dragging){ return true; }

	if(this.id == 'ADDRESS_SEARCH_RESULT_HEADER'){
		as_dragging = true;
	} else {
		as_dragging = false;
		return true;
	}

	if(window.event){ //IE
		as_MouseStartX = event.x + document.body.scrollLeft;
		as_MouseStartY = event.y + document.body.scrollTop;
		event.returnValue = false;
		event.cancelBubble = true;
	} else {
		as_MouseStartX = e.pageX;
		as_MouseStartY = e.pageY;
	}

	elem = document.getElementById("ADDRESS_SEARCH_RESULT");
	as_TableStartX = parseInt(elem.style.left);
	as_TableStartY = parseInt(elem.style.top);

	return false;

}

function AddressSearchOnMouseMove(e) {

	if(!as_dragging) { return true; }

	if(window.event){ //IE
		event.returnValue = false;
		event.cancelBubble = true;
		newX = event.x + document.body.scrollLeft;
    	newY = event.y + document.body.scrollTop;
    } else {
		newX = e.pageX
		newY = e.pageY
    }
	
	var x = as_TableStartX + (newX - as_MouseStartX);
	var y = as_TableStartY + (newY - as_MouseStartY);

	elem = document.getElementById("ADDRESS_SEARCH_RESULT");
	with(elem.style){
		left    = x + 'px';
		top     = y + 'px';
	}

	var dummy_layer = document.getElementById('ADDRESS_SEARCH_DUMMY_LAYER');
	dummy_layer.style.left    = elem.style.left;
	dummy_layer.style.top     = elem.style.top;
	dummy_layer.style.width   = elem.offsetWidth + 'px';
	dummy_layer.style.height  = elem.offsetHeight + 'px';
	dummy_layer.style.display = 'block';

	return false;

}

function AddressSearchOnMouseUp(e) {

	as_dragging = false;
	return false;

}

// SUBROUTINES

function AddressSearchSelectList(Field, param){

	if(param != ''){
	    for(var i=0;i<Field.length;i++){
	        if(Field.options[i].value==param){
	            Field.selectedIndex=i;
	            break;
	        }
	    }
	}

}

function AddressSearchSetOpacity(elem, opacity){

	if(UA=='ie'){
		elem.style.filter='Alpha(opacity=' + opacity + ')';
	} else if(UA=='gecko' || UA=='opera'){
		opacity=opacity/100;
		elem.style.opacity=opacity;
	} else if(UA=='safari'){
		opacity=opacity/100;
		elem.style.opacity=opacity;
	}

}

function AddressSearchOnWindowResize(){

	var ps = AddressSearchGetPageSize();
	var elem=document.getElementById('ADDRESS_SEARCH_OVER_LAYER');
	with(elem.style){
		zIndex  = 101;
		width   = ps[0] + 'px';
		height  = ps[1] + 'px';
		left    = '0px';
		top     = '0px';
	}

}

function AddressSearchGetPageSize(){
	
	var xScroll, yScroll;
	
	if (window.innerHeight && window.scrollMaxY) {	
		xScroll = window.innerWidth + window.scrollMaxX;
		yScroll = window.innerHeight + window.scrollMaxY;
	} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
		xScroll = document.body.scrollWidth;
		yScroll = document.body.scrollHeight;
	} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
		xScroll = document.body.offsetWidth;
		yScroll = document.body.offsetHeight;
	}
	
	var windowWidth, windowHeight;
	
	if (self.innerHeight) {	// all except Explorer
		if(document.documentElement.clientWidth){
			windowWidth = document.documentElement.clientWidth; 
		} else {
			windowWidth = self.innerWidth;
		}
		windowHeight = self.innerHeight;
	} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
		windowWidth = document.documentElement.clientWidth;
		windowHeight = document.documentElement.clientHeight;
	} else if (document.body) { // other Explorers
		windowWidth = document.body.clientWidth;
		windowHeight = document.body.clientHeight;
	}	
	
	if(yScroll < windowHeight){
		pageHeight = windowHeight;
	} else { 
		pageHeight = yScroll;
	}

	if(xScroll < windowWidth){	
		pageWidth = xScroll;		
	} else {
		pageWidth = windowWidth;
	}

	arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight) 
	return arrayPageSize;
}

function AddressSearchGetPosition(elem, pos){

	var p,x,y;
	if(elem){
		x=elem.offsetLeft;
		y=elem.offsetTop;
		p=elem.offsetParent;
		while(p != null) {
			x+=p.offsetLeft;
			y+=p.offsetTop;		
			p=p.offsetParent;
		}
		// Mac IE Adjustment
		if (document.all && navigator.appVersion.indexOf("Mac") >= 0){
			y+=parseInt(document.body.topMargin);
			x+=parseInt(document.body.leftMargin);
		}
	} else {
		x=0;
		y=0;
	}

	pos[0]=x;
	pos[1]=y;

}

