// ================================================================
// title : pi common javascript library 
// author : shige tanaka @ pi
// lastUpdate : 2006/06/01
// ================================================================


function $(){var elements=new Array();for(var i=0;i<arguments.length;i++){var element=arguments[i];if(typeof element=='string')element=document.getElementById(element);if(arguments.length==1)return element;elements.push(element);}return elements;};
function $id(_id){return document.getElementById(_id);};
function $class(_class,_ele){var elements=new Array();var regObj=new RegExp('(^| )'+_class+'( |$)');var parentElement=_ele;var allElements=(parentElement||document).getElementsByTagName('*');for(i=0;i<allElements.length;i++){if(regObj.test(allElements[i].className)){elements[elements.length]=allElements[i];}}return elements;};
function $tag(_tag,_ele){var elements=new Array();var parentElement=_ele;var elements=(parentElement||document).getElementsByTagName(_tag);return elements;};
function $tagWithClass(_tag,_class,_ele){var elements=new Array();var parentElement=_ele;var allElements=(parentElement||document).getElementsByTagName(_tag);var elements;for(i=0;i<allElements.length;i++){if(allElements[i].className==_class){elements[elements.length]=allElements[i]}}return elements;};


function MM_preloadImages()	{var d=document;if(d.images){if(!d.MM_p){d.MM_p=new Array();}var i,j=d.MM_p.length,a=MM_preloadImages.arguments;for(i=0;i<a.length;i++){if(a[i].indexOf("#")!=0){d.MM_p[j]=new Image();d.MM_p[j++].src=a[i];}}}}
function MM_swapImage()			{var i,j=0,x,a=MM_swapImage.arguments;document.MM_sr=new Array();for(i=0;i<(a.length-2);i+=3){if((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x;if(!x.oSrc){x.oSrc=x.src;}x.src=a[i+2];}}}
function MM_swapImgRestore()	{var i,x,a=document.MM_sr;for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++){x.src=x.oSrc;}}
function MM_findObj(n,d)		{var p,i,x;if(!d){d=document;}if((p=n.indexOf("?"))>0&&parent.frames.length){d=parent.frames[n.substring(p+1)].document;n=n.substring(0,p);}if(!(x=d[n])&&d.all){x=d.all[n];}for(i=0;!x&&i<d.forms.length;i++){x=d.forms[i][n];}for(i=0;!x&&d.layers&&i<d.layers.length;i++){x=MM_findObj(n,d.layers[i].document);}if(!x&&d.getElementById){x=d.getElementById(n);}return x;}


var Environment = {
	Os :{
		isWin					:navigator.userAgent.indexOf("Win") != -1 ? true : false,
		isMac					:navigator.userAgent.indexOf("Mac") != -1 ? true  : false
	},
	Blowser :{
		isNs					:navigator.appName.indexOf("Netscape") !=  -1 ? true  : false,
		isNs4					:(document.layers) ? true  : false,
		isNs4_7				:navigator.userAgent.indexOf("4.7") !=   -1 ? true  : false,
		isNs6					:navigator.userAgent.indexOf("Netscape6") != -1 ? true  : false,
		isNs7					:navigator.userAgent.indexOf("Netscape/7") != -1 ? true  : false,
		isMoz					:navigator.userAgent.indexOf("Gecko") != -1 ? true  : false,
		isIe					:navigator.userAgent.indexOf("MSIE") != -1 ? true  : false,
		isIe4					:navigator.userAgent.indexOf("MSIE 4") !=  -1 ? true  : false,
		isIe5					:navigator.userAgent.indexOf("MSIE 5") !=  -1 ? true  : false,
		isIe6					:navigator.userAgent.indexOf("MSIE 6") != -1 ? true  : false,
		isIe7					:navigator.userAgent.indexOf("MSIE 7") != -1 ? true  : false,
		isOp					:navigator.userAgent.indexOf("Opera") !=  -1 ? true  : false,
		isSf					:navigator.userAgent.indexOf("Safari") !=  -1 ? true  : false
	},
	Dom : {
		isW3CDom				:(document.getElementById) ? true  : false,
		isMsDom				:(document.all) ? true  : false,
		isNsDom				:(document.layers) ? true  : false
	},
	Display : {
		width					:(screen.width),
		height				:(screen.height)
	},
	Location : {
		getQuery				:function (){if(location.href.split('?')[1]==null)return;var queryArray=location.href.split('?')[1].split('&');var queryObj=new Object();for(i=0;i<queryArray.length;i++){n=queryArray[i].split('=');queryObj[n[0]]=n[1];}return queryObj;},    
		isOnline				:(location.protocol=='http:'),
		isRefer				:(document.referrer) ? document.referrer :''
	},
	checkBlowser			:function () {return (this.isW3CDom)? true : false }
}


