﻿// JavaScript Document
// utility.js
// Create by James Chan on 01-Jan-2006.
// Modify by James Chan on 15-Jun-2007.
// Copyright (C) 2007 James Chan, Eiyer Digit Consulting INC., TAIWAN.

//--- Defaults ---//
var htmlReturn				= 2 ;			// seconds of return ;
var htmlRefresh				= 60 ;			// seconds of refresh ;
var imgwidth				= 180 ;			// images width ;
var imgheight				= 150 ;			// images height ;
var cellHeight				= 20 ;			// cells height ;
var pageNews				= 10 ;			// record of news ;
var pageRows				= 10 ;			// record of row ;
var pagePages				= 10 ;			// record of page ;

var iCounter				= 0 ;

//--- Path & Program ---//
var http					= "http://" ;
var https					= "https://" ;
var root					= "../" ;
var dir						= "./" ;
var docs					= ".php" ;

//--- Object ---//
var msgBOX ;
var newBOX ;
var mObj ;

//--- Alerts ---//
var new_tw				= "新增" ;
var delete_tw			= "刪除" ;
var alert_tw_00			= "請輸入帳號及密碼! 謝謝!!" ;
var alert_tw_01			= "請先勾選欲執行本功能的資料! 謝謝!!" ;
var alert_tw_03			= "執行本功能不得複選資料! 請重新選擇! 謝謝!!" ;
var alert_tw_05			= "欄位未填寫正確! 謝謝!!" ;
var alert_tw_06			= "電話、電子信箱請擇一填寫! 謝謝!!" ;
var alert_tw_07			= "e-mail欄位未填寫正確! 謝謝!!" ;
var alert_tw_98			= "注意!資料尚未輸入完整!無法新增!請確認!謝謝!!" ;
var alert_tw_99			= "注意!資料尚未輸入完成!請輸入完成後再行送出! 謝謝!!" ;
var alert_tw_email		= "請輸入正確的電子信箱!" ;
var alert_tw_password	= "請輸入正確的密碼!" ;
var alert_tw_repassword	= "請再次輸入與密碼相符的確認密碼!" ;
var confirm_tw_new		= "將進行新增作業! 請確認!?" ;
var confirm_tw_edit		= "將進行更新作業! 請確認!?" ;
var confirm_tw_copy		= "將進行新增作業! 請確認!?" ;
var confirm_tw_del		= "本功能將執行刪除動作! 請確認!?" ;
var confirm_tw_signup	= "將送出報名表! 請確認!?" ;
var box_tw_keyword		= "請輸入關鍵字..." ;
var box_tw_course		= "請輸入課程名稱..." ;
var box_tw_mycompany	= "請輸入公司統一編號或完整名稱..." ;

//--- Test Only ---//
function goTest(obj) {
	alert(document.all['I2,1,1'].length) ;
}

//--- Functions ---//

function download(obj, oCase, oParm) {
	location.assign('./download.php?case=' + oCase) ;
	return false ;
}

function floatOn(target, obj) {
	var menu = document.all[target] ;
	if (typeof(mObj)!='undefined') mObj.style.display = 'none' ;
	if (typeof(menu)=='undefined') return false ;
	var top = 0 ;
	var left = 0 ;
	while (obj.tagName!='BODY') {
		obj = obj.parentElement ;
		if (obj.tagName=='TD'||obj.tagName=='TR'||obj.tagName=='TABLE'||obj.tagName=='DIV') {
			top += obj.tagName=='TD' ? 0 : ( obj.tagName=='DIV' ? obj.offsetTop - obj.scrollTop : obj.offsetTop ) ;
			left += obj.tagName=='TR' ? 0 : obj.offsetLeft ;
			if (obj.tagName=='DIV') left -= obj.scrollLeft ;
		}
	}
	menu.style.top = top + 24 ;
	menu.style.left = menu.alt=='left' ? ( left + 81 ) : ( left - 222 ) ;
	menu.style.display = 'block' ;
	mObj = menu ;
} 

function floatOff(obj) {
	obj.style.display = 'none' ;
}

// Set Data
function setData(xmlDoc, sObj, tObj) {
	var oTable = myObj(sObj, 'TABLE') ;
	for (var i=0; i<oTable.all.length ; i++) {
		if (oTable.all(i).tagName=='INPUT') {
			for (var r=0; r<xmlDoc.childNodes.length; r++) {
				for (var c=0; c<xmlDoc.childNodes(r).childNodes.length; c++) {
					if (oTable.all(i).name=='company_' + xmlDoc.childNodes(r).childNodes(c).tagName) {
						oTable.all(i).value = xmlDoc.childNodes(r).childNodes(c).text ;
					}
				}
			}
		}
	}
}

