﻿/* generated javascript */
var skin = 'monobook';
var stylepath = '/prog/skins';

/* MediaWiki:Common.js */
/*所有用戶在加載任何頁面時，這裡的JavaScript都會加載

==導入jQuery與Source區塊增強==
*/
importScriptURI('/prog/extensions/jQuery/jquery-1.4.2.min.js');

//wgPageName, wgAction
if ((wgPageName != '首頁') &&
    (wgPageName != '分類:頁面分類') &&
    (wgPageName.indexOf('MediaWiki:') < 0)) {
    importScript('MediaWiki:Gadget-HotCat.js');
}
//if (wgPageName == '現時事件') {
if (wgPageName == 'Test') {
    importScript('MediaWiki:SimpleRssReader.js');
}

var id_count = 1;

var SourceHelper = {
	Toolbar : {
		Commands : {},

		Create : function(strID)
		{
			var div = document.createElement('div');
			var id_count2 = 1;

			for(var name in SourceHelper.Toolbar.Commands)
			{
				var cmd = SourceHelper.Toolbar.Commands[name];

				//if(cmd.check != null && !cmd.check(strID))
				//	continue;
		
				div.innerHTML += '<a id="' + strID + '_a'+id_count2+'" href="" onclick="SourceHelper.Toolbar.Commands.'+name+'.func(\''+strID+'\');return false;">' + cmd.label + '</a>';

				id_count2 += 1;
			}
	
			return div;
		}
	},

	init : function()
	{
		//$('pre.source').each(
		$('.source').each(
			function () 
			{
				this.id = 'source_' + id_count;
				id_count += 1;

				with ($(this)) 
				{ 
					var tHtml = '<pre id="' + this.id + '_code" class="' + attr('class') + '" style="display:block">' + html() + '</pre>';
					html("");
					this.appendChild(SourceHelper.Toolbar.Create(this.id));
					html(html()+tHtml);
				};
			}
		)
	}  
};


SourceHelper.Toolbar.Commands = {
	ExpandSource: {
		label: "【隱藏▲】",
		check: function(highlighter) { return highlighter.collapse; },
		func: function(sender)
		{
			with($('#'+sender+'_code'))
			{
				if (css('display') == 'none') {
					$('#'+sender+'_a1').text("【隱藏▲】");
					css('display', 'block');
				} else {
					$('#'+sender+'_a1').text("【顯示▼】");
					css('display', 'none');
				}
			}
		}
	},

	// opens a new windows and puts the original unformatted source code inside.
	ViewSource: {
		label: '【純文字檢視】',
		check: null,
		func: function(sender)
		{
			var code = $('#'+sender+'_code').text();
			var wnd = window.open('', '_blank', 'width=750, height=400, location=0, resizable=1, menubar=0, scrollbars=0');
			wnd.document.write('<textarea style="width:99%;height:99%">' + code + '</textarea>');
			wnd.document.close();
		}
	},

	CopyToClipboard: {
		label: '【複製到剪貼簿】',
		check: function(sender) 
		{
			return window.clipboardData != null || SourceHelper.ClipboardSwf != null; 
		},
		func: function(sender)
		{
			var code = $('#'+sender+'_code').text();
			copyToClipboard(code);
		}
	}

};

//Copy to clipboard: ref http://forum.moztw.org/viewtopic.php?p=131407
function copyToClipboard(txt) 
{
    var copied = false;
     if(window.clipboardData) {
        window.clipboardData.clearData();
        window.clipboardData.setData("text", txt);
        copied = true;
     } else if (window.netscape) {
        try {
           netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
        } catch (e) {
           alert("被瀏覽器拒絕！\n請在瀏覽器網址列輸入'about:config'\n，將'signed.applets.codebase_principal_support'設為'true'");
        }
        var clip = Components.classes['@mozilla.org/widget/clipboard;1']
        .createInstance(Components.interfaces.nsIClipboard);
        if (!clip)
           return;
        var trans = Components.classes['@mozilla.org/widget/transferable;1']
        .createInstance(Components.interfaces.nsITransferable);
        if (!trans)
           return;
        trans.addDataFlavor('text/unicode');
        var str = new Object();
        var len = new Object();
        var str = Components.classes["@mozilla.org/supports-string;1"]
        .createInstance(Components.interfaces.nsISupportsString);
        var copytext = txt;
        str.data = copytext;
        trans.setTransferData("text/unicode",str,copytext.length*2);
        var clipid = Components.interfaces.nsIClipboard;
        if (!clip)
           return false;
        clip.setData(trans,null,clipid.kGlobalClipboard);
        copied = true;
     }
     if (copied) alert('已經複製到您的剪貼簿中!');
     else alert("使用的瀏覽器不支援文字複製功能!");
}


