/*
 * Previews functions
 * using XMLHttpRequest
 */
function createXhrObject()
{
	if (window.XMLHttpRequest)
		return new XMLHttpRequest();

	if (window.ActiveXObject)
	{
		/* thanks IE ! */
		var names = [
			"Msxml2.XMLHTTP.6.0",
			"Msxml2.XMLHTTP.3.0",
			"Msxml2.XMLHTTP",
			"Microsoft.XMLHTTP"];
		for (var i in names)
		{
			try { return new ActiveXObject(names[i]); }
			catch (e) {}
		}
	}
	/* no XMLHttpRequest */
	return null;
}

/*
 * Put preview from sid (source id)
 * into tid (target id)
 */
function Preview(sid, tid, url)
{
	var xhr = createXhrObject();
    if(tid == "adminpreview") {
    	var obj = window.frames['framepreview'].document.getElementById(tid);
	    document.getElementById("framepreview").style.display = "block";
    } else {
    	var obj = document.getElementById(tid);
	    document.getElementById("preview-box").style.display = "block";
    }
	if(document.getElementById("preview-title")) {
		document.getElementById("preview-title").style.visibility = "visible";
	}

	if (xhr)
	{
		var data = 'content='+Url.encode(document.getElementById(sid).value);
		xhr.open('POST', url + '/preview', true);
		xhr.onreadystatechange = function () {
			if(xhr.readyState == 4) {
				obj.innerHTML = xhr.responseText;
			}
		}
		xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		xhr.send(data);
	}
	else
		obj.innerHTML = "<p>Your browser does not support XMLHttpRequest.</p>";
	return;
}

/* clear value if default value */
function clearValue(id, defvalue)
{
	if (id.value == defvalue)
		id.value = '';
	return;
}

/*
 * Check for the comment form
 */
function checkCommentForm()
{
	var objname = document.getElementById('warnname');
	var objcontent = document.getElementById('warntext');
	var objcaptcha = document.getElementById('warncaptcha');
	var check = true;
	objname.style.visibility = "hidden";
	objcontent.style.visibility = "hidden";
	objcaptcha.style.visibility = "hidden";
	if(document.getElementsByName("name")[0].value == "") {
		objname.innerHTML = "<span class=\"red\">Empty field.</span>";
		objname.style.visibility = "visible";
		check = false;
	}
	if(document.getElementsByName("content")[0].value == "") {
		objcontent.innerHTML = "<span class=\"red\">Empty field.</span>";
		objcontent.style.visibility = "visible";
		check = false;
	}
	if(document.getElementsByName("captcha")[0].value == "") {
		objcaptcha.innerHTML = "<span class=\"red\">Empty field.</span>";
		objcaptcha.style.visibility = "visible";
		check = false;
	}
	return check;
}

/**
 *
 *  URL encode / decode
 *  http://www.webtoolkit.info/
 *
 **/

var Url = {

// public method for url encoding
encode : function (string) {
			 return escape(this._utf8_encode(string));
		 },

// public method for url decoding
decode : function (string) {
			 return this._utf8_decode(unescape(string));
		 },

// private method for UTF-8 encoding
_utf8_encode : function (string) {
				   string = string.replace(/\r\n/g,"\n");
				   var utftext = "";

				   for (var n = 0; n < string.length; n++) {

					   var c = string.charCodeAt(n);

					   if (c < 128) {
						   utftext += String.fromCharCode(c);
					   }
					   else if((c > 127) && (c < 2048)) {
						   utftext += String.fromCharCode((c >> 6) | 192);
						   utftext += String.fromCharCode((c & 63) | 128);
					   }
					   else {
						   utftext += String.fromCharCode((c >> 12) | 224);
						   utftext += String.fromCharCode(((c >> 6) & 63) | 128);
						   utftext += String.fromCharCode((c & 63) | 128);
					   }

				   }

				   return utftext;
			   },

// private method for UTF-8 decoding
_utf8_decode : function (utftext) {
				   var string = "";
				   var i = 0;
				   var c = c1 = c2 = 0;

				   while ( i < utftext.length ) {

					   c = utftext.charCodeAt(i);

					   if (c < 128) {
						   string += String.fromCharCode(c);
						   i++;
					   }
					   else if((c > 191) && (c < 224)) {
						   c2 = utftext.charCodeAt(i+1);
						   string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
						   i += 2;
					   }
					   else {
						   c2 = utftext.charCodeAt(i+1);
						   c3 = utftext.charCodeAt(i+2);
						   string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
						   i += 3;
					   }

				   }

				   return string;
			   }

}
