/**
 *	
 * AJAXの宣言用クラス
 *
 * AJAXに必要な宣言を行う。
 *
 **/
function ajax_request(){

	this.httpRequest = null;
	
};

ajax_request.prototype =
{

    call : function(){
		
		if (window.XMLHttpRequest) {
		
	        this.httpRequest = new XMLHttpRequest();
	    
	    } else if (window.ActiveXObject) {
	        
	        try {
	        
	            this.httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
	            
	        } catch (e) {
	            
	           try {
	           
	                this.httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
	                
	           } catch (e) {
	            
	           }
	           
	        }
	    }
	    
    },
    
    start : function(url){
		
		this.httpRequest.open('GET', url, true);
    	this.httpRequest.send(null);
	    
    }

};

function joint(formName, num)
{
	var format = document.getElementById('format').value;
	var ie     = document.getElementById('ie').value;
	var oe     = document.getElementById('oe').value;
	
	open_zip_search_dialog(formName, format, ie, oe, num);
	
}

// 郵便番号検索のウィンドウをオープン
function open_zip_search_dialog(formName, format, ie, oe, num)
{

	var url      = "";
	var winName  = "";
    var argument = "";
	
	// URL
	url += "./zip_search.php";
	url += "?f_name="   + formName;
	url += "&format="   + format;
	url += "&i_encode=" + ie;
	url += "&o_encode=" + oe;
	
	if (!num) {
	
		// 郵便番号の値
		if (document.getElementById('zip1')) { url += "&zip1=" + document.getElementById('zip1').value }
		if (document.getElementById('zip2')) { url += "&zip2=" + document.getElementById('zip2').value }
	
		// 郵便番号の戻り場所
		if (document.getElementById('zip1')) { url += "&r_zip1=" + document.getElementById('zip1').name }
		if (document.getElementById('zip2')) { url += "&r_zip2=" + document.getElementById('zip2').name }
	
		// 住所の戻り場所
		if (document.getElementById('r_state'))   { url += "&r_state="   + document.getElementById('r_state').name }
		if (document.getElementById('r_city'))    { url += "&r_city="    + document.getElementById('r_city').name }
		if (document.getElementById('r_street'))  { url += "&r_street="  + document.getElementById('r_street').name }
		if (document.getElementById('r_address')) { url += "&r_address=" + document.getElementById('r_address').name }
	
		// フリガナの戻り場所
		if (document.getElementById('r_state_kana'))   { url += "&r_state_kana="   + document.getElementById('r_state_kana').name }
		if (document.getElementById('r_city_kana'))    { url += "&r_city_kana="    + document.getElementById('r_city_kana').name }
		if (document.getElementById('r_street_kana'))  { url += "&r_street_kana="  + document.getElementById('r_street_kana').name }
		if (document.getElementById('r_address_kana')) { url += "&r_address_kana=" + document.getElementById('r_address_kana').name }
		
	} else {
	
		// 郵便番号の値
		if (document.getElementById('zip1_' +  + num)) { url += "&zip1=" + document.getElementById('zip1_' +  + num).value }
		if (document.getElementById('zip2_' +  + num)) { url += "&zip2=" + document.getElementById('zip2_' +  + num).value }
	
		// 郵便番号の戻り場所
		if (document.getElementById('zip1_' +  + num)) { url += "&r_zip1=" + document.getElementById('zip1_' +  + num).name }
		if (document.getElementById('zip2_' +  + num)) { url += "&r_zip2=" + document.getElementById('zip2_' +  + num).name }
	
		// 住所の戻り場所
		if (document.getElementById('r_state_' +  + num))   { url += "&r_state="   + document.getElementById('r_state_' +  + num).name }
		if (document.getElementById('r_city_' +  + num))    { url += "&r_city="    + document.getElementById('r_city_' +  + num).name }
		if (document.getElementById('r_street_' +  + num))  { url += "&r_street="  + document.getElementById('r_street_' +  + num).name }
		if (document.getElementById('r_address_' +  + num)) { url += "&r_address=" + document.getElementById('r_address_' +  + num).name }
	
		// フリガナの戻り場所
		if (document.getElementById('r_state_kana_' +  + num))   { url += "&r_state_kana="   + document.getElementById('r_state_kana_' +  + num).name }
		if (document.getElementById('r_city_kana_' +  + num))    { url += "&r_city_kana="    + document.getElementById('r_city_kana_' +  + num).name }
		if (document.getElementById('r_street_kana_' +  + num))  { url += "&r_street_kana="  + document.getElementById('r_street_kana_' +  + num).name }
		if (document.getElementById('r_address_kana_' +  + num)) { url += "&r_address_kana=" + document.getElementById('r_address_kana_' +  + num).name }
		
	}
	
	// ウィンドウ名
	winName = "zip_search";
	
	// 引数
    argument += "width=700,";
    argument += "height=500,";
    argument += "top=200,";
    argument += "left=150,";
    argument += "menubar=no,";
    argument += "toolbar=no,";
    argument += "location=no,";
    argument += "status=no,";
    argument += "resizable=no,";
    argument += "scrollbars=yes";

	window.open(url, winName, argument);

    return true;
    
}

