/*
* 画面ロード時の処理
*
* @param arguments[0] form（必須）
* @param arguments[1] 親プロパティ名（必須）
*/
function addressInit() {
  
  var form = arguments[0];
  var parent = arguments[1];
  
  var zipHighText = form.elements[parent + ".zipHigh"];
  var zipLowText = form.elements[parent + ".zipLow"];
  
  var prefSelect = form.elements[parent + ".prefCode"];
  var citySelect = form.elements[parent + ".cityCode"];
  var aliasSelect = form.elements[parent + ".aliasCode"];
  
  var jgdcCodeHidden = form.elements[parent + ".jgdcCode"];
  
  if(10 < jgdcCodeHidden.value.length && jgdcCodeHidden.value.length < 12){
	  new Ajax.Request(
	    '/hs/ajax/addressInit.do',
	    {
	      method: 'post',
	      parameters: 'jgdc=' + jgdcCodeHidden.value,
	      onSuccess: function(request) {
	        var data = request.responseText;
	        //alert(data);
	        var jgdc = data.split('&');
	        var prefCount = 0;
	        var tmpPrefCode = "";
	        var tmpCityCode = "";
	        var tmpAliasCode = "";
	        
	        prefSelect.selectedIndex = 0;
	        //resetCity(form, parent);
	    	//resetAlias(form, parent);
	    	
	        // 都道府県
		    var pref = jgdc[0].split(':');
			
			// 市区町村
			var citys = jgdc[1].split(',');
		    for (i = 0; i < citys.length; i++ ) {
			    var city = citys[i].split(':');
			    if(tmpCityCode != city[0]){
				    citySelect.length++;
				    citySelect.options[citySelect.length - 1].value = city[0];
				    citySelect.options[citySelect.length - 1].text = city[1];
				    tmpCityCode = city[0];
				}
			}
			
			// 大字・通称、字・丁目
			var alias = jgdc[2].split(':');
			aliasSelect.length++;
		    aliasSelect.options[1].value = alias[0];
		    aliasSelect.options[1].text = alias[1];
				    
			// 一致する都道府県をセット
			for(i = 0; i < prefSelect.length; i++){
			  	if(prefSelect.options[i].value == pref[0]){
			  		prefSelect.selectedIndex = i;
			  		break;
			  	}
			}
			
			// 一致する市区町村をセット
			for(i = 0; i < citySelect.length; i++){
				if(jgdc[3] == citySelect.options[i].value){
					citySelect.selectedIndex = i;
					break;
				}
			}
			
			// 一致する大字・通称、字・丁目をセット
			aliasSelect.selectedIndex = 1;
			
			// 一致する郵便番号をセット
			zipHighText.value = jgdc[4];
  			zipLowText.value = jgdc[5];
	      },
	      onFailure: errorFromServer
	    }
	  );
	} else {
		prefSelect.selectedIndex = 0;
	}
  
}

