﻿function checkEmail(email) {
	if(email.length == 0)
		return false;
	var i;
	if(email.indexOf('@') == -1 || 
	   email.indexOf('.') == -1 || 
	   email.indexOf('@') > email.lastIndexOf('.') || 
	   email.lastIndexOf('.') == email.length-1 ||
	   email.indexOf('@') == 0)
		return false;

	myleft = email.substring(0,email.indexOf('@'));
	myright = (email.substr(email.indexOf('@')+1)).split('.');

	if(!checkString(myleft))
		return false;

	for(i=0;i<myright.length;i++)
		if(!checkString(myright[i]))
			return false;
	return true;
}

function checkString(str) {
/*
a,b,c ~ x,y,z : 97~122 
A,B,C ~ X,Y,Z : 65~90
0,1,2 ~ 8,9,0 : 48~57
'-','.','_' : 45,46,95
*/
	var i;
	var tmp = str.toUpperCase();
	if(tmp.length == 0)
		return false;
	for(i=0;i<tmp.length;i++) {
		if((tmp.charCodeAt(i) < 45 || tmp.charCodeAt(i) > 57) && 
		   (tmp.charCodeAt(i) < 65 || tmp.charCodeAt(i) > 90) &&
		   (tmp.charCodeAt(i) != 95))
			return false;
	}	
	return true;
}

function checkNull(obj) {
	if(obj == '')
		return false;
	else 
		return true;
}

function checkInt(nums,min,max) {
	var i;
	var tmp = nums;
	if(tmp.length == 0)
		return false;
	for(i=0;i<tmp.length;i++)
		if((tmp.charCodeAt(i) < 46 || tmp.charCodeAt(i) > 57))
			return false;
	var tmpNums = parseInt(nums);
	var tmpMin = parseInt(min);
	var tmpMax = parseInt(max);
	if((tmpNums < tmpMin) || (nums > tmpMax))
		return false;
	return true;
}

//between one year
function initYear(select, range) {
	var year = new Date();
	var prevYear = new Date(year.getFullYear-range,1,1);
	var nextYear = new Date(year.getFullYear+range,1,1);
	var option1 = window.document.createElement("OPTION");
	option1.text = prevYear.getFullYear();
	option1.value = prevYear.getFullYear();
	var option2 = window.document.createElement("OPTION");
	option2.text = year.getFullYear();
	option2.value = year.getFullYear();
	var option3 = window.document.createElement("OPTION");
	option3.text = nextYear.getFullYear();
	option3.value = nextYear.getFullYear();	

	if(navigator.appName == "Microsoft Internet Explorer") {
		select.add(option1);
		select.add(option2);
		select.add(option3);
	} else {
		select.appendChild(option1);
		select.appendChild(option2);
		select.appendChild(option3);
	}
	select.options[1].selected = true;
}

function initYearBetween(select, range) {
	var year = new Date();
	var prevYear = year.getFullYear()-range;
	var nextYear = year.getFullYear()+range;
	for(i=prevYear;i<=nextYear;i++) {
		var option = window.document.createElement("OPTION");
		option.text = i;
		option.value = i;
		if(navigator.appName == "Microsoft Internet Explorer")
			select.add(option);
		else
			select.appendChild(option);
	}
	select.options[range].selected = true;
}

//before
function initYear2(select, range) {
	var year = new Date();
	var d = new Date();
	var count = d.getFullYear() - range;
	for(i=1;i<=range;i++) {
		var option = window.document.createElement("OPTION");
		option.text = count + i;
		option.value = count + i;
		if(navigator.appName == "Microsoft Internet Explorer")
			select.add(option);
		else
			select.appendChild(option);
	}
	select.options[select.length-1].selected = true;
}

