/**@file 
 * Javascript Basic Library
 *
 * Copyright (C)2004-2010 ISHIKAWA Takahiro <ishikawa@searrs.net>
 */

var IE,IE_VER;

function checkbrowser() {
	var i = navigator.userAgent.indexOf("MSIE");
	if (i != -1) IE = 1;
	if (IE) IE_VER = navigator.userAgent.substr(i+5,1);
}
function getobj(obj_id) {
	if (obj_id != null && typeof(obj_id) == 'string' || obj_id instanceof String)
		obj_id = document.getElementById(obj_id);
	return obj_id;
}
function getobjlist(obj_id, tag, clsname) {
	var obj,elm; var ls = new Array();
	if (obj_id) obj = getobj(obj_id); else obj = document.body;
	if (obj && (elm = obj.getElementsByTagName(tag))) {
		for (var i=0; i<elm.length; i++) {
			if (!hasclass(elm[i],clsname)) continue; else ls.push(elm[i]);
		}
	}
	return ls;
}
function hasclass(obj, clsname) {
	return (inarray(clsname, obj.className.split(' ')) ? true : false);
}
function inarray(v, a) {
	for (var i=0; i<a.length; i++) { if (a[i] == v) return true; } return false;
}

function hide(obj_id) {
	if ((obj = getobj(obj_id))) obj.style.display = 'none';
}
function show(obj_id, disp) {
	if (disp == null) disp='block';
	if ((obj = getobj(obj_id))) obj.style.display = disp;
}
function setopacity(obj_id, v) { 
	if (obj = getobj(obj_id)) {
		if (IE) obj.style.filter = "alpha(opacity="+(v * 100)+")"; else obj.style.opacity = v;
	}
}


var FADEIN = new Array();

function fadein(obj_id, wait, rate, callback) {
	if (FADEIN[obj_id] == null) FADEIN[obj_id] = 0;
	FADEIN[obj_id] += rate; if (isNaN(FADEIN[obj_id]) || FADEIN[obj_id] > 1.0) FADEIN[obj_id] = 1.0;
	setopacity(obj_id, FADEIN[obj_id]);
	if (FADEIN[obj_id] == 1.0) { if (callback) setTimeout(callback, 0); } 
	else { setTimeout('fadein("'+obj_id+'",'+wait+','+rate+',"'+(callback ? callback : '')+'")', (FADEIN[obj_id] ? wait : 0)); }
}
function fadeout(obj_id, wait, rate, callback) {
	if (FADEIN[obj_id] == null) FADEIN[obj_id] = 1.0;
	FADEIN[obj_id] -= rate; if (isNaN(FADEIN[obj_id]) || FADEIN[obj_id] < 0.0) FADEIN[obj_id] = 0;
	setopacity(obj_id, FADEIN[obj_id]);
	if (FADEIN[obj_id] == 0) { if (callback) setTimeout(callback, 0); } 
	else { setTimeout('fadeout("'+obj_id+'",'+wait+','+rate+',"'+(callback ? callback : '')+'")', (FADEIN[obj_id] ? wait : 0)); }
}
var MOVEPOS = new Array();

function vslide(obj_id, wait, rate, mv, callback) {
	if (MOVEPOS[obj_id] == null) MOVEPOS[obj_id] = 0;
	MOVEPOS[obj_id] += rate;
	if ((rate>0 && MOVEPOS[obj_id]>mv) || (rate<0 && MOVEPOS[obj_id]<mv)) MOVEPOS[obj_id] = mv;
	getobj(obj_id).style.marginTop = (MOVEPOS[obj_id]) + 'px';
	if (MOVEPOS[obj_id] == mv) { if (callback) setTimeout(callback, 0); }
	else { setTimeout('vslide("'+obj_id+'",'+wait+','+rate+','+mv+(callback ? ',"'+callback+'"' : '')+')', wait); }
}


function setimgrollover(obj_id, preload) {
	var elm, img; var ls = getobjlist(obj_id, 'img', 'rollover'); if (!ls) return false;
	if (preload) { elm = document.createElement("div"); elm.id = "preloader_"+obj_id; elm.style.width="0px"; elm.style.height="0px"; elm.style.overflow="hidden"; document.getElementsByTagName("body").item(0).appendChild(elm); }
	for (var i=0; i<ls.length; i++) {
		if (preload) { img=document.createElement("img"); img.src=ls[i].src; img.width="1"; img.height="1"; elm.appendChild(img) }
		ls[i].onmouseover = function (e) { var ep=false; var s=this.src; if ((ep=s.lastIndexOf(".")) >=0 && s.lastIndexOf("_on.")!=ep-3) { this.src=s.substring(0,ep)+"_on"+s.substring(ep); }};
		ls[i].onmouseout = function (e) { var ep=false; var s=this.src; if ((ep=s.lastIndexOf("_on.")) >= 0 && !hasclass(this,'selected')) { this.src = s.substring(0,ep)+"."+s.substring(ep+4); }};
	}
}
function setimghighlight(obj_id) {
	var ls = getobjlist(obj_id, 'img', 'selected');
	if (ls) 
		for (var i=0; i<ls.length; i++) {
			var s = ls[i].src; var ep = false; 
			if ((ep=s.lastIndexOf(".")) >= 0 && s.lastIndexOf("_on.")!=(ep-4)) { ls[i].src = s.substring(0,ep)+"_on"+s.substring(ep); };
		}
}