var Event = {
	getMousePosY			:function (e) 						{if(document.all){return event.clientY+document.documentElement.scrollTop;}else{return e.pageY;}},
	getMousePosX			:function (e) 						{if(document.all){return event.clientX+document.documentElement.scrollLeft;}else{return e.pageX;}},
	addEvent					:function (obj,type,listener)	{if(obj.addEventListener){obj.addEventListener(type,listener,false);return true;}else if(obj.attachEvent){return obj.attachEvent("on"+type,listener);}else{if(Environment.Os.isMac&&Environment.Blowser.isIe){obj['on'+type]=function(){listener()};}return false;}}
}


var Element = {
	getTagDefaultDisplay	:function (_tag)								{return (_tag == 'SPAN' || _tag == 'STRONG' || _tag == 'A');},
	getPosX					:function (_ele)								{return _ele.offsetLeft;},
	getPosY					:function (_ele)								{return _ele.offsetTop;},
	getWidth					:function (_ele)								{return _ele.style.width.replace(/px/i,"");},
	getHeight				:function (_ele)								{return _ele.style.height.replace(/px/i,"");},
	show						:function (_ele,_class)						{if(_class!=null){var c=_ele.getElementsByTagName('*');for(i=0;i<c.length;i++){if(c[i].className==_class){c[i].style.display=(this.getTagDefaultDisplay(c[i].tagName))?'inline':'block';}}}else{_ele.style.display=(this.getTagDefaultDisplay(_ele.tagName))?'inline':'block';}},
	hide						:function (_ele,_class)						{var targetElement=_ele;if(_class!=null){var c=_ele.getElementsByTagName('*');for(i=0;i<c.length;i++){if(c[i].className==_class)c[i].style.display='none';}}else{targetElement.style.display='none';}},
	switchVisible			:function (_ele,_class)						{if(_class!=null){var c=_ele.getElementsByTagName('*');for(i=0;i<c.length;i++){if(c[i].className==_class){c[i].style.display=(c[i].style.display=='none')?((this.getTagDefaultDisplay(c[i].tagName))?'inline':'block'):'none';}}}else{_ele.style.display=(_ele.style.display=='none')?((this.getTagDefaultDisplay(_ele.tagName))?'inline':'block'):'none';}},
	changeStyle				:function (_ele,_class,_style,_value)	{if(_class!=null){var c=_ele.getElementsByTagName('*');for(i=0;i<c.length;i++){if(c[i].className==_class){c[i].style[_style]=_value;}}}else{_ele.style[_style]=_value;}},
	changeClass				:function (_ele,_class,_changeClass)	{if(_class!=null){var c=_ele.getElementsByTagName('*');for(i=0;i<c.length;i++){if(c[i].className==_class){c[i].className=_changeClass}}}else{_ele.className=_changeClass}},
	switchClass				:function (_ele,_class,_replaceClass)	{_ele.className=(_ele.className==_class)?_replaceClass:_class;},

switchElement			:function (_eleA,_eleB)						{
	targetElementTempA = _eleA.cloneNode(true);
	targetElementTempB = _eleB.cloneNode(true);
  _eleB.parentNode.replaceChild(targetElementTempA,_eleB);
  _eleA.parentNode.replaceChild(targetElementTempB,_eleA);
}/*not work safali*/
/*
attachElement()
removeElement
*/

 /**/
}


