//////////////////////////////////////////////////
// Google maps API v3 公開画面Script
//////////////////////////////////////////////////

// グローバル変数
var map;					// 地図
var centerPos;				// 地図の中心座標
var marker = new Array;		// マーカー
var infowindow = new Array;	// インフォウィンドウ
var lastInfoWindow;			// 前に選択されたインフォウィンドウの番号

// 地図情報
// var MapArticleType = new Array;	// 地図種別
var MapArticleType = new Array(1,2,3,4,5);	// 地図種別	// 2011/03/23 miyazaki
// var MapArticleType = new Array(1,2,3,4);	// 地図種別
var MapArea = "";			// 地図エリア
var MapLatitude;			// 地図の緯度
var MapLongitude;			// 地図の経度

// 物件情報
var ArticleID;				// 物件ID
var ArticleType;			// 物件種別
var ArticleRecommendation;	// おすすめ
// var ArticleIcon;			// アイコン
var ArticleName;			// 物件名
var ArticleArea;			// エリア
var ArticleAddress;			// 所在地
var ArticlePrice;			// 価格
var ArticleLatitude;		// 緯度
var ArticleLongitude;		// 経度
var ArticleImage;			// 画像
var ArticlePosition;		// 座標

// その他
var imagePath = "../data/";		// 画像PATH
var iconPath = "../img/map/";	// マーカー・アイコンPATH


//////////////////////////////////////////////////
// 地図検索
//////////////////////////////////////////////////

// マップ出力
function setMap(){
	// 初期値の緯度・経度を取得し、中心の座標を定義する
	MapLatitude = document.form.mapLatitude.value;		// 緯度
	MapLongitude = document.form.mapLongitude.value;	// 経度
	centerPos = new google.maps.LatLng(MapLatitude, MapLongitude);	// 緯度, 経度
	
	// マップのオプション
	var mapOptions = {
		zoom: 12,
		center: centerPos,
		noClear: true,
		mapTypeId: google.maps.MapTypeId.ROADMAP,
		mapTypeControl: false,
		scaleControl: false
	};
	
	// マップの作成
	map = new google.maps.Map(document.getElementById("gmap"), mapOptions);

}

// マーカー出力
function setMarker(){
	// ロード中は白く表示
// 	$('div[id=gmap]').unblock({fadeOut:0}).block({ message: null });
	// 物件種別とエリアを読み込み完了まで非表示
	$('INPUT[id^=mapArticleType]').attr("disabled","disabled");
	$('SELECT[name=mapArea]').attr("disabled","disabled");
	
	// 物件リスト
	var ArticleList = '';
	// マーカーのオプション
	var markerOptions = {
		position: centerPos,
		map: map,
// 		visible: false,
		shadow: iconPath + "pin_shadow.gif"
	};
	// マーカーのインデックス
	var i = 0;
	
	// articleAreaを順に読み込む
	$('INPUT[name=articleArea]').each(
		function(){
				// 物件種別取得
				ArticleType = $(this).nextAll('INPUT[name=articleType]:first').get(0).value;
				// 座標取得
				ArticlePosition = new google.maps.LatLng($(this).nextAll('INPUT[name=articleLatitude]:first').get(0).value, $(this).nextAll('INPUT[name=articleLongitude]:first').get(0).value);
				
				// マーカーの作成
				marker[i] = new google.maps.Marker(markerOptions);
				// 座標位置の変更
				marker[i].setPosition(ArticlePosition);
				// 表示アイコンの変更
				marker[i].setIcon(iconPath + ArticleType + ".gif");
				
				// インフォウィンドウ出力
				setInfoWindow(marker,i);
				
				// おすすめ取得
				ArticleRecommendation = $(this).nextAll('INPUT[name=articleRecommendation]:first').get(0).value;
				
				// 表示エリアが未選択のとき、お勧めフラグがあるもののみ表示(量が多くなるため)
				if(MapArea == '' && (ArticleRecommendation != '1' && ArticleRecommendation != '2')){
				}else{
					ArticleID = $(this).nextAll('INPUT[name=articleID]:first').get(0).value;
					ArticleAddress = $(this).nextAll('INPUT[name=articleAddress]:first').get(0).value;
					var url = '';
					// リンク先の設定と表示アイコン
					if(ArticleType == '4'){
						url = '../madeland/detail.php?ml_id=' + ArticleID;
						type = 'zou';
					}else{
						url = '../buysell/detail.php?bs_id=' + ArticleID;
						if(ArticleType == '1'){
							type = 'tochi';
						}else if(ArticleType == '2'){
							type = 'ikko';
						}else if(ArticleType == '3'){
							type = 'mansyon';
// 2011/03/23 miyazaki ===============================
						}else if(ArticleType == '5'){
							type = 'chintai';
// 2011/03/23 miyazaki ===============================
						}
					}
					// 物件リスト
					ArticleList += '<li class="' + type + '"><a href="' + url + '">' + ArticleAddress + '</a></li>';
				}
			i += 1;
		}
	);
	// HTMLに書き出し
	$('UL.article_list').html(ArticleList);
	// 非表示を開放
	$('INPUT[id^=mapArticleType]').removeAttr("disabled");
	$('SELECT[name=mapArea]').removeAttr("disabled");
// 	$('div[id=gmap]').unblock();
}

