/*******************************************************
 * mys_ajax.js
 * Ajax の関連補助関数群
 * CREATED BY Design Studio MYS
 * CREATE DATE : 2007.08.12
 * UPDATE DATE : 2007.10.15
 *******************************************************/



var imgIndicator1	= './images/indicator/indicator.gif';
var imgIndicator2	= './images/indicator/indicator_smallwaitanim.gif';
var imgIndicator3	= './images/indicator/indicator_arrows.gif';
var imgIndicator4	= './images/indicator/loading_animation_liferay.gif';
var imgIndicator5	= './images/indicator/indicator_remembermilk_orange.gif';
var imgIndicator6	= './images/indicator/indicator_tiny_red.gif';
var imgIndicator7	= './images/indicator/ajax-3MA_processingbar.gif';

var map				= null;
var markers			= new Array();
var mapLats			= new Array();
var mapLngs			= new Array();
var icon			= null;
//var icon			= new GIcon();
var geocoder		= null;

var searchAddMode	= 'close';

/*
 DEBUG
*/
function ajaxDebug(pD) {
	alert(pD);
}



function javaOnLoad(xmode) {
	switch (xmode) {
		case 'index':
		//	Nifty("div#navSide1,div#navSide2,div#navSide3","top");
			break;
		case '1001':
		//	Nifty("div#navSide1,div#navSide2,div#navSide3,div#contentsBoxRound1","top");
			break;
		case '9801':
			gmapLoad();
			break;
	}
}



/*
 * onLoad routine
 */
function windowOnLoad() {
	// Google Maps
	window.onload = ajaxMapGeocoding();
	window.onunload = GUnload;
}



function gMapOnLoad() {
	// Google Maps
	window.onload = ajaxMapLoad();
	window.onunload = GUnload;
}



function sleep( t ){
	var d1 = new Date().getTime();
	var d2 = new Date().getTime();
	while( d2 < (d1 + 1000 * t) ){		// t秒待つ
		d2=new Date().getTime();
	}
	return;
}



function ajaxAddBookmark(p1,p2) {

	//Internet Explorer
	if(navigator.userAgent.indexOf("MSIE") > -1){
		window.external.AddFavorite(p1,p2);
	}
	//Firefox
	else if(navigator.userAgent.indexOf("Firefox") > -1){
		window.sidebar.addPanel(p2,p1,"");
	}
	//Netscape
	else if(navigator.userAgent.indexOf("Netscape") > -1){
		window.sidebar.addPanel(p2,p1,"");
	}
	//Opera
	else if(navigator.userAgent.indexOf("Opera") > -1){
//		document.write(
//			'<div style="text-align:center">' +
//			'<a href="' + p1 + '"' +
//			' rel="sidebar"' +
//			' title="' + p2 + '">ブックマークに追加</a>' +
//			'</div>'
//		);
//		document.write(
//			'<a href="' + p1 + '"' +
//			' rel="sidebar"' +
//			' title="' + p2 + '">ブックマークに追加</a>'
//			);
		alert("Hi!");
	}

}



/*
 * 主に画面のみ更新の場合に使用する
 */
function ajaxDispPHP(paramDIVID,paramURL,paramINDICATORMODE) {
	if (!!document.getElementById('dispIndicator')) {
		switch (paramINDICATORMODE) {
			case 'indioff':	break;
			case 'divid':
				$(paramDIVID).innerHTML = '<img src="' + imgIndicator7 + '">';
				break;
			default:
				$('dispIndicator').innerHTML = '<img src="' + imgIndicator7 + '">';
		}
	}
	new Ajax.Updater(
		paramDIVID,
		paramURL,
		{
			method		:'post',
			postBody	:paramURL
		}
	);
}



/*
 * 各種マスタ編集機能呼び出しと更新の中継ぎ
 */