function initYearBefore(select, range) {
	var year = new Date();
	var d = new Date();
	var count = d.getFullYear() - range;
	for(i=1;i<=range;i++) {
		var option = window.document.createElement("OPTION");
		option.text = count + i;
		option.value = count + i;
		if(navigator.appName == "Microsoft Internet Explorer")
			select.add(option);
		else
			select.appendChild(option);
	}
	select.options[select.length-1].selected = true;
}

//after
function initYear3(select, range) {
	var year = new Date();
	var d = new Date();
	var count = d.getFullYear();
	for(i=0;i<range;i++) {
		var option = window.document.createElement("OPTION");
		option.text = count + i;
		option.value = count + i;
		if(navigator.appName == "Microsoft Internet Explorer") {
			select.add(option);
			select.options[0].selected = true;
		} else {
			select.appendChild(option);
			select.options[0].selected = true;
		}
	}
}

function initYearAfter(select, range) {
	var year = new Date();
	var d = new Date();
	var count = d.getFullYear();
	for(i=0;i<range;i++) {
		var option = window.document.createElement("OPTION");
		option.text = count + i;
		option.value = count + i;
		if(navigator.appName == "Microsoft Internet Explorer")
			select.add(option);
		else
			select.appendChild(option);
	}
	select.options[0].selected = true;
}

function initMonth(select) {
	var d = new Date();
	for(i=1;i<=12;i++) {
		var option = window.document.createElement("OPTION");
		option.text = i;
		option.value = i;
		if(navigator.appName == "Microsoft Internet Explorer")
			select.add(option);
		else
			select.appendChild(option);
	}
	select.options[d.getMonth()].selected = true;
}

function initMonthRange(select, start, end) {
	var d = new Date();
	for(i=start;i<=end;i++) {
		var option = window.document.createElement("OPTION");
		option.text = i;
		option.value = i;
		if(navigator.appName == "Microsoft Internet Explorer")
			select.add(option);
		else
			select.appendChild(option);
	}
}

function initMonth1(select) {
	var d = new Date();
	for(i=1;i<=12;i++) {
		var option = window.document.createElement("OPTION");
		if(i<10) {
			option.text = "0" + i.toString();
			option.value = "0" + i.toString();
		}
		else {
			option.text = i;
			option.value = i;
		}
		if(navigator.appName == "Microsoft Internet Explorer")
			select.add(option);
		else
			select.appendChild(option);
	}
	select.options[d.getMonth()].selected = true;
}

function initDay(select) {
	var d = new Date();
	for(i=1;i<=31;i++) {
		var option = window.document.createElement("OPTION");
		option.text = i;
		option.value = i;
		if(navigator.appName == "Microsoft Internet Explorer")
			select.add(option);
		else
			select.appendChild(option);
	}
	select.options[d.getDate()-1].selected = true;
}

function creditYear(select, range) {
	var year = new Date();
	var d = new Date();
	var count = d.getFullYear();
	for(i=0;i<range;i++) {
		var option = window.document.createElement("OPTION");
		option.text = (count + i).toString().substring(2);
		option.value = (count + i).toString().substring(2);
		if(navigator.appName == "Microsoft Internet Explorer")
			select.add(option);
		else
			select.appendChild(option);
	}
	select.options[0].selected = true;
}

function creditMonth(select) {
	var d = new Date();
	for(i=1;i<=12;i++) {
		var option = window.document.createElement("OPTION");
		if(i<10)
			tmp = "0" + i.toString();
		else
			tmp = i.toString();
		option.text = tmp;
		option.value = tmp;
		if(navigator.appName == "Microsoft Internet Explorer")
			select.add(option);
		else
			select.appendChild(option);
	}
	select.options[d.getMonth()].selected = true;
}

function initAddress1(select, address) {
	for(i=0;i<address.length;i++) {
		var option = window.document.createElement("OPTION");
		option.text = address[i];
		option.value = address[i];
		if(navigator.appName == "Microsoft Internet Explorer")
			select.add(option);
		else
			select.appendChild(option);
	}
	select.options[0].selected = true;
}

