/****************************************************/
/*           OpenPath PageBuilder                   */
/*       WRITTEN BY Chih-Shyang Chang               */
/*           2000/12/13                             */
/*      本程式受著作權法保護，侵權必究              */
/****************************************************/
// Purpose: Implement common utility
if (eval('mAssistingFrameWidth') == null)
  var mAssistingFrameWidth = 114;

if (eval('mAssistingButtonHeight') == null)
  var mAssistingButtonHeight = 21;

if (eval('mMessageDivHeight') == null)
  var mMessageDivHeight = 24;

if (eval('mMenuItemHeight') == null)
  var mMenuItemHeight = 23;

if (eval('mMenuItemWidth') == null)
  var mMenuItemWidth = 82;

if (eval('mMenuItemSetNumber') == null)
  var mMenuItemSetNumber = 8;


var __gAryFrameset = null;
var __gAryFramesetSetting = null;
var __gAssistingFrameIndex = 0;


function fnResetWindowSize(offsetW, offsetH)
{
  if (mContainer == null) return;
  if (offsetW == null) offsetW = 0;
  if (offsetH == null) offsetH = 0;
  try {
    var ww;
    var myH=0, myW=0;

    if (window.parent == null)
      ww = window;
    else
      ww = window.parent;
  	if (mContainer.className.indexOf("WithMenu") >=0 ) {
      myH = 25+70;
      myW = 6;
  	} else {
      myH = 25;
      myW = 6;
  	}
    ww.dialogHeight = "" + (mContainer.style.pixelHeight + myH + offsetH) + "px";
    ww.dialogWidth  = "" + (mContainer.style.pixelWidth  + myW + offsetW) + "px";
  }
  catch (e)
  {
    // do nothing
  }
}

function fnSetCursorStyle(stle)
{
  // set the capature to a dummy control to igonre mouse event
  // for other controls while the mouse pointer is in wiating status;
  // otherwiaw, if the mouse pointer is set to the normal status (default status)
  // , it must be to release the capture

  /*
  if (stle.toLowerCase() == "wait")
      mDummyDiv.setCapture();
  else
      document.releaseCapture();
  */
  for (var i=0; i<document.all.length; i++)
    //if (document.all[i].style != null)
    document.all[i].style.cursor = stle;
}


/*
  align: 'left', 'center', 'right', or 'justify'
 */
function fnDisplayMessage(type, msg, align, color)
{
  if (mMessageDiv == null) return;

  switch (type.toUpperCase()) {
    case "T":
      if (color == null)
        mMessageDiv.style.color = "black";
      else
        mMessageDiv.style.color = color;
      break;
    case "W":
      if (color == null)
        mMessageDiv.style.color = "yellow";
      else
        mMessageDiv.style.color = color;
      break;
    case "E":
      if (color == null)
        mMessageDiv.style.color = "red";
      else
        mMessageDiv.style.color = color;
      break;
    case "I":
      if (color == null)
        mMessageDiv.style.color = "blue";
      else
        mMessageDiv.style.color = color;
      break;
    default:
  }
  if (align != null)
    mMessageDiv.style.textAlign = align;
  mMessageDiv.innerHTML = msg;
}

function fnHideTopArea(hideMenuArea, hideGlobalArea, hideMsgArea)
{
  var ll = 0;
  if (hideMenuArea == null || hideMenuArea == true) {
    if (document.all("mTopMenu") != null) document.all("mTopMenu").style.display = "none";
    if (document.all("mMenus") != null) document.all("mMenus").style.display = "none";
    ll = 23;
  }

  if (hideGlobalArea == null || hideGlobalArea == true) {
    if (document.all("mGMenu") != null) document.all("mGMenu").style.display = "none";
    ll = ll + 21;
  }

  if (hideMsgArea == null || hideMsgArea == true) {
    if (document.all("mMessageDiv") != null) document.all("mMessageDiv").style.display = "none";
    ll = ll + 26;
  }

  if (document.all("mContainer") != null)
  {
    var con = document.all("mContainer");
    fnResetWindowSize(null, -1 * ll);
    switch (con.className)
    {
      case 'cSYS_ContainerWithMenu':
        con.className = 'cSYS_ContainerNoMenu';
        break;
      case 'cSYS_ContainerTransparencyWithMenu':
        con.className = 'cSYS_ContainerTransparencyNoMenu';
        break;
      default:
        break;
    }
  }
}