var OnloadHook = {};

OnloadHook.SourceHelper = {
        check : function () { return typeof($) == "undefined"; },
	func : function ()
	{
		var cmd = OnloadHook.SourceHelper;
		if (cmd.check())
		{
			cmd.hTimer = setTimeout("OnloadHook.SourceHelper.func()",200);
		} else {
			clearTimeout(cmd.hTimer);

			if (getURLParam('printable') == "")
				SourceHelper.init();
		}
	}
}



window.runOnloadHook = function() 
{
	for(var name in OnloadHook)
	{
		OnloadHook[name].func();
	}
}



//以JavaScript解析URL, 取得表單GET模式的QueryString
function getURLParam(strParamName)
{
    var strReturn = "";
    var strHref = window.location.href;
    if ( strHref.indexOf("?") > -1 )
    {
        var strQueryString = strHref.substr(strHref.indexOf("?")).toLowerCase();
        var aQueryString = strQueryString.split("&");
        for ( var iParam = 0; iParam < aQueryString.length; iParam++ )
        {
            if (aQueryString[iParam].indexOf(strParamName.toLowerCase() + "=") > -1 )
            {
                var aParam = aQueryString[iParam].split("=");
                strReturn = aParam[1];
                break;
            }
        }
    }
    return unescape(strReturn);
} 


/*
== 辅助处理 ==
*/
//功能設定
var JSConfig={
	'isEdit0':true, //设置是否显示编辑首段按钮
	'collapseText':wgULS('隐藏▲','隱藏▲'),//指示折叠收缩的默认文字
	'expandText':wgULS('显示▼','顯示▼'),//指示折叠展开的默认文字
	'autoCollapse':2,  //文章少于 autoCollapse 个折叠块时，不自动折叠
	'SpecialSearchEnhancedDisabled':false//是否禁止增加其它搜索引擎
}
// 兼容性修正
if (window.showModalDialog && document.compatMode && document.compatMode == "CSS1Compat")
{
	var oldWidth;
	var docEl = document.documentElement;

	function fixIEScroll()
	{
		if (!oldWidth || docEl.clientWidth > oldWidth){
			doFixIEScroll();
		}else{
			setTimeout(doFixIEScroll, 1);
		}
		oldWidth = docEl.clientWidth;
	}

	function doFixIEScroll() {
		docEl.style.overflowX = (docEl.scrollWidth - docEl.clientWidth < 4) ? "hidden" : "";
	}

        if (navigator.appName == "Microsoft Internet Explorer")
        {
	    document.attachEvent("onreadystatechange", fixIEScroll);

	    attachEvent("onresize", fixIEScroll);
        }
}

// 移動元素
function elementMoveto(node, refNode, pos){//默认位置为refNode前
	if(node && refNode){
		var parent=refNode.parentNode;
		if (pos && pos=='after') {refNode=refNode.nextSibling;}
		try {
			if(refNode){
				parent.insertBefore(node, refNode);
			}else{
				parent.appendChild(node);
			}
		} catch (DOMException) {};
	}
}
//创建元素
function createElement(tag,children,props){
	var element = document.createElement(tag);
	if(children instanceof Array){
		for(var i=0;i<children.length;i++){
			var child=children[i];
			if(typeof child=='string'){child=document.createTextNode(child);}
			if(child){element.appendChild(child);}
		}
	}
	if(typeof props=='object'){
		for(var k in props){
			switch(k){
			case 'styles':
				var styles=props.styles;
				if(typeof styles=='object'){
					for(var s in styles){element.style[s]=styles[s];}
				}
				break;
			case 'events':
				var events=props.events;
				if(typeof events=='object'){
					for(var e in events){element['on'+e]=events[e];}
				}
				break;
			case 'class':
				element.className=props[k];break;
			default:
				element.setAttribute(k,props[k]);
			}
		}
	}
	return element;
}
 
