function count_array(a) {
// This sucks?!
var counter = 0;
for (var i in a) { counter++; }
return counter;
}

function getSelectedValues (select) {
  var r = new Array();
  for (var i = 0; i < select.options.length; i++)
    if (select.options[i].selected)
      r[r.length] = select.options[i].value;
  return r;
}

function getSelectedTexts (select) {
  var r = new Array();
  for (var i = 0; i < select.options.length; i++)
    if (select.options[i].selected)
      r[r.length] = select.options[i].text;
  return r;
}

function getSelectedIndices (select) {
  var r = new Array();
  for (var i = 0; i < select.options.length; i++)
    if (select.options[i].selected)
      r[r.length] = i;
  return r;
}


function unset(array, valueToUnset, valueOrIndex, isHash){
var output=new Array(0);
for(var i in array){
  if(!valueOrIndex){//search value
    if(array[i]==valueToUnset){continue};
    if(!isHash){
    output[++output.length-1]=array[i];
    }
    else{
    output[i]=array[i];
    }
  }
  else{//search index (or key)
    if(i==valueToUnset){continue};
    if(!isHash){
    output[++output.length-1]=array[i];
    }
    else{
    output[i]=array[i];
    }
  }
}
return output;
}




function dump(arr,level) {
	var dumped_text = "";
	if(!level) level = 0;
	
	//The padding given at the beginning of the line.
	var level_padding = "";
	for(var j=0;j<level+1;j++) level_padding += "    ";
	
	if(typeof(arr) == 'object') { //Array/Hashes/Objects 
		for(var item in arr) {
			var value = arr[item];
			
			if(typeof(value) == 'object') { //If it is an array,
				dumped_text += level_padding + "'" + item + "' ...\n";
				dumped_text += dump(value,level+1);
			} else {
				dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n";
			}
		}
	} else { //Stings/Chars/Numbers etc.
		dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
	}
	return dumped_text;
}




function popup_close(url) {
	if (url) {
		if (window.opener) {
			window.opener.location = url;
		} else {
			parent.location = url;
		}
	}
	if (opener) {
		self.close();
	}
	return false;
}



function dialog(url,windowname,width,height)
{
width=(width)?width:screen.width/2;
height=(height)?height:screen.height/2;
var screenX = (screen.width/2 - width/2);
var screenY = (screen.height/2 - height/2);
var features= "width=" + width + ",height=" + height +"toolbar=no,menubar=no,scrollbars=yes,resizable=yes,status=no,location=no,directories=no,copyhistory=no=no";
features += ",screenX=" + screenX + ",left=" + screenX;
features += ",screenY=" + screenY + ",top=" + screenY;
 
var mywin=window.open(url, windowname, features);
if (mywin)
mywin.focus();
return false;
}

function generate_address( username, domain) {
        var atsign = "&#64;";
        var addr = username + atsign + domain;
        document.write(
          "<" + "a" + " " + "href=" + "mail" + "to:" + addr + ">" +
          addr +
          "<\/a>");
}



function hide_div(name) {
	var id = document.getElementById(name);
	if (!id) return false;
	id.style.visibility = "hidden";
	return false;
}



function display_div(name) {
	var id = document.getElementById(name);
	if (!id) return false;
	id.style.visibility = "visible";
	return false;

}



function readCookie(name)
{
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++)
	{
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}
