var is_webtv = navigator.userAgent.indexOf('webtv') != -1;
var is_kon = navigator.userAgent.indexOf('konqueror') != -1;
var is_mac = navigator.userAgent.indexOf('mac') != -1;
var is_saf = navigator.userAgent.indexOf('applewebkit') != -1 || navigator.vendor == 'Apple Computer, Inc.';
var is_opera = navigator.userAgent.indexOf('opera') != -1 && opera.version();
var is_moz = (navigator.product == 'Gecko' && !is_saf) && navigator.userAgent.substr(navigator.userAgent.indexOf('firefox') + 8, 3);
var is_ns = navigator.userAgent.indexOf('compatible') == -1 && navigator.userAgent.indexOf('mozilla') != -1 && !is_opera && !is_webtv && !is_saf;
var is_ie = (navigator.userAgent.indexOf('msie') != -1 && !is_opera && !is_saf && !is_webtv) && navigator.userAgent.substr(navigator.userAgent.indexOf('msie') + 5, 3);


function CheckAll(form)  {
	for (var i=0;i<form.elements.length;i++) {
		var e = form.elements[i];
		if(e.type == "checkbox") {
			if(e.name != "chkall" && e.disabled!=true) {e.checked = form.chkall.checked;}
		}
	}
}

function isDateTime(dt) {
	try {
		var arr=dt.split(/\D/);
		var d=new Date(dt);
		if (arr.length==6) {
			return	Number(arr[0])==d.getFullYear() && Number(arr[1])==d.getMonth()+1 && Number(arr[2])==d.getDate() && Number(arr[3])==d.getHours() && Number(arr[4])==d.getMinutes() && Number(arr[5])==d.getSeconds();
		} else {
			return	Number(arr[0])==d.getFullYear() && Number(arr[1])==d.getMonth()+1 && Number(arr[2])==d.getDate();
		}
	}catch(x){return false;}
}