/*
* 郵便番号を入力した際の処理
*
* @param arguments[0] form（必須）
* @param arguments[1] 親プロパティ名（必須）
*/
function inputZip() {

  var form = arguments[0];
  var parent = arguments[1];
  
  var zipHighText = form.elements[parent + ".zipHigh"];
  var zipLowText = form.elements[parent + ".zipLow"];
  
  var prefSelect = form.elements[parent + ".prefCode"];
  var citySelect = form.elements[parent + ".cityCode"];
  var aliasSelect = form.elements[parent + ".aliasCode"];
  
  var jgdcCodeHidden = form.elements[parent + ".jgdcCode"];
  
  if((2 < zipHighText.value.length && zipHighText.value.length < 4)
  		&& (3 < zipLowText.value.length && zipLowText.value.length < 5)){
	  new Ajax.Request(
	    '/hs/ajax/inputZip.do',
	    {
	      method: 'post',
	      parameters: 'zip=' + zipHighText.value + zipLowText.value,
	      onSuccess: function(request) {
	        var data = request.responseText;
	        //alert(data);
	        var jgdc = data.split('&');
	        var prefCount = 0;
	        var tmpPrefCode = "";
	        var tmpCityCode = "";
	        var tmpAliasCode = "";
	        
	        prefSelect.selectedIndex = 0;
	        resetCity(form, parent);
	    	resetAlias(form, parent);
	    	
	        // 都道府県
		    var pref = jgdc[0].split(':');
		    if(tmpPrefCode != pref[0]){
			    tmpPrefCode = pref[0];
			    prefCount++
			}
			
			// 一致する都道府県をセット
			if(0 < prefCount && prefCount < 2){
				var prefSelectIndex = 0;
				for(i = 0; i < prefSelect.length; i++){
				  	if(prefSelect.options[i].value == tmpPrefCode){
				  		prefSelectIndex = i;
				  		break;
				  	}
				}
			}
			prefSelect.selectedIndex = prefSelectIndex;
			
			// コンボボックスの値に取得した都道府県があった場合
			if(0 < prefSelectIndex){
				// 市区町村
				var citys = jgdc[1].split(',');
			    for (i = 0; i < citys.length; i++ ) {
				    var city = citys[i].split(':');
				    if(tmpCityCode != city[0]){
					    citySelect.length++;
					    citySelect.options[citySelect.length - 1].value = city[0];
					    citySelect.options[citySelect.length - 1].text = city[1];
					    tmpCityCode = city[0];
					}
				}
				
				// 一致する市区町村をセット
				for(i = 0; i < citySelect.length; i++){
					if(jgdc[3] == citySelect.options[i].value){
						citySelect.selectedIndex = i;
						break;
					}
				}
				
				// 大字・通称、字・丁目
				var aliases = jgdc[2].split(',');
				for (i = 0; i < aliases.length; i++ ) {
				    var alias = aliases[i].split(':');
				    if(tmpAliasCode != alias[0]){
					    aliasSelect.length++;
					    aliasSelect.options[aliasSelect.length - 1].value = alias[0];
					    aliasSelect.options[aliasSelect.length - 1].text = alias[1];
					    tmpAliasCode = alias[0];
					}
				}
				
				// 一致する大字・通称、字・丁目をセット
				if(1 < aliasSelect.length && aliasSelect.length < 3){
					aliasSelect.selectedIndex = 1;
					selectAlias(form, parent);
					//jgdcCodeHidden.value = prefSelect.value + citySelect.value + aliasSelect.value;
				}
			}
	      },
	      onFailure: errorFromServer
	    }
	  );
	}
}

/*
* 都道府県を選択された際の処理
*
* @param arguments[0] form（必須）
* @param arguments[1] 親プロパティ名（必須）
*/
function selectPrefecture() {

  var form = arguments[0];
  var parent = arguments[1];
  
  var prefSelect = form.elements[parent + ".prefCode"];
  var citySelect = form.elements[parent + ".cityCode"];
  
  new Ajax.Request(
    '/hs/ajax/selectPrefecture.do',
    {
      method: 'post',
      parameters: 'pref=' + prefSelect.value,
      onSuccess: function(request) {
        var data = request.responseText;
        //alert(data);
        
        resetCity(form, parent);
	    resetAlias(form, parent);
	    
        if(0 < data.length){
        	var datum = data.split(',');
        	
	        for (i = 0; i < datum.length; i++ ) {
	          citySelect.length++;
	          var values = datum[i].split(':');
	          citySelect.options[i+1].value = values[0];
	          citySelect.options[i+1].text = values[1];
	        }
	    }
	    // 一致する市区町村をセット
		if(1 < citySelect.length && citySelect.length < 3){
			citySelect.selectedIndex = 1;
			//selectCity(form, parent);
		}
      },
      onFailure: errorFromServer
    }
  );
  
}