function callHttpRequestObj(){

	// URLを設定
	url = "./zip_search.php?page_data=call";
	
	if (document.getElementById('f_name'))    { url += "&f_name=" + document.getElementById('f_name').value }
	if (document.getElementById('format'))    { url += "&format=" + document.getElementById('format').value }
	if (document.getElementById('i_encode'))  { url += "&i_encode=" + document.getElementById('i_encode').value }
	if (document.getElementById('o_encode'))  { url += "&o_encode=" + document.getElementById('o_encode').value }
	if (document.getElementById('zip1'))      { url += "&zip1=" + document.getElementById('zip1').value }
	if (document.getElementById('zip2'))      { url += "&zip2=" + document.getElementById('zip2').value }
	if (document.getElementById('r_zip1'))    { url += "&r_zip1=" + document.getElementById('r_zip1').value }
	if (document.getElementById('r_zip2'))    { url += "&r_zip2=" + document.getElementById('r_zip2').value }
	
	if (document.getElementById('r_state'))   { url += "&r_state=" + document.getElementById('r_state').value }
	if (document.getElementById('r_city'))    { url += "&r_city=" + document.getElementById('r_city').value }
	if (document.getElementById('r_street'))  { url += "&r_street=" + document.getElementById('r_street').value }
	if (document.getElementById('r_address')) { url += "&r_address=" + document.getElementById('r_address').value }
	
	if (document.getElementById('r_state_kana'))   { url += "&r_state_kana=" + document.getElementById('r_state_kana').value }
	if (document.getElementById('r_city_kana'))    { url += "&r_city_kana=" + document.getElementById('r_city_kana').value }
	if (document.getElementById('r_street_kana'))  { url += "&r_street_kana=" + document.getElementById('r_street_kana').value }
	if (document.getElementById('r_address_kana')) { url += "&r_address_kana=" + document.getElementById('r_address_kana').value }
	
	// 出力タイプを設定
	var type = "php";
                
	if (document.getElementById('format')) { type = document.getElementById('format').value }
	
	if (type == "xml") {
		
		// XMLタイプでのデータ出力
		XmlHttpRequestObj(url);
	
	} else {
		
		// PHPタイプでのデータ出力
		phpHttpRequestObj(url);		
	
	}

}