// 表示マーカー変更
function changeMarker(){
	var ArticleList = '';
	closeInfoWindow();
	$('INPUT[name=articleArea]').each(
		function(){
			var i = $('INPUT[name=articleArea]').index(this);
			// 表示エリアに含まれているか確認
			if($(this).val() == MapArea || MapArea == ''){
				// 記事種別取得
				ArticleType = $(this).nextAll('INPUT[name=articleType]:first').get(0).value;
				if(jQuery.inArray(ArticleType,MapArticleType.toString()) >= 0){
					// マーカー表示
					marker[i].setVisible(true);
					
					// おすすめ取得
					ArticleRecommendation = $(this).nextAll('INPUT[name=articleRecommendation]:first').get(0).value;
					
					// 表示エリアが未選択のとき、お勧めフラグがあるもののみ表示(量が多くなるため)
					if(MapArea == '' && (ArticleRecommendation != '1' && ArticleRecommendation != '2')){
					}else{
						ArticleID = $(this).nextAll('INPUT[name=articleID]:first').get(0).value;
						ArticleAddress = $(this).nextAll('INPUT[name=articleAddress]:first').get(0).value;
						var url = '';
						// リンク先の設定と表示アイコン
						if(ArticleType == '4'){
							url = '../madeland/detail.php?ml_id=' + ArticleID;
							type = 'zou';
						}else{
							url = '../buysell/detail.php?bs_id=' + ArticleID;
							if(ArticleType == '1'){
								type = 'tochi';
							}else if(ArticleType == '2'){
								type = 'ikko';
							}else if(ArticleType == '3'){
								type = 'mansyon';
// 2011/03/23 miyazaki ===============================
							}else if(ArticleType == '5'){
								type = 'chintai';
// 2011/03/23 miyazaki ===============================
							}
						}
						// 物件リスト
						ArticleList += '<li class="' + type + '"><a href="' + url + '">' + ArticleAddress + '</a></li>';
					}
					// 物件表示リストに追加
				}else{
					marker[i].setVisible(false);
				}
				
				
			}else{
				marker[i].setVisible(false);
			}
		}
	);
	// HTMLに書き出し
	$('UL.article_list').html(ArticleList);
	// 非表示を開放
	$('INPUT[id^=mapArticleType]').removeAttr("disabled");
	$('SELECT[name=mapArea]').removeAttr("disabled");
// 	$('div[id=gmap]').unblock();
}

// インフォウィンドウ出力
function setInfoWindow(marker,i){
	// クリックされたらインフォウィンドウ出力
	google.maps.event.addListener(marker[i],"click",function(){
		closeInfoWindow();
		
		// 情報取得
		ArticleID = $('INPUT[name=articleID]:eq('+i+')').val();
		ArticleType = $('INPUT[name=articleType]:eq('+i+')').val();
		ArticleName = $('INPUT[name=articleName]:eq('+i+')').val();
		ArticlePrice = $('INPUT[name=articlePrice]:eq('+i+')').val();
		ArticleImage = $('INPUT[name=articleImage]:eq('+i+')').val();
		ArticlePosition = marker[i].latLng;
		
		// 造成地とその他の物件・画像URL
		if(ArticleType == 4){
			var articleUrl = "../madeland/detail.php?ml_id=" + ArticleID;
			var imageUrl = imagePath + "madeland/s_" + ArticleImage;
		}else{
			var articleUrl = "../buysell/detail.php?bs_id=" + ArticleID;
			var imageUrl = imagePath + "buysell/s_" + ArticleImage;
		}
		// アイコン
		var iconUrl = iconPath + "m_" + ArticleType + ".gif"
		// 物件名
			var windowTitle = "<div style='min-height:135px;height:auto !important;'><img src='"+ iconUrl +"' border='0'> <strong>" + ArticleName + "</strong><br />";
		// 画像＋リンク
		var windowImage = "<a href='"+ articleUrl +"'><img src='"+ imageUrl +"' height='91px' border='0' vspace='5'></a><br />";
		// 価格＋アイコン
		var windowContents = "<strong>" + ArticlePrice + "</strong><small>万円</small></div>";
		// インフォウィンドウのオプション
		var infowindowOptions = {
			content: windowTitle + windowImage + windowContents,
			size: new google.maps.Size(150,150)
		};
		// インフォウィンドウの作成
		infowindow = new google.maps.InfoWindow(infowindowOptions);
		infowindow.open(map,marker[i]);
	});
	
	
}

// 情報ウィンドウのクローズ
function closeInfoWindow(){
	if(infowindow != ""){
		infowindow.close();
	}
}