//导入模块
function getWikiPath(page,paras){
    var reg=/^[a-z]+:/;
    var pre=page.match(reg);
    pre = pre && wgProjectURL[pre[0].replace(/:$/,'').toLowerCase()];
    if (pre) {page=page.replace(reg,'');} else {pre=wgServer;} //保障没有相对路径，以照顾在线代理。
    var url = pre + wgScript + '?title=' + encodeURI( page.replace( ' ', '_' ) );
    if(typeof paras=='object'){
        paras.ctype=paras.ctype||'text';
        paras.dontcountme=paras.dontcountme||'s';
        paras.action=paras.action||'raw';
        for(var k in paras){url += '&' + k + '=' + paras[k]; }
    }
    return url;
}

/* 测试元素中是否含有指定的样式 **************************************
 * Description: 使用正则式与缓存来提高性能
 * Maintainers: User:fdcn @zh.wikipedia
 *              [[en:User:Mike Dillon]], [[en:User:R. Koot]], [[en:User:SG]] @en.wikipedia
 */
var hasClass = (function () {
	var reCache = {};
	return function (element, className) {
		return (reCache[className] ? reCache[className] : (reCache[className] = new RegExp("(?:\\s|^)" + className + "(?:\\s|$)"))).test(element.className);
	};
 })();

//设置中文语言页
var htmlE=document.documentElement;
htmlE.setAttribute("lang",wgUserLanguage);
htmlE.setAttribute("xml:lang",wgUserLanguage);

//返回繁簡字串
function wgULS(cn,tw,hk,sg,zh){
	return {//保證每一語言有值
		'zh-cn':cn||sg,
		'zh-sg':sg||cn,
		'zh-tw':tw||hk,
		'zh-hk':hk||tw,
		'zh':zh||cn||tw||hk||sg
	}[wgUserLanguage];
}

/*</source>

== 工具提示與快捷鍵 ==
<source lang="javascript">*/
ta = {};
ta['ca-article'] = ['a',wgULS('浏览条目正文','流覽條目正文')];
ta['ca-nomove'] = ['',wgULS('你不能移动这个页面','你不能移動這個頁面')];
ta['n-Featured_articles']=['',wgULS('查看中文维基百科的特色条目','查看中文維基百科的特色條目')];
ta['n-Featured_content']=['',wgULS('查看中文维基百科的特色内容','查看中文維基百科的特色內容')];
ta['n-commonsupload'] = ['',wgULS('把自由版权图片上传到维基共享资源','把自由版權圖片上傳到維基共享資源')];
ta['n-contact'] = ['',wgULS('如何联络维基百科','如何聯絡維基百科')];
ta['n-villagepump'] = ['',wgULS('参与维基百科社群的讨论','參與維基百科社群的討論')];
ta['n-Information_desk'] = ['',wgULS('解答任何与维基百科无关的问题的地方','解答任何與維基百科無關的問題的地方')];
ta['n-conversion'] = ['',wgULS('提出繁简体转换请求','提出繁簡體轉換請求')];
ta['n-allpages'] = ['',wgULS('浏览所有页面的清单','流覽所有頁面的清單')];
ta['ca-nstab-wp'] = ['a',wgULS('查看维基计划页面','查看維基計畫頁面')];

/*</source>

== 特色條目優良與條目鏈接顯示==
<source lang="javascript">*/

