var preset_sensor = false;
var previous_replyhlno = 0;
var arrPresetFunc = [];
var msgs = ['在沒有附加檔案的情況下，請寫入內文', '附加檔案為系統不支援的格式', '偵測到您有輸入櫻花日文假名的可能性，將自動為您轉換'];

/* getElementById shortcut */
function $g(i){ return document.getElementById(i); }

/* 取出Cookies的值並填入表單 */
function l1(){
	var N = getCookie('namec'), E = getCookie('emailc'), obj;
	if((obj=$g('fname'))){ obj.value = N; }
	if((obj=$g('femail'))){ obj.value = E; }
}

/* 填入表單密碼 */
function l2(){
	var P = getCookie('pwdc'), d = document, forms_length = d.forms.length;
	for(var i = 0; i < forms_length; i++){
		if(d.forms[i].pwd){ d.forms[i].pwd.value = P; }
	}
}

/* 讀取Cookies值 */
function getCookie(key){
	var tmp1, tmp2, xx1 = 0, xx2 = 0, xx3;
	tmp1 = ' '+document.cookie+';';
	var len = tmp1.length;
	while(xx1 < len){
		xx2 = tmp1.indexOf(';', xx1);
		tmp2 = tmp1.substring(xx1 + 1, xx2);
		xx3 = tmp2.indexOf('=');
		if(tmp2.substring(0, xx3)==key){ return unescape(tmp2.substring(xx3 + 1, xx2 - xx1 - 1)); }
		xx1 = xx2 + 1;
	}
	return '';
}

/* 寫入Cookies值 */
function setCookie(name, value){
	var exp = new Date();
	exp.setTime(exp.getTime() + 86400000 * 7);
	document.cookie = name+'='+escape(value)+'; expires='+exp.toGMTString();
}

/* 前端檢查表單機制 */
function check_submit(){
	if($g('fname').value){ setCookie('namec', $g('fname').value); } // Cookies寫入名稱

	var upfilevalue, j, ext_allowed, ext_length;
	try{
		if(!$g('fupfile')){ return true; }
		upfilevalue = $g('fupfile').value;
		if(!upfilevalue && !$g('fcom').value){ alert(msgs[0]); return false; }
		if(upfilevalue){
			ext_allowed = 0; ext_length = ext.length;
			for(j = 0; j < ext_length; j++){
				if(upfilevalue.substr(upfilevalue.length - 3, 3).toUpperCase()==ext[j]){
					ext_allowed = 1;
					break;
				}
			}
			if(!ext_allowed){ alert(msgs[1]); return false; }
		}
		if(window.clipboardData){ document.forms[0].upfile_path.value = upfilevalue; } // IE的Senddata為完整路徑名稱
		document.forms[0].sendbtn.disabled = true;
	}catch(e){  }
}

/* 動態改變超連結的視窗目標 */
function fixalllinks(){
	if(!document.getElementsByTagName){ return; }
	var anchor, anchors = document.getElementsByTagName('a');
	var anchors_length = anchors.length;
	for(var i = 0; i < anchors_length; i++){
		anchor = anchors[i];
		if(anchor.getAttribute('href')){
			if(anchor.getAttribute('rel') == '_top'){ anchor.target = '_top'; }
			if(anchor.getAttribute('rel') == '_blank'){ anchor.target = '_blank'; }
		}
	}
}

/* 顯示發文表單 */
function showform(duration){
	if(!$g("postform")) return;
	if($ && duration){ 
		$('#postform').slideToggle(duration);
	}else{
		$g("postform").className = 'contents';
		$g("postform_tbl").className = '';
	}
	$g("hide").className = 'show';
	$g("show").className = 'hide';
}

/* 隱藏發文表單 */
function hideform(duration){
	if(!$g("postform")) return;
	if($ && duration){
		$('#postform').slideUp(duration);
	}else{
		$g("postform").className = 'hide';
		$g("postform_tbl").className = 'hide';
	}
	$g("hide").className = 'hide';
	$g("show").className = 'show';
}

