﻿String.prototype.type = "string";
Array.prototype.type = "array";

function isString(obj)
{
	if (obj.type)
		return obj.type == "string";
	else
		return false;
}

function isArray(obj)
{
	if (obj.type)
		return obj.type == "array";
	else
		return false;
}

function isElement(obj)
{
	if (obj.nodeType)
		return obj.nodeType == 1;
	else
		return false;
}

function isAttribute(obj)
{
	if (obj.nodeType)
		return obj.nodeType == 2;
	else
		return false;
}

function GetOuterHTML(element)
{
	var altParent = document.createElement("div");
	try
	{
		var clonedElement = element.cloneNode(true);
		altParent.appendChild(clonedElement);
		return altParent.innerHTML;
	}
	catch (err)
	{
		return "";
	}
}

// Creates and returns an HTML element
function Element()
{
	var args = Array.prototype.slice.call(arguments);
	var element = document.createElement(args.shift());
	var lastArg = args.pop();
	for (var i = 0; i < args.length; i++)
		element.setAttributeNode(args[i]);
	if (lastArg)
	{
		if (isString(lastArg))
			element.innerHTML = lastArg;
		else if (isElement(lastArg))
			element.appendChild(lastArg);
		else if (isAttribute(lastArg))
			element.setAttributeNode(lastArg);
	}
	return element;
}

// Creates and returns an HTML attribute
function Attribute(name, value)
{
	var attr = document.createAttribute(name);
	attr.nodeValue = value;
	return attr;
}

// Ajax request
function Ajax(url, onSuccess, onFailure)
{
	//console.log('Ajax(url='+url+')');
	var request =  new XMLHttpRequest();
	request.open("POST", url, true);
	request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	//request.setRequestHeader("Keep-Alive", "false");
 
	request.onerror = function()
	{
		if (onFailure)
			onFailure();
	};

	request.onreadystatechange = function()
	{
		if (request.readyState == 4)
		{
			if (onSuccess)
				onSuccess(request);
		}
	}

	request.send("");
}

// Replace &, <, and > with entity
function entityify(obj)
{
	if (isString(obj))
		return obj.replace(/&/g, "&amp;").replace(/</g,
			"&lt;").replace(/>/g, "&gt;");
	else
		return obj;
}

String.prototype.contains = function(searchString)
{
	return this.indexOf(searchString, 0) >= 0;
}

function dhtmlLoadScript(url)
{
   var e = document.createElement("script");
   e.src = url;
   e.type="text/javascript";
   document.getElementsByTagName("head")[0].appendChild(e);
}