addOnloadHook(function() 
{
	if ( document.getElementById( "p-lang" ) ) {
		var InterwikiLinks = document.getElementById( "p-lang" ).getElementsByTagName( "li" );

		for ( var i = 0; i < InterwikiLinks.length; i++ ) {
			if ( document.getElementById( InterwikiLinks[i].className + "-fa" ) ) {
				InterwikiLinks[i].className += " FA"
				InterwikiLinks[i].title = wgULS("此条目为特色条目。","此條目為特色條目。");
			}
			if ( document.getElementById( InterwikiLinks[i].className + "-ga" ) ) {
				InterwikiLinks[i].className += " GA"
				InterwikiLinks[i].title = wgULS("此条目为优良条目。","此條目為優良條目。");
			}
		}
	}
});





// 調整工具
hookEvent("load",function(){
	var wpEditToolbar=document.getElementById("toolbar");
	if(wpEditToolbar){
		//移動下拉選單
		var dropdownListEditTools=document.getElementById("dropdownListEditTools");
		if(wpEditToolbar&&dropdownListEditTools){
			wpEditToolbar.appendChild(dropdownListEditTools);
		}
		//dropdownListEditTools.style.display="inline";
		//移動符號表
		var editspecialchars=document.getElementById("editpage-specialchars");
		elementMoveto(editspecialchars , wpEditToolbar , 'after' );
	}
});

/*
== 增加特殊符號的下拉選單 ==
*/
/**
 * add menu for selecting subsets of secial characters
 * must match MediaWiki:Edittools
 * Maintainers: User:fdcn @zh.wikipedia
 */
addOnloadHook(function(){
	var edittools = document.getElementById('editpage-specialchars');
	if (edittools) {
		// select subsection of special characters
		var lines = edittools.getElementsByTagName('p');
		function chooseCharSubset() {
			var s=menu.selectedIndex;
			for (var i = 0,p; p=lines[i] ; i++) {
				p.style.display = i == s ? 'inline' : 'none';
			}
		}

		var menu=createElement("select",null,{
			'styles':{'display':"inline"},
			'events':{'change':chooseCharSubset}
		});
		for (var i = 0,p; p=lines[i] ; i++) {
			menu.options[i]=new Option(p.title?p.title:p.id);
		}
		edittools.insertBefore(menu,edittools.firstChild);
		chooseCharSubset();
	}
});

/* 當需要時載入對應的 scripts */

if (wgAction == "edit" || wgAction == "submit") //scripts specific to editing pages
{
    importScriptURI('/prog/skins/common/edit.js');
    importScript('MediaWiki:Edittools.js');
    addOnloadHook(function() { mwEditButtons=[]; });

    OnloadHook.Edittool = {
        check : function () {
            if (typeof(addButton) == "undefined") return true;
            else if (typeof(addEditButton) == "undefined") return true;
            else if (typeof(wpEditToolbar) == "undefined") return true;
            else return false; 
        },
	func : function ()
	{
	    var cmd = OnloadHook.SourceHelper;
	    if (cmd.check())
	    {
		cmd.hTimer = setTimeout("OnloadHook.Edittool.func()",200);
	    } else {
		clearTimeout(cmd.hTimer);

                importScript('MediaWiki:Common.js/edit.js');
                importScript('MediaWiki:Edittool-plus.js');
	    }
	}
    }
}
else if (wgCanonicalSpecialPageName == "Search") //scripts specific to Special:Search
{
    importScript("MediaWiki:Common.js/search.js")
}


/*
==編輯首段==
*/
//JSConfig.isEdit设置开关，对不需要编辑首段的页面，还可在页面中加&#123;{Noedit0}&#125;模板
if (wgIsArticle) {
	addOnloadHook(function(){
		if(!JSConfig.isEdit0||(document.getElementById&&document.getElementById('no-edit-0'))){return;}
		var caEdit=document.getElementById&&document.getElementById('ca-edit');
		if (!caEdit){return;}
		var link = createElement('A',['0'],{'href':caEdit.firstChild.href + '&section=0'});
		var id = 'ca-edit-0';
		ta[id] = ['0', wgULS('编辑首段','編輯首段')];
		var caEdit0 = createElement('LI',[link],{'id':id,'class':caEdit.className});
		caEdit.className = 'istalk';
		caEdit.parentNode.insertBefore(caEdit0,caEdit.nextSibling);
		//单独进行提示和快捷键处理
		updateTooltipAccessKeys([caEdit0]);
		akeytt(id);
	});
}