// Load Data
function loaddata(obj, action) {
	if ( obj.value.length>0 ) loading(obj, obj.name, action, obj.value) ;
	return false ;
}

function dateKey(obj) {
	// `0`:48,`1`:49,`2`:50,`3`:51,`4`:52,`5`:53,`6`:54,`7`:55,`8`:56,`9`:57 ;
	var key = event.keyCode ;
	var re = /^\d{1,3}$/ ;
	if (obj.value.indexOf('-')<0&&obj.value.length<4) {
		if ( (key==8) || (key>47 && key<58) ) return true ; else return false;
	} else if (obj.value.indexOf('-')==obj.value.indexOf('-')) {
		return false ;//if (re.test(obj.value)) return true ;
	} else if (obj.value.indexOf('-')!=obj.value.indexOf('-')) {
		return false ;
	} else {
	}
}

//
function checkkey(parameter) {
	
}

//
function goCheck(obj, name) {
	var form = obj.tagName=='FORM' ? obj : obj.form ;
	if (typeof(name)=='undefined') {
		for (var i=0; i<form.all.length; i++) {
			if (form.all(i).tagName=='INPUT'||form.all(i).tagName=='SELECT') {
				//alert(form.all(i).id + " x " + form.all(i).value) ;
				if (form.all(i).id.indexOf('*')>0) {
					if (form.all(i).value.length==0) {
						return false ;
					}
				}
			}
		}
		return true ;
	} else {
		var oTarget = myKid(form, 'TABLE', 'member') ;
		for (var i=0; i<oTarget.all.length; i++) {
			if (oTarget.all(i).tagName=='INPUT'||oTarget.all(i).tagName=='SELECT') {
				if (oTarget.all(i).value.length<1) return false ;
			}
		}
		return true ;
	}
}

//--- Signup
function goSignup(obj, n, method, content) {
	var form = obj.form ;
	//alert(obj.document + " x " + n + " x " + method + " x " + content); return false;
	if (n===true) {
		if (method=='mail') {
			url = dir + "mailSignup" + docs + '?' + 'sns=' + '&content=' + content ;
			document.location.assign(url) ;
		} else {
			if (goCheck(obj)) {
				href = document.location.href.split('?') ;
				form.action = dir + "signup" + docs + "?" + href[1] ;
				form.submit() ;
			} else {
				alert(eval('alert_' + ln + '_' + 99)) ;
			}
		}
	} else {
		//選課程
		if (method==0) {
			alert('很抱歉,已超過報名人數,無法報名!') ;
		} else if (method=='mail') {
			url = dir + "mailSignup" + docs + '?' + 'sns=' + n + '&content=' + content ;
			obj.document.location.assign(url) ;
		} else {
			href = document.location.href.split('?') ;
			parm = href[1].split('&') ;
			url = dir + "login" + docs + '?' + parm[0] + '&' + 'item=0&list=0' + '&' + 'sns=' + n ;
			obj.document.location.assign(url) ;
		}
	} 
	return false ;
}

//--- Courses
function goCourses(obj, n, method, content) {
	var form = obj.form ;
	if (n) {
		var url = "./courses.php?menu=9" + "&method=" + method + "&content=" + content + "&sn=" + n ;
		var features = "help:no; status:0; scroll:0; resizable:0; dialogHeight:480px; dialogWidth:600px" ;
		newBOX = window.showModelessDialog(url, obj, features) ;
	}
	return false ;
}

//--- News
function goNews(obj, news) {
	if (news) {
		href = document.location.href.split('?') ;
		if (typeof(href[1])=='undefined') {
			url = href[0] + "?" + "news=" + news ;
		} else {
			page = href[1].indexOf('page')<0 ? "page=1" : href[1] ;
			url = href[0] + "?" + "news=" + news + "&" + page ;
		}
	} else {
		href = document.location.href.split('?') ;
		if (typeof(href[1])=='undefined') {
			url = href[0] ;
		} else {
			url = href[0] ;
			var hrefs = href[1].split('&') ;
			for (var i=0; i<hrefs.length; i++) if (hrefs[i].indexOf('page')>-1) page = hrefs[i] ;
			url += "?" + page ;
		}
	}
	document.location.reload(url) ;
	return false ;
}

function iframenewsChange(index, indexBranch) {
	//alert('iframenewsChange ' + index) ;
	href = document.location.href.split('?') ;
	url = href[0] + "?" + "ibranch=" + indexBranch + "&" + "page=" + index ;
	document.location.assign(url) ;
	return false ;
}

function newsChange(index) {
	//alert('newsChange ' + index) ;
	href = document.location.href.split('?') ;
	url = href[0] + "?" + "page=" + index ;
	//document.location.reload(url) ;
	document.location.assign(url) ;
	return false ;
}