function ajaxUpdater(paramDIVID,paramURL,paramINDICATORMODE) {
	/* フォーム「form1」が存在すればフォームデータのシリアライズ */
	if (!!document.getElementById('form1')) {
		var URLEncode = Form.serialize("form1");
		switch (paramINDICATORMODE) {
			case 'indioff':	break;
			case 'divid':
				$(paramDIVID).innerHTML = '<img src="' + imgIndicator7 + '">';
				break;
			default:
				if (!!document.getElementById('dispIndicator')) {
					$('dispIndicator').innerHTML = '<img src="' + imgIndicator7 + '">';
				}
		}
	} else {
		var URLEncode = '';
	}
	new Ajax.Updater(
		paramDIVID,
		paramURL,
		{
			method		:'post',
			postBody	:URLEncode
		}
	);
}



function ajaxMasterUpdater(paramDIVID,paramURL,paramFORM) {
	/* フォーム「form1」が存在すればフォームデータのシリアライズ */
	if (!!document.getElementById('form1')) {
		var URLEncode = Form.serialize("form1");
	} else {
		var URLEncode = '';
	}
	if (checkOrderForm(paramFORM)) {
		if (!!document.getElementById('dispIndicator')) {
			$('dispIndicator').innerHTML
				= '<img src="' + imgIndicator7 + '">';
		}
		new Ajax.Updater(
			paramDIVID,
			paramURL,
			{
				method		:'post',
				postBody	:URLEncode
			}
		);
	}
}



function ajaxMasterDelete(paramDIVID,paramURL) {
	if (confirm("削除しますか？\n削除されたデータは復旧できません。")) {
		if (!!document.getElementById('form1')) {
			var URLEncode = Form.serialize("form1");
		} else {
			var URLEncode = '';
		}
		new Ajax.Updater(
			paramDIVID,
			paramURL,
			{
				method		:'post',
				postBody	:URLEncode
			}
		);
	}
}



function ajaxSendInquiry(paramDIVID,paramURL,paramFORM) {
	/* フォーム「form1」が存在すればフォームデータのシリアライズ */
	if (!!document.getElementById('form1')) {
		var URLEncode = Form.serialize("form1");
	} else {
		var URLEncode = '';
	}
	if (checkOrderForm(paramFORM)) {
		if (!!document.getElementById('dispIndicator')) {
			$('dispIndicator').innerHTML
				= '<img src="' + imgIndicator7 + '">';
		}
		new Ajax.Updater(
			paramDIVID,
			paramURL,
			{
				method		:'post',
				postBody	:URLEncode
			}
		);
	}
}



function ajaxPageMove(paramDIVID,paramURL,paramMOVE) {
	if (!!document.getElementById('form1')) {
		if (!!document.getElementById('dispIndicator')) {
			$('dispIndicator').innerHTML
				= '<img src="' + imgIndicator7 + '">';
		}
		var URLEncode = Form.serialize("form1") + '&posMove=' + paramMOVE;
	} else {
		var URLEncode = '';
	}
	new Ajax.Updater(
		paramDIVID,
		paramURL,
		{
			method		:'post',
			postBody	:URLEncode
		}
	);
}



function ajaxCreateArticleNumber(paramDIVID,paramURL) {
	if (!!document.getElementById('codeHeader1')) {
		var docCH1 = document.getElementById('codeHeader1');
		var selectCH1 = docCH1.options[docCH1.selectedIndex].value;
	}
	if (!!document.getElementById('codeHeader2')) {
		var docCH2 = document.getElementById('codeHeader2');
		var selectCH2 = docCH2.options[docCH2.selectedIndex].value;
	}
	if (selectCH1 != 0 && selectCH2 != 0) {
		if (!!document.getElementById('articleNumberArea')) {
			$('articleNumberArea').innerHTML
				= '<img src="' + imgIndicator7 + '">';
		}
		if (!!document.getElementById('form1')) {
			var URLEncode = Form.serialize("form1");
		} else {
			var URLEncode = '';
		}
		new Ajax.Updater(
			paramDIVID,
			paramURL,
			{
				method		:'post',
				postBody	:URLEncode
			}
		);
	} else {
		alert("管理区分等の選択がありません。");
	}
}



function setFieldColor(param1,param2) {
	param1.style.backgroundColor=param2;
}