/*
==增加折疊功能==
*/
/** 折疊 div table *****************************
 *  Description: 实现div.NavFrame和table.collapsible的可折叠性。
 *  JSConfig的collapseText、expandText、autoCollapse属性定义默认文字和默认最少自动折叠块
 *  Maintainers: User:fdcn
 */
addOnloadHook(function(){
	function toggleState(item){
		var nstate=1-item.state;
		if(item.text[0]){
			item.text[item.state].style.display = 'inline';
			item.text[nstate].style.display='none';
		}
		item.state=nstate;
		item.action(item);
	}

	function cancelBubble(e){
		e=e||window.event;
		if(e.stopPropagation){e.stopPropagation();}else{e.cancelBubble=true;}
	}
	function createToggleButton(head,frame,toggle){
		var textS,textH;
		var button=getElementsByClassName(head,"span","NavToggle")[0];
		if(button){
			textS=getElementsByClassName(button,"span","NavToggleShow")[0]
			textH=getElementsByClassName(button,"span","NavToggleHide")[0];
		}else {
			textS=createElement("span",[JSConfig.expandText]);
			textH=createElement('span',[JSConfig.collapseText]);
			button=createElement("span",[textS,textH],{'class':"NavToggle",styles:{'width':"3.8em"}});
		}
		if(textS){textS.style.display='none';}
		var item={'state':0, 'text':[textS,textH],'frame':frame,'action':toggle}

		var links=head.getElementsByTagName("A");
		for(var i=0,l;l=links[i];i++){l.onclick=cancelBubble;}
		
		head.insertBefore( button, head.childNodes[0] );
		head.onclick=function(){toggleState(item);}
		head.style.cursor = "pointer";
		return item;
	}
	
	// 折疊div 
	function toggleNavigationBar(item)
	{
		var cls=item.state?'none':'block';
		for (
			var NavChild = item.frame.firstChild;
			NavChild != null;
			NavChild = NavChild.nextSibling
		){
			if (NavChild.className == 'NavPic' || NavChild.className == 'NavContent') {
				NavChild.style.display = cls;
			}
		}
	}
	
	// 折疊表格
	function collapseTable( item )
	{
		var rows = item.frame.getElementsByTagName( "tr" ); 
		var rowsLen=rows.length;
		if (item.state ) {
			for ( var i = 1; i < rowsLen; i++ ) {
				rows[i].style.display = "none";
			}
		} else {
			for ( var i = 1; i < rowsLen; i++ ) {
				rows[i].style.display = rows[0].style.display;
			}
		}
	}
	
	//init
	var item,items=[];
	var NavFrames=getElementsByClassName(document,"div","NavFrame");
	for(var i=0,NavFrame;NavFrame = NavFrames[i];i++) {
		var heads=getElementsByClassName(NavFrame,"div","NavHead");
		for(var ih=0,head; head = heads[ih]; ih++ ) {
			if (head.parentNode != NavFrame) {continue;}
			items.push(createToggleButton(head,NavFrame,toggleNavigationBar));
			break;
		}
	 }

	var tables = getElementsByClassName(document,"table","collapsible");
	for ( var i = 0,table; table= tables[i]; i++ ) {
		var head = table.getElementsByTagName( "tr" )[0].getElementsByTagName( "th" )[0];
		items.push(createToggleButton(head,table,collapseTable));
	}

	var count=items.length;
	for ( var i = 0;  i<count; i++ ) {
		item=items[i];
		if ( hasClass( item.frame, "collapsed" ) || ( count >= JSConfig.autoCollapse && hasClass( item.frame, "autocollapse" ) ) ) {
			toggleState(item);
		}
	}
});

