//----------For image rollovers and clicks---------------------------
function FP_swapImg() {//v1.0
 var doc=document,args=arguments,elm,n; doc.$imgSwaps=new Array(); for(n=2; n<args.length;
 n+=2) { elm=FP_getObjectByID(args[n]); if(elm) { doc.$imgSwaps[doc.$imgSwaps.length]=elm;
 elm.$src=elm.src; elm.src=args[n+1]; } }
};

function FP_preloadImgs() {//v1.0
 var d=document,a=arguments; if(!d.FP_imgs) d.FP_imgs=new Array();
 for(var i=0; i<a.length; i++) { d.FP_imgs[i]=new Image; d.FP_imgs[i].src=a[i]; }
};

function FP_getObjectByID(id,o) {//v1.0
 var c,el,els,f,m,n; if(!o)o=document; if(o.getElementById) el=o.getElementById(id);
 else if(o.layers) c=o.layers; else if(o.all) el=o.all[id]; if(el) return el;
 if(o.id==id || o.name==id) return o; if(o.childNodes) c=o.childNodes; if(c)
 for(n=0; n<c.length; n++) { el=FP_getObjectByID(id,c[n]); if(el) return el; }
 f=o.forms; if(f) for(n=0; n<f.length; n++) { els=f[n].elements;
 for(m=0; m<els.length; m++){ el=FP_getObjectByID(id,els[n]); if(el) return el; } }
 return null;
};

//-----------To sort listboxs-------------------
function compareText (option1, option2) {
	return option1.text < option2.text ? -1 :
	option1.text > option2.text ? 1 : 0;
};
function compareValue (option1, option2) {
	return option1.value < option2.value ? -1 :
	option1.value > option2.value ? 1 : 0;
};
function compareTextAsFloat (option1, option2) {
	var value1 = parseFloat(option1.text);
	var value2 = parseFloat(option2.text);
	return value1 < value2 ? -1 :
	value1 > value2 ? 1 : 0;
};
function compareValueAsFloat (option1, option2) {
	var value1 = parseFloat(option1.value);
	var value2 = parseFloat(option2.value);
	return value1 < value2 ? -1 :
	value1 > value2 ? 1 : 0;
};
function sortSelect (select,compareFunction) {
	if (!compareFunction)
	compareFunction = compareText;
	var options = new Array (select.options.length);
	for (var i = 0; i < options.length; i++)
	options[i] = 
		new Option (
		select.options[i].text,
		select.options[i].value,
		select.options[i].defaultSelected,
		select.options[i].selected
		);
	options.sort(compareFunction);
	select.options.length = 0;
	for (var i = 0; i < options.length; i++)
	select.options[i] = options[i];
};

//Used for the resize bug that exist on certain versions of IE. When 
//the browser resizes it submits the page while resizing.
var running=false;	   			
function doResize() {			   	
	running=false;
	window.document.getElementById('Form1').submit();
};

function resize() {			   								
	if (!running) {
		running=true;
		setTimeout("doResize()",500);
	}
};

function trim(str)
{
	var blankRE=/^[\s]*$/;
	
	if(typeof str == "undefined")
		return "";
	if(str == null)
		return "";
	if(str != "" || blankRE.test(str) == false)
	{
   		return str.replace(/^\s*|\s*$/g,"");
   	}
   	else
   	{
   		return "";
   	}
};


function PopUp(url,name,fulscreen,fillscreen,tlbar,loc,stat,menu,scroll,resize,w,h,t,l)
{
    if(fillscreen == "yes")
    {
        w = window.screen.availWidth - 10;
        h = window.screen.availHeight - 25;
        window.open(url,name,"fullscreen=" + fulscreen + ",toolbar=" + tlbar + ",location=" + loc + ",status=" + stat + ",menubar=" + menu + ",scrollbars=" + scroll + ",resizable=" + resize + ",width=" + w + ",height=" + h + ",top=" + t + ",left=" + l);
    }
    else	
    {
        window.open(url,name,"fullscreen=" + fulscreen + ",toolbar=" + tlbar + ",location=" + loc + ",status=" + stat + ",menubar=" + menu + ",scrollbars=" + scroll + ",resizable=" + resize + ",width=" + w + ",height=" + h + ",top=" + t + ",left=" + l);
    }
};

function HelpPopUp(ToolName)
{
    url = ToolName; //"./Help/Help.htm#" & ToolName
    /*if(fillscreen == "yes")
    {
        w = window.screen.availWidth - 10;
        h = window.screen.availHeight - 25;
        window.open(url,name,"fullscreen=" + fulscreen + ",toolbar=" + tlbar + ",location=" + loc + ",status=" + stat + ",menubar=" + menu + ",scrollbars=" + scroll + ",resizable=" + resize + ",width=" + w + ",height=" + h + ",top=" + t + ",left=" + l);
    }
    else
    {	*/
        window.open(url,"HelpPage","fullscreen=no,toolbar=no,location=no,status=no,menubar=yes,scrollbars=yes,resizable=yes,width=550,height=600,top=0,left=250");
    //}
};