function checkOrderForm(checkMode) {
	var flagCheck = true;
	var flagSub = false;
	var strCheck = '';
	var d = document;
	var dF = d.form1;

	if (!!dF) {
		switch (checkMode) {

			case 'infoArticle':
				if (!!document.getElementById('codeHeader1')) {
					var docCH1 = document.getElementById('codeHeader1');
					var selectCH1 = docCH1.options[docCH1.selectedIndex].value;
					if (selectCH1 <= 0) {
						flagCheck = false;
						strCheck += '●物件番号：項目１(管理分類)の選択がありません。' + "\n";
					}
				}
				if (!!document.getElementById('codeHeader2')) {
					var docCH2 = document.getElementById('codeHeader2');
					var selectCH2 = docCH2.options[docCH2.selectedIndex].value;
					if (selectCH2 <= 0) {
						flagCheck = false;
						strCheck += '●物件番号：項目２(管理種別)の選択がありません。' + "\n";
					}
				}
				if (d.getElementById('articleName').value.length <= 0 ) {
					flagCheck = false;
					strCheck += '●物件名称が未入力です。' + "\n";
				}
				if (d.getElementById('address1').value.length <= 0) {
					flagCheck = false;
					strCheck += '●物件住所が未入力です。' + "\n";
				}
				if (!!document.getElementById('articleType')) {
					var docAT = document.getElementById('articleType');
					var selectAT = docAT.options[docAT.selectedIndex].value;
					if (selectAT <= 0) {
						flagCheck = false;
						strCheck += '●物件種別の選択がありません。' + "\n";
					}
				}
				break;

			case 'infoCompanyStaff':
				if (d.getElementById('name').value.length <= 0 ) {
					flagCheck = false;
					strCheck += '●名前が未入力です。' + "\n";
				}
				break;

			case 'infoArticleRecommendedInsert':
				/*
				if (!!document.getElementById('articleType')) {
					var docCH1 = document.getElementById('articleType');
					var selectCH1 = docCH1.options[docCH1.selectedIndex].value;
					if (selectCH1 <= 0) {
						flagCheck = false;
						strCheck += '●物件種別の選択がありません。' + "\n";
					}
				}
				*/
				if (!!document.getElementById('idArticle')) {
					var docCH2 = document.getElementById('idArticle');
					var selectCH2 = docCH2.options[docCH2.selectedIndex].value;
					if (selectCH2 <= 0) {
						flagCheck = false;
						strCheck += '●物件の選択がありません。' + "\n";
					}
				}
				break;

			case 'inquiry':
				if (d.getElementById('inq310').value.length <= 0 ) {
					flagCheck = false;
					strCheck += '●名前が未入力です。' + "\n";
				}
				if (d.getElementById('inq410').value.length <= 0 &&
					d.getElementById('inq420').value.length <= 0 &&
					d.getElementById('inq430').value.length <= 0
				) {
					flagCheck = false;
					strCheck += '●ご連絡方法が未入力です。' + "\n";
				}
				if (d.getElementById('inq410').value.length > 0) {
					ml = /.+@.+\..+/; // チェック方式
					mf = document.form1.inq410.value;
					if(!mf.match(ml)) {
						flagCheck = false;
						strCheck += '●メールアドレスが正しくないようです。' + "\n";
					}
				}
				break;

		}
		if (!flagCheck)	alert(strCheck);
	}
	return flagCheck;
}



function ajaxMapLoad() {
	if (GBrowserIsCompatible()) {
		map = new GMap2(document.getElementById("map"));
		map.setCenter(new GLatLng(31.598924857095888,130.55925965309143), 14);
		map.addControl(new GScaleControl());
		map.addControl(new GLargeMapControl());

/*
		var icon = new GIcon();
		icon.image = "http://googlemaps.googlermania.com/img/marker_flag.png";
		icon.shadow = "http://googlemaps.googlermania.com/img/marker_shadow.png";
		icon.iconSize = new GSize(35, 35);
		icon.shadowSize = new GSize(35, 35);
		icon.iconAnchor = new GPoint(0, 35);
		icon.infoWindowAnchor = new GPoint(18, 11);
*/
	}

	if (!!document.getElementById('markNumber')) {
		var markNumber = document.getElementById('markNumber').value;
		if (markNumber <= 1) {
			i = markNumber;
			var srcLatLng = document.getElementById('markers'+i).value;
			var splitLatLng = srcLatLng.split("|");
			ajaxDrawMarker(i,splitLatLng[0],splitLatLng[1],splitLatLng[2],icon);
			map.setCenter(new GLatLng(splitLatLng[0],splitLatLng[1]),16);
			GEvent.trigger(markers[i],"click");
		} else {
		for (var i=1; i <= markNumber; i++) {
			var srcLatLng = document.getElementById('markers'+i).value;
			var splitLatLng = srcLatLng.split("|");
			if (splitLatLng[0] != 0 && splitLatLng[1] != 0) {
				ajaxDrawMarker(i,splitLatLng[0],splitLatLng[1],splitLatLng[2],icon);
				map.setCenter(new GLatLng(splitLatLng[0],splitLatLng[1]),15);
			}
		}
		}
	}
}



