// apply tagOpen/tagClose to selection in textarea,
// use sampleText instead of selection if there is none
// copied and adapted from phpBB
function insertTags(destField, tagOpen, tagClose, sampleText) {
	var txtarea = $(destField);
	var replaced = false;
	var startPos = txtarea.selectionStart;
	var endPos = txtarea.selectionEnd;
	if (endPos-startPos)
		replaced = true;
	var scrollTop = txtarea.scrollTop;
	var myText = (txtarea.value).substring(startPos, endPos);
	if (!myText)
		myText=sampleText;
	if (myText.charAt(myText.length - 1) == " ") { // exclude ending space char, if any
		subst = tagOpen + myText.substring(0, (myText.length - 1)) + tagClose + " ";
	} else {
		subst = tagOpen + myText + tagClose;
	}
	txtarea.value = txtarea.value.substring(0, startPos) + subst + txtarea.value.substring(endPos, txtarea.value.length);
	txtarea.focus();
	//set new selection
	if (replaced) {
		var cPos = startPos+(tagOpen.length+myText.length+tagClose.length);
		txtarea.selectionStart = cPos;
		txtarea.selectionEnd = cPos;
	} else {
		txtarea.selectionStart = startPos+tagOpen.length;
		txtarea.selectionEnd = startPos+tagOpen.length+myText.length;
	}
	txtarea.scrollTop = scrollTop;

	// reposition cursor if possible
	if (txtarea.createTextRange)
		txtarea.caretPos = document.selection.createRange().duplicate();

	close_profiles();
	close_trackbacks();
	return false;
}

function close_profiles() {
	if (profileList = $('profile-list')) {
		profileList.style.display='none';
	}
}

function close_trackbacks() {
	if (trackbackList = $('trackback-list')) {
		trackbackList.style.display='none';
	}
}

function show_fields(id) {
	$('anon').style.display = 'none';
	$('forums').style.display = 'none';
	$('openid').style.display = 'none';
	$(id).style.display = 'block';
	$('login_type').value = id;
	return false;
}

function fbs_click() {
	u = encodeURIComponent(location.href);
	t = encodeURIComponent(document.title);
	window.open('http://www.facebook.com/sharer.php?u=' + u + '&t=' + t, 'sharer', 'toolbar=0,status=0,width=626,height=436');
	return false;
}

function sidebar() {
	var ns = (navigator.appName.indexOf("Netscape") != -1);
	var footer = $('footer');

	window.stayTopLeft=function() {
		var pY = ns ? window.pageYOffset : document.body.scrollTop;
		if (ftlObj.className == "nomove") pY = 0;
		var marginTop = parseInt(ftlObj.style.marginTop.substring(0, ftlObj.style.marginTop.length - 2));
		if (isNaN(marginTop)) { marginTop = 0; }
		if (marginTop + 80 > footer.offsetTop - ftlObj.offsetHeight) { marginTop = footer.offsetTop - (ftlObj.offsetHeight + 80); }
		marginTop += (pY - marginTop)/5;
		ftlObj.style.marginTop = Math.round(marginTop) + "px";
		setTimeout("stayTopLeft()", 10);
	}

	if ($('sidebar')) {
		var ctrlSpan = $('sidebarcontrol').getElementsByTagName('span')[0];
		ctrlSpan.onclick = function () {
			if ($('sidebar').className == 'nomove') {
				$('sidebar').className = '';
				ctrlSpan.innerHTML = 'Lock menu';
			} else {
				$('sidebar').className = 'nomove';
				ctrlSpan.innerHTML = 'Scroll menu';
			}
		};

		ftlObj = $('sidebar');
		if (window.innerHeight > (ftlObj.offsetHeight + 30)) {
			if ($('sidebarcontrol')) { $('sidebarcontrol').style.display = (footer.offsetTop + footer.offsetHeight - 28 - document.body.scrollHeight > 0 ? 'block' : 'none'); }
			ftlObj.className = '';
		} else {
			if ($('sidebarcontrol')) { $('sidebarcontrol').style.display = 'none'; }
			ftlObj.className = 'nomove';
		}

		stayTopLeft();
	}
}

function addEvent(obj, evType, fn, useCapture){
	if (obj.addEventListener) {
		obj.addEventListener(evType, fn, useCapture);
		return true;
	} else if (obj.attachEvent){
		var r = obj.attachEvent('on' + evType, fn);
		return r;
	} else {
		//alert('Handler could not be attached');
	}
}

// Included for backwards compatibility
function addLoadEvent(func) {
	/*var oldonload = window.onload;

	if (typeof window.onload != "function") {
		window.onload = func;
	} else {
		window.onload = function () {
			oldonload();
			func();
		}
	}*/
	addEvent(window, 'load', func);
}

function AJAXRequest(url, params, readyStateFunc) {
	var http_request = false;
	if (window.XMLHttpRequest) { // Mozilla, Safari,...
		http_request = new XMLHttpRequest();

		if (http_request.overrideMimeType) {
			// set type accordingly to anticipated content type
			//http_request.overrideMimeType('text/xml');
			http_request.overrideMimeType('text/html');
		}
	} else if (window.ActiveXObject) { // IE
		try {
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				http_request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}

	if (!http_request) {
		alert('Cannot create XMLHTTP instance');
		return false;
	}

	http_request.onreadystatechange = readyStateFunc;
	http_request.open('POST', url, true);
	http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	http_request.setRequestHeader("Content-length", params.length);
	http_request.setRequestHeader("Connection", "close");
	http_request.send(params);
}

function calendarDay() {

	var parameters = "name=" + encodeURI($("name").value) +
		"&display_name=" + encodeURI($("display_name").value) +
		"&facebook_id=" + encodeURI($("facebook_id").value);
	AJAXRequest('http://blog.cmbuckley.co.uk/admin/calendar.php', parameters, updateSidebar);
}

function updateSidebar() {
	if (http_request.readyState == 4) {
		if (http_request.status == 200) {
			// Do stuff
			alert('Success!');
		} else {
			alert('There was a problem with the request.');
		}
	}
}


//addLoadEvent(sidebar);

window.onresize = function () {
	var footer = $('footer');

	if ($('sidebar')) {
		$('sidebar').className = (window.innerHeight > $('sidebar').offsetHeight ? '' : 'nomove');
		if ($('sidebarcontrol')) { $('sidebarcontrol').style.display = (footer.offsetTop + footer.offsetHeight - 28 - document.body.scrollHeight > 0 ? "block" : "none"); }
	}
}

function callGA() {
    var s2 = document.createElement('script');
    s2.setAttribute('type', 'text/javascript');
    s2.text = 'var pageTracker = _gat._getTracker("UA-2398949-7"); pageTracker._initData(); pageTracker._trackPageview();';
    document.getElementsByTagName('body').item(0).appendChild(s2);
}

function loadGA() {
    var s1 = document.createElement('script');
    s1.setAttribute('id', 'googleanalytics');
    s1.setAttribute('src', 'http://www.google-analytics.com/ga.js');
    s1.setAttribute('type', 'text/javascript');

	addEvent(s1, 'readystatechange', function () {
	    if ((s1.readyState == 'complete') || (s1.readyState == 'loaded')) {
		callGA();
	    }
	});

    addEvent(s1, 'load', callGA);
    document.getElementsByTagName('head').item(0).appendChild(s1);
}

addEvent(window, 'load', loadGA);
