/* 
---------------------------------------------------------------
  start General
--------------------------------------------------------------- 
*/
// 禁止報錯
window.onerror = function() {
	return true; 
}
// 供給
function MM_findObj(n, d) { //v4.01
  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;
}
// 清除文字欄位文字
function MM_setTextOfTextfield(objName,x,newText) { //v3.0
  var obj = MM_findObj(objName); if (obj) obj.value = newText;
}
// 跳頁選單
function jumpMenu(targ, selObj, restore){ //v3.0
  eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
  if (restore) selObj.selectedIndex=0;
}
// 開新視窗
function windowOpen(url) {
	window.open(url);
}
// 開新視窗
function openWindow(url, id) {
	myWindow = window.open(url, id);
}
// 前往url
function goTo(url) {
  location.href(url);
}
// 呼叫javascript
function evalString(jsStr) { //v2.0
  return eval(jsStr)
}
// 送出帶值表單
function formSubmit(form) {
	var formSubmit = $(form);
	
	formSubmit.action = $('#username').val();
	formSubmit.submit();
}
// 取得複選框值
function getCheckbox(obj, set) {
	var s = '';

	$(obj+" input:checked").each( function() {
		s += this.value+",";
	});
	
	var i = s.length - 1;
	$(set).val(s.substr(0, i));
}
// 置入值
function setValue(set, get) {
	var v = $("#"+get).val();
	$("#"+set).val(v);
}
// 顯示圖片路徑
function imageSrc(obj, s) {
	$("#"+obj).attr({ src: s });
}
// 點亮圖層
function objHighlight(obj, s) {
	$("#"+obj).effect("highlight", { color: s }, 800);
}
// 傳送圖層
function objTransfer(obj, target) {
	$("#"+obj).effect("transfer", { to: "#"+target }, 800);
}
// 顯示圖層
function objShow(obj) {
	$("#"+obj).show();
}
// 隱藏圖層
function objHide(obj) {
	$("#"+obj).hide();
}
// 變更圖層尺寸
function objSize(obj, w, h) {
	new Rico.Effect.Size(obj, w, h, 500, 10);
}
// 變更圖層位置
function objPosition(obj, x, y) {
	new Rico.Effect.Position(obj, x, y, 500, 10);
}
// 浮動圖層
function objPersistent() {
	var offset = $("div[title='jPersistent']").offset();
	$("div[title='jPersistent']").animate({"top": offset.top+"px"}, "slow");
	
	window.onscroll = function () { 
		var moveTop = document.documentElement.scrollTop;
		moveTop+= eval(offset.top);

		$("div[title='jPersistent']").animate({"top": moveTop+"px"}, 10);
	} 
}
// 樹狀菜單
function foldTree(obj) {
	if ($("#"+obj+":first").is(":hidden")) {
		$("#"+obj).slideDown("slow");
	} else {
		$("#"+obj).hide("slow");
	}
}
// 浮動圖層
function flevDivPositionValue(sDiv, sProperty) { // v2.1, Marja Ribbers-de Vroed, FlevOOware
	this.opera = (window.opera); // Opera 5+
	this.ns4 = (document.layers); // Netscape 4.x
	this.ns6 = (document.getElementById && !document.all && !this.opera); // Netscape 6+
	this.ie = (document.all);  // Internet Explorer 4+
    var sValue = ""; docObj = eval("MM_findObj('" + sDiv + "')"); if (docObj == null) {return 0;}
	if ((sProperty == "left") || (sProperty == "top")) {
		if (!this.ns4) {docObj = docObj.style;} 
		sValue = eval("docObj." + sProperty);
		if ((this.ie) && (sValue == "")) { // IE (on PC) bug with nested layers
			if (sProperty == "top") { sValue = eval(sDiv + ".offsetTop"); } 
			else { sValue = eval(sDiv + ".offsetLeft"); } 
		};
	}
	else {
		if (this.opera) {
			docObj = docObj.style;
			if (sProperty == "height") { sValue = docObj.pixelHeight; } 
			else if (sProperty == "width") { sValue = docObj.pixelWidth; } 
		}
		else if (this.ns4) {sValue = eval("docObj.clip." + sProperty);} 
		else if (this.ns6) {sValue = document.defaultView.getComputedStyle(docObj, "").getPropertyValue(sProperty); } 
	    else if (this.ie) { 
			if (sProperty == "width") { sValue = eval(sDiv + ".offsetWidth"); } 
			else if (sProperty == "height") { sValue = eval(sDiv + ".offsetHeight"); } 
		}
   	}
	sValue = (sValue == "") ? 0 : sValue; 
	if (isNaN(sValue)) { if (sValue.indexOf('px') > 0) { sValue = sValue.substring(0,sValue.indexOf('px')); } } 
	return parseInt(sValue); 
}