/*
* 市区町村を選択された際の処理
*
* @param arguments[0] form（必須）
* @param arguments[1] 親プロパティ名（必須）
*/
function selectCity() {

  var form = arguments[0];
  var parent = arguments[1];
  
  var prefSelect = form.elements[parent + ".prefCode"];
  var citySelect = form.elements[parent + ".cityCode"];
  var hiddenCityCode = form.elements["hiddenCityCode"];
  var aliasSelect = form.elements[parent + ".aliasCode"];
  
  new Ajax.Request(
    '/hs/ajax/selectCity.do',
    {
      method: 'post',
      parameters: 'pref=' + prefSelect.value + '&' + 'city=' + citySelect.value,
      onSuccess: function(request) {
        var data = request.responseText;
        //alert(data);
        
        resetAlias(form, parent);
        
        if(0 < data.length){
	        var datum = data.split(',');
        
//	        for (i = 0; i < datum.length; i++ ) {
//	          aliasSelect.length++;
//	          var values = datum[i].split(':');
//	          aliasSelect.options[i+1].value = values[0];
//	          aliasSelect.options[i+1].text = values[1];
//	        }
	        
	        index = 1;
	        for (i = 0; i < datum.length; i++ ) {
	          aliasSelect.length++;
	          aliasSelect.options[index].value = datum[i];
	          i++
	          aliasSelect.options[index].text = datum[i];
	          index++;
	        }
	    }
	    
	    hiddenCityCode.value = citySelect.value;
	    
	    // 一致する大字・通称、字・丁目をセット
		if(1 < aliasSelect.length && aliasSelect.length < 3){
			aliasSelect.selectedIndex = 1;
			selectAlias(form, parent);
		}
      },
      onFailure: errorFromServer
    }
  );
  
}

/*
* 大字・通称、字・丁目を選択された際の処理
*
* @param arguments[0] form（必須）
* @param arguments[1] 親プロパティ名（必須）
*/
function selectAlias() {

  var form = arguments[0];
  var parent = arguments[1];
  
  var zipHighText = form.elements[parent + ".zipHigh"];
  var zipLowText = form.elements[parent + ".zipLow"];
  
  var prefSelect = form.elements[parent + ".prefCode"];
  var citySelect = form.elements[parent + ".cityCode"];
  var aliasSelect = form.elements[parent + ".aliasCode"];
  
  var jgdcCodeHidden = form.elements[parent + ".jgdcCode"];
  jgdcCodeHidden.value = prefSelect.value + citySelect.value + aliasSelect.value;
  
  if(10 < jgdcCodeHidden.value.length && jgdcCodeHidden.value.length < 12){
	  // サーバにアクセスして郵便番号を取得します。
	  new Ajax.Request(
	    '/hs/ajax/selectAlias.do',
	    {
	      method: 'post',
	      parameters: 'jgdc=' + jgdcCodeHidden.value,
	      onSuccess: function(request) {
	        var data = request.responseText;
		    zipHighText.value = data.substring(0,3);
		    zipLowText.value = data.substring(3,7);
	      },
	      onFailure: errorFromServer
	    }
	  );
  }
  
}

/*
* 都道府県をリセットする
*
* @param arguments[0] form（必須）
* @param arguments[1] 親プロパティ名（必須）
*/
function resetPrefecture() {

  var form = arguments[0];
  var parent = arguments[1];
  
  var jgdcCode = form.elements[parent + ".jgdcCode"];
  jgdcCode.value = "";
  form.elements[parent + ".prefCode"].selectedIndex = 0;
}

/*
* 市区町村をリセットする
*
* @param arguments[0] form（必須）
* @param arguments[1] 親プロパティ名（必須）
*/
function resetCity() {

  var form = arguments[0];
  var parent = arguments[1];
  
  var jgdcCode = form.elements[parent + ".jgdcCode"];
  jgdcCode.value = "";
  form.elements[parent + ".cityCode"].length = 1;
  form.elements[parent + ".cityCode"].selectedIndex = 0;
}

/*
* 大字・通称、字・丁目をリセットする
*
* @param arguments[0] form（必須）
* @param arguments[1] 親プロパティ名（必須）
*/
function resetAlias() {

  var form = arguments[0];
  var parent = arguments[1];
  
  var jgdcCode = form.elements[parent + ".jgdcCode"];
  jgdcCode.value = "";
  form.elements[parent + ".aliasCode"].length = 1;
  form.elements[parent + ".aliasCode"].selectedIndex = 0;
}

