	function addAjaxDataGet(sURL, sParamName, sParamValue) {
		sURL += (sURL.indexOf("?") == -1 ? "?" : "&");
		sURL += encodeURIComponent(sParamName) + "=" + encodeURIComponent(sParamValue);
		return sURL;
	}
	
	function addAjaxDataPost(sURL, sParamName, sParamValue){
		sURL += (sURL == "" ? "t=t&" : "&");
		sURL += encodeURIComponent(sParamName) + "=" + encodeURIComponent(sParamValue);
		return sURL;
	}
	
	function ajaxMessageBoxError(sString){
		$("#loadBoxMessage").html(sString);
		$("#buttonBar").html("<input type='button' onclick='javascript:ajaxMessageBoxClose();' value=' 確 定 '/>");
		$("#loadBox").show("fast");
	}
	
	function ajaxMessageBoxClose(){
		$("#loadBox").hide("fast");
		$("#buttonBar").html(" ");
	}
	
	function ajaxLoadBoxConfirmed(sString,sButton){
		$("#loadBoxMessage").html(sString);
		$("#buttonBar").html(sButton);
		$("#loadBox").show("fast");
	}
	
	function sysMessage(){
		$("sysmsg").style.display="none";
	}
	
	function inputTip(id, tiptxt){
	 	var _target = $(id);
		_target.val(tiptxt)
		.bind("focus", function(){ $(this).css("color","black"); if($(this).val()==tiptxt){$(this).val("")} })
		.bind("blur", function(){  if($(this).val()==''){ $(this).val(tiptxt); /*$(this).css("color","gray");*/ }  });
	}
	
	function ondeitTip(_target, tiptxt){
		_target.html(tiptxt)
		.bind("focus", function(){if($.trim(_target.html())==tiptxt){_target.html("")}})
		.bind("blur", function(){if($.trim(_target.html())==''){ _target.html(tiptxt);}});
	}
	
	function doAjax( _type, _url,  _data, _resid, _isfadein, _isclass ){
		$.ajax({
			type: _type,
			url: _url,
			data: _data,
			beforeSend:function(){
				$("#e7edit-content").html('<img src="/templates/images/loading.gif" class="ajaxloading">');
			},
			success: function(msg){
				if( checkTimeoutHTML(msg) ){
					$(_resid).html(msg);
					if(_isfadein){
						$(_resid).children("div.panelcont").hide().fadeIn("fast");
					}
					var sResult = _isclass.indexOf("upload");
					if(sResult !=-1){
						doPicUpload( "#fileUpload", "/admin/design/", {'t':'t','f':'d_uploadfile','d_phpsessid':getCookie('PHPSESSID')}, 'Select Files', '/templates/images/uploadify/uploadbtn.png', '110', '30', true, false );
					}
				}
		   }
		});
	}
	
	function checkTimeoutHTML(htmlDoc){
		var sResult = htmlDoc.indexOf("timeout");
		if(sResult !=-1){
			e7notice('登入時間已超時，請重新登入', 'error');
			return false;
		}else{
			return true;
		}
	}
	
	function checkTimeoutXML(xmlDoc){
		if(getNodeContent(xmlDoc,"message")!=""){
			e7notice('登入時間已超時，請重新登入', 'error');
			return false;
		}else{
			return true;
		}
	}
	
	function dofileUpload( _resid, _url, _data, _btntext, _btnimg, _width, _height, _multi, _reload ){
		if(_uFlash()){
			$(_resid).uploadify({
				'fileDataName': 'updata1',
				'uploader': '/templates/images/uploadify/uploadify.swf',
				'expressInstall': '/templates/images/uploadify/expressInstall.swf',
				'cancelImg': '/templates/images/uploadify/cancel.png',
				'script': _url,
				'scriptData': _data,
				'method': 'GET',
				'multi': _multi,
				'buttonText': _btntext,
				'buttonImg': _btnimg,
				'width': _width,
				'height': _height,
				'wmode':'transparent',
				'displayData': 'speed',
	   			'queueID': 'fileQueue',
				'auto':true,
				'simUploadLimit': 2,
				'onSelectOnce':function(event,data) { 
					
				},
				'onComplete':function(event,queueId,fileObj,response,data){
					response=trim(response);
					if(response !="error"){
						$("#fileQueue").after(response);
					}else{
						e7notice(fileObj.name+"檔案名稱重覆", 'error');
					}
				},
	            'onAllComplete':function(event,data){
		            $('#filelist li').hover(
						function(){
							$(this).addClass('over');
						},
						function(){
							$(this).removeClass('over');
						}
					);
			
					$('#filelist .linkpanel input').click(function(){
						this.select();
						if(window.clipboardData){
						 	window.clipboardData.setData("Text", this.value);
					   }
					});
		          	e7notice("全部上傳完成", 'succes');
	            }
			});
		}else{
			$("#fileUpload").html('您好，您可能已關閉 JavaScript 功能，或 Adobe Flash Player 的版本過舊。<a href="http://get.adobe.com/flashplayer/" target="_black">取得最新版本的 Flash Player。</a>');
		}
	}
	
	function doPicUpload( _resid, _url, _data, _btntext, _btnimg, _width, _height, _multi, _reload ){
		if(_uFlash()){
			$(_resid).uploadify({
				'fileDataName': 'updata1',
				'uploader': '/templates/images/uploadify/uploadify.swf',
				'expressInstall': '/templates/images/uploadify/expressInstall.swf',
				'cancelImg': '/templates/images/uploadify/cancel.png',
				'script': _url,
				'scriptData': _data,
				'method': 'GET',
				'multi': _multi,
				'buttonText': _btntext,
				'buttonImg': _btnimg,
				'width': _width,
				'height': _height,
				'wmode':'transparent',
				'displayData': 'speed',
	 			'fileExt': '*.jpg;*.gif;*.jpeg;*.png',
	   			'fileDesc': '請選擇*.jpg、*.jpeg、*.gif或*.png',
	   			'queueID': 'fileQueue',
				'auto':true,
				'simUploadLimit': 2,
				'onSelectOnce':function(event,data) { 
					if(data.fileCount>0){
						var fileCount = $("#filelist li").length;
						var sWidth = (116*(data.fileCount+fileCount+2))+125;
						$("#e7upload .list-scroll").attr("style","width:"+sWidth+"px;");
					}
				},
				'onComplete':function(event,queueId,fileObj,response,data){
					response=trim(response);
					if(response !="error"){
						$("#fileQueue").after(response);
					}else{
						e7notice(fileObj.name+"檔案名稱重覆", 'error');
					}
				},
	            'onAllComplete':function(event,data){
		            
		            $("#e7upload div.theme").click(function(){ return false; });
					$("#e7upload div.theme").draggable({
				 		cursor        : 'move',
				 		opacity       : 0.8,
				 		helper        : function(){ return '<span class="img">' + $(this).find('span.img').html() + "</span>"; },
				 		revert        : 'invalid',
				 		revertDuration: 300,
						appendTo      : 'body',
						zIndex        : 9992
					});
					$(".del").click(function (){
						var sPic = $(this).parents("li").attr("id");
						var sData ="";
						sData = addAjaxDataPost(sData,"f","d_delfile");
						sData = addAjaxDataPost(sData,"f_d_filename",$(this).find("a").attr("id"));
						$.ajax({
								type:"POST",
								url:"/admin/design/",
								dataType:"html",
								data:sData,
								async:true,
								success:function(){
									$("#"+sPic).remove();
									e7notice('圖檔已刪除', 'succes');
								},
								timeout:10000
						});
					});
		          	e7notice("全部上傳完成", 'succes');
	            }
			});
		}else{
			$("#fileUpload").html('您好，您可能已關閉 JavaScript 功能，或 Adobe Flash Player 的版本過舊。<a href="http://get.adobe.com/flashplayer/" target="_black">取得最新版本的 Flash Player。</a>');
		}
	}
	
	function e7notice(_txt, _type){
		jQuery.noticeAdd({
	        text: _txt,
	        stay: false,
	        stayTime: 10000,
	        type: _type,
	        closebtn:'<img src="/templates/images/manage/notice_close.png"  width="26" height="26"/>'
	    });
	}
	
	function getUrl(_e){
		if($.browser.msie){
			window.location = $(_e).attr("href");
		}
	}
	
	// 刪除字串前後空白
	function trim(x){
	     return x.replace(/^\s+|\s+$/g,"");
	}
	
	// 刪除字串左邊空白
	function ltrim(x){
	     return x.replace(/(^\s*)/g, '');
	}
	
	// 刪除字串右邊空白
	function rtrim(x){
	     return x.replace(/(\s*$)/g, '');
	}
	
	// 設定Cookie值
	function setCookie(name, value){
		var expdate = new Date();
		var argv = setCookie.arguments;
		var argc = setCookie.arguments.length;
		var expires = (argc > 2) ? argv[2] : null;
		var path = (argc > 3) ? argv[3] : null;
		var domain = (argc > 4) ? argv[4] : null;
		var secure = (argc > 5) ? argv[5] : false;
		if(expires!=null) expdate.setTime(expdate.getTime() + ( expires * 1000 ));
		document.cookie = name + "=" + escape (value) +((expires == null) ? "" : ("; expires="+ expdate.toGMTString()))
		+((path == null) ? "" : ("; path=" + path)) +((domain == null) ? "" : ("; domain=" + domain))
		+((secure == true) ? "; secure" : "");
	}
	
	// 取得Cookie的原始值
	function getCookie(name){
		var arg = name + "=";
		var alen = arg.length;
		var clen = document.cookie.length;
		var i = 0;
		while (i < clen){
			var j = i + alen;
			if (document.cookie.substring(i, j) == arg)
			return getCookieVal (j);
			i = document.cookie.indexOf(" ", i) + 1;
			if (i == 0) break;
		}
		return null;
	}		
	
	// 取得Cookie解碼後的值
	function getCookieVal(offset){
		var endstr = document.cookie.indexOf (";", offset);
		if (endstr == -1)
		endstr = document.cookie.length;
		return unescape(document.cookie.substring(offset, endstr));
	}
	
	// 刪除Cookie
	function delCookie(name){
		var exp = new Date();
		exp.setTime (exp.getTime() - 1);
		var cval = getCookie(name);
		document.cookie = name + "=" + cval + "; expires="+ exp.toGMTString();
	}
	
	function print_r(x){  
      	if(x.constructor!=Array)   {  
         	alert("!Array");  
      	}else{  
          	for(i=1;i<x.length;i++)   {  
            	document.write(x[i]+"<br>");  
          	}  
      	}  
    }
    
    // 取得AJAX XML節點內容及資料    
    function getNodeValue(xmldoc,key,label){
		var na=[],l;
		var xml=xmldoc.getElementsByTagName(key);
		if(xml.length>0){
			for (var i=0;i<xml.length;i++){
				l=Math.max(na.length,na.length-1);
				if(xml[i].getAttribute(label)!='' && xml[i].getAttribute(label)!=null){
					na[l]=[xml[i].getAttribute(label),xml[i].childNodes[0].nodeValue];
				}else{
					na[l]=[key,xml[i].childNodes[0].nodeValue];
				}
			}
		}
		return na;
    }
    
    // 取得AJAX XML節點內容
    function getNodeContent(xmldoc,key){
	    var na=[],l;
		var xml=xmldoc.getElementsByTagName(key);
		if(xml.length>0){
			for (var i=0;i<xml.length;i++){
				l=Math.max(na.length,na.length-1);
				if(xml[i].childNodes[0]!=null){
					na[l]=[xml[i].childNodes[0].nodeValue];
				}
			}
		}
		return na;
    }
	
    // 取得AJAX XML三層式節點內容
	function getThreeNodeContent(xmldoc,key,label) {
		/*
		取得節點內容值
		輸入項:
			xmldoc	:xml文件
			key	:標籤名稱
			label	:子節點屬性名稱,用於取得屬性值
		輸出項:
			Array([a,b])
			a=標籤名稱, 或標籤中指定屬性值
			b=標籤字串值
			例:
			<product>
			<name value="產品">Sony Handy Cam</name>
			<price value="單價">21000</name>
			</product>
			getNodeContent(xml,'product') 回傳值為[name,Sony Handy Cam][price,21000]
			getNodeContent(xml,'product','value') 回傳值為[產品,Sony Handy Cam][單價,21000]
	
		*/
		var na=[],va=[],l;
		var outstr='';
	
		key=(typeof key=='undefined')?getNodeName(xmldoc,false):key;
	
		for (var i=0;i<xmldoc.getElementsByTagName(key).length;i++){
			var xml=xmldoc.getElementsByTagName(key)[i];
			na=getNodeName(xml,false);	//必需是唯一值,因為接下來的動作,會依序讀出
	
			for (var j=0;j<na.length;j++){
				var xmlk=xml.getElementsByTagName(na[j]);
				for (var k=0;k<xmlk.length;k++){
					l=Math.max(va.length,va.length-1);
					if(typeof label!='undefined'){
						if(typeof xmlk[k].getAttribute(label)!=null && typeof xmlk[k].getAttribute(label)!=''){
							va[l]=[xmlk[k].getAttribute(label),xmlk[k].childNodes[0].nodeValue];
						}else{
							va[l]=[na[j],xmlk[k].childNodes[0].nodeValue];
						}
					}else{
						va[l]=[na[j],xmlk[k].childNodes[0].nodeValue];
					}
					outstr+=va[l]+'\n';
				}
			}
		}
	
		return va
	}
	
	function getNodeName(xmldoc,duplicate){
		/*
		取得子節點標籤名稱
		輸入項:
			xmldoc		:xml文件
			duplicate	:boolean,允許重複項,預設為 true
		輸出項:
			Array()
			以第一層子節點標籤名稱組成的陣列
		*/
	
		var d;
		var na=[];

		d=(typeof duplicate=='undefined')?true:duplicate;
	
		for (var i=0;i<xmldoc.childNodes.length;i++){
			if (xmldoc.childNodes[i].hasChildNodes()){
				na=na.concat(xmldoc.childNodes[i].tagName);
			}
		}

		na=(d)?na:na.unique();

		return na
	}
	
	function _uFlash() { 
		var f = false, n = navigator;
		if (n.plugins && n.plugins.length) {
		    for (var ii = 0; ii < n.plugins.length; ii++) {
		          if (n.plugins[ii].name.indexOf('Shockwave Flash') != -1) { 
		              f = true; 
		              break; 
		         } 
		    } 
		}else if(window.ActiveXObject){ 
		     for (var ii = 15; ii >= 2; ii--) { 
		        try { 
		           var fl = eval("new ActiveXObject('ShockwaveFlash.ShockwaveFlash." + ii + "');"); 
		           if (fl) { 
		               f = true; 
		              break; 
		           }
		        } catch (e) { } 
		   } 
		}
		return f; 
	} 

