//return IE bowser flag
function is_IE() {
	return !( (navigator.appName).match(/Internet Explorer/) == null ) ;
}

//add event listener for evtObj
function addEvent(evtObj, evtName, func, useCapture) {
	if(is_IE()) evtObj.addEventListener = addEventListener;
	evtObj.addEventListener(evtName, func, useCapture);
}

//add event listener for evtName
function addEventListener(evtName, func, useCapture) {
	if(typeof(this["on"+evtName]) == "function") {
		if(this['_pre'+evtName]==null)
			this['_pre'+evtName] = [];
		this['_pre'+evtName].push(this["on"+evtName]);
	}
	this["on"+evtName] = func;
	if (useCapture) {
		//?? document.body.setCapture();
	}
}

//get URL parame to Array
function getURLParams()
{
	var urlString = new String(window.location);
	urlString = urlString.gsub('#', "");
	var urlIndex = urlString .indexOf('?');
	if(urlIndex == -1) return null;
	
	var paramStr = urlString .substr(urlIndex+1);
	var args = paramStr.split('&');
	for(var i=0; i<args.length; i++)
	args[i] = args[i].split('=');

	return args;
}

//get URL value by key
function getURLParamValue(key)
{
	
	if(key == null) return ;

	var args = getURLParams();
	if(args == null) return args;

	for(var i=0; i< args.length; i++)
	if(args[i][0] == key) return args[i][1];
}

function unloadTmpData(event)
{
	var tmpid = getURLParamValue("tmp");
	if(tmpid!=null) {
	
		//刪除暫存檔
		var URL = "?op="+getURLParamValue("op")+"&act=DeleteRow&tno="+getURLParamValue("tno");
		new Ajax.Request(URL, {
			asynchronous: false,
			method: "POST",
			parameters: "cb[0]="+getURLParamValue("i"),
			onSuccess: function(transport) {
				//alert(transport.responseText);
			}
		});
	}
}

function open_unloadTmpData(flag) {
	if(flag != null || flag==false) {
		if(is_IE()) {
			window.detachEvent('onunload', unloadTmpData);
		}
		else {
			window.onunload = function () {};
		}
	}
	else {
		if(is_IE()) { 
			window.attachEvent("onunload", unloadTmpData);
		}
		else {
			window.onunload = unloadTmpData;
		}
	}
}

//extend part of URL
function inheritanceParamers(arrParameter, arrNotInheritance, inheritance_flag)
{
	var args = (arrParameter == null) ? new Array() : arrParameter;
	arrNotInheritance = (arrNotInheritance == null) ? new Array() : arrNotInheritance;
	arrNotInheritance.push('set_page');
	//extend url?
	inheritance_flag = (inheritance_flag == null || inheritance_flag==true) ? true : inheritance_flag;

	if(inheritance_flag) {
		var presently = getURLParams();
		if(presently!=null) {
			presently.each(function (ap, api) {
				var exist_flag = false;
				//reduce noextend data
				arrNotInheritance.each(function (ani, anii){
					if(ap[0] == ani) {
						exist_flag = true;
						$break;
					}
				});
	
				if(!exist_flag) {
					args.each(function (aa, aai) {
						if(ap[0] == aa[0]) {
							exist_flag = true;
							$break;
						}
					});
				}
	
				if(!exist_flag) args[args.length] = ap;
			});
		}
	}

	args.each(function (arrRow, index) {
		args[index] = arrRow.join('=');
	});
	
	return args.join('&');
}

//to same Url,but different params
function gotoSameUrlDifferentParameter(arrParameter, arrNotInheritance, inheritance_flag, blackflag, openObj, checkForm)
{
	var argStr = inheritanceParamers(arrParameter, arrNotInheritance, inheritance_flag);
	var focus_flag = true;
	blackflag = (blackflag) ? true : false;
	
	var urlString = new String(window.location);
	var urlIndex = urlString .indexOf('?');
	var URL = urlString.substring(0, urlIndex) + "?" + argStr;
	
	var openflag = false;
	var openName = "";
	var openData = [];
	if(openObj!=null) {
		openflag = true;
		for(var i in openObj) {
			if(i=="name") {
				openName = (openObj[i]==null||openObj[i]=="") ? "gotoSameUrlDifferentParameter" : openObj[i];
			}
			else if(i=="must_focus") {
				focus_flag = (openObj[i]==0 || openObj[i]=="0") ? false : focus_flag;
			}
			else {
				openData.push(i+"="+openObj[i]);
			}
		}
	}

	//alert(URL);
	
	if(blackflag) {
		var wo = null;
		if(openflag)
			wo = window.open(URL, openName, openData.join(','));
		else
			wo = window.open(URL);
			
		if(checkForm!=null && typeof(checkForm) == "function")
			Event.observe($(wo), 'unload', checkForm);
			
		//超級焦點視窗, 如果使用者不關閉此視窗, 會強制回到這個視窗
//		if(focus_flag) {
//			Event.observe($(wo), 'blur', function () {
//				//alert("請先關閉這個視窗");
//				wo.focus();
//			});
//		}
//		wo.focus();
	}
	else
		window.location.replace(URL);
}