


//-------------------------------------------------- Get Browser Data -------------------------------------------------------------------------------------
var detect = navigator.userAgent.toLowerCase();

function GetBrowserData()
{
	var browser;
	
	if(checkIt('msie')) 
	{
		browser = "IE";
	}
	else
	{
		browser = "";
	}
	return browser;
}

function checkIt(string)
{
	place = detect.indexOf(string) + 1;
	thestring = string;
	return place;
}




//--------------- Definition of "outerHTML" for Gecko(not IE) browsers -------------------------
if(GetBrowserData() != "IE")
{
	var _emptyTags = {
	"IMG":   true,
	"BR":    true,
	"INPUT": true,
	"META":  true,
	"LINK":  true,
	"PARAM": true,
	"HR":    true
	};

	HTMLElement.prototype.__defineGetter__("outerHTML", function () {
	var attrs = this.attributes;
	var str = "<" + this.tagName;
	for (var i = 0; i < attrs.length; i++)
		str += " " + attrs[i].name + "=\"" + attrs[i].value + "\"";

	if (_emptyTags[this.tagName])
		return str + ">";

	return str + ">" + this.innerHTML + "<" + this.tagName + ">";
	});

	HTMLElement.prototype.__defineSetter__("outerHTML", function () {
	var attrs = this.attributes;
	var str = "<" + this.tagName;
	for (var i = 0; i < attrs.length; i++)
		str += " " + attrs[i].name + "=\"" + attrs[i].value + "\"";

	if (_emptyTags[this.tagName])
		return str + ">";

	return str + ">" + this.innerHTML + "<" + this.tagName + ">";
	});

	HTMLElement.prototype.__defineSetter__("outerHTML", function (sHTML) {
	var r = this.ownerDocument.createRange();
	r.setStartBefore(this);
	var df = r.createContextualFragment(sHTML);
	this.parentNode.replaceChild(df, this);
	});
}





//------------------------- AJAX -----------------------------------------------------
function GetXmlResponse(DataToSend,URL,binText)
{
	var xmlhttp;
    if(GetBrowserData() != "IE") 
	{
        xmlhttp = new XMLHttpRequest();
    } 
	else if(GetBrowserData() == "IE")  
	{
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
	else
	{
		xmlhttp = false;
	}
	
	if(xmlhttp)
	{
   	 	xmlhttp.open("POST",URL + '?rand=' + Math.random() ,false);
   		xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
   	 	xmlhttp.send(DataToSend);
    	return(binText?xmlhttp.responseText:xmlhttp.responseXML);
	}
}


//-------------------------- Validation functions ------------------------------------

//Triming string from both sides.
function Trim(sString)
{
	while (sString.substring(0,1) == " ")
	{
		sString = sString.substring(1, sString.length);
	}
	while (sString.substring(sString.length-1, sString.length) == " ")
	{
		sString = sString.substring(0,sString.length-1);
	}
	return sString;
}


//Validates email.
function ValidEmail(m)
{
	m = Trim(m);
	
	if(m.indexOf(" ") != -1)	
	{
		return false;
	}
	
	if(m.indexOf("@")<1||m.indexOf(".")==-1||m.lastIndexOf(".")==(m.length-1)||m.indexOf("@")-m.indexOf(".")==1||m.lastIndexOf(".")-m.indexOf("@")==1||m.lastIndexOf(".")-m.indexOf("@")==1||m.indexOf("@")!=m.lastIndexOf("@"))
	{
		return false;
	}
			
	return true;
}


//Checks if string is an numeric.
function IsNumeric(sText)
{
	var ValidChars = "0123456789";
	var IsNumber = true;
	var Char;
	
	sText = Trim(sText);
	
	if(sText.length == 0)
		return false;

	for (var i=0; i<sText.length && IsNumber == true; i++) 
	{ 
	    Char = sText.charAt(i); 
	    if (ValidChars.indexOf(Char) == -1) 
	    {
	        IsNumber = false;
	    }
	}
	return IsNumber;
}

//Checks if file is of type given.
function CheckFileType(assignedFile,fileType)
{
	assignedFile = assignedFile.substr(assignedFile.lastIndexOf('\\'));
	var assignedFileExt = assignedFile.substr(assignedFile.lastIndexOf('.')).toLowerCase();
	if(assignedFileExt != ('.' + fileType.toLowerCase()))
	{
		return false;
	}
	else
	{
		return true;
	}
}

//Show Dialog.
function ShowDialog(href,width,height)
{
	try
	{
		var thetop = (((screen.height) /2)-height);
		var theleft = (((screen.width) / 2)-width);
		var NewWindow = window.open(href,null,"resizable=0,location=0,top=" + thetop + ",left=" + theleft + ",directories=0,status=0,menubar=0,scrollbars=0,toolbar=0,width=" + width + ",height=" + height);
		NewWindow.document.close();
		NewWindow.focus();
	}
	catch(ex)
	{
		alert(ex);
	}	
}

//Add to favorites.
function AddToFavorites(url,title,errmasg)
{
	try
	{
		if(window.sidebar) //Mozilla Firefox Bookmark.
		{ 
			window.sidebar.addPanel(title, url, "");
		} 
		else if(window.external) //IE Favorite.
		{ 
			window.external.AddFavorite(url, title); 
		}
		else if(window.opera && window.print) //Opera Hotlist.
		{ 
			return true; 
		}
	}
	catch(ex)
	{
		alert(errmasg);
	}
}

//Set as home page.
function SetAsHomePage(url,errmasg)
{
	try
	{
		document.body.style.behavior='url(#default#homepage)';
		document.body.setHomePage(url);
	}
	catch(ex)
	{
		alert(errmasg);
	}
}