function onclicksubmenu(selected, obj_id, tag, cls, noautoclose) {
	var ls = getobjlist(obj_id, tag, cls);
	if (ls) for (var i=0; i<ls.length; i++) {
				if (i == selected) ls[i].style.display = 'block'; else if (!noautoclose) ls[i].style.display = 'none';
			}
}
function onchangefontsize(fontsize) {
	if (document.styleSheets)
 		for (var j in document.styleSheets) { 
 			var rules = (IE ? document.styleSheets[j].rules : document.styleSheets[j].cssRules);
 			for (var i in rules) { var rule = rules[i]; if (rule.selectorText && rule.style.fontSize) { var m=rule.style.fontSize.match(/^(.*)(px|pt|em|%)/i); rule.style.fontSize = ((parseInt(m[1])+fontsize)+m[2]); } }
		}
}

function viewimage(fn, w, h, parent, ofs) {
	var r,r1,r2,elm,elm2; var viewimg = 'viewimageframe';
	if (w > document.documentElement.clientWidth-80)  r1 = ((document.documentElement.clientWidth-80) / w); 
	if (h > document.documentElement.clientHeight-80) r2 = ((document.documentElement.clientHeight-80) / h);
	if (r1 < r2) r = r1; else r = r2; if (r && r < 1.0) { w *= r; h *= r; }
	if (w == '') w = ''; if (h == '') h = '';
	elm = getobj(viewimg); 
	if (!elm) {
		elm = document.createElement("div"); elm.id = viewimg; elm.onclick = function() { fadeout(viewimg, 30, 0.25, "hide('"+viewimg+"')"); }; 
		elm.style.position="absolute"; elm.style.width="auto"; elm.style.height="auto"; //elm.style.display="none";
		elm.style.padding="8px"; elm.style.background="#ffffff"; elm.style.border="1px solid #a0a0a0"; elm.style.fontSize="85%";
		document.body.appendChild(elm);
	}
	elm.innerHTML = '<img id="'+viewimg+'_image" src="'+fn+'"'+(w ? ' width="'+w+'"' : '')+(h ? ' height="'+h+'"' : '')+'title="'+fn+'"><br>'
				  + '<div style="text-align:right;font-size:12px;cursor:pointer">[x Close]</div>'
				  ;
	setopacity(viewimg, 0); show(viewimg, "block");
	elm.style.top = ((document.body.scrollTop || document.documentElement.scrollTop) -20 + Math.ceil((document.documentElement.clientHeight - h) / 2))+'px';
	elm.style.left = ((document.body.scrollLeft || document.documentElement.scrollLeft) + ofs + Math.ceil((document.documentElement.clientWidth - w) / 2))+'px';
	fadein(viewimg, 50, 0.25);
	return obj;
}


//
// Google Map:
//
function google_map_view(id, lat, lng, zoom, name, addr) {
	var pos = new google.maps.LatLng(lat,lng);
	var opt = { zoom:zoom, center:pos, mapTypeId:google.maps.MapTypeId.ROADMAP };
	var map = new google.maps.Map(document.getElementById(id), opt);
	var infow = new google.maps.InfoWindow({content:name+'\n\n'+addr})
	var marker = new google.maps.Marker({ position:pos, map:map, title:name });   
	google.maps.event.addListener(marker, 'click', function() {
	  infow.open(map,marker);
	});
}
function google_map_address_view(id, addr, name, zoom) {
	var geo	= new google.maps.Geocoder();
	if (geo) {
		geo.geocode({'address':addr},function(rs, st) {
			if (st == google.maps.GeocoderStatus.OK)
				google_map_view(id, rs[0].geometry.location.lat(),rs[0].geometry.location.lng(), zoom, name, addr);
		});
	}
}

/*
 * Javascript 共通処理(アプリ依存)
 *
 * Copyright (C)2010 ISHIKAWA Takahiro <ishikawa@searrs.net>
 */

/// 自動実行(ページ読み込み時).
function initPage() {
	var obj;
	setimgrollover('body', 1);
}
/// 自動実行(スクリプトファイル読み込み時).
function autorun() {
	checkbrowser();
//	if (document.styleSheets) {
// 		for (var j in document.styleSheets) { 
//		}
//	}
}

autorun();