/*
* 町名で絞込みを行う
*
* @param arguments[0] form（必須）
* @param arguments[1] 親プロパティ名（必須）
*/
/*
function narrowingAliasName() {

  var form = arguments[0];
  var parent = arguments[1];
  
  var prefSelect = form.elements[parent + ".prefCode"];
  var citySelect = form.elements[parent + ".cityCode"];
  var aliasSelect = form.elements[parent + ".aliasCode"];
  var aliasName = form.elements[parent + "AliasName"];
  
  new Ajax.Request(
    '/hs/ajax/narrowingAliasName.do',
    {
      method: 'post',
      parameters: 'pref=' + prefSelect.value + '&' + 'city=' + citySelect.value + '&' + 'aliasName=' + aliasName.value,
      onSuccess: function(request) {
        var data = request.responseText;
        //alert(data);
        
        resetAlias(form, parent);
        
        if(0 < data.length){
	        var datum = data.split(',');
        
//	        for (i = 0; i < datum.length; i++ ) {
//	          aliasSelect.length++;
//	          var values = datum[i].split(':');
//	          aliasSelect.options[i+1].value = values[0];
//	          aliasSelect.options[i+1].text = values[1];
//	        }
	        
	        index = 1;
	        for (i = 0; i < datum.length; i++ ) {
	          aliasSelect.length++;
	          aliasSelect.options[index].value = datum[i];
	          i++
	          aliasSelect.options[index].text = datum[i];
	          index++;
	        }
	    }
	    // 一致する大字・通称、字・丁目をセット
		if(1 < aliasSelect.length && aliasSelect.length < 3){
			aliasSelect.selectedIndex = 1;
			selectAlias(form, parent);
		}
      },
      onFailure: errorFromServer
    }
  );  
}
*/

/*
* 物件所在地と同じ住所チェックボックスが変更されたときの処理
*
* @param arguments[0] form（必須）
* @param arguments[1] 親プロパティ名（必須）
* @param arguments[2] 番地のプロパティ名（必須）
* @param arguments[3] ビル・建物名のプロパティ名（必須）
*/
function changeSameAddressFlg(){

  var form = arguments[0];
  var parent = arguments[1];
  
  var zipHighText = form.elements[parent + ".zipHigh"];
  var zipLowText = form.elements[parent + ".zipLow"];
  
  var prefSelect = form.elements[parent + ".prefCode"];
  var citySelect = form.elements[parent + ".cityCode"];
  var aliasSelect = form.elements[parent + ".aliasCode"];
  
  var houseNum = form.elements[arguments[2]];
  var buildingName = form.elements[arguments[3]];
  
  // 住所の入力を初期化し、入力不可にする
  if(form.sameAddressFlg.checked){
    zipHighText.value = "";
    zipLowText.value = "";
    resetPrefecture(form, parent);
    resetCity(form, parent);
    resetAlias(form, parent);
    houseNum.value = "";
    buildingName.value = "";
    
    zipHighText.disabled = true;
    zipLowText.disabled = true;
    
    prefSelect.disabled = true;
    citySelect.disabled = true;
    aliasSelect.disabled = true;
    
    houseNum.disabled = true;
    buildingName.disabled = true;
    
  // 住所を入力可能にする
  } else {
    zipHighText.disabled = false;
    zipLowText.disabled = false;
    
    prefSelect.disabled = false;
    citySelect.disabled = false;
    aliasSelect.disabled = false;
    
    houseNum.disabled = false;
    buildingName.disabled = false;
  }
  
}

/*
*
*/
function errorFromServer(request) {
  Insertion.Before('log', 'error');
}

/*
 * 
 */
function disp(params) {
	
	for (var key in params) {
		
    new Ajax.Request(
    '/hs/ajax/staticEstateList.do',
    {
      method: 'post',
      parameters: 'areaId=1',
      parameters: 'did=' + key + '&' + 'a=' + params[key]["a"] + '&' + 'd=' + params[key]["d"] + '&' + 'pf=' + params[key]["pf"] + '&' + 'pt=' + params[key]["pt"] + '&' + 'wtcd=' + params[key]["wtcd"] + '&' + 'pd=' + params[key]["pdate"] + '&' + 'lc=' + params[key]["lc"] + '&' + 'ei=' + params[key]["ei"],
      onSuccess: function(request) {
        var resData = request.responseText;
        var data = eval(resData);
        var result = "";
        for(var i = 0; i < data.length; i++){        
        	result += createData(data[i]);
        }
        var msg = document.getElementById(data[0].divId);
        msg.innerHTML = '<ul id=\"item-list\"> ' + result + '</ul>';
      },
      onFailure: errorFromServer
    }
    );
        
	}
}

