var api_charset = 'UTF-8';

// Some older versions of Mozilla don't have this, for some reason.
if (typeof(document.forms) == "undefined")
	document.forms = document.getElementsByTagName("form");

if (typeof(document.all) == "undefined")
{
	document.all = function ()
	{
		return document.getElementsByTagName("*");
	}	
}

// Define document.getElementById for IE 4.
if (typeof(document.getElementById) == "undefined")
{
	document.getElementById = function (id)
	{
		return document.all[id];
	}
}
else if (!window.XMLHttpRequest && window.ActiveXObject)
{
	window.XMLHttpRequest = function ()
	{
		return new ActiveXObject(navigator.userAgent.indexOf("MSIE 5") != -1 ? "Microsoft.XMLHTTP" : "MSXML2.XMLHTTP");
	};
}

// JavaScript Document
function WADateEcho()
{
	var d=new Date();
	var monthname=new Array("January","February","March","April","May","June","July","August","September","October","November","December");
	//Ensure correct for language. English is "January 1, 2004"
	var TODAY = monthname[d.getMonth()] + " " + d.getDate() + ", " + d.getFullYear();
	document.write(TODAY);	

}

function WATimeEcho()
{
	var d = new Date();
	var TODAY = d.getHours() + ":" + d.getMinutes();
	document.write(TODAY);	
//	document.write("Date: " + (now.getMonth() + 1) + "/" + now.getDate() + "/" + (1900 + now.getYear()));
//	getHours(), setHours(), getMinutes(), setMinutes(), getMonth(), setMonth()


	document.write(TODAY+"Ds");	
}

var gstr = '';
function ApiCaptcha()//sess_id)
{
	var d = new Date();	
	var cimg = document.getElementById("captcha_img");
	if(gstr == '') gstr = cimg.src;
	cimg.src = gstr + '&rand=' + d.getMilliseconds(); 
}

function hashAdminPassword(doForm, username, sess_id)
{
	// Compatibility.
	if (sess_id == null)
		sess_id = smf_session_id;

	if (typeof(hex_sha1) == "undefined")
		return;

	doForm.admin_hash_pass.value = hex_sha1(hex_sha1(username.toLowerCase() + doForm.admin_pass.value) + sess_id);
	doForm.admin_pass.value = doForm.admin_pass.value.replace(/./g, "*");
}


function WANewsEditCheck()
{
	if(document.forms.NewsEdit.title.value == '')
	{
		alert("Please enter the news title");
		document.forms.NewsEdit.title.focus();
		return false;
	}
	if(document.forms.NewsEdit.body.value == '')
	{
		alert("Please enter news message");
		document.forms.NewsEdit.body.focus();
		return false;
	}
	return true;
}

// Invert all checkboxes at once by clicking a single checkbox.
function ApiPageCheckAll(headerfield, checkform)
{
	for (var i = 0; i < checkform.length; i++)
	{
		if (typeof(checkform[i].name) == "undefined" || (typeof(checkform.checkmask) != "undefined" && checkform[i].name.substr(0, checkform.checkmask.value.length) != checkform.checkmask.value))
			continue;

		if (!checkform[i].disabled)
			checkform[i].checked = headerfield.checked;
	}
}

function ApiPageCheckConfirm(checkform, mode)
{
	if(typeof(checkform.checkaction) == "undefined" || checkform.checktext.value == '') return false;
	if(mode == 'sel')
	{
		checked = 0;
		for (var i = 0; i < checkform.length; i++)
		{
			if(checkform[i].checked)
				checked = 1;
		}
		if(!checked)			
		{
			alert('Nothing selected');
			return false;
		}
		if(confirm("Are you sure you want to " + checkform.checktext.value + " the selection!"))
			return true
	}
	else if(mode == 'all')
	{
		if(confirm("Are you sure you want to " + checkform.checktext.value + " all!"))
			return true
	}

	return false;
}
	