function ajaxDrawMarker(i,lat,lng,str,icon) {
	markers[i] = new GMarker(new GLatLng(lat,lng),icon);
	mapLats[i] = lat;
	mapLngs[i] = lng;
	GEvent.addListener(markers[i], "click", function() {
		markers[i].openInfoWindowHtml(str);
	});
	map.addOverlay(markers[i]);
}



function ajaxGmapMove(listNumber) {
	map.panTo(new GLatLng(mapLats[listNumber],mapLngs[listNumber]));
	GEvent.trigger(markers[listNumber],"click");
}



function ajaxMapWindowOpen() {
	if (!!document.getElementById('form1')) {
		if (document.getElementById('address1').value.length >= 1) {
			var address1 = document.getElementById('address1').value;
			var address2 = document.getElementById('address2').value;
			var URLEncode = Form.serialize("form1");
			var w = 600;
			var h = 630;
			var x = (screen.width - w) / 2;
			var y = (screen.height - h) / 2;
			var mapLat = document.getElementById('mapLat').value;
			var mapLng = document.getElementById('mapLng').value;

			window.open(
				"mys_map.php?address=" + '鹿児島市' + address1 + address2,
//				"mys_map.php?address=" + '鹿児島市' + address1 + address2 + "&=mapLat" + mapLat + "&mapLng=" + mapLng,
				"",
				" left=" + x +
				",top=" + y +
				",width=" + w +
				",height=" + h +
				",toolbar=no" +
				",menubar=yes" +
				",location=yes" +
				",status=yes" +
				",scrollbars=yes" +
				",resizable=no"
				);
			moveTo(x,y);
		} else {
			alert("住所の入力がありません。");
		}
	} else {
		var URLEncode = '';
	}
}



function ajaxMapGeocoding() {
	var mapname = 'map';
	// 住所をテキストフィールドから取得
	var address = document.getElementById('address').value;
	var geocoder = new GClientGeocoder();

//	var mapLat = document.getElementById('mapLat').value;
//	var mapLng = document.getElementById('mapLng').value;
//	var point = new GLatLng(mapLat, mapLng);

	geocoder.getLatLng(
		address,
		function(point) {
			if (!point) {
				alert(address + " ：　見つかりません。");
			} else {

				if (GBrowserIsCompatible()) {

					// マップ表示
					var map	 = new GMap2(document.getElementById(mapname));
					map.setCenter(point, 17);

					// ドラッグ可能なマーカー
					var marker = new GMarker(point, {draggable:true});

					// ドロップ時に緯度経度取得
					GEvent.addListener(marker,"dragend", function() {
						var p = marker.getLatLng();
						document.getElementById('_show_y').value = p.lat();
						document.getElementById('_show_x').value = p.lng();
					} );

					// マーカーをクリックされた
					GEvent.addListener(marker, "click", function() {
						var xy = marker.getPoint();
						document.getElementById("_show_y").innerHTML = xy.lng();
						document.getElementById("_show_x").innerHTML = xy.lat();
					});

					// マップにマーカーを表示＆マーカーの緯度経度を表示しておく
					map.addOverlay(marker);
					document.getElementById('_show_y').value = marker.getLatLng().lat();
					document.getElementById('_show_x').value = marker.getLatLng().lng();

					// コントロール類
					map.addControl(new GLargeMapControl());
					map.addControl(new GMapTypeControl());
					map.addControl(new GOverviewMapControl());
					map.setMapType(G_NORMAL_MAP);
				}


			}

		}
	);

}



