/*
	Javascript by Hugh Buchanan (c) 2001-2003
	www.customprogramming.net
*/

var ua = navigator.userAgent.toLowerCase();
var version,browser,ua_string,ua_loc,searchform;
if (browserCheck('msie'))
	browser = "Internet Explorer";
else if (browserCheck('safari'))
	browser = "Safari";
else if (browserCheck('opera'))
	browser = "Opera";
else if (browserCheck('webtv'))
	browser = "WebTV";
else if (browserCheck('icab'))
	browser = "iCab";
else if (browserCheck('omniweb'))
	browser = "OmniWeb";
else if (browserCheck('konqueror'))
	browser = "Konqueror";
else if (!browserCheck('compatible'))
	{
	browser = "Netscape";
	version = ua.charAt(8);
	}
else
	browser = "Unknown";

if (!version)
	version = ua.charAt(ua_loc + ua_string.length);

function browserCheck(agent) {
	ua_string = agent;
	ua_loc = ua.indexOf(agent) + 1;
	return ua_loc;
}

function Popup(url, width, height, noscroll) {
                var scroll = 1;
                y = window.open(url, 'popup', 'scrollbars='+scroll+',width='+width+',height='+height);
                if (!y.opener)
                        {
                        y.opener = self;
                        }
}

function init() {
	var obj = document.layers ? document.layers["placard"] :
	document.getElementById ?  document.getElementById("placard").style :
	document.all["placard"].style;
	obj.left = (screen.availWidth/2 - 240);
}

function toggleBox(divId, state) {
	if(document.layers)	   //NN4+
	{
		document.layers[divId].visibility = state ? "show" : "hide";
	}
	else if(document.getElementById)	  //gecko + IE 5+
	{
		if (document.getElementById(divId))
		{
			var obj = document.getElementById(divId);
			obj.style.visibility = state ? "visible" : "hidden";
		}
	}
	else if(document.all)	// IE 4
	{
		document.all[divId].style.visibility = state ? "visible" : "hidden";
	}
}

function Help(code) {
	var url = "/app/help/view/"+code+"/_/t/view.html";
	Popup(url,585,650,1);
}

function GenerateScript(url) {
	var password = prompt("Please enter your account password");
	var path = prompt("Please enter the path to write map files", "/path/to/ks_maps");
	if (password)
		document.location = url + '?PASSWORD=' + password + '&PATH=' + path;
}

function AnnounceTransfer(amount) {
	var human_readable = FormatTransfer(amount);
	if (amount == 0)
		{
		human_readable = "unlimited";
		amount = 999999999;
		}
	var message = "This figure is equal to <b>" + human_readable + "</b>";
	if (amount < 100000)
		message += "<br><b><font color=red>WARNING: Low Amount - Limit Under 100MB</font></b>";
	document.getElementById('HumanTransfer').innerHTML = message;
}
function FormatTransfer(amount) {
	var s = 0;
        scale = ['kB', 'MB', 'GB', 'TB'];
        while (amount > 1000)
                { 
                amount = (amount / 1024);
                s++;
                }

	amount = (Math.round(amount * 100) / 100);
	

	return amount + " " + scale[s];
//        my $var = qq(%.) . $CONFIG{'kByte_round'} . qq(f);
//        return sprintf($var, $x) . " " . $scale[$s];
}

function tourComplete() {
//	Popup('/app/help/tour_complete?html=true', 50, 50);
	var Message = "Tour Completed <img src='/app/help/tour_complete/spacer.gif'>";
	document.getElementById('Message').innerHTML = Message;
}

function Confirm(question,url) {
	
	var ok = window.confirm(question);
	if (ok) {
		document.location = url;
	}
}

function Validate(form) {
	var status = false;
	if (form.required.value)
		{
		// traverse the form
		var text = null;
		var required_array = form.required.value.split(',');
		var num = required_array.length;
		var missing = 0;
		for (var i=0; i < num; i++) {
			if (form.elements[required_array[i]].value == "")
				{
				missing++;
				text = form.elements[required_array[i]].name + " :: " + form.elements[required_array[i]].value;
				}
			}

		if (missing == 0)
			{
			status = true;
			}
		else
			{
			alert('You are missing '+missing+' form fields');
			}
		}
	else
		{
		status = true;
		}
	return status;
}