function ApiUploadCheck()
{
	un = document.getElementById("upload_name");
	uc = document.getElementById("upload_count");
	if(un != null  && uc != null)
	{
		uf = document.getElementById(un.value + '1');
		if(uf != null && uf.value == '')
		{
			if(uc.value > 1)
				alert("The first file must be specified!");
			else
				alert("Please select a file to upload");
			uf.focus();
			return false;
		}
	}
	if(document.forms.Upload.filename1 != null && document.forms.Upload.filename1.value == '')
	{
		alert("Please select a file to upload");
		document.forms.Upload.filename.focus();
		return false;
	}

	return true;	
}

function ApiUploadMore(name)
{
	uc = document.getElementById(name + "_count");
	um = document.getElementById(name + "_max");
	ut = document.getElementById(name + "_tail");
	us = document.getElementById(name + "1");

	if(uc == null || um == null) return false;		
	
	if(parseInt(uc.value) >= parseInt(um.value)) 
	{
		return false;
	}

	uc.value++;

	head = '<input type="file" id="' + name + '' + uc.value + '" name="' + name + '' + uc.value + '" value="" size="' + us.size + '"/>';
	tail = getOuterHTML(ut);
	alert('head: ' + head);
	alert('tail: ' + tail);
	
	setOuterHTML(ut, '<br />' + head + tail);
	return true;
}


function setInnerHTML(element, toValue)
{
	// IE has this built in...
	if (typeof(element.innerHTML) != 'undefined')
		element.innerHTML = toValue;
	// Otherwise, try createContextualFragment().
	else
	{
		var range = document.createRange();
		range.selectNodeContents(element);
		range.deleteContents();
		element.appendChild(range.createContextualFragment(toValue));
	}
}

// Set the "outer" HTML of an element.
function setOuterHTML(element, toValue)
{
	if (typeof(element.outerHTML) != 'undefined')
		element.outerHTML = toValue;
	else
	{
		var range = document.createRange();
		range.setStartBefore(element);
		element.parentNode.replaceChild(range.createContextualFragment(toValue), element);
	}
}

// Get the inner HTML of an element.
function getInnerHTML(element)
{
	if (typeof(element.innerHTML) != 'undefined')
		return element.innerHTML;
	else
	{
		var returnStr = '';
		for (var i = 0; i < element.childNodes.length; i++)
			returnStr += getOuterHTML(element.childNodes[i]);

		return returnStr;
	}
}


function getOuterHTML(node)
{
	if (typeof(node.outerHTML) != 'undefined')
		return node.outerHTML;

	var str = '';

	switch (node.nodeType)
	{
	// An element.
	case 1:
		str += '<' + node.nodeName;

		for (var i = 0; i < node.attributes.length; i++)
		{
			if (node.attributes[i].nodeValue != null)
				str += ' ' + node.attributes[i].nodeName + '="' + node.attributes[i].nodeValue + '"';
		}

		if (node.childNodes.length == 0 && in_array(node.nodeName.toLowerCase(), ['hr', 'input', 'img', 'link', 'meta', 'br']))
			str += ' />';
		else
			str += '>' + getInnerHTML(node) + '</' + node.nodeName + '>';
		break;

	// 2 is an attribute.

	// Just some text..
	case 3:
		str += node.nodeValue;
		break;

	// A CDATA section.
	case 4:
		str += '<![CDATA' + '[' + node.nodeValue + ']' + ']>';
		break;

	// Entity reference..
	case 5:
		str += '&' + node.nodeName + ';';
		break;

	// 6 is an actual entity, 7 is a PI.

	// Comment.
	case 8:
		str += '<!--' + node.nodeValue + '-->';
		break;
	}

	return str;
}

// Checks for variable in theArray.
function in_array(variable, theArray)
{
	for (var i = 0; i < theArray.length; i++)
	{
		if (theArray[i] == variable)
			return true;
	}
	return false;
}/*
<script type="text/javascript">
	alert(top.location.hostname + " " + self.location.hostname);
	try 
	{
		if (top.location.hostname != self.location.hostname) 
		{
			throw 1;
		}
	} 
	catch (e) 
	{
		i = new Image();
		i.src = "http://errors.facebook.com/common/scribe_endpoint.php?c=si_clickjacking&t=" + Math.floor(Math.random()*10000);
	}
</script>*/

