/** Common.js script for webchecklinks ******************************
 * 
 * Maintainer: [[User:Dispenser]]
 *
 */
var today = new Date()

// Localizable
if(true || lang=="en") {
	var BreakFreeMsg  = "Something is trying to navigate away.  This would cause you to lose your current work."
	var WindowBlocked = "Could not create window, popup blocker?  Try holding down ctrl or shift while clicking."

	var Months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']
}

// Varibles
var warnOnLeave = false

//
function toogleVisible(idName){with(document.getElementById(idName).style){display=(display!=''?'':'none');return (display=='')}}
function insertAfter(a, b){	return a.parentNode.insertBefore(b, a.nextSibling)	}
function isRegex(s) { return s.match(/[^\\][$^()\[\].|?*+{}]|\\[AZdwsDWSbB]/) && true || false; }
function getNodeText(node){	return node.innerHTML.replace(/<\/?\w+.*?>/g, '').replace(/^\s*|\s*$/g, '')	}
function translate(dict, dlang){
	if(!dlang)	dlang=wgContentLanguage;
	dlang = dlang.replace(/^([wmnbqsv]:|wikt:|commons:|)([a-z]{2}):.*$/g, "$2");
	return (typeof dict[dlang] != 'undefined' ? dict[dlang] : dict.en);
}

var loadedScripts = {}; // included-scripts tracker
function importScriptURI(url) {
	if (loadedScripts[url]) {
		return null;
	}
	loadedScripts[url] = true;
	var s = document.createElement('script');
	s.setAttribute('src',url);
	s.setAttribute('type','text/javascript');
	document.getElementsByTagName('head')[0].appendChild(s);
	return s;
}

function getCookie(name, defaultValue) {
	cookie = document.cookie.match(name + '=\s*(.*?)(;|$)')
	if(cookie && cookie[1])
		return unescape(cookie[1])
	else
		return defaultValue
}
function setCookie(name, value, expires, path) {
	if(!expires) expires = 'Jan 1 2037 00:00:00 UTC'
	if(!path) path = '/'
	if(expires == "seesion"){
		document.cookie = name+'='+escape(value)+'; path='+path;
	} else {
		document.cookie = name+'='+escape(value)+'; expires='+expires+'; path='+path;
	}
}
//
// Support functions
//
function getTitle(s) {
	try{
		s = decodeURI(decodeURIComponent(escape(s))).replace(/%23/g, '#')
	}catch(e){}//FIXME: %f8 raises error in firefox
	s = s.replace(/.*?\[\[([^[\]{|}]+)(\|.*?|)\]].*/g, '$1')
	s = s.replace(/\w+:\/\/secure\.wikimedia\.org\/(\w+)\/([a-z\-]+)\//, 'http://$2.$1.org/')
	s = s.replace(/http:\/\/([a-z\-]+)\.(\w+)\.org\/wiki\/([^{|}\[\]]+).*/i, '$2:$1:$3')
	s = s.replace(/http:\/\/([a-z\-]+)\.(\w+)\.org\/.*?title=([^#&{|}\[\]]+).*/i, '$2:$1:$3')
	s = s.replace(/http:\/\/[a-z0-9\-.]+\/.{12,}?\?.*?page=([^?&]*).*/i, '$1')
	s = s.replace(/^ *(?:wikimedia:(m)eta|wikimedia:(commons)|(wikt)ionary|wiki(n)ews|wiki(b)ooks|(w)ikipedia|wiki(q)uote|wiki(s)ource|wiki(v)ersity): *([a-z\-]+:) */i, '$1$2$3$4$5$6$7$8$9:$10')
	// Default site
	s = s.replace(/^(?:w:|(wikt:|n:|b:|q:|s:|v:|:|))(en:)?/, '$1')
	return s.replace(/[ _]+/g, ' ').replace(/^\s+|\s+$/g, '')
}
function fixTitle(node) {
	s = getTitle(node.value).replace(/#.*/, '')	// Remove anchor
	node.style.backgroundColor=(s.match(/[#<>\[\]|{}\n\u007F\u0000-\u001F]|%[0-9A-Fa-f]{2}|&\w{2,8};|&#[Xx]?\d{2,4};|^https?:\/\//)?"#F6DFE0":"")
	node.value = s
}
function diffTable(){
	table = document.getElementById('difflib_chg_to0__top');
	wpTextbox1 = document.getElementById('wpTextbox1');
	if(table && (table.textContent || table.innerText)){
		trs = table.getElementsByTagName('TR');
		for(j=0; (tr=trs[j]); j++){
			tr.onclick = diffMenu
		}
	}
}
function diffMenu(e){
	if(!e)var e=window.event
	if(!e.target)e.target=e.srcElement
	var mx = e.pageX||e.clientX
	var my = e.pageY||e.clientY
	var line = this.childNodes[1].textContent

	menu = document.createElement('ul')
	menu.className = "menu"
	document.body.appendChild(menu)
	menu.style.cssText = "position:absolute;left:"+(mx+1)+"px;top:"+(my+1)+"px;width:9em;"

	item = document.createElement('a')
	item.appendChild(document.createTextNode("Select line "+line))
	item.href="javascript:"
	menu.appendChild(document.createElement('li').appendChild(item))

	item = document.createElement('a')
	item.appendChild(document.createTextNode("Undo line "+line))
	item.href="javascript:with(document.getElementById('difflib_chg_to0__top').rows["+this.rowIndex+"]){if(cells[0].textContent){wpTextbox1.value=wpTextbox1.value.replace(cells[5].textContent, cells[2].textContent);style.color='#ccc';}}"
	menu.appendChild(document.createElement('li').appendChild(item))

	tds = this.getElementsByTagName('TD');
//	if(tds[0].textContent && confirm('Would you like to revert line '+tds[1].textContent+'?')){
//		wpTextbox1.value=wpTextbox1.value.replace(tds[5].textContent, tds[2].textContent);
//		this.style.color='#ccc';
//	};

}
// onload initialize
function addOnloadHook(hook) {
	if( window.addEventListener ) {
		window.addEventListener( 'load', hook, false );
	} else if( window.attachEvent ) {
		window.attachEvent( 'onload', hook);
	}
}
// Prevent framebreaker script from taken effect
window.onbeforeunload = function() {
	if(warnOnLeave)
		return BreakFreeMsg 
}
addOnloadHook(function() {
	var securerewrite = getCookie('securerewrite', 'false') == 'true';
	// add hooks to forms
	for(i=0; (form = document.forms[i]); i++){
		form.onsubmit=form.onsubmit || new Function("warnOnLeave=false");
		if(securerewrite)
			form.action = form.action.replace(/http:\/\/([a-z-]+)\.([a-z]+)\.org\//, "https://secure.wikimedia.org/$2/$1/")
	}
	//diffTable();
	sortables_init();

	var edittoken = location.search.match(/&wpEditToken=([0-9a-zA-Z]*)/)
	var autoclick = location.search.match(/&autoclick=([0-9A-Za-z]+)/);
	if(!edittoken)
		edittoken = document.cookie.match(/wpEditToken=([0-9a-zA-Z]*)/)
	if(edittoken && document.getElementById('wpSave')){
		// This probably should be moved into wikipedia.py
		document.getElementById('editform')['wpEditToken'].value = edittoken[1]+'+\\'
		document.getElementById('wpSave').disabled = false;
	}
	// auto submit script
	if(autoclick && document.getElementById(autoclick[1]))
		setTimeout('document.getElementById("'+autoclick[1]+'").click();')
	else 
		document.getElementById('load-msg').style.display = 'none'
	if(document.getElementById('page') && document.getElementById('page').value==''){
		var page = getTitle(document.referrer || '')
		if(page != '' && page.indexOf('http://')==-1)
			document.getElementById('page').value = page

	}
})
document.write('<div id="load-msg"><span>Loading...</span></div>');