// 物件種別変更
function changeArticleType(){
	// ロード中は白く表示
// 	$('div[id=gmap]').unblock({fadeOut:0}).block({ message: null });
	// 物件種別とエリアを読み込み完了まで非表示
	$('INPUT[id^=mapArticleType]').attr("disabled","disabled");
	$('SELECT[name=mapArea]').attr("disabled","disabled");
	
	MapArticleType = new Array;
	for(var i=1;i<=5;i++){	// 2011/03/23 miyazaki
// 	for(var i=1;i<=4;i++){
		if(document.getElementById("mapArticleType[]["+i+"]").checked == true){
			MapArticleType.push(i);
		}
	}
	// マーカー出力
	changeMarker();
}

// エリア変更
function changeArea(){
	// ロード中は白く表示
// 	$('div[id=gmap]').unblock({fadeOut:0}).block({ message: null });
	// 物件種別とエリアを読み込み完了まで非表示
	$('INPUT[id^=mapArticleType]').attr("disabled","disabled");
	$('SELECT[name=mapArea]').attr("disabled","disabled");
	
	MapArea = document.form.mapArea.value;
	if(MapArea == 1){			// まちなか（金沢市役所）
		centerPos = new google.maps.LatLng(36.561325, 136.656205);
	}else if(MapArea == 2){		// 駅西（県庁）
		centerPos = new google.maps.LatLng(36.594626, 136.625666);
	}else if(MapArea == 3){		// 金沢東IC
		centerPos = new google.maps.LatLng(36.6065, 136.671114);
	}else if(MapArea == 4){		// 金沢西IC
		centerPos = new google.maps.LatLng(36.568812, 136.602306);
	}else if(MapArea == 5){		// 大学（金沢大学）
		centerPos = new google.maps.LatLng(36.546061, 136.708607);
	}else if(MapArea == 6){		// 南部（金沢南総合運動公園）
		centerPos = new google.maps.LatLng(36.540039, 136.643715);
	}else if(MapArea == 7){		// 野々市（役場）
		centerPos = new google.maps.LatLng(36.519434, 136.609762);
	}else if(MapArea == 8){		// 河北郡以北（かほく市役所）
		centerPos = new google.maps.LatLng(36.719993, 136.706727);
	}else if(MapArea == 9){		// 白山市以南（役所）
		centerPos = new google.maps.LatLng(36.514427, 136.565892);
	}
	if(MapArea != ""){
		map.setCenter(centerPos);
		map.setZoom(13);
	}
	// マーカー出力
	changeMarker();
}


//////////////////////////////////////////////////
// 詳細画面
//////////////////////////////////////////////////
var load;

// マップ出力
function setDetailMap(){
	if(load == null){
		load = 1;
		
		// 初期値の緯度・経度を取得し、中心の座標を定義する
		MapLatitude = document.form.latitude.value;	// 緯度
		MapLongitude = document.form.longitude.value;	// 経度
		centerPos = new google.maps.LatLng(MapLatitude, MapLongitude);	// 緯度, 経度
		// マップのオプション
		var mapOptions = {
			zoom: 12,
			center: centerPos,
			mapTypeId: google.maps.MapTypeId.ROADMAP,
			mapTypeControl: true,
			scaleControl: true
		};
	
		// マップの作成
		map = new google.maps.Map(document.getElementById("gmap"), mapOptions);
	
		setDetailMarker();
	}
}


// マーカー出力
function setDetailMarker(){
	// マーカーのオプション
	var markerOptions = {
		position: centerPos,
		map: map,
		draggable: false,
		clickable: true
	};
	// マーカーの作成
	marker = new google.maps.Marker(markerOptions);

}


// 画像サイズ変更
function swapImageSize(id){
	var image = document.getElementById(id);
	var fw = 509;//fixed width
	var fh = 382;//fixed height
	var tw = img_true_size(image).width;// true width
	var th = img_true_size(image).height;// true height
	
	if((tw <= fw) && (th <= fh)){
		// 画像が幅・高さともに最大値より小さい
		var w = tw;
		var h = th;
	}else{
		if((tw/fw) >= (th/fh)){
			var w = fw;
			var h = ((fw/tw) * th);
		}else{
			var h = fh;
			var w = ((fh/th) * fw);
		}
	}

	document.images["target"].width = w;
	document.images["target"].height = h; 
}


// 画像の本来のサイズ取得
var img_true_size = function(image){
    var w = image.width ;
       var h = image.height ;
    if ( typeof image.naturalWidth !== 'undefined' ) {  // for Firefox, Safari, Chrome
        w = image.naturalWidth;
        h = image.naturalHeight;
 
    } else if ( typeof image.runtimeStyle !== 'undefined' ) {    // for IE
        var run = image.runtimeStyle;
        var mem = { w: run.width, h: run.height };  // keep runtimeStyle
        run.width  = "auto";
        run.height = "auto";
        w = image.width;
        h = image.height;
        run.width  = mem.w;
        run.height = mem.h;
 
    } else {         // for Opera
        var mem = { w: image.width, h: image.height };  // keep original style
        image.removeAttribute("width");
        image.removeAttribute("height");
        w = image.width;
        h = image.height;
        image.width  = mem.w;
        image.height = mem.h;
    }
 
    return {width:w, height:h};
}