function createData(obj){
	var resultData = "<li class=\"list-box\">";
	resultData += "<p class=\"list-image\"><a href='#' onclick=window.open(\"/hs/estate/EstateInfo.do?a=" + obj.areaId + "&c=" + obj.estateFindCategory + "&d=" + obj.estateFindDiv + "&ei=" + obj.estateId + "\",\"_blank\",\"\") title=\"物件詳細\"><img src=\"" + obj.imageFileUrl + "\"></a></p>";	
	resultData += "<p class=\"list-address\"><img src=\"./address_label.jpg\" alt=\"所在地\"/>" + ((obj.prefName) ? obj.prefName : "" ) + ((obj.cityName) ? obj.cityName : "" ) + ((obj.aliasName) ? obj.aliasName : "" ) + ((obj.streetName) ? obj.streetName : "" ) + "</p>";
	resultData += "<p class=\"list-name\"><img src=\"./buildingname_label.jpg\" alt=\"建物名\"/>" + ((obj.buildingName) ? obj.buildingName : "" ) + "</p>";
	resultData += "<p class=\"list-price\"><img src=\"./price_label.jpg\" alt=\"価格\"/>"+ obj.price + "万円（税込）</p>";
	resultData += "<p class=\"list-shop\"><img src=\"./shop_label.jpg\" alt=\"取扱店舗\"/><a href='#' onclick=window.open(\"/hs/store/StoreInfo.do?a=" + obj.areaId + "&c=" + obj.estateFindCategory + "&d=" + obj.estateFindDiv + "&ml=" + obj.shopEmail + "\",\"_blank\",\"\")><strong>" + obj.shopName + "</strong></a></p>";
	resultData += "</li>";
	return resultData;
}


/*
* トップページ専用 都道府県を選択された際の処理
*
* @param arguments[0] form（必須）
* @param arguments[1] 親プロパティ名（必須）
*/
function selectPrefectureForTop() {

  var form = arguments[0];
  var parent = arguments[1];
  
  var prefSelect = form.elements[parent + ".prefCode"];
  var citySelect = form.elements[parent + ".cityCode"];
  
  new Ajax.Request(
    '/hs/ajax/selectPrefecture.do',
    {
      method: 'post',
      parameters: 'pref=' + prefSelect.value,
      onSuccess: function(request) {
        var data = request.responseText;
//        alert(data);
        
        resetCityForTop(form, parent);
	    
        if(0 < data.length){
        	var datum = data.split(',');
        	
	        for (i = 0; i < datum.length; i++ ) {
	          citySelect.length++;
	          var values = datum[i].split(':');
	          citySelect.options[i+1].value = values[0];
	          citySelect.options[i+1].text = values[1];
	        }
	    }
	    // 一致する市区町村をセット
		if(1 < citySelect.length && citySelect.length < 3){
			citySelect.selectedIndex = 1;
			//selectCity(form, parent);
		}
      },
      onFailure: errorFromServer
    }
  );
  
}

/*
* トップページ専用 市区町村をリセットする
*
* @param arguments[0] form（必須）
* @param arguments[1] 親プロパティ名（必須）
*/
function resetCityForTop() {

  var form = arguments[0];
  var parent = arguments[1];
  
  form.elements[parent + ".cityCode"].length = 1;
  form.elements[parent + ".cityCode"].selectedIndex = 0;
}