function initCity(select, address) {
	for(i=0;i<address.length;i++) {
		var option = window.document.createElement("OPTION");
		option.text = address[i];
		option.value = address[i];
		if(navigator.appName == "Microsoft Internet Explorer")
			select.add(option);
		else
			select.appendChild(option);
	}
	select.options[0].selected = true;
}

function initCountry(city, country, arrayCountry) {
	var temp = arrayCountry[city.selectedIndex];
	for(i=0;i<temp.length;i++) {
		var option = window.document.createElement("OPTION");
		option.text = temp[i][0];
		option.value = temp[i][0];
		if(navigator.appName == "Microsoft Internet Explorer")
			country.add(option);
		else
			country.appendChild(option);
	}
	country.options[0].selected = true;
}

function initSelectNumRange(select, start, end) {
	//alert(select.name);
	for(i=start;i<=end;i++) {
		var option = window.document.createElement("OPTION");
		option.text = i;
		option.value = i;
		if(navigator.appName == "Microsoft Internet Explorer")
			select.add(option);
		else
			select.appendChild(option);
	}
	select.options[0].selected = true;
}

function initAddress2(select, address) {
	changeAddress2(select, address, 0);
}

function changeAddr1(sltAddr1, sltAddr2, address2, txtPost) {
	changeAddress2(sltAddr2, address2, sltAddr1.options.selectedIndex);
	txtPost.value = address2[sltAddr1.options.selectedIndex][0][1];
}

function changeAddr2(sltAddr1, sltAddr2, address2, txtPost) {
	txtPost.value = address2[sltAddr1.options.selectedIndex][sltAddr2.options.selectedIndex][1];
}

function changeAddress2(select, address, addr1, txtPost) {
	select.options.length = 0;
	for(i=0;i<address[addr1].length;i++) {
		var option = window.document.createElement("OPTION");
		option.text = address[addr1][i][0];
		option.value = address[addr1][i][0];
		if(navigator.appName == "Microsoft Internet Explorer")
			select.add(option);
		else
			select.appendChild(option);
	}
	select.options[0].selected = true;
}

function initJob(select, job) {
	for(i=0;i<job.length;i++) {
		var option = window.document.createElement("OPTION");
		option.text = job[i];
		option.value = job[i];
		if(navigator.appName == "Microsoft Internet Explorer")
			select.add(option);
		else
			select.appendChild(option);
	}
	select.options[0].selected = true;
}

function checkField(obj,msg) {
	if(obj.value == '') {
		alert(msg + '不可為空白');
		obj.style.backgroundColor = '#FFB819';
		obj.focus();
		return false;
	} else {
		obj.style.backgroundColor = '#ffffff';
		return true;
	}
}

function checkFieldLength(obj, length, msg) {
	if(obj.value.length < length) {
		alert(msg + '長度太短');
		obj.style.backgroundColor = '#FFB819';
		obj.focus();
		return false;
	} else {
		obj.style.backgroundColor = '#ffffff';
		return true;
	}
}

function checkSSNField(obj, msg) {
	if(!checkSSN(obj.value)) {
		alert(msg + '身分證字號不可為空白');
		obj.focus();
		obj.style.backgroundColor = '#FFB819';
		return false;
	} else {
		obj.style.backgroundColor = '#ffffff';
		return true;
	}
}

function checkEmailField(obj, msg) {
	if(!checkEmail(obj.value)) {
		alert(msg + 'email不可為空白或者有錯');
		
		obj.focus();
		obj.style.backgroundColor = '#FFB819';
		return false;
	} else {
		obj.style.backgroundColor = '#ffffff';
		return true;
	}
}

function checkPasswodField(obj1, obj2, msg) {
	if((obj1.value == '') || (obj1.value != obj2.value)) {
		alert(msg + '密碼兩組要相同且不可為空白或有錯!!');
		obj1.focus();
		obj1.style.backgroundColor = '#FFB819';
		return false;
	} else {
		obj1.style.backgroundColor = '#ffffff';
		return true;
	}
}