function submitCheck(frm) {
    var tmp_value,err,m_chk,m_len = frm.elements.length;
	for(i=0;i<m_len;i++)
	{
		if(frm.elements[i].attributes.chk)	{
			var m_chk= frm.elements[i].attributes.chk.value;
			var tmp_value =  frm.elements[i].value.replace(/^\s*/,"");
			var tmp_value =  tmp_value.replace(/\s*$/,"");
			var regexp = new RegExp("\/.+\/","i");
			var matched = m_chk.match(regexp);
			var matchStr="";
			if (matched) {
				matchStr = matched[0];
				matchStr = matchStr.replace(/\//g,"");
				m_chk = m_chk.replace(regexp,"");
			}
			if(matchStr != "") {
				var othcr;
				try {othcr=frm.elements[i].attributes.chkoth.value;}catch(e) {othcr=''}
				if(othcr=="c/r") {
					var c_r_check = false;
					for(k=0;k<=m_len;k++) {
						try {
							if(frm.elements[k].name==frm.elements[i].name) {
								if (frm.elements[k].checked==true) {c_r_check = true;}
							}
						}catch(x){}
					}
					if (!c_r_check) {
						alert("【" + ((m_chk)?m_chk:"") + "】選項尚未選擇！");
						frm.elements[i].focus(); 
						return false;	
					}
				} else {
					if(!tmp_value && matchStr.charAt(0)!="0")	{
						alert("【" + ((m_chk)?m_chk:"") + "】內容不可空白！");
						frm.elements[i].focus(); 
						return false;
					}
					regexp = new RegExp("^.{" + matchStr + "}$", "g");
					if (!regexp.test(tmp_value)) {
						var ss="【" + ((m_chk)?m_chk:"") + "】字元數不正確！"
						if (matchStr.indexOf(",")>0){ss+="必須在〔" + matchStr.replace(",","~") + "〕字元之間！";}else{ss+="必須是〔" + matchStr.replace(",","~") + "〕個字元！";}
						alert(ss);
						frm.elements[i].select(); 
						return false;
					}
				}
			} else {
				if(!tmp_value)	{
					alert("【" + ((m_chk)?m_chk:"") + "】內容不可空白！");
					frm.elements[i].focus(); 
					return false;
				}
			}
			

			if(frm.elements[i].attributes.chkoth) {
				if(tmp_value) {			
					var m_chkoth= frm.elements[i].attributes.chkoth.value;
					if (m_chkoth=="n") {
						if(!tmp_value.match(/^[0-9]*\.?[0-9]+$/))  {
							alert("【" + ((m_chk)?m_chk:"") + "】內容只能接受數字格式！");
							frm.elements[i].select(); 
							return false;
						}
					}
					if (m_chkoth=="e") {
						if(!tmp_value.match(/^([\w\.%-]+)\@([\w%-]+\.[\w\.%-]+)$/i))  {
							alert("【" + ((m_chk)?m_chk:"") + "】E-MAIL格式錯誤！請重新輸入");
							frm.elements[i].select(); 
							return false;
						}
					}
					if (m_chkoth=="d") {
						if (!isDateTime(tmp_value)) {
						    alert("【" + ((m_chk)?m_chk:"") + "】內容不是正確的日期格式！");
							frm.elements[i].select(); 
							return false;
						}
					}
					if (m_chkoth=="pid") {
						var pidChk=true;
						tmp_value = tmp_value.toUpperCase();
						if(!tmp_value.match(/^[A-Z](1|2)\d{8}$/i))  { pidChk=false; }
						else {
							 var lAreaCode = tmp_value.substr(0,1);
							 var lAreaNo = "ABCDEFGHJKLMNPQRSTUVXYWZIO".search(lAreaCode) + 10;
							 var pID = lAreaNo.toString(10) + tmp_value.substring(1,10);
							 var lCheckSum = parseInt(pID.substr(0,1),10) + parseInt(pID.substr(10,1),10);
							 for(j=1;j<=9;j++) { lCheckSum = lCheckSum + parseInt(pID.substr(j,1),10)*(10-j); }
							 if ((lCheckSum % 10) != 0) { pidChk=false; }
						}
						if(!pidChk) {
							alert("【" + ((m_chk)?m_chk:"") + "】內容不是有效的身份證號碼！");
							frm.elements[i].select(); 
							return false;
						}
					}
				}					
			}			
		}		
	}
	return true;
}
function sureDelete(id,selfURL,oldpage) {
	if(confirm('該操作不可恢復！\n\n確實刪除選定的資料列？')) {
		var s=selfURL;
		if(s.indexOf("?")>0) {s=s + "&";} else {s=s + "?";}
		s=s + "action=del&oldpage=" + oldpage + "&id=" + id + "&scrl=" + document.body.scrollTop;
		window.location=(s);
	}
}
function SetCookie(name,value){
     var argv=SetCookie.arguments;
     var argc=SetCookie.arguments.length;
     var expires=(2<argc)?argv[2]:null;
     var path=(3<argc)?argv[3]:null;
     var domain=(4<argc)?argv[4]:null;
     var secure=(5<argc)?argv[5]:false;
     document.cookie=name+"="+escape(value)+((expires==null)?"":("; expires="+expires.toGMTString()))+((path==null)?"":("; path="+path))+((domain==null)?"":("; domain="+domain))+((secure==true)?"; secure":"");
}
function GetCookie(name) {
	var cookie_start = document.cookie.indexOf(name);
	var cookie_end = document.cookie.indexOf(";", cookie_start);
	return cookie_start == -1 ? '' : unescape(document.cookie.substring(cookie_start + name.length + 1, (cookie_end > cookie_start ? cookie_end : document.cookie.length)));
}

function getInnerTEXT(temp) {
	if(temp.length != 0) {
		//temp=temp.replace(/<[^>]*>/g," ");
		temp=temp.replace(/<.+?>/g," ");
	}
	if(temp.length >=100) temp=temp.substr(0,99);
	return (temp);
}


function addBookmarkForBrowser()
{ 
  if (document.all) 
  { 
    window.external.AddFavorite(document.location.href, document.title); 
  }
  else
  { 
    var title = document.title;
    if( title == "" )
    {
      title = document.location.href;
      title = title.replace(new RegExp("/","g"),"-");
      title = title.replace(new RegExp("[\*\?\^:&]","g"),"");
    } 
    window.sidebar.addPanel(title, document.location.href,"");
  } 
}

function $(id) {
	var rtnStr='';
	try {
		rtnStr = document.getElementById(id);
	}catch(e) {rtnStr=''}
	return rtnStr;
}

function saveData(data, del) {
	if(!data && isUndefined(del)) {
		return;
	}
	if(typeof wysiwyg != 'undefined' && typeof editorid != 'undefined' && typeof bbinsert != 'undefined' && bbinsert && $(editorid + '_mode') && $(editorid + '_mode').value == 1) {
		data = html2bbcode(data);
	}
	if(is_ie) {
		try {
			var oXMLDoc = textobj.XMLDocument;
			var root = oXMLDoc.firstChild;
			if(root.childNodes.length > 0) {
				root.removeChild(root.firstChild);
			}
			var node = oXMLDoc.createNode(1, 'POST', '');
			var oTimeNow = new Date();
			oTimeNow.setHours(oTimeNow.getHours() + 24);
			textobj.expires = oTimeNow.toUTCString();
			node.setAttribute('message', data);
			oXMLDoc.documentElement.appendChild(node);
			textobj.save('Discuz!');
		} catch(e) {}
	} else if(window.sessionStorage) {
		try {
			sessionStorage.setItem('Discuz!', data);
		} catch(e) {}
	}
}

function loadData() {
	var message = '';
	if(is_ie) {
		try {
			textobj.load('Discuz!');
			var oXMLDoc = textobj.XMLDocument;
			var nodes = oXMLDoc.documentElement.childNodes;
			message = nodes.item(nodes.length - 1).getAttribute('message');
		} catch(e) {}
	} else if(window.sessionStorage) {
		try {
			message = sessionStorage.getItem('Discuz!');
		} catch(e) {}
	}

	if(in_array((message = trim(message)), ['', 'null', 'false', null, false])) {
		alert(lang['post_autosave_none']);
		return;
	}
	if((typeof wysiwyg == 'undefined' || !wysiwyg ? textobj.value : editdoc.body.innerHTML) == '' || confirm(lang['post_autosave_confirm'])) {
		if(typeof wysiwyg == 'undefined' || !wysiwyg) {
			textobj.value = message;
		} else {
			editdoc.body.innerHTML = bbcode2html(message);
		}
	}
}

function deleteData() {
	if(is_ie) {
		saveData('', 'delete');
	} else if(window.sessionStorage) {
		try {
			sessionStorage.removeItem('Discuz!');
		} catch(e) {}
	}
}

function trim(str) {
	return (str + '').replace(/(\s+)$/g, '').replace(/^\s+/g, '');
}

function DateAdd(interval,number,date){
	if (typeof(date)=="string"){
		date = date.split(/\D/);
		--date[1];
		eval("var date = new Date("+date.join(",")+")");
	}
	if (typeof(date)=="object"){
		var date = date
	}
	switch(interval.toLowerCase()){
		case "y": return new Date(date.setFullYear(date.getFullYear()+number));
		case "m": return new Date(date.setMonth(date.getMonth()+number));
		case "d": return new Date(date.setDate(date.getDate()+number));
		case "w": return new Date(date.setDate(date.getDate()+7*number));
		case "h": return new Date(date.setHours(date.getHours()+number));
		case "n": return new Date(date.setMinutes(date.getMinutes()+number));
		case "s": return new Date(date.setSeconds(date.getSeconds()+number));
		case "l": return new Date(date.setMilliseconds(date.getMilliseconds()+number));
	} 
}

function DateDiff(interval,date1,date2){
	var long = date2.getTime() - date1.getTime(); //相差毫秒
	switch(interval.toLowerCase()){
		case "y": return parseInt(date2.getFullYear() - date1.getFullYear());
		case "m": return parseInt((date2.getFullYear() - date1.getFullYear())*12 + (date2.getMonth()-date1.getMonth()));
		case "d": return parseInt(long/1000/60/60/24);
		case "w": return parseInt(long/1000/60/60/24/7);
		case "h": return parseInt(long/1000/60/60);
		case "n": return parseInt(long/1000/60);
		case "s": return parseInt(long/1000);
		case "l": return parseInt(long);
	}
}

Date.prototype.formatDate = function(format) {
    var date = this;     
    if (!format)       
        format="yyyy/MM/dd";                     
    var month = date.getMonth() + 1;     
    var year = date.getFullYear();          
    format = format.replace("MM",month.toString().padL(2,"0"));    
               
    if (format.indexOf("yyyy") > -1)         
        format = format.replace("yyyy",year.toString());     
    else if (format.indexOf("yy") > -1)         
        format = format.replace("yy",year.toString().substr(2,2));      
     
    format = format.replace("dd",date.getDate().toString().padL(2,"0"));      
    var hours = date.getHours();            
     
    if (format.indexOf("t") > -1) {        
        if (hours > 11)         
            format = format.replace("t","pm")        
        else         
            format = format.replace("t","am")     
    }     
     
    if (format.indexOf("HH") > -1)         
        format = format.replace("HH",hours.toString().padL(2,"0"));     
     
    if (format.indexOf("hh") > -1) {         
        if (hours > 12) hours - 12;         
        if (hours == 0) hours = 12;        
        format = format.replace("hh",hours.toString().padL(2,"0"));             
    }     
     
    if (format.indexOf("mm") > -1)        
        format = format.replace("mm",date.getMinutes().toString().padL(2,"0"));     
     
    if (format.indexOf("ss") > -1)        
        format = format.replace("ss",date.getSeconds().toString().padL(2,"0"));     
     
    return format; 
}

String.prototype.padL = function(width,pad) {     
    if (!width ||width<1) return this;
    if (!pad) pad=" ";
    var length = width - this.length
    if (length < 1) return this.substr(0,width);
    return (String.repeat(pad,length) + this).substr(0,width);     
}

String.prototype.padR = function(width,pad){     
   if (!width || width<1) return this;
   if (!pad) pad=" ";
   var length = width - this.length
   if (length < 1) this.substr(0,width); return (this + String.repeat(pad,length)).substr(0,width); 
}
 
String.repeat = function(chr,count) {
    var str = "";      
    for(var x=0;x<count;x++) { str += chr };
    return str; 
}


function unicode(s){ 
 var len=s.length; 
 var rs=""; 
 for(var i=0;i<len;i++){ 
 var k=s.substring(i,i+1); 
 rs+="&#"+s.charCodeAt(i)+";"; 
 } 
 return rs; 
} 

function runicode(s){ 
 var k=s.split(";"); 
 var rs=""; 
 for(i=0;i<k.length;i++){ 
 var m=k.replace(/&#/,""); 
 rs+=String.fromCharCode(m); 
 } 
 return rs; 
}