//--- Functions about the Row ---//
function memberchange(obj) {
	switch (obj.name) {
		case 'member' :
			var url = "./?menu=member" + "&item=" + "&list=" ;
			break ;
		case 'modify' :
			var url = "./?menu=member" + "&item=" + obj.name + "&list=" ;
			break ;
		case 'record' :
			var url = "./?menu=member" + "&item=" + obj.name + "&list=" ;
			break ;
	}
	document.location.assign(url) ;
	return false ;
}

//--- Row Change
function rowchange(obj, parm, effect) {
	var oTable = myObj(obj, 'TABLE') ;
	var sclass = obj.className ;
	classname = sclass.split('_') ;
	switch (event.type) {
		case "mousemove" :
			obj.className = classname[0] + '_' + 'on' ;
			break;
		case "mousedown" :
			//obj.className = classname[0] + '_' + '0' ;
			break;
		case "mouseup" :
			//obj.className = classname[0] + '_' + '0' ;
			break;
		case "mouseout" :
			obj.className = classname[0] + '_' + parm ;
			break;
		default :
			obj.className = classname[0] + '_' + parm ;
			break;
	}
	if (typeof(effect)!='undefined') oTable.rows(obj.rowIndex + effect).className = obj.className ;
}

//--- Functions about the Image of Button ---//
function objectChange(menus, items, types) {
	//var url = "./?menu=" + menus + "&item=" + items + "&list=" + "&type=" + types ;
	var url = window.location.href ;
	url = url.substr(0, url.indexOf('?')) + "?" + "menu=" + menus + "&item=" + items + "&list=" + "&type=" + types ;
	document.location.reload(url) ;
	return false ;
}

//--- Menu Change 
function menusChange(menus, items, lists, types) {
	if (typeof(menus)=='undefined') return false ;
	if (typeof(items)=='undefined') items = '' ;
	if (typeof(lists)=='undefined') lists = '' ;
	var url = (typeof(menus)=='string' || menus>0) ? "./?menu=" + menus + "&item=" + items + "&list=" + lists : "./" ;
	if (typeof(types)!='undefined') url = url + "&type=" + types
	document.location.assign(url) ;
	return false ;
}

//--- Menu Change 
function menusOpen(sUrl, sParm) {
	switch (sParm) {
		case 'down' :
			location.replace('../archive/' + sUrl) ;
			break ;
		case 'mail' :
			window.open("mailto:" + sUrl) ;
			break ;
		default :
			window.open(sUrl, sParm) ;
			break ;
	}
	return false ;
}

//--- Menu Switch
function menusShow(menus, items, lists, types) {
	if ((typeof(menus)=='undefined')||(typeof(items)=='undefined')||(typeof(lists)=='undefined')) return false ;
	var idName = 'I' + menus + ',' + items + ',' + lists ;
	for (var i=0; i<document.all[idName].length; i++) {
		document.all[idName][i].style.display = document.all[idName][i].style.display =="none" ? "block" : "none" ;
	}
	return false ;
}

//--- Insert Rows
function deleteRows(obj, name) {
	if (obj.tagName=='TABLE') {
		var OrgRow = myKid(obj, 'TR', name) ;
	} else {
		var OrgCol = myObj(obj, 'TD') ;
		var OrgRow = myObj(obj, 'TR') ;
		var Table = myObj(obj, 'TABLE') ;
	}
	Table.deleteRow(OrgRow.rowIndex) ;
	return false ;
}

//--- Insert Rows
function insertRows(obj, name) {
	// obj is TR or Table
	if (obj.tagName=='TABLE') {
		var OrgRow = myKid(obj, 'TR', name) ;
	} else {
		var OrgCol = myObj(obj, 'TD') ;
		var OrgRow = myObj(obj, 'TR') ;
		obj = myObj(obj, 'TABLE') ;
	}

	if (false==OrgRow) return false ;

	iCounter++ ; //計數用 ;
	
	var n = OrgRow.length>0 ? OrgRow.length : 1 ;
	
	var color = String(obj.rows.length/n%2) ;

	for (var i=0; i<n; i++) {
		var oRow = n==1 ? OrgRow : OrgRow[i] ;
		var NewRow = obj.insertRow(obj.rows.length) ;
		NewRow.id = name + 's' ;
		if (oRow.className.length) 
			NewRow.className = oRow.className.substr(oRow.className.length-1)=='_' ? oRow.className + color : oRow.className ;
		if (oRow.style.height.length) 
			NewRow.style.height = oRow.style.height ;
		for (var j=0; j<oRow.cells.length; j++) {
			var oCell = oRow.cells(j) ;
			var oText = oCell.childNodes(0) ;
			var NewCell = NewRow.insertCell() ;
			NewCell.className = oCell.className ;
			NewCell.rowSpan = oCell.rowSpan ;
			NewCell.colSpan = oCell.colSpan ;
			NewCell.width = oCell.width ;
			NewCell.align = oCell.align ;
			NewCell.style.textAlign = oCell.style.textAlign ;
			NewCell.style.wordBreak = oCell.style.wordBreak ;
			NewCell.innerHTML = oCell.innerHTML ;
			//下面必須要 : 如果有欄位(資料)的話要修改欄位的名稱即<input name="???" ...>
			if (NewCell.childNodes(0).name.length) {
				NewCell.childNodes(0).name = NewCell.childNodes(0).name.replace(NewCell.childNodes(0).name.substr(NewCell.childNodes(0).name.lastIndexOf("_")), "_") + String(iCounter) ;
			}
		}
	}

	for (var i=0; i<OrgCol.childNodes.length; i++) {
		if (typeof(OrgCol.childNodes(i).tagName)!='undefined') {
			OrgCol.childNodes(i).style.display = OrgCol.childNodes(i).style.display=='none' ? 'block' : 'none' ;
		}
	}
	//return n ;
	return false ;
}

function getImg(objName,objType){
	var img = new Image();
	img.src = 'file:///' + document.getElementById(objName).value;
	for(i=0;i<10000;i++){ 
		if(eval("img."+objType)!="-1"){
			return eval("img."+objType);
			break;
		} 
	}
}

//--- Function about Images of Loading...
function loadImageofBranch() {
	var Branch = document.all("Branch") ;
	if (null!=Branch) {
		for (var i=0; i<Branch.length; i++) {
			Branch[i].src = Branch[i].src;
		}
		setTimeout("loadImageofBranch()", 10000) ;	// After 10 second.
	}
/*	myImages = new Array("gif", "jpg", "png"); 
	var images = document.all("branchimage") ;
	if (null!=images) {
		if (images.length>0) {
			for (var i=0; i<images.length; i++) {
				var index = Math.floor(Math.random()*9) ;
				images[i].src = "../images/branch" + (i+1) + "/img" + index + ".gif" ;
			}
		} else {
			//
		}
		setTimeout("loadImageofBranch()", 5000) ;	// After 10 second.
	}
*/
}

//--- Functions about Object ---//
//--- Get Object
function myKid(obj, tag, target) {
	if (typeof(target)=='undefined') {
		for (var i=0; i<obj.all.length; i++) if (obj.all(i).tagName==tag) return obj.all(i) ;
		return false ;
	} else {
		if (typeof(target)=='number') {
			var j = 0 ;
			for (var i=0; i<obj.all.length; i++) {
				if (obj.all(i).tagName==tag) j++ ;
				if (target==j) return obj.all(i) ;
			}
			return false ;
		} else {
			return obj.all(target)==null ? false : obj.all(target) ;
		}
	}
}

//--- Get Object
function myObj(obj, tag) {
	while (obj.tagName!=tag) {
		if (obj.tagName=='BODY') return false ;
		obj = obj.parentElement ;
	}
	return obj ;
}

//--- Functions about Cookie ---//
//--- Delete Cookie
function delCookie(name) {
	var extDate = 1000*60*60*24*3 ;
	var expDate = new Date() ;
	expDate.setTime(expDate.getTime()-extDate) ;
	if (typeof(name)=='undefined') {
		var startCookie, endCookie ;
		var searchName = ' ' + web + '[' ;
		var myCookie = ' ' + document.cookie + ';' ;
		while ((startCookie=myCookie.indexOf(searchName))!=-1) {
			endCookie =  myCookie.indexOf(']') ;
			name = web + '[' + myCookie.substring(searchName.length+startCookie, endCookie) + ']' ;
			document.cookie = name + '=' + 'clear' + '; ' + 'expires=' + expDate.toGMTString() ;
			myCookie = ' ' + document.cookie + ';' ;
			//alert(document.cookie) ;
		}
	} else {
		name = web + '[' + name + ']' ;
		document.cookie = name + '=' + 'clear' + '; ' + 'expires=' + expDate.toGMTString() ;
	}
}

//--- Get Cookie
function getCookie(name) {
	var result = null ;
	var myCookie = ' ' + document.cookie + ';' ;
	var searchName = ' ' + web + '[' + name + ']' + '=' ;
	var startCookie = myCookie.indexOf(searchName) ;
	var endCookie ;
	if (startCookie != -1) {
		startCookie += searchName.length ;
		endCookie = myCookie.indexOf(';', startCookie) ;
		result = unescape(myCookie.substring(startCookie,endCookie)) ;
	}
	return result ;
}

//--- Set Cookie
function setCookie(name, value) {
	name = web + '[' + name + ']' ;
	document.cookie = name + '=' + escape(value) ;
}