function IsValidEmailAddress(emailStr)
{
	/* The following variable tells the rest of the function whether or not
	to verify that the address ends in a two-letter country or well-known
	TLD.  1 means check it, 0 means don't. */
	
	var checkTLD=0;
	
	/* The following is the list of known TLDs that an e-mail address must end with. */
	
	var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;
	
	/* The following pattern is used to check if the entered e-mail address
	fits the user@domain format.  It also is used to separate the username
	from the domain. */
	
	var emailPat=/^(.+)@(.+)$/;
	
	/* The following string represents the pattern for matching all special
	characters.  We don't want to allow special characters in the address. 
	These characters include ( ) < > @ , ; : \ " . [ ] */
	
	var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
	
	/* The following string represents the range of characters allowed in a 
	username or domainname.  It really states which chars aren't allowed.*/
	
	var validChars="\[^\\s" + specialChars + "\]";
	
	/* The following pattern applies if the "user" is a quoted string (in
	which case, there are no rules about which characters are allowed
	and which aren't; anything goes).  E.g. "jiminy cricket"@disney.com
	is a legal e-mail address. */
	
	var quotedUser="(\"[^\"]*\")";
	
	/* The following pattern applies for domains that are IP addresses,
	rather than symbolic names.  E.g. joe@[123.124.233.4] is a legal
	e-mail address. NOTE: The square brackets are required. */
	
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
	
	/* The following string represents an atom (basically a series of non-special characters.) */
	
	var atom=validChars + '+';
	
	/* The following string represents one word in the typical username.
	For example, in john.doe@somewhere.com, john and doe are words.
	Basically, a word is either an atom or quoted string. */
	
	var word="(" + atom + "|" + quotedUser + ")";
	
	// The following pattern describes the structure of the user
	
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
	
	/* The following pattern describes the structure of a normal symbolic
	domain, as opposed to ipDomainPat, shown above. */
	
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
	
	/* Finally, let's start trying to figure out if the supplied address is valid. */
	
	/* Begin with the coarse pattern to simply break up user@domain into
	different pieces that are easy to analyze. */
	
	var matchArray=emailStr.match(emailPat);
	
	if (matchArray==null) {
	
	/* Too many/few @'s or something; basically, this address doesn't
	even fit the general mould of a valid e-mail address. */
	
	alert("Email address seems incorrect (check @ and .'s)");
	return false;
	}
	var user=matchArray[1];
	var domain=matchArray[2];
	
	// Start by checking that only basic ASCII characters are in the strings (0-127).
	
	for (i=0; i<user.length; i++) {
	if (user.charCodeAt(i)>127) {
	alert("Ths username contains invalid characters.");
	return false;
	   }
	}
	for (i=0; i<domain.length; i++) {
	if (domain.charCodeAt(i)>127) {
	alert("Ths domain name contains invalid characters.");
	return false;
	   }
	}
	
	// See if "user" is valid 
	
	if (user.match(userPat)==null) {
	
	// user is not valid
	
	alert("The username doesn't seem to be valid.");
	return false;
	}
	
	/* if the e-mail address is at an IP address (as opposed to a symbolic
	host name) make sure the IP address is valid. */
	
	var IPArray=domain.match(ipDomainPat);
	if (IPArray!=null) {
	
	// this is an IP address
	
	for (var i=1;i<=4;i++) {
	if (IPArray[i]>255) {
	alert("Destination IP address is invalid!");
	return false;
	   }
	}
	return true;
	}
	
	// Domain is symbolic name.  Check if it's valid.
	 
	var atomPat=new RegExp("^" + atom + "$");
	var domArr=domain.split(".");
	var len=domArr.length;
	for (i=0;i<len;i++) {
	if (domArr[i].search(atomPat)==-1) {
	alert("The domain name does not seem to be valid.");
	return false;
	   }
	}
	
	/* domain name seems valid, but now make sure that it ends in a
	known top-level domain (like com, edu, gov) or a two-letter word,
	representing country (uk, nl), and that there's a hostname preceding 
	the domain or country. */
	
	if (checkTLD && domArr[domArr.length-1].length!=2 && 
	domArr[domArr.length-1].search(knownDomsPat)==-1) {
	alert("The address must end in a well-known domain or two letter " + "country.");
	return false;
	}
	
	// Make sure there's a host name preceding the domain.
	
	if (len<2) {
	alert("This address is missing a hostname!");
	return false;
	}
	
	// If we've gotten this far, everything's valid!
	return true;
};

function IsValidUrl(url)
{
    var UrlString = trim(url);
    lengthValue = UrlString.length;
    if(lengthValue != 0)
    {
        var j = new RegExp();
        j.compile("^[A-Za-z]+://[A-Za-z0-9-]+\.[A-Za-z0-9]+"); 
        //lengthValue = Trim(document.getElementById('txtWeb').value);
        if (!j.test(UrlString))
        { 
	        alert("Please enter valid URL.");
	        return false;
	    }
	    else
	    	return true;

    }
};

function ObjectExist(id)
{
	var obj;
		obj = document.getElementById(id);
	
	if(obj == null)
		return false;
	else
		return true;
};

function WhereExpressionEscape(SQL)
{
	var tmp = SQL;
        tmp = tmp.replace("&", "&amp;");
        tmp = tmp.replace(">", "&gt;");
        tmp = tmp.replace("\"", "&quot;");
        tmp = tmp.replace("\'", "&apos;");
        tmp = tmp.replace("<", "&lt;");
		
		return tmp;
};

function PanelState(id,visible)
{
	var state;
	
	if(trim(visible) == "")
	{
		state = document.getElementById(id).style.visibility;
	}
	else
	{
		switch(visible)
		{
			case "visible":
				state = "hidden";
				break;
			case "hidden":
				state = "visible";
				break;
		}
	}
	
	switch(state)
	{
		case "visible": 
			document.getElementById(id).style.display = "none";
			document.getElementById(id).style.visibility = "hidden";
			break;
			
		case "hidden":
			document.getElementById(id).style.display = "block";
			document.getElementById(id).style.visibility = "visible";
			break;
	}
};