function fnFrameExists(name)
{
  if (! window.parent.document.body["cols"]) return false;

  for (var i=0; i < window.parent.frames.length; i++) {
    if (name == window.parent.frames(i).name) return true;
  }

  return false;
}

function fnLoadUrlToFrame(url, frameName)
{
  if (! window.parent.document.body["cols"]) return;

  if (fnFrameExists(frameName)) {
    window.parent.frames(frameName).src = url;
  }
}

function fnGetFramesetSetting(targetFrame)
{
  __getSetting();
  var targetFrameIdx = -1;
  var str = '';
  for (var i = 0; i < __gAryFrameset.length; i++) {
    if (__gAryFrameset[i] == targetFrame) {
        targetFrameIdx = i;
        break;
    }
  }

  if (targetFrameIdx < __gAryFrameset.length && targetFrameIdx >= 0) {
    for (var j=0; j < __gAryFramesetSetting.length; j++)
      if (__gAryFramesetSetting[j] == "*") __gAryFramesetSetting[j] = "0";

    __gAryFramesetSetting[targetFrameIdx] = "*";
  }

  for (var i=0; i < __gAryFramesetSetting.length; i++) {
    if (i == 0) str = "" + __gAryFramesetSetting[i];
    else str += "," + __gAryFramesetSetting[i];
  }

  return str;
}

function toggleAssistingFrame()
{
  if (! window.parent.document.body["cols"]) return;

  __getSetting();
  var assistFrameIdx = -1;

  var str = '';
  for (var i = 0; i < __gAryFrameset.length; i++) {
    if (__gAryFrameset[i] == "AssistingFrame") {
      __gAssistingFrameIndex = i;
      assistFrameIdx = i;
    }
  }

  if (assistFrameIdx < __gAryFrameset.length && assistFrameIdx >= 0) {
    if (__gAryFramesetSetting[assistFrameIdx] == "0")
      __gAryFramesetSetting[assistFrameIdx] = new String(mAssistingFrameWidth);
    else
      __gAryFramesetSetting[assistFrameIdx] = "0";
  }

  for (var i=0; i < __gAryFramesetSetting.length; i++) {
    if (i == 0) str = "" + __gAryFramesetSetting[i];
    else str += "," + __gAryFramesetSetting[i];
  }

  parent.document.body["cols"] = str;
}

function __getSetting()
{
  // no parent window
  if (! window.parent.document.body["cols"]) return;

  if (__gAryFrameset == null || __gAryFramesetSetting == null) {
    __gAryFrameset = new Array(window.parent.frames.length);
    __gAryFramesetSetting = new Array(__gAryFrameset.length);

    var ss = parent.document.body["cols"].split(",");
    for (var i=0; i < __gAryFrameset.length; i++) {
      __gAryFrameset[i] = window.parent.frames(i).name;
      if (i < ss.length)
        __gAryFramesetSetting[i] = ss[i];
      else
        __gAryFramesetSetting[i] = "0";
    }
  }
}

//2007-03-15 修正:新增對 E-Mail 格式的驗證
function fnCheckEmailFormat(CCEmail){
	var chkflag = true;
	var pattern = /^[A-Za-z0-9_\-\.]+@[A-Za-z0-9_\-\.]+\.[A-Za-z0-9_\-\.]+$/;
	if(!pattern.test(CCEmail)){
		chkflag = false;
	}
	return chkflag;
}