var Window = {
	open						:function	(url,name,width,height,misc,centering)	{var details;details="width="+width+",height="+height+",";details+="toolbar="+misc.charAt(0)+",location="+misc.charAt(1)+",status="+misc.charAt(2);details+=",menubar="+misc.charAt(4)+",scrollbars="+misc.charAt(5)+",resizable="+misc.charAt(6)+"";if(centering=="center"){var posX=(screen.width/2)-(width/2);var posY=(screen.height/2)-(height/2);details+=",left="+posX+",top="+posY+",screenX="+posX+",screenY="+posY;}window.open(url,name,details);},
	opener					:function	(url)												{if(!window.opener||window.opener.closed){window.open(url);}else{window.opener.location.href=url;}}
}


var Img = {
	swapImageClassName	:'',
	swapImageOnName		:'',	
	preLoadArray			:new Array(),
	extensionArray			:['gif','jpg','png'],
	preloadImage			:function (_src)						{(new Image()).src=_src;},
	preloadImages			:function ()							{for(i=0;i<Img.preLoadArray.length;i++){Img.preloadImage(Img.preLoadArray[i])}},
	swapImage				:function (_name,_replaceImgSrc)	{document.getElementsByName(_name)[0].src = _replaceImgSrc;},
	setSwapImage			:function (_classname,_onName)	{Img.swapImageClassName=_classname;Img.swapImageOnName=_onName;var tags=$tag('img');for(i=0;i<tags.length;i++){if(tags[i].className==Img.swapImageClassName){for(n=0;n<Img.extensionArray.length;n++){var regObj=new RegExp('.'+Img.extensionArray[n]);if(tags[i].src.indexOf(Img.extensionArray[n])!=-1){Img.preLoadArray[Img.preLoadArray.length]=overImgSrc=(tags[i].src.replace(regObj,Img.swapImageOnName+'.'+Img.extensionArray[n]));Img.setSwapEvent(tags[i],tags[i].src,overImgSrc);}}}}Img.preloadImages();},
	setSwapEvent			:function (obj,img,overImg)		{if(!obj.onmouseover){obj.onmouseover=function (){obj.src=overImg;}}if(!obj.onmouseout){obj.onmouseout=function (){obj.src=img;}}}
}


var Cookie = {
	checkEnabled			:function ()						{return (document.cookie)?1:0;},
	readCookie				:function (name)					{var cookieValue="";var search=name+"=";if(document.cookie.length>0){offset=document.cookie.indexOf(search);if(offset!=-1){offset+=search.length;end=document.cookie.indexOf(";",offset);if(end==-1)end=document.cookie.length;cookieValue=unescape(document.cookie.substring(offset,end))}}return cookieValue;},
	writeCookie				:function (name,value,hours)	{var expire="";if(hours!=null){expire=new Date((new Date()).getTime()+hours*3600000);expire="; expires="+expire.toGMTString();}document.cookie=name+"="+escape(value)+expire;}
}


var DateObj = {
	getNowDateJa			:function()		{day=new Array("日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日");var date=new Date();y=date.getFullYear();m=date.getMonth()+1;d=date.getDate();w=date.getDay();h=date.getHours();mi=date.getMinutes();s=date.getSeconds();return y+"年"+m+"月"+d+"日"+"("+day[w]+") "+h+"時"+mi+"分"+s+"秒";}
}


var Base = {
	importJs:function (){if(!arguments[0])return;for(i=0;i<arguments[0].length;i++){document.write('<script type="text/javascript" src="'+arguments[0][i]+'"></script>');}}
}


var Media = {
	Swf : {
		getVersion			:function (){var flashVersion=0;if(Environment.Blowser.isIe&&Environment.Os.isWin){eval('try{ flashVersion=new ActiveXObject("ShockwaveFlash.ShockwaveFlash").FlashVersion();  }  catch(e){ flashVersion=0}');flashVersion=Math.floor(flashVersion/0x10000);}else{if(this.isNs&&!navigator.plugins){flashVersion=0;}else{var s="application/x-shockwave-flash";if(navigator.mimeTypes&&navigator.mimeTypes[s]&&navigator.mimeTypes[s].enabledPlugin){flashVersion=navigator.plugins["Shockwave Flash"].description.match(/\d+/);}else{flashVersion=0;}}}return flashVersion;},
		printHtml			:function ()	{}
	}
}