/*
* 査定依頼 画面ロード時の処理
*
* @param arguments[0] form（必須）
* @param arguments[1] 親プロパティ名（必須）
*/
function residenceAssessmentAddressInit() {
  
  var form = arguments[0];
  var parent = arguments[1];
  var cityCode = arguments[2];
  
  var zipHighText = form.elements[parent + ".zipHigh"];
  var zipLowText = form.elements[parent + ".zipLow"];
  
  var prefSelect = form.elements[parent + ".prefCode"];
  var citySelect = form.elements[parent + ".cityCode"];
  var aliasSelect = form.elements[parent + ".aliasCode"];
  
  var jgdcCodeHidden = form.elements[parent + ".jgdcCode"];
  
  if(10 < jgdcCodeHidden.value.length && jgdcCodeHidden.value.length < 12){
      new Ajax.Request(
        '/hs/ajax/addressInit.do',
        {
          method: 'post',
          parameters: 'jgdc=' + jgdcCodeHidden.value,
          onSuccess: function(request) {
            var data = request.responseText;
            //alert(data);
            var jgdc = data.split('&');
            var prefCount = 0;
            var tmpPrefCode = "";
            var tmpCityCode = "";
            var tmpAliasCode = "";
            
            prefSelect.selectedIndex = 0;
            //resetCity(form, parent);
            //resetAlias(form, parent);
            
            // 都道府県
            var pref = jgdc[0].split(':');
            
            // 市区町村
            var citys = jgdc[1].split(',');
            for (i = 0; i < citys.length; i++ ) {
                var city = citys[i].split(':');
                if(tmpCityCode != city[0]){
                    citySelect.length++;
                    citySelect.options[citySelect.length - 1].value = city[0];
                    citySelect.options[citySelect.length - 1].text = city[1];
                    tmpCityCode = city[0];
                }
            }
            
            // 大字・通称、字・丁目
            var alias = jgdc[2].split(':');
            aliasSelect.length++;
            aliasSelect.options[1].value = alias[0];
            aliasSelect.options[1].text = alias[1];
                    
            // 一致する都道府県をセット
            for(i = 0; i < prefSelect.length; i++){
                if(prefSelect.options[i].value == pref[0]){
                    prefSelect.selectedIndex = i;
                    break;
                }
            }
            
            // 一致する市区町村をセット
            for(i = 0; i < citySelect.length; i++){
                if(jgdc[3] == citySelect.options[i].value){
                    citySelect.selectedIndex = i;
                    break;
                }
            }
            
            // 一致する大字・通称、字・丁目をセット
            aliasSelect.selectedIndex = 1;
            
            // 一致する郵便番号をセット
            zipHighText.value = jgdc[4];
            zipLowText.value = jgdc[5];
          },
          onFailure: errorFromServer
        }
      );
    } else {
        
        if((prefSelect.value.length > 0) && (prefSelect.value != -1)){
            new Ajax.Request(
                        '/hs/ajax/selectPrefecture.do',
            {
                method: 'post',
                parameters: 'pref=' + prefSelect.value,
                onSuccess: function(request) {
                    var data = request.responseText;
                    //alert(data);
                            
                    resetCityForTop(form, parent);
                            
                    if(0 < data.length){
                        var datum = data.split(',');
                                
                        for (i = 0; i < datum.length; i++ ) {
                            citySelect.length++;
                            var values = datum[i].split(':');
                            citySelect.options[i+1].value = values[0];
                            citySelect.options[i+1].text = values[1];
                        }
                                
                        if(cityCode > 0){
                            // 一致する市区町村をセット
                            for(i = 0; i < citySelect.length; i++){
                                if(cityCode == citySelect.options[i].value){
                                    citySelect.selectedIndex = i;
                                    break;
                                }
                            }
                            // 大字・通称、字・丁目を取得する
                            new Ajax.Request(
                                '/hs/ajax/selectCity.do',
                            {
                                method: 'post',
                                parameters: 'pref=' + prefSelect.value + '&' + 'city=' + cityCode,
                                onSuccess: function(request) {
                                    var data = request.responseText;
                                    //alert(data);
                                                
                                    resetAlias(form, parent);
                                                
                                    if(0 < data.length){
                                        var datum = data.split(',');
                                                
                                        index = 1;
                                        for (i = 0; i < datum.length; i++ ) {
                                            aliasSelect.length++;
                                            aliasSelect.options[index].value = datum[i];
                                            i++
                                            aliasSelect.options[index].text = datum[i];
                                            index++;
                                        }
                                    }
                                                
                                    hiddenCityCode.value = cityCode;
                                                
                                    // 一致する大字・通称、字・丁目をセット
                                    if(1 < aliasSelect.length && aliasSelect.length < 3){
                                        aliasSelect.selectedIndex = 1;
                                        selectAlias(form, parent);
                                    }
                                },
                                onFailure: errorFromServer
                            }
                            );
                        }
                    }
                },
                onFailure: errorFromServer
            }
            );
        }else{
            prefSelect.selectedIndex = 0;
        }
        
    }
}