function flevPersistentLayer() { // v3.3, Marja Ribbers-de Vroed, FlevOOware
	var sD = arguments[0], oD = eval("MM_findObj('" + sD + "')"), iWW, iWH, iSX, iSY, iT = 10, sS = "";
	if (!document.layers) {oD = oD.style;}
	if (oD.tmpTimeout != null) {clearTimeout(oD.tmpTimeout);}
	var sXL = arguments[1], sXC = arguments[2], sXR = arguments[3], sYT = arguments[4], sYC = arguments[5], sYB = arguments[6];
	var iS = (arguments.length > 7) ? parseInt(arguments[7]) : 0, iPx = (arguments.length > 8) ? parseInt(arguments[8]) : 0;
	if (window.innerWidth) { // NS4, NS6 and Opera
		var oW = window; iWW = oW.innerWidth; iWH = oW.innerHeight; iSX = oW.pageXOffset; iSY = oW.pageYOffset; }
	else if (document.documentElement && document.documentElement.clientWidth) { // IE6 in standards compliant mode
		var oDE = document.documentElement; iWW = oDE.clientWidth; iWH = oDE.clientHeight; iSX = oDE.scrollLeft; iSY = oDE.scrollTop; }
	else if (document.body) { // IE4+
		var oDB = document.body; iWW = oDB.clientWidth; iWH = oDB.clientHeight; iSX = oDB.scrollLeft; iSY = oDB.scrollTop; }
	else {return;}
	var iCX = iNX = flevDivPositionValue(sD, 'left'), iCY = iNY = flevDivPositionValue(sD, 'top');
	if (sXL != "") {iNX = iSX + parseInt(sXL);} 
	else if (sXC != "") {iNX = Math.round(iSX + (iWW/2) - (flevDivPositionValue(sD, 'width')/2));}
	else if (sXR != "") {iNX = iSX + iWW - (flevDivPositionValue(sD, 'width') + parseInt(sXR));}
	if (sYT != "") {iNY = iSY + parseInt(sYT);}
	else if (sYC != "") {iNY = Math.round(iSY + (iWH/2) - (flevDivPositionValue(sD, 'height')/2));}
	else if (sYB != "") {iNY = iSY + (iWH - flevDivPositionValue(sD, 'height') - parseInt(sYB));}
	if ((iCX != iNX) || (iCY != iNY)) {
		if (iS > 0) {
			if (iPx > 0) { iT = iS;
				var iPxX = iPx, iPxY = iPx, iMX = Math.abs(iCX - iNX), iMY = Math.abs(iCY - iNY);
				// take care of diagonal movement
				if (iMX < iMY) {iPxY = (iMX != 0) ? ((iMY/iMX)*iPx) : iPx;}
				else {iPxX = (iMY != 0) ? ((iMX/iMY)*iPx) : iPx;}
				if (iPxX >= iMX) {iPxX = Math.min(Math.ceil(iPxX), iPx);}
				if (iPxY >= iMY) {iPxY = Math.min(Math.ceil(iPxY), iPx);}
				// temporary X/Y coordinates
				if ((iCX < iNX) && (iCX + iPxX < iNX)) {iNX = iCX + iPxX;}
				if ((iCX > iNX) && (iCX - iPxX > iNX)) {iNX = iCX - iPxX;}
				if ((iCY < iNY) && (iCY + iPxY < iNY)) {iNY = iCY + iPxY;}
				if ((iCY > iNY) && (iCY - iPxY > iNY)) {iNY = iCY - iPxY;} }
			else { 
				var iMX = ((iNX - iCX) / iS), iMY = ((iNY - iCY) / iS); 
				iMX = (iMX > 0) ? Math.ceil(iMX) : Math.floor(iMX); iNX = iCX + iMX; 
				iMY = (iMY > 0) ? Math.ceil(iMY) : Math.floor(iMY); iNY = iCY + iMY; } }
		if ((parseInt(navigator.appVersion)>4 || navigator.userAgent.indexOf("MSIE")>-1) && (!window.opera)) {sS="px";}
		if (iMX != 0) {eval("oD.left = '" + iNX + sS + "'");}
		if (iMY != 0) {eval("oD.top = '" + iNY + sS + "'");} }
	var sF = "flevPersistentLayer('" + sD + "','" + sXL + "','" + sXC + "','" + sXR + "','" + sYT + "','" + sYC + "','" + sYB + "'," + iS + "," + iPx + ")";
	oD.tmpTimeout = setTimeout(sF,10);
}