//修正折疊後定位變化
hookEvent("load",function(){if(location.hash){location.href=location.hash;}});

/*
==首頁輸出修正==
*/
/** 首页输出修正 *******************************************************
  *
  *  描述:
  *  维护者: [[User:Fdcn]]
  */

var isMainPageFront = ("首页" == wgTitle);// "首頁" == wgTitle　代表重定向頁
var isMainPage = ( isMainPageFront  && /(title=|\/wiki\/)([Tt]alk:|)/.test(document.location) );
var locationsearch=document.location.search;
var isDiff = ( locationsearch && (locationsearch.indexOf("diff=") != -1 || locationsearch.indexOf("oldid=") != -1));

if (isMainPage){
	//首頁的跨語言鏈接中加入維基百科語言列表鏈接
	function appendOtherLanguageLink() {
		var mpInterwiki = document.getElementById("p-lang")
		var ul=mpInterwiki&&mpInterwiki.getElementsByTagName("ul")[0];
		if(ul) {
			var link=createElement('A',
				[ createElement('strong',['維基百科語言列表']) ],
				{'href':'http://zh.wikipedia.org/wiki/Wikipedia:%E7%BB%B4%E5%9F%BA%E7%99%BE%E7%A7%91%E8%AF%AD%E8%A8%80%E5%88%97%E8%A1%A8'}
			);
			ul.appendChild(createElement("li",[link]));
		}
	}

	if (isMainPageFront && !isDiff){
		document.write('<style type="text/css">/*<![CDATA[*/ #lastmod, #siteSub, #contentSub, h1.firstHeading { display: none !important; } /*]]>*/</style>');
		onloadFuncts.push(appendOtherLanguageLink);
	}

	var mpSmallEnabled;
	var mpMinWidth = 700;

	function mainPageTransform(){
		if (document.getElementById('ca-nstab-main')) {
			document.getElementById('ca-nstab-main').firstChild.innerHTML = wgULS('首页','首頁');
		}

		var mpContentEl = document.getElementById("bodyContent");
		var mpBrowseEl = document.getElementById("EnWpMpBrowse");
		var mpContainEl = document.getElementById("EnWpMpBrowseContainer");
		var mpMarginEl = document.getElementById("EnWpMpMargin");
		var mpEl = document.getElementById("EnWpMainPage");

		if (!mpContentEl || !mpBrowseEl || !mpContainEl || !mpMarginEl || !mpEl)
			return;

		if (!mpSmallEnabled && mpContentEl.offsetWidth < mpMinWidth)
		{
			mpContainEl.insertBefore(mpBrowseEl, mpContainEl.firstChild);
			mpBrowseEl.className = "EnWpMpBrowseBottom";
			mpMarginEl.style.marginRight = 0;
			mpSmallEnabled = true;
		}
		else if (mpSmallEnabled && mpContentEl.offsetWidth > mpMinWidth)
		{
			mpEl.insertBefore(mpBrowseEl, mpEl.firstChild);
			mpBrowseEl.className = "EnWpMpBrowseRight";
			mpMarginEl.style.marginRight = "13.8em";
			mpSmallEnabled = false;
		}
	}

	addOnloadHook(mainPageTransform);

	hookEvent("resize", mainPageTransform);
}

/*
==反frame綁架==
*/
try {
    if (top.location != self.location) {
        top.location.replace(self.location);
    }
}catch(ex){
    top.location.replace(self.location);
}

/*
==取消修訂編輯摘要修正==
*/

/**
 fix edit summary prompt for undo
 this code fixes the fact that the undo function combined with the "no edit summary prompter" causes problems if leaving the edit summary unchanged
 this was added by [[:en:User:Deskana]], code by [[:en:User:Tra]]
 */
addOnloadHook(function () {
	var autoSummary=document.getElementsByName('wpAutoSummary')[0];
	if (document.location.search.indexOf("undo=") != -1 && autoSummary)
	{
		 autoSummary.value='';
	}
})

/* MediaWiki:Monobook.js */
/* 此處的JavaScript將載入於使用Monobook面板的用戶 */