function checkSSN(num){
	num = num.toLowerCase();
	patten=/^[a-z][12][0-9]{8}$/;
	if(patten.test(num)){
		h = "abcdefghjklmnpqrstuvxywzio";
		x = 10 + h.indexOf(num.substring(0,1));
		chksum = (x-(x%10))/10+(x%10)*9;
		
		for(i=1;i<9;i++)
         		chksum+= num.substring(i,i+1)*(9-i);
		
		chksum = (10 - (chksum % 10)) % 10;
		
		if(chksum == num.substring(9,10))
			return true;
	}
	return false;
}
 
function checkNumField(obj, msg, small, large) {
	if(isNaN(parseInt(obj.value)) || (parseInt(obj.value) < small) || (parseInt(obj.value) > large)) {
		alert(msg + '必須要為數字!');
		
		obj.focus();
		obj.style.backgroundColor = '#FFB819';
		return false;
	} else {
		obj.style.backgroundColor = '#ffffff';
		return true;
	}
}

function checkSelectObject(select1, select2, msg) {
	if(select1.value != select2.value)
		return true;
	else {
		alert(msg);
		select1.focus();
		return false;
	}
}

function initRadio(obj, value) {
	for(i=0;i<obj.length;i++)
		if(obj[i].value == value) {
			obj[i].checked = true;
			break;
		}	
}

function initCheckbox(obj, value) {
	if(value != "") {
		res = value.split(",");
		for(i=0;i<obj.length;i++)
			for(j=0;j<res.length;j++)
				if(obj[i].value == res[j])
					obj[i].checked = true;
	}
}

function initSelect(obj, value) {
	for(i=0;i<obj.options.length;i++) {
		if(document.all) {
			if(obj.options[i].value == value) {
				obj.options[i].selected = true;
				break;
			}
		} else {
			if(obj.options[i].value == value) {
				obj.options[i].selected = true;
				break;
			}
		}
	}	
}

function initMultiSelect(obj, arraySelected) {
	for(i=0;i<arraySelected.length;i++) {
		for(j=0;j<obj.options.length;j++) {
			if(obj.options[j].value == arraySelected[i])
				obj.options[j].selected = true;
		}
	}
}

function initSelectText(obj, text) {
	for(i=0;i<obj.options.length;i++)
		if(obj.options[i].text == text)
			obj.options[i].selected = true;
}

function initSelectValue(obj, value) {
	for(i=0;i<obj.options.length;i++)
		if(obj.options[i].value == value)
			obj.options[i].selected = true;
}

function setDate(sltYear, sltMonth, sltDay, Year, Month, Day) {
	today = new Date(Year, Month-1, Day);
	initSelect(sltYear, today.getFullYear());
	initSelect(sltMonth, (parseInt(today.getMonth())+1));
	initSelect(sltDay, (parseInt(today.getDate())));
}

function setDate1(sltYear, sltMonth, sltDay, Year, Month, Day) {
	today = new Date(Year, Month-1, Day);
	initSelect(sltYear, today.getFullYear());
	nowMonth = parseInt(today.getMonth())+1;
	initSelect(sltMonth, nowMonth);	
	nowDay = parseInt(today.getDate());
	initSelect(sltDay, nowDay);
}

function initAddressAll(sltCity, sltCountry, city, country, post) {
	initAddress1(sltCity, city);
	initAddress2(sltCountry, country);
	post.value = country[0][0][1];
}

function initDateBackward(sltYear, sltMonth, sltDay, num) {
	initYearBefore(sltYear, num);
	initMonth(sltMonth);
	initDay(sltDay);
}

function initDateForward(sltYear, sltMonth, sltDay, num) {
	initYear3(sltYear, num);
	initMonth(sltMonth);
	initDay(sltDay);
}

function initDateBetween(sltYear, sltMonth, sltDay, num) {
	initYearBetween(sltYear, num);
	initMonth(sltMonth);
	initDay(sltDay);
}