var Table = {
	createByCSV:function (_OutEle,_csv,_className){
		if(_csv==null) return;
		html = ''
		html += '<table class="'+_className+'">'
		for(i = 0;i<_csv.length;i++){
			html +='<tr>'
			for(n = 0;n<_csv[i].length;n++){
			html += (i == 0)? '<th>' + _csv[i][n]+'</th>':'<td>' + _csv[i][n]+'</td>';
			}
			html +='</tr>'
		} 
		html += '</table>'
		$id(_OutEle).innerHTML = html;
	}
}


var Debug = {
	html:new String(),
	createTableByArray		:function (_OutEle,_arg)			{this.html='';this.html=this.createTableTagHeader(this.html);this.html+='<table><tr>';for(i=0;i<_arg.length;i++){this.html+='<th>'+i+'</th>';}this.html+='</tr></tr>';for(i=0;i<_arg.length;i++){this.html+='<td>'+_arg[i]+'</td>';}this.html+='</tr></table>';this.html=this.createTableTagFooter(_OutEle,this.html)},
	createTableByObject		:function (_OutEle,_arg,_argB)	{
  this.path=_argB;
  this.html='';
  this.html+=this.createTableTagHeader(this.html);
  this.html+=' <strong> '+_argB+' </strong> ';
  this.html+=' : '+_arg;
  this.html+='<table class=tableDebug>';
  for(i in _arg){
	try{
    if(typeof(_arg[i])=="function"){
      this.html+='<tr><th class=function>'+i+'</td><td>';
    }
    else{
      this.html+='<tr><th>'+i+'</td><td>';
    }
    eval("try { this.html+=_arg[i]}catch(e){}");
    if(typeof(_arg[i])=="object"){
      _argSub=i;
      this.html+='<a href=javascript:void(0); onclick=Debug.createSubTable(this.parentNode,'+this.path+Debug.ps(_argSub)+',\''+this.path+Debug.ps(_argSub)+'\')>▼</a>';
    }
    this.html+='</td></tr>';
	}catch(e){}
  }
  this.html=this.html.replace(/true/g,"<span class=true>true</span>");
  this.html=this.html.replace(/false/g,"<span class=false>false</span>");
  this.html=this.html.replace(/null/g,"<span class=null>null</span>");
  this.html=this.html.replace(/td>function/g,"td class=function>function");
  this.html+='</table>';
  this.html=this.createTableTagFooter(_OutEle,this.html)
}
,
	createTableTagHeader  	:function (_html)						{;_html+='<div class="debugArea">';return _html;},
	createTableTagFooter		:function (_OutEle,_html)			{_html+='</div>'; $id(_OutEle).innerHTML +=_html;},
	createSubTable				:function (_ele,_arg,_argB)		{if($class('tableDebugSub',_ele)[0]){Element.switchVisible($class('tableDebugSub',_ele)[0])}else{this.html='';this.html+=' <table class="tableDebugSub">';for(i in _arg){this.html+='<tr><th>'+i+'</td><td>';if(typeof(_arg[i])=="object"){this.html+='<a href="javascript:void(0);" onclick="Debug.createSubTable(this.parentNode,'+_argB+Debug.ps(i)+',\''+_argB+Debug.ps(i)+'\')">▼</a>';}else{this.html+=_arg[i]}this.html+='</td></tr>';}this.html+='</table>';_ele.innerHTML+=this.html;}},ps:function (_arg){if(_arg.match(/[0-9]/)!=null){return ('['+_arg+']');}else{return ('.'+_arg);}}
}


// init

var IMPORT_JS_ARRAY 			= new Array('common/js/__example_01.js','common/js/__example_02.js');
var SWAP_IMAGE_CLASS_NAME 	= 'swapImage';
var SWAP_IMAGE_EXTENSION 	= '_on';
Base.importJs(IMPORT_JS_ARRAY);

function loaded (){
	Img.setSwapImage( SWAP_IMAGE_CLASS_NAME , SWAP_IMAGE_EXTENSION );
}
Event.addEvent(window,'load',loaded);