function flevInitPersistentLayer() { // v3.3, Marja Ribbers-de Vroed, FlevOOware
	if (arguments.length < 8) {return;}
	var sD = arguments[0]; if (sD == "") {return;}
	var	oD = eval("MM_findObj('" + sD + "')"); if (!oD) {return;}
	var iCSS = parseInt(arguments[1]);
	var sXL = arguments[2], sXC = arguments[3], sXR = arguments[4], sYT = arguments[5], sYC = arguments[6], sYB = arguments[7];
	var iS = (arguments.length > 8) ? parseInt(arguments[8]) : 0, iPx = (arguments.length > 9) ? parseInt(arguments[9]) : 0;
	if (iCSS != 0) { if (!document.layers) {oD = oD.style;} sXL = parseInt(oD.left), sYT = parseInt(oD.top);}
	var sF = "flevPersistentLayer('" + sD + "','" + sXL + "','" + sXC + "','" + sXR + "','" + sYT + "','" + sYC + "','" + sYB + "'," + iS + "," + iPx + ")";
	eval(sF);
}
// 廣告
function advertiseDisplay(text, content) {
	var t = n = 0, count = $("#"+content+" a").size();
	
	$("#"+content+" a:not(:first-child)").hide();
	$("#"+text+" li:first-child").css({"background":"#ffffff",'color':'#000000'});
	$("#"+text+" li").click(function() {
		var i = $(this).text() - 1;
		n = i;
		
		if (i >= count) {
			return;
		}
		
		$("#"+content+" a").filter(":visible").fadeOut(500).parent().children().eq(i).fadeIn(1000);
		$(this).css({"background":"#ffffff",'color':'#000000'}).siblings().css({"background":"#000000",'color':'#ffffff'});
	});
	
	t = setInterval("advertiseAuto(text)", 500);
}
// 廣告
function advertiseAuto(text) {
	n = n >= (count - 1) ? 0 : ++n;
	$("#"+text+" li").eq(n).trigger('click');
}
/* 
---------------------------------------------------------------
  end   General
--------------------------------------------------------------- 
---------------------------------------------------------------
  start Ajax
--------------------------------------------------------------- 
*/
var loading = '<img src="images/model/loading.gif" alt="loading" />';

function ajaxGet(source, obj){
	$.ajax({
		type: 'GET',
		url: source,
		cache: false,
		timeout: 20000,
		beforeSend: function(request){
			$("#"+obj).html(loading);
		},
		error: function() {
			alert("error");
		},
		success: function(request) {
			$("#"+obj).html(request);
		}
	});
}

function ajaxGetText(source, obj){
	$.ajax({
		type: 'GET',
		url: source,
		cache: false,
		timeout: 20000,
		error: function() {
			alert("error");
		},
		success: function(request) {
			$("#"+obj).text(request);
		}
	});
}

function ajaxEvent(source, input, obj) {
	var value = $("#"+input).val();
	source += value;	
	
	ajaxGet(source, obj);
}

function ajaxForm(source, form, method, obj) {		
	$.ajax({
		type: method,
		url: source,
		data: $("#"+form).serialize(),
		cache: false,
		timeout: 20000,
		beforeSend: function(request){
			$("#"+obj).html(loading);
		},
		error: function() {
			alert("error");
		},
		success: function(request) {
			$("#"+obj).html(request);
		}
	});
}

function ajaxUpload(source, form, method, obj) {
	$("#"+form).submit();

	ajaxForm(source, form, method, obj);
}
/* 
---------------------------------------------------------------
  end   Ajax
--------------------------------------------------------------- 
*/