function XmlHttpRequestObj(url){

	var xmlhttp = false;
	
    // ブラウザがIE5, IE6の場合
    if(typeof ActiveXObject != "undefined"){
    
        try {
    
    		// MSXML3
            xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); 
    
        }
    
        catch(e){
    
    		// MSXML2 
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
    
        }
    
    }
    
    // ブラウザがFirefox, Safari, IE7の場合
    if(!xmlhttp && typeof XMLHttpRequest!="undefined"){
        
        xmlhttp = new XMLHttpRequest();
        
    }

	xmlhttp.onreadystatechange = function() {
	
		if (xmlhttp.readyState == 4 && xmlhttp.responseText) {

			if(xmlhttp.responseXML == null){ window.alert("XML取得に失敗しました"); }
				
			document["resXML"] = new Object();
	   		document.resXML    = xmlhttp.responseXML;
	         
	        var retText = "";
	        var valText = "";
	        
	        var get_count   = 0;
	        var get_zip1    = "";
	        var get_zip2    = "";
	        var get_narflg  = 0;
	        
	        var errFlg  = 0;
				
			for (var i = 0; document.resXML.childNodes[i] != null; i++) {
				
				if (document.resXML.childNodes[i].nodeName == "zip_search_api") {				
					
					var parentNode = document.resXML.childNodes[i];
	                     
		            for (var j = 0; parentNode.childNodes[j] != null; j++) {
		                
		                get_count = get_count + 1;
		                
		            	var dataNode = parentNode.childNodes[j];
		                
		                if (dataNode.nodeName == "error") {
		                         
		                     if (errFlg == 0) { retText = ""; }
		                         
		                     retText += dataNode.firstChild.nodeValue;
		                     errFlg   = 1;
		                           
		                 } else if (dataNode.nodeName == "data" && errFlg == 0) {
		                     
		                     retText += "<tr>";
		                         
		                     for (var y = 0; dataNode.childNodes[y] != null; y++) {
		                         
		                     	 var lastNode = dataNode.childNodes[y];
		                         	
		                         if (lastNode.nodeName == "zip_view" || lastNode.nodeName == "address_view" ||
		                         	 lastNode.nodeName == "address_kana_view") { 

									 valText += "<td>" + lastNode.firstChild.nodeValue + "</td>";
	         
				                 }
				                 
				                 if (lastNode.nodeName == "return_zip1")   { get_zip1   = lastNode.firstChild.nodeValue; }
				                 if (lastNode.nodeName == "return_zip2")   { get_zip2   = lastNode.firstChild.nodeValue; }
		                         if (lastNode.nodeName == "narrowing_flg") { get_narflg = lastNode.firstChild.nodeValue; }
		                         
		                         if (lastNode.firstChild) {
		                         
			                         if (lastNode.nodeName == "return_zip1")   { valText += "<input type='hidden' name='zip1" + get_count + "' value='" + lastNode.firstChild.nodeValue + "'>"; }
					                 if (lastNode.nodeName == "return_zip2")   { valText += "<input type='hidden' name='zip2" + get_count + "' value='" + lastNode.firstChild.nodeValue + "'>"; }
			                         
			                         if (lastNode.nodeName == "return_state")   { valText += "<input type='hidden' name='state" + get_count + "'   value='" + lastNode.firstChild.nodeValue + "'>"; }
					                 if (lastNode.nodeName == "return_city")    { valText += "<input type='hidden' name='city" + get_count + "'    value='" + lastNode.firstChild.nodeValue + "'>"; }
			                         if (lastNode.nodeName == "return_street")  { valText += "<input type='hidden' name='street" + get_count + "'  value='" + lastNode.firstChild.nodeValue + "'>"; }
					                 if (lastNode.nodeName == "return_address") { valText += "<input type='hidden' name='address" + get_count + "' value='" + lastNode.firstChild.nodeValue + "'>"; }
					                 						
	
			                         if (lastNode.nodeName == "return_state_kana")   { valText += "<input type='hidden' name='state_kana" + get_count + "'   value='" + lastNode.firstChild.nodeValue + "'>"; }
					                 if (lastNode.nodeName == "return_city_kana")    { valText += "<input type='hidden' name='city_kana" + get_count + "'    value='" + lastNode.firstChild.nodeValue + "'>"; }
			                         if (lastNode.nodeName == "return_street_kana")  { valText += "<input type='hidden' name='street_kana" + get_count + "'  value='" + lastNode.firstChild.nodeValue + "'>"; }
					                 if (lastNode.nodeName == "return_address_kana") { valText += "<input type='hidden' name='address_kana" + get_count + "' value='" + lastNode.firstChild.nodeValue + "'>"; }
  								
  								 } else {
  								 
  								 	 if (lastNode.nodeName == "return_zip1")   { valText += "<input type='hidden' name='zip1" + get_count + "' value=''>"; }
					                 if (lastNode.nodeName == "return_zip2")   { valText += "<input type='hidden' name='zip2" + get_count + "' value=''>"; }
			                         
			                         if (lastNode.nodeName == "return_state")   { valText += "<input type='hidden' name='state" + get_count + "'   value=''>"; }
					                 if (lastNode.nodeName == "return_city")    { valText += "<input type='hidden' name='city" + get_count + "'    value=''>"; }
			                         if (lastNode.nodeName == "return_street")  { valText += "<input type='hidden' name='street" + get_count + "'  value=''>"; }
					                 if (lastNode.nodeName == "return_address") { valText += "<input type='hidden' name='address" + get_count + "' value=''>"; }
					                 						
	
			                         if (lastNode.nodeName == "return_state_kana")   { valText += "<input type='hidden' name='state_kana" + get_count + "'   value=''>"; }
					                 if (lastNode.nodeName == "return_city_kana")    { valText += "<input type='hidden' name='city_kana" + get_count + "'    value=''>"; }
			                         if (lastNode.nodeName == "return_street_kana")  { valText += "<input type='hidden' name='street_kana" + get_count + "'  value=''>"; }
					                 if (lastNode.nodeName == "return_address_kana") { valText += "<input type='hidden' name='address_kana" + get_count + "' value=''>"; }

  								 }
  
		                     }
		                     
		                     if (valText.length > 0) {
		                     
		                     	valText += "<td style='text-align: center;'>";
		                     
		                     	if (get_narflg == 1) {
                
                					valText += "<span class='disableButton'>選択</span>";
                
                					valText += "<a href='zip_search.php";
                					valText += "&zip1=" + get_zip1;
                					valText += "&zip2=" + get_zip2;
                					valText += "class='button'>絞り込み</a>";
               
            					} else {
					                
					                valText += "<a href='#' onclick='set_data(\"" + get_count + "\"); return false;' class='button'>選択</a>&nbsp";
					                valText += "<span class='disableButton'>絞り込み</span>";
					                        
					            }
		                     	
		                     	valText += "</td>";
		                     	
		                     	retText += valText;
		                     	
		                     	valText = "";
		                     
		                     }
		                         
		                     retText += "</tr>";
		                         
		                 }
		                         
		             }
	                     
	             }
	                 
	    	}
	         
	        if (errFlg == 1) {
	         
	         	retText = "<table class='warnTable'><tr><td>" + retText;
	         	retText = retText + "</td></tr></table>";
	         
	        } else {
	         	
	         	var hedder = "";
	         	var footer = "";
	         	
	         	hedder += "<table class='dataTable' style='width: 100%;'>";
	         	hedder += "<tr>";
	         	hedder += "<th style='width: 100px;'>郵便番号</th>";
	         	hedder += "<th style='width: 300px;'>住所</th>";
	         	hedder += "<th>フリガナ</th>";
	         	hedder += "<th style='width: 150px;'>&nbsp;</th>";
	         	hedder += "</tr>";
	         	
	         	footer += "</table>";
	         	
	         	retText = hedder + retText + footer;

	        }

	        document.getElementById('ziplist').innerHTML = retText;
	        
	        checkResult();

		}
		
	}

    xmlhttp.open("GET", url, true);
	
	xmlhttp.send(null);
    
}

function phpHttpRequestObj(url)
{

	// AJAXオブジェクトの宣言
	hrObj = new ajax_request();
	
	// httpRequestの設定
	hrObj.call();
    
    // 設定ができなかった場合はエラー
    if (hrObj.httpRequest == null) { return true; }
	
	// AJAX後の処理を宣言
    hrObj.httpRequest.onreadystatechange = function(){
    	
    	if (hrObj.httpRequest.readyState == 4 && hrObj.httpRequest.responseText) { 
        	
        	// AJAXの結果を取得        	
        	document.getElementById('ziplist').innerHTML = hrObj.httpRequest.responseText;
        	
        	checkResult();
		
		}
    
    }
    
    // AJAXを開始させる
    hrObj.start(url);
    
}

// 住所件数が一件なら自動取得を行う
function checkResult()
{

	flg1 = false;
	flg2 = false;

	for (var i = 1; i < 3; i ++) {
			
		if (document.getElementsByName('zip1' + i)[0]) {

			if (i == 1) { flg1 = true; } else if (i == 2) { flg2 = true; }
		
		}
			
	}
	
	if (flg1 == true && flg2 === false) { set_data(1); }

}