function clearHTML(id)
{
	if ((navigator.appName == "Microsoft Internet Explorer") || (browser == "Safari"))
		{
		// do nothing, IE seems to fail on this one
		}
	else	
		document.getElementById(id).innerHTML = '';
}

function postAltMenu(link, text)
{
	var html = null;
	html = ' <A CLASS="MENU" HREF="'+link+'">'+text+'</A>';
	document.getElementById('SitePrefs').innerHTML = html;
}
function postMenu(title, site_id, PRIMARY, Message)
{
	var html = null;
	if (site_id != null)
		{
		html = ' <A CLASS="MENU" HREF="'+PRIMARY+'/preferences/site/'+site_id+'">Site Preferences</A>';
		document.getElementById('SitePrefs').innerHTML = html;
		html = title+'  <A CLASS="MENU" HREF="/app/details/id/'+site_id+'">reload</A>';
		}
	else
		{
		html = title;
		}
	document.getElementById('TopMenu').innerHTML = html;

	if (Message != '')
		{
		document.getElementById('Message').innerHTML = Message;
		}

}

function Hover(row, action, colour_normal, colour_hover)
{
	// initialize some vars
	var cells = null;
	var colour_current = null;
	var colour_new = null;

	// this should work with most browsers:
	if (typeof(document.getElementsByTagName) != 'undefined')
		{
		cells = row.getElementsByTagName('td');
		}
	else if (typeof(row.cells) != 'undefined')
		{
		cells = row.cells;
		}
	else
		{
		return false;
		}

	var numcells = cells.length;
	var dom = false; // assume not DOM compatible
 	// special thanks to #javascript for DOM tips
	if (typeof(window.opera) == 'undefined' && typeof(cells[0].getAttribute != 'undefined'))
		{
		colour_current = cells[0].getAttribute('bgcolor');
		dom = true;
		}
	else
		{
		colour_current = cells[0].style.backgroundColor;
		dom = false;
		}

	if (action.toLowerCase() == 'over')
		{
		colour_new = colour_hover;
		}
	else
		{
		colour_new = colour_normal;
		}

	if (dom)
		{
		for (i = 0; i < numcells; i++)
			{
			if (cells[i].getAttribute('protect') != 'true')
				{
				cells[i].setAttribute('bgcolor', colour_new, 0);
				}
			}
		}
	else
		{
		for (i = 0; i < numcells; i++)
			{
			if (cells[i].style.protect != 'true')
				{
				cells[i].style.backgroundColor = colour_new;
				}
			}
		}
	// end function
}

function setjs() {
 if(navigator.product == 'Gecko') {
   document.loginform["interface"].value = 'mozilla';
 }else if(navigator.appName == 'Microsoft Internet Explorer' &&
    navigator.userAgent.indexOf("Mac_PowerPC") > 0) {
    document.loginform["interface"].value = 'konqueror';
 }else if(navigator.appName == 'Microsoft Internet Explorer' &&
 document.getElementById && document.getElementById('ietest').innerHTML) {
   document.loginform["interface"].value = 'ie';
 }else if(navigator.appName == 'Konqueror') {
    document.loginform["interface"].value = 'konqueror';
 }else if(window.opera) {
   document.loginform["interface"].value = 'opera';
 }

 var number = Math.round(Math.random()*99);
 document.loginform.Nickname.value = "Guest_" + number;
}
function nickvalid() {
   var nick = document.loginform.Nickname.value;
   if(nick.match(/^[A-Za-z0-9\[\]\{\}^\\\|\_\-`]{1,32}$/))
      return true;
   alert('Please enter a valid nickname');
   document.loginform.Nickname.value = nick.replace(/[^A-Za-z0-9\[\]\{\}^\\\|\_\-`]/g, '');
   return false;
}