function setAddressAll(sltCity, sltCountry, txtPost, txtAddr, arrayCountry, city, country, post, address) {
	for(i=0;i<sltCity.options.length;i++)
		if(sltCity.options[i].text == city)
			sltCity.options[i].selected = true;
	changeAddr1(sltCity, sltCountry, arrayCountry, txtPost);
	for(i=0;i<sltCountry.options.length;i++)
		if(sltCountry.options[i].text == country)
			sltCountry.options[i].selected = true;
	txtPost.value = post;
	txtAddr.value = address;
}

function setCheckBox(td, value) {
	res = value.split(",");
	for(i=0;i<td.childNodes.length;i++) {
		if(td.childNodes(i).type == 'checkbox')
			for(j=0;j<res.length;j++)
				if(td.childNodes(i).value == res[j])
					td.childNodes(i).checked = true;
	}
}

function initAMPM(select) {
	var option1, option2;
	option1 = window.document.createElement("OPTION");
	option1.text = 'AM';
	option1.value = 'AM';
	if(navigator.appName == "Netscape")
		select.appendChild(option1);
	else
		select.add(option1);

	option2 = window.document.createElement("OPTION");
	option2.text = 'PM';
	option2.value = 'PM';
	if(navigator.appName == "Netscape")
		select.appendChild(option2);
	else
		select.add(option2);
}

function initHour(select) {
	for(i=1;i<13;i++) {
		if(i<10)
			j = '0'+i;
		else
			j = i;
		var option = window.document.createElement("OPTION");
		option.text = j;
		option.value = j;
		if(navigator.appName == "Microsoft Internet Explorer")
			select.add(option);
		else
			select.appendChild(option);
	}
}

function initMin(select) {
	for(i=0;i<60;i+=10) {
		if(i<10)
			j = '0'+i;
		else
			j = i;
		var option = window.document.createElement("OPTION");
		option.text = j;
		option.value = j;
		if(navigator.appName == "Microsoft Internet Explorer")
			select.add(option);
		else
			select.appendChild(option);
	}
}

function initCheckTime(AMPM, Hour, Min) {
	initAMPM(AMPM);
	initHour(Hour);
	initMin(Min);
}

function setTime(sltAMPM, sltHour, sltMin, AMPM, Hour, Min) {
	initSelect(sltAMPM, AMPM);
	initSelect(sltHour, Hour);
	initSelect(sltMin, Min);
}

function setSelect(select, data) {
	for(i=0;i<data.length;i++) {
		var option = window.document.createElement("OPTION");
		option.text = data[i];
		option.value = i;
		if(navigator.appName == "Microsoft Internet Explorer")
			select.add(option);
		else
			select.appendChild(option);
	}
}

function initNumber(select, nums) {
	for(i=1;i<=nums;i++) {
		var option = window.document.createElement("OPTION");
		option.text = i;
		option.value = i;
		if(navigator.appName == "Microsoft Internet Explorer")
			select.add(option);
		else
			select.appendChild(option);
	}
}

function initColorSelect(select, color) {
	for(i=0;i<color.length;i++) {
		var option = window.document.createElement("OPTION");
		option.text = "    ";
		option.value = color[i];
		option.style.backgroundColor = color[i];
		if(navigator.appName == "Microsoft Internet Explorer")
			select.add(option);
		else
			select.appendChild(option);
	}
}

function getDateString(dateObj) {
	year = dateObj.getFullYear().toString();
	month = dateObj.getMonth()+1;
	day = dateObj.getDate();
	if(month < 10)
		month = "0" + month.toString();
	if(day < 10)
		day = "0" + day.toString();
	return year + month + day;
}

function initSelectDate(select, days) {
	today = new Date();
	for(i=1;i<=days;i++) {
		var option = window.document.createElement("OPTION");
		dataString = getDateString(new Date(today.getFullYear(), today.getMonth(), today.getDate()+i));
		option.text = dataString.substring(0, 4) + '/' + dataString.substring(4,6) + '/' + dataString.substring(6, 8);
		option.value = dataString.substring(0, 4) + '/' + dataString.substring(4,6) + '/' + dataString.substring(6, 8);
		if(navigator.appName == "Microsoft Internet Explorer")
			select.add(option);
		else
			select.appendChild(option);
	}
}

function initSelecTime(select) {
	today = new Date();
	for(i=0;i<24;i++) {
		var option = window.document.createElement("OPTION");
		temp = i;
		if(i<10)
			temp = "0" + i;		
		option.text = temp + ":00";
		option.value = temp + ":00";
		if(navigator.appName == "Microsoft Internet Explorer")
			select.add(option);
		else
			select.appendChild(option);
	}
}

function chgSecondLevel(select1, select2, errMsg) {
	var select;
	if(navigator.appName == "Microsoft Internet Explorer") {
		if(
		 (typeof(eval('array' + select1.options[select1.selectedIndex].value)) == "object") && 
		 (eval('array' + select1.options[select1.selectedIndex].value).length > 0)
		) {
			select2.options.length = 0;
			select = eval('array' + select1.options[select1.selectedIndex].value);
			for(i=0;i<select.length;i++) {
				var option = window.document.createElement("OPTION");
				option.text = select[i][1];
				option.value = select[i][0];

				if(navigator.appName == "Microsoft Internet Explorer")
					select2.add(option);
				else
					select2.appendChild(option);

			}
			select2.options[0].selected = true;
		} else {
			alert(errMsg);
			for(i=0;i<select1.length;i++) {
				if(
				 (typeof(eval('array' + select1.options[i].value) == "object")) &&
				 (eval('array' + select1.options[i].value).length > 0)) {
					select1.options[i].selected = true;
					chgSecondLevel(select1, select2, errMsg);
					break;
				}
			}
		}
	} else {
		if(
		 (typeof(eval('array' + select1.options[select1.selectedIndex].value)) == "object") && 
		 (eval('array' + select1.options[select1.selectedIndex].value).length > 0)
		) {
			select2.options.length = 0;
			select = eval('array' + select1.options[select1.selectedIndex].value);
			for(i=0;i<select.length;i++) {
				var option = window.document.createElement("OPTION");
				option.text = select[i][1];
				option.value = select[i][0];

				if(navigator.appName == "Microsoft Internet Explorer")
					select2.add(option);
				else
					select2.appendChild(option);

			}
			select2.options[0].selected = true;
		} else {
			alert(errMsg);
			for(i=0;i<select1.length;i++) {
				if(
				 (typeof(eval('array' + select1.options[i].value) == "object")) &&
				 (eval('array' + select1.options[i].value).length > 0)) {
					select1.options[i].selected = true;
					chgSecondLevel(select1, select2, errMsg);
					break;
				}
			}			
		}
	}
}

function checkCode(evt) {
	key = evt.keyCode;
	if(key == 13) {
		var ie_var = "srcElement";
		var moz_var = "target";
		var prop_var = "funcName";
		evt[moz_var] ? e_out = evt[moz_var][prop_var] : e_out = evt[ie_var][prop_var];
		eval(e_out);
	}
}

function appendEnterEvent(obj, funcName) {
	if(window.addEventListener) {
		obj.addEventListener('keydown', checkCode, false);
	} else {
		obj.attachEvent('onkeydown', checkCode);
	}
	obj.funcName = funcName;
}

function addfavorite(url, desc) {
	if (document.all) {
		window.external.addFavorite(url, desc);
	} else if (window.sidebar) {
		window.sidebar.addPanel(desc, url, "");
	}
}

function fixedNumber(price) {
	if(price>=1000) {
		left = Math.floor(price/1000);
		right = price - (left * 1000);
		if(right == 0)
			right = "000";
		return left + "," + right;
	} else
		return price;
}