/* 內文引用編號 */
function quote(text){
	try{ $g('fcom').focus(); }catch(e){  }
	$g('fcom').value += '>>No.' + text + "\r\n";
}

/* 回應背景標亮 / 取消 */
function replyhl(id, isrecover){
	var rpydiv = $g('r'+id);
	if(rpydiv){
		if(isrecover){
			if(isIE())
				rpydiv.className = rpydiv.className.replace(' reply_hl2', '');
			else
				rpydiv.className = rpydiv.className.replace(' reply_hl', '');
		}else{
			if(previous_replyhlno){ replyhl(previous_replyhlno, true); }
			previous_replyhlno = id;
			if(isIE())
				rpydiv.className += ' reply_hl2';
			else
				rpydiv.className += ' reply_hl';
		}
	}
}


/* 掛載當執行 preset() 後跟著執行的函式 */
function hookPresetFunction(func){
	if(typeof func == 'function'){ arrPresetFunc.push(func); }
}

/* 載入後執行的函式 */
function preset(){
	if(preset_sensor){ return; } // 執行一遍即可
	var i, l = arrPresetFunc.length, f;
	preset_sensor = true; // 設定執行旗標
	fixalllinks(); // 修正連結目標
	for(i = 0; i < l; i++){ f = arrPresetFunc[i]; if(typeof f=='function'){ f(); } }
	var url = location.href;
	if(url.indexOf('?res=')){
		if(url.match(/no=([0-9]+)/) || url.match(/#[rqs]([0-9]+)$/)){ replyhl(RegExp.$1); } // 回應標亮
		if(url.match(/#s([0-9]+)$/)){ quote(RegExp.$1); } // 回應引用
	}
}
window.onload = preset; // 避免 HTML 頁尾未執行的可能


///////// GAdsense related functions //////////

var ad_ptr = 0; //Math.round(Math.random()*100);
var ad_ex = readLocalCookie('ad').split(' ');
var ad_list = shuffle(['3241889706', '9995345952', '8164963221']);
var ad_cnt = ad_list.length;

function show_ad(name)
{	
	if(location.host.indexOf('komica')>=0) return;
	if(false && name && ad_ptr<ad_cnt && ad_ex.indexOf(name)>=0){
		ad_list.push(ad_list[ad_ptr]);
		ad_ptr++;
		return;
	}
	if(ad_ptr>=ad_list.length) return;

	//ad_ptr = (ad_ptr+1)%ad_list.length;	
	if(name && g(name)) g(name).title = ad_list[ad_ptr];
	try{
	document.write('<script type="text/javascript">google_ad_client="pub-5290345828514130"; google_ad_width=120; google_ad_height=450; google_ad_slot = "' + ad_list[ad_ptr] + '";</script'+'><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></'+'script>');
	}catch(e){};
	//alert(name+': '+ad_list[ad_ptr]);
	ad_ptr++;
}

//function show_ad2(name){}

///////// Pixmicat! related functions //////////

function remove(elem)
{
	if(!elem) return;
	elem.deleted = true;
	if($)
		$(elem).fadeOut('fast');
	else
		elem.style.display = 'none';
}
function clearMarks()
{
	try{
		for(var i=0; i<markPost.list.length; i++)
		{
			var t = g('p'+markPost.list[i]); 
			if(!t) continue;
			t.parentNode.style.backgroundColor = '';
			t.parentNode.style.border = '';
		}
		markPost.list = null;
	}catch(e){}
}
function markPost(no)
{
	if(!no) return;
	if (typeof markPost.list != 'object' || !markPost.list)
		markPost.list = new Array();

	g('p'+no).parentNode.style.backgroundColor = '#FDE';
	g('p'+no).parentNode.style.border = '#A88 1px solid';

	for(var i=markPost.list.length-1;i>=0;i--){
		if(markPost.list[i]==no){
			markPost.list.splice(i,1);
			g('p'+no).parentNode.style.backgroundColor = '';
			g('p'+no).parentNode.style.border = '';
			no = 0;
			break;
		}
	}
	if(no) markPost.list.push(no);		
}
function deletePost(no)
{
	if(!no) return;
	$.ajax({
		url: 'pixmicat.php?mode=usrdel&no='+no, 
		type: 'GET',
		success: function(x){
			if(x.indexOf('成功')>0) remove(g('p'+no).parentNode);
		}
	});
}

function deletePosts()
{
	if (typeof markPost.list != 'object' || !markPost.list || !markPost.list.length){
		alert('請標記出要刪除的文章.');
		return;
	}
	if(confirm('將刪除 ' + markPost.list.length + ' 篇文章. 確定繼續?'))
	{
		for(var i=0; i<markPost.list.length; i++)
		{
			if(!g('p'+markPost.list[i])) continue;
			deletePost(markPost.list[i]);
		}
	}else{
		for(var i=0; i<markPost.list.length; i++)
		{
			var t = g('p'+markPost.list[i]); 
			if(!t) continue;
			t.parentNode.style.backgroundColor = '';;
		}
	}
	markPost.list = null;
}
function movePost(no, resto)
{
	$.ajax({
	url: 'pixmicat.php?mode=module&load=mod_movepost&no=' + no + '&resto=' + resto,
	type: "POST",
	success: function (msg){ 
			if(!msg || parseInt(msg)!=msg)
				alert(msg); //something went wrong
			else
				remove(g('p'+no).parentNode);
		}
	});

}
function markPosts()
{
	if (typeof markPost.list != 'object' || !markPost.list || !markPost.list.length){
		alert('請標記出要移動的文章.');
		return;
	}
	var max = Math.max.apply(null, markPost.list);
	var min = Math.min.apply(null, markPost.list);
	var count = (max==min?1:2);
	t = min + ',' + max;
	for(var i=min+1; i<max; i++)
	{
		if(!g('p'+i) || g('p'+i).deleted) continue;
		t += ',' + i
		markPost(i);
		count++;
	}
	//alert('max: '+max+"\nmin: "+min+"\ncount: "+count+"\nPost: "+t);

}
function movePosts(resto)
{
	if (typeof markPost.list != 'object' || !markPost.list || !markPost.list.length){
		alert('請標記出要移動的文章.');
		return;
	}
	if (typeof markPost.resto == 'undefined') markPost.resto = 0; 

	if(!resto)
		resto = prompt('請輸入要回應的文章編號。(輸入 0 可讓文章成為新的討論串)', markPost.resto);
	if(resto==null) return;
	markPost.resto = resto;

	var count = markPost.list.length;
	var t = markPost.list[0];
	for(var i=1; i<markPost.list.length; i++)
	{
		if(!g('p'+markPost.list[i])) continue;
		t += ','+markPost.list[i]
	}
	if(confirm('將移動 ' + count + ' 篇文章到討論串 No.' + resto + '，確定繼續？'))
	{
		$.ajax({
		url: 'pixmicat.php?mode=module&load=mod_movepost&no=' + t + '&resto=' + resto,
		type: "POST",
		success: function (msg){ 
				if(!msg || msg.charAt(msg.length-1)!=',')
					alert(msg); //something went wrong
				else{
					var ok = msg.split(',');
					for(var i=0; i<ok.length-1; i++)
						remove(g('p'+ok[i]).parentNode);
				}
			}
		});
	}
	clearMarks();
}
function hidePosts(no)
{
	if (typeof markPost.list != 'object' || !markPost.list || !markPost.list.length){
		alert('請標記出要切換隱藏模式的文章.');
		return;
	}
	var count = markPost.list.length;
	var t = markPost.list[0];
	for(var i=1; i<markPost.list.length; i++)
	{
		if(!g('p'+markPost.list[i])) continue;
		t += ','+markPost.list[i]
	}
//	if(confirm('將切換 ' + count + ' 篇文章，確定繼續？'))
	{
		$.ajax({
		url: 'pixmicat.php?mode=module&load=mod_movepost&no=' + t + '&action=toggle&tag=x',
		type: "POST",
		success: function (msg){ 
				if(!msg || msg.charAt(msg.length-1)!=',')
					alert(msg); //something went wrong
				else{
					var ok = msg.split(',');
					for(var i=0; i<ok.length-1; i++){
						var elem = g(ok[i]);
						if(!elem) continue;
						if(elem.src.match(/car\.jpg$/)){
							elem.src = elem.parentNode.href.replace(/\.[^\.]*$/,'s.jpg').replace('src','thumb');
						}else{
							elem.src = 'http://komica.csie.org/share/car.jpg';
						}
					}
				}
			}
		});
	}
	clearMarks();
}
function classifyPosts(no)
{
	if (typeof markPost.list != 'object' || !markPost.list || !markPost.list.length){
		alert('請標記出要分類的文章.');
		return;
	}
	var tag = prompt("請輸入要新增/移除的標籤：");
	var count = markPost.list.length;
	var t = markPost.list[0];
	for(var i=1; i<markPost.list.length; i++)
	{
		if(!g('p'+markPost.list[i])) continue;
		t += ','+markPost.list[i]
	}
	if(confirm('將修改 ' + count + ' 篇文章的標籤，確定繼續？'))
	{
		$.ajax({
		url: 'pixmicat.php?mode=module&load=mod_movepost&no=' + t + '&action=toggle&tag=' + tag,
		type: "POST",
		success: function (msg){ 
				if(!msg || msg.charAt(msg.length-1)!=',')
					alert(msg); //something went wrong
				else{
					var ok = msg.split(',');
					for(var i=0; i<ok.length-1; i++){
						var elem = g(ok[i]);
						if(!elem) continue;
						elem.style.border = '1px red solid';
						elem.innerHTML = elem.innerHTML + '<br />Tag: '+ tag +'<br />';
					}
				}
			}
		});
	}
	clearMarks();
}

function sharePost(target, no, anchor)
{
	if(!no || !target) return;
	var url = '';
	switch(target)
	{
		case 't': url = 'http://twitter.com/home?status='; break;
		case 'f': url = 'http://www.facebook.com/share.php?u='; break;
		case 'p': url = 'http://www.plurk.com/?qualifier=shares&status='; break;
		case 'm': url = 'http://murmur.tw/?sharelink='; break;
		case 'fp':url = 'http://funp.com/push/submit/add.php?via=tools&url='; break; 
		default: alert('Error: Unknown target "'+target+'"'); return;
	}
	var me = 'http://ericpony.csie.org'+document.location.href.match('/~[^/]*')[0] + '/old';
	var link = ''; 
	if(!anchor) 
		link = url+encodeURIComponent(me+'/pixmicat.php?from='+target+'&res='+no);//+'&t='+encodeURIComponent(title);
	else
		link = url+encodeURIComponent(me+'/pixmicat.php?from='+target+'&no='+no+'#p'+no);
//		link = url+encodeURIComponent('http://'+location.host+'/share/post.php?no='+no+'&host='+me+'&css=1&from='+target);
	open(link,'_blank','directories=0,location=0,menubar=0,status=0,toolbar=0,width=680,height=450'); 
}

function admin_login(){
	var n = prompt("請輸入前臺管理密碼。");
	if(n){
		setCookie('pwdc',n);// + expires + "; path=/"; /*'.dirname($_SERVER['SCRIPT_NAME']).'/"; */
		history.go(0);
	}
}

function login(){
	var n =  prompt('請輸入您的名稱加上Trip碼，以驗證您的身份：');;
	if(n){
		setCookie('namec',n,30);
		history.go(0);
	}
}


////////////////////////////////////////////////

