﻿//////////////////////////////////////////////////////////////////////
//                                                                  //
// ユニゾン共通                                                     //
//                                                                  //
// 　　　　　　　　　　　　　　　　　株式会社ユニゾンシステムズ     //
//                                                                  //
//                                                                  //
// Copyright (C) 2007. Unixon Systems Co.,Ltd. All Rights Reserved. //
//                                                                  //
//////////////////////////////////////////////////////////////////////


  // 共通：本日を返す
  function zGetToday()
  {
	var nowDate = new Date();
	return nowDate.getFullYear() * 10000 + (nowDate.getMonth()+1) * 100 + nowDate.getDate();
  }

  // 共通：現在時刻を返す
  function zGetNowHhmm()
  {
	var nowDate = new Date();
	return nowDate.getHours() * 100 + nowDate.getMinutes();
  }

  // 共通：指定日のｎ日後を返す
  function zYmdOpe(ymd, nDir)
  {
    var dd = new Date(Math.floor(ymd/10000), Math.floor(ymd/100%100)-1, ymd%100);
	dd.setTime(dd.getTime() + (nDir)*24*3600*1000);

	return dd.getFullYear() * 10000 + (dd.getMonth()+1) * 100 + dd.getDate();
  }

  // 共通：曜日を返す 月=1...日=7
  function zGetYobi(ymd)
  {
    var dd = new Date(Math.floor(ymd/10000), Math.floor(ymd/100%100)-1, ymd%100);
	var yobi = dd.getDay();
	if (yobi == 0)
	    yobi = 7;

	return yobi;
  }

  // 共通：指定日の週の月曜日を返す
  function zGetMonday(ymd)
  {
    var yobi = zGetYobi(ymd)
	if (yobi == 1)
	     return ymd;
	else return zYmdOpe(ymd, 1 - yobi);
  }

  // 共通：日付っぽい文字列データを年月日化する
  function zConvFuzzyYmd(sYmd, nArgHintYmd)
  {
	var nHintYmd = zGetToday();
	if (nArgHintYmd && nArgHintYmd != 0)
		nHintYmd = nArgHintYmd;

	var d1 = new Array("");
	
	var idx1=0;
	d1[idx1] = "";

	for (var k=0; k < sYmd.length; k++){
		var c = sYmd.substr(k, 1);
		if (c=="0" || c=="1" || c=="2" || c=="3" || c=="4" || c=="5" || c=="6" || c=="7" || c=="8" || c=="9"){
			// 数値
			d1[idx1] += c;
		}
		else{
			if (d1[idx1].length != 0){
				idx1++;
				d1[idx1] = "";
			}
		}
	}
	var nCnt = 0;
	for (var k=0; k < d1.length; k++){
		if (d1[k].length >= 1)
			nCnt++;
	}

	var yy = 0;
	var mm = 0;
	var dd = 0;

	if (1 == nCnt){
		// 区切り文字なし年月日
		var ymd = parseInt(d1[0], 10);
		yy = Math.floor(ymd / 10000);
		mm = Math.floor(ymd / 100) % 100;
		dd = ymd % 100;
		if ( 0 <= yy && yy <= 49) yy += 2000;
		if (50 <= yy && yy <= 99) yy += 1900;
	}
	else
	if (2 == nCnt){
		// 月日
		mm = parseInt(d1[0], 10);
		dd = parseInt(d1[1], 10);
		yy = Math.floor(nHintYmd / 10000);
		if (mm >= 7 && Math.floor(nHintYmd / 100) % 100 <= 6) yy--;
		if (mm <= 6 && Math.floor(nHintYmd / 100) % 100 >= 7) yy++;
	}
	else
	if (3 <= nCnt){
		// 年月日
		yy = parseInt(d1[0], 10);
		mm = parseInt(d1[1], 10);
		dd = parseInt(d1[2], 10);
		if ( 0 <= yy && yy <= 49) yy += 2000;
		if (50 <= yy && yy <= 99) yy += 1900;
	}

	return yy * 10000 + mm * 100 + dd;	
  }

  // 日付時刻文字列からＤＡＴＥを返す
  function getDateObjByStr(ymdhms)
  {
	var check = ymdhms.match(/^\d{14}$/);
	if (!check) return null;

	return new Date(parseInt(ymdhms.substr(0,4)), parseInt(ymdhms.substr( 4,2))-1, parseInt(ymdhms.substr( 6,2)),
					parseInt(ymdhms.substr(8,2)), parseInt(ymdhms.substr(10,2)),   parseInt(ymdhms.substr(12,2)));
  }

  // 共通：要素の位置を取得し、オブジェクトとして返す
  function getElementPosition(elem) {
	var obj = new Object();
	obj.x = elem.offsetLeft;
	obj.y = elem.offsetTop;

	while(elem.offsetParent) {
		elem = elem.offsetParent;
		obj.x += elem.offsetLeft;
		obj.y += elem.offsetTop;
	}
	return obj;
  }

  var _broUxnCmn = (window.opera?4:(window.external?3:(window.controllers?1:(document.layers?2:0)))); 
  var _ie5UxnCmn = (navigator.appName.indexOf('Microsoft Internet Explorer')>=0 && document.getElementById)?1:0; 

  // 共通：要素の幅を取得
  function getElementWidth (ele){
	if (typeof(ele.offsetWidth) != "undefined" && ele.offsetWidth != 0) return ele.offsetWidth;
	if (_broUxnCmn==1||_broUxnCmn==4) return ele.offsetWidth;  
	if (_broUxnCmn==2) return ele.clip.width;
	if (_broUxnCmn==3) return _ie5UxnCmn ? ele.offsetWidth : ele.style.pixelWidth;
	return 0;
  }

  // 共通：要素の高さを取得
  function getElementHeight (ele){
	if (typeof(ele.offsetHeight) != "undefined" && ele.offsetHeight != 0) return ele.offsetHeight;
	if (_broUxnCmn==1||_broUxnCmn==4) return ele.offsetHeight;  
	if (_broUxnCmn==2) return ele.clip.height;
	if (_broUxnCmn==3) return _ie5UxnCmn ? ele.offsetHeight : ele.style.pixelHeight;
	return 0;
  }

  // 共通：引数の解析
  var ARGV = new getArguments();

  function getArguments() {
    this.parameter = document.location.search.substring(1);
    var args  = this.parameter.split("&");
    var len   = args.length;
    for (var i = 0; i < len; i++) {
      var arr = args[i].split("=", 2);
      this[unescape(arr[0])] = arr[1];
    }
  }

  // 共通：ＸＭＬノード属性の取得
  function getXmlAttribute(XMLdata, attName)
  {
    if (XMLdata.attributes && XMLdata.attributes.length){
		for (var i=0; i < XMLdata.attributes.length; i++){
			if (XMLdata.attributes[i].name  == attName){
				return XMLdata.attributes[i].value;
			}
		}
	}
	return null;
  }

  // 共通：ＸＭＬエレメントの検索
  function findXmlFirstElement(XMLdata, nodeName, attName, attValue)
  {
	for (var i=0; i < XMLdata.childNodes.length; i++){
		if (XMLdata.childNodes[i].nodeName == nodeName){
			if (attName && attValue){
				var val = getXmlAttribute(XMLdata.childNodes[i], attName);
				if (val != null && val == attValue){
					return XMLdata.childNodes[i];
				}
			}
			else{
				return XMLdata.childNodes[i];
			}
		}
		if (XMLdata.childNodes[i].childNodes && XMLdata.childNodes[i].childNodes.length > 0){
			// 再帰呼出
			var res = findXmlFirstElement(XMLdata.childNodes[i], nodeName, attName, attValue);
			if (res)
				return res;
		}
	}
	return null;
  }

  // 共通：ＸＭＬエレメントの検索（配列版）
  function findXmlElement(XMLdata, nodeName, attName, attValue)
  {
	var arrData = new Array();

	for (var i=0; i < XMLdata.childNodes.length; i++){
		if (XMLdata.childNodes[i].nodeName == nodeName){
			if (attName && attValue){
				var val = getXmlAttribute(XMLdata.childNodes[i], attName);
				if (val != null && val == attValue){
					arrData.push(XMLdata.childNodes[i]);
				}
			}
			else{
				arrData.push(XMLdata.childNodes[i]);
			}
		}
		if (XMLdata.childNodes[i].childNodes && XMLdata.childNodes[i].childNodes.length > 0){
			// 再帰呼出
			var ans = findXmlElement(XMLdata.childNodes[i], nodeName, attName, attValue);
			if (ans != null)
				arrData = arrData.concat(ans);
		}
	}
	if (arrData.length > 0)
		   return arrData;
	else return null;
  }
  
  // 共通：ＸＭＬエレメントの検索（配列版）
  function findXmlElement2(XMLdata, nodeName, attName, attValue, attValue2)
  {
	var arrData = new Array();

	for (var i=0; i < XMLdata.childNodes.length; i++){
		if (XMLdata.childNodes[i].nodeName == nodeName){
			if (attName && attValue && attValue2){
				var val = getXmlAttribute(XMLdata.childNodes[i], attName);
				if (val != null && (val == attValue || val == attValue2)){
					arrData.push(XMLdata.childNodes[i]);
				}
			}
			else{
				arrData.push(XMLdata.childNodes[i]);
			}
		}
		if (XMLdata.childNodes[i].childNodes && XMLdata.childNodes[i].childNodes.length > 0){
			// 再帰呼出
			var ans = findXmlElement2(XMLdata.childNodes[i], nodeName, attName, attValue, attValue2);
			if (ans != null)
				arrData = arrData.concat(ans);
		}
	}
	if (arrData.length > 0)
		   return arrData;
	else return null;
  }

  // 共通：フラッシュプレイヤー	ＨＴＭＬ
  function createFlashHtml(width, height, movie, quality)
  {
	var html = 
			"<object classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0' width='" + width + "' height='" + height + "'>" +
			"<param name='movie' value='" + movie + "'>" +
			"<param name='quality' value='" + quality + "'>" +
			"<embed src='" + movie + "' quality='" + quality + "' pluginspage='http://www.macromedia.com/go/getflashplayer' type='application/x-shockwave-flash' width='" + width + "' height='" + height + "'></embed>" +
			"</object>";
	return html;
  }

  // 共通：フラッシュプレイヤーの埋め込み
  function writeFlash(width, height, movie, quality)
  {
	document.write(createFlashHtml(width, height, movie, quality));
  }