//2007-03-19 修正：新增對輸入的收寄者EMail資料做驗證(院長信箱存查或比照民意信箱辦理)，收件者email依原程式資料觀察似乎沒有記錄到mailassign
function fnCheckEmailFormat2(emailContent,emailType){
	var chkflag = true;
	var strEmail = "";
	
	//strEmail = emailContent.replace(" ","");
	if(emailContent.length > 0){
		//alert("email==>"+emailContent);
		var CCEmailArr = emailContent.split(",");
		var CCEmailArrlen = CCEmailArr.length; 
		var errCCMail = "";
		var alertType = "";
		var j = 1;
		//alert(CCEmailArr.length);
		
		for(i=0;i<CCEmailArr.length ; i++){
			//alert(CCEmailArr[i]);
			if (CCEmailArr[i].length > 0){
				chkFormatflag = fnCheckEmailFormat(CCEmailArr[i]);   //檢查 E-Mail Address Format
				if(!chkFormatflag){
					errCCMail += "(" + j + ") 【" + CCEmailArr[i] + "】\r\n\r\n";
					j++;
					//alert("不合法==>"+CCEmailArr[i]);
					//break;	
				}
			}
		}
		switch(emailType){
			case "1":
				alertType = "「院長信箱」";
				break;
			case "2":
				alertType = "「民眾信箱」";
				break;
			case "3":
				alertType = "「正本通知」";
				break;
			case "4":
				alertType = "「副本通知」";
				break;
			case "5":
				alertType = "「機關帳號」"; //2007-04-20 修正
				break;
		}
		if(j>1){
			alert(alertType + "收件者 E-Mail Address 含有不合法的格式內容，請重新輸入!!\r\n\r\n不合法E-Mail Address 內容如下：\r\n\r\n" + errCCMail + "\r\nPS. 若含多組收件者 E-Mail 帳號時，須以逗號「,」隔開，且不能含空白 \r\n\r\n    (範例： test1@test.edu.tw,test2@test.edu.tw,test3@test.edu.tw)");	
			chkflag = false;
		}else{
			//alert("副本通知正確!!");
			//flag = true;
		}
	}
	return chkflag;
	
}


//2008-01-07 修正：新增檢查各項欄位長度
function checkContentLength(fieldContent,maxLen){
	if(getLength(fieldContent) > maxLen){
		return false;
	}else{
		return true;
	}
}

//取得字串實際位元長度
function getLength(for_check){
 var I, cnt=0;
 for(I=0;I<for_check.length;I++){
   if(escape(for_check.charAt(I)).length >=4){
     cnt +=2;
   }else{
    cnt++;
   }
 } 
 return cnt;
}

//2008-01-07 修正：新增字串取全部代的方法 (正規表示法)
function replaceAll(fieldContent,findStr,replaceStr){
	return fieldContent.replace(new RegExp(findStr, 'g'), replaceStr);
}

//2008-01-07 修正：新增字串前後去空白的方法 (正規表示法)
function trim(stringToTrim){
	return stringToTrim.replace(/^\s+|\s+$/g,"");
}

//2009-05-06 修正：新增判斷是否為數字 ,例 25 或 002 (有含正、負符號的整數不符合條件)
function isUnsignedInt(value) {
	var pattern = /^\d+$/;
	return pattern.test(value);
}

function compareDate(date1, date2) {
	var myStartDate, myEndDate;
	var re = /\-/g;

	myStartDate = Date.parse(date1);
	if (isNaN(myStartDate)) {
		return NaN;
	}
	myEndDate = Date.parse(date2);
	if (isNaN(myEndDate)) {
		return NaN;
	}

	if (myStartDate < myEndDate) {
		return -1;
	} else if (myStartDate > myEndDate) {
		return 1;
	} else {
		return 0;
	}

}

function fixXSS(fieldContent) {
	fieldContent = fieldContent.replace(new RegExp("\'", 'g'), "’");
	fieldContent = fieldContent.replace(new RegExp("\"", 'g'), "〞");
	fieldContent = fieldContent.replace(new RegExp("\\?", 'g'), "？");
	fieldContent = fieldContent.replace(new RegExp("\\*", 'g'), "＊");
	//fieldContent = fieldContent.replace(new RegExp("\\_", 'g'), "＿");
	fieldContent = fieldContent.replace(new RegExp("\\%", 'g'), "％");
	fieldContent = fieldContent.replace(new RegExp("\\(", 'g'), "（");
	fieldContent = fieldContent.replace(new RegExp("\\)", 'g'), "）");
	fieldContent = fieldContent.replace(new RegExp("\\<", 'g'), "＜");
	fieldContent = fieldContent.replace(new RegExp("\\>", 'g'), "＞");
	fieldContent = fieldContent.replace(new RegExp("\\:", 'g'), "：");
	fieldContent = fieldContent.replace(new RegExp("\\;", 'g'), "；");
	fieldContent = fieldContent.replace(new RegExp("\\&", 'g'), "＆");
	fieldContent = fieldContent.replace(new RegExp("\\|", 'g'), "｜");
	fieldContent = fieldContent.replace(new RegExp("\\\\", 'g'), "＼");
	fieldContent = fieldContent.replace(new RegExp("\\/", 'g'), "／");
	
	return fieldContent;
}

//2010-08-18 設定前台網頁title
function setFrontWebTile(funName) {
	top.document.title = "財政部 部長電子信箱" + funName;
}