function addressChange() {
	ajaxMapGeocoding();
}



function sendLatLng() {
	var parentMapLat = window.opener.document.getElementById('mapLat');
	var parentMapLng = window.opener.document.getElementById('mapLng');

	parentMapLat.value = document.getElementById('_show_y').value;
	parentMapLng.value = document.getElementById('_show_x').value;

	window.close();
}



/*
 *	都道府県と市町村の表示＋選択変更後のルーチン呼び出し
 */
function ajaxPrefCity(paramDIVID,paramURL) {
	if (!!document.getElementById('form1')) {
		if (!!document.getElementById('idPref')) {
			var docPref = document.getElementById('idPref');
			var selectPref = docPref.options[docPref.selectedIndex].value;
		} else {
			var selectPref = '';
		}
		if (!!document.getElementById('idCity')) {
			var docCity = document.getElementById('idCity');
			var selectCity = docCity.options[docCity.selectedIndex].value;
		} else {
			var selectCity = '';
		}
	} else {
		var selectPref = 0;
		var selectCity = 0;
	}
	new Ajax.Updater(
		paramDIVID,
		paramURL,
		{
			method		:'post',
			postBody	:$H({
							idPref	:selectPref,
							idCity	:selectCity
						}).toQueryString()
		}
	);
}



function jsUploadWithID(upload_field) {
	var re_text = /\.jpg|\.gif/i;
	var filename = upload_field.value;
	var flagRUN = true;
	var txtMsg = '';

	if (!!document.getElementById('id')) {
		if (document.getElementById('id').value.length == 0) {
			alert("物件コードが設定されていません。\n物件コードを先に設定後、画像を指定してください。");
			flagRUN = false;
		}
		if (filename.search(re_text) == -1)	{
			alert("ファイル形式が正しくありません。\n有効：jpg,gif");
			upload_field.form.reset();
			flagRUN = false;
		}
		if (flagRUN == true) {
			upload_field.form.submit();
			document.getElementById('upload_status').value = "uploading file...";
			/*
			upload_field.disabled = true;
			*/
			upload_field.readOnly = true;
		}
	} else {
		alert('登録編集フォーム画面ではありません。');
	}

	return flagRUN;
}



function jsUpload(upload_field) {
	var re_text = /\.jpg|\.gif|\.pdf/i;
	var filename = upload_field.value;
	var flagRUN = true;

	if (filename.search(re_text) == -1)	{
		alert("ファイル形式が正しくありません。\n有効：jpg,gif");
		upload_field.form.reset();
		flagRUN = false;
	}

	if (flagRUN == true) {
		upload_field.form.submit();
		document.getElementById('upload_status').value = "uploading file...";
		/*
		upload_field.disabled = true;
		*/
		upload_field.readOnly = true;
	}

	return flagRUN;
}



function uploadFileName() {
	$('dispIndicator').innerHTML = '';
	$('upload_status').innerHTML = 'UPLOAD...';
}



function areaOpenClose(searchAddMode) {
	switch (searchAddMode) {
		case 'close':
			$('areaOpenClose').innerHTML
			=	''
			+	'<a href="#">'
			+	'<img src="base/images/btn/btn_article_search_add_off.gif"'
			+	' onclick="new Effect.BlindDown(\'added\',{duration:0.2});'
			+	" areaOpenClose('open');"+'">'
			+	'</a>'
			+	'　<span style="font-size:9px;">(開閉操作は “ゆっくり” おねがいします)</span>'
			+	'';
			break;
		case 'open':
			$('areaOpenClose').innerHTML
			=	''
			+	'<a href="#">'
			+	'<img src="base/images/btn/btn_article_search_close_off.gif"'
			+	' onclick="new Effect.BlindUp(\'added\',{duration:0.2});'
			+	" areaOpenClose('close');"+'">'
			+	'</a>'
			+	'　<span style="font-size:9px;">(開閉操作は “ゆっくり” おねがいします)</span>'
			+	'';
			break;
	}
}



function getWindowHeight() {

	var wH = 0;
	var wW = 0;

	if (document.all) {
		/* IE */
		wH = document.body.clientHeight - 90;
		wW = document.body.clientWidth - 20;
		alert(
			"IE\n" +
			"H=" + wH + "\n" +
			"W=" + wW
		);
	} else {
		/* FF */
		wH = window.innerHeight - 90;
		wW = window.innerWidth - 20;
		alert(
			"FireFox\n" +
			"H=" + wH + "\n" +
			"W=" + wW
		);
	}

	$('contents_container_CC').innerHTML =
		'<div id="tableWH" style="background-color:#bbf; width:' + wW + 'px; height:' + wH + 'px;"></div>';
}



function smartRollover() {
	if(document.getElementsByTagName) {
		var images = document.getElementsByTagName("img");
		for(var i=0; i < images.length; i++) {
			if(images[i].getAttribute("src").match("_off."))
			{
				images[i].onmouseover = function() {
					this.setAttribute("src", this.getAttribute("src").replace("_off.", "_on."));
				}
				images[i].onmouseout = function() {
					this.setAttribute("src", this.getAttribute("src").replace("_on.", "_off."));
				}
			}
		}
	}
}
if(window.addEventListener) {
	window.addEventListener("load", smartRollover, false);
} else if(window.attachEvent) {
	window.attachEvent("onload", smartRollover);
}


/*
(function(onLoad) {
	try {
			window.addEventListener('load', onLoad, false);
	} catch (e) {
			window.attachEvent('onload', onLoad);
	}
})(function() {
	var tags = ["img","input"];
	for( var i=0, len=tags.length; i<len; i++ ) {
		var over = function() { this.src = this.src.replace('_out.', '_over.'); };
		var out	= function() { this.src = this.src.replace('_over.', '_out.'); };
		var el = document.getElementsByTagName(tags[i]);
		for (var j=0, len2=el.length; j<len2; j++) {
			var attr = el[j].getAttribute('src');
			if (!el[j].src.match(/_out\./)&&attr) continue;
			el[j].onmouseover = over;
			el[j].onmouseout	= out;
		}
	}
});
*/



/*
function smartRollover() {
	if(document.getElementsByTagName) {
		var tags = ["img","input"];
		var len = tags.length;
		for( var i=0; i<len; i++ ) {
			var el = document.getElementsByTagName(tags[i]);
			var len2 = el.length;
			for(var j=0; j<len2; j++) {
				var attr = el[j].getAttribute("src");
				if( attr ) {
					if(el[j].getAttribute("src").match(/_out\./))
					{
						el[j].onmouseover = function() {
							this.setAttribute("src", this.getAttribute("src").replace("_out.", "_over."));
						}
						el[j].onmouseout = function() {
							this.setAttribute("src", this.getAttribute("src").replace("_over.", "_out."));
						}
					}
				}
			}
		}
	}
}
if(window.addEventListener) {
	window.addEventListener("load", smartRollover, false);
}
else if(window.attachEvent) {
	window.attachEvent("onload", smartRollover);
}
*/



function googleMapsAPIKey() {

	var docL = document.location.href;
/*
	var data = new RegExp("webmys.com", "i");
*/
	var data = new RegExp("homelinux.com", "i");
	if (docL.search(data) == -1) {
		/* Taiyou1991 */
		var apiKey = 'ABQIAAAAhUBVOMwVGyw7EMncj_CkMhSMW-TY_Rw-P0t2ZUvf6JE8_DvqKRSOBFaJ9WaFMIYkZapaNyaeixu5Pw';
	} else {
		/* MYS */
		var apiKey = 'ABQIAAAAhUBVOMwVGyw7EMncj_CkMhSfelO11aPtynq8CCxSvtVz7PitAhRkqCHI2mcl2G1WII959WriNMxn2A';
	}

	document.write('<script');
	document.write(' src="http://maps.google.com/maps?file=api&amp;v=2.x&amp;sensor=true&amp;key=' + apiKey + '"');
	document.write(' type="text/javascript">');
	document.write('</script>');

}



function CopyText(arg){
	alert("IN");
	var obj=document.all && document.all(arg) || document.getElementById && document.getElementById(arg);
	if (obj.value) {
		var doc = document.body.createTextRange();
		doc.moveToElementText(obj);
		doc.execCommand("copy");
		alert('クリップボードにコピーしました。');
	} else {
		alert('コピーするデータがありません。');
	}
}



