var openid = '';
var highlighted_tr = new Array();
var highlighted_tr_class = new Array();
var mouse_x = 650;
var mouse_y = 590;

var mouse_x, mouse_y;

var ns4 = (document.layers)? true:false;
var ie4 = (document.all)? true:false;
var ns6 = (document.getElementById && !document.all) ? true: false;

if (ns6) {
	document.addEventListener("mousemove", mouseMove, true);
}
if (ns4) {
	document.captureEvents(Event.MOUSEMOVE);
	document.mousemove = mouseMove;
}


function mouseMove(e)    {
	if (ns4||ns6)    {
		mouse_x = e.pageX;
		mouse_y = e.pageY;
	}
	
	if (ie4)    {
		mouse_x = event.x;
		mouse_y = event.y;
	}

	if (ie4) {
		
		/* mouse_x += document.documentElement.scrollLeft;
		mouse_y += document.documentElement.scrollTop; */  
	} else {
		
		mouse_x = e.pageX;
		mouse_y = e.pageY;
	}
	//return true;
}

if (ie4) {
	document.documentElement.onmousemove = mouseMove;
} 


function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}
  


function trim(obj_value){
	var reg_ex = /^\s+/;
	obj_value = obj_value.replace(reg_ex, '');
	var reg_ex = /\s+$/;
	obj_value = obj_value.replace(reg_ex, '');
	return obj_value;
}


function set_highlight_tr(id) {

	trs = document.getElementsByTagName('tr');
	
	for (i = 0; i < trs.length; i ++) {
		if (trs[i].id == id) {
			// keep the tr classname
			highlighted_tr_class[id] = trs[i].className;
			trs[i].className = "name_required";
			highlighted_tr.push(id);
			return true;
		}
	}

	return false;

}


function unset_highlight_tr(id) {
	
	var trs = document.getElementsByTagName('tr');
	var i = 0;
	for (i = 0; i < trs.length; i ++) {
		if (trs[i].id == id) {
			// use old tr classname
			trs[i].className = highlighted_tr_class[id];
			var tmp_arr = new Array();
			for (i = 0; i < highlighted_tr.length; i ++) {
				if (highlighted_tr[i] != id) {
					tmp_arr.push(highlighted_tr[i]);
				}
			}
	
			highlighted_tr = tmp_arr;

			return true;
		}
	}

	return false;

}


function clear_highlighted_tr() {

	var tmp_arr = highlighted_tr;

	var i = 0;
	for (i = 0; i < tmp_arr.length; i ++) {
		unset_highlight_tr(tmp_arr[i]);
	}

	highlighted_tr = new Array();
}


function togglerow(id){

	if(openid!=id){
		if(document.getElementById(openid)){
			document.getElementById(openid).style.display = 'none';
		}
	}
	
	openid = id;
	
	if (document.getElementById(id).style.display == 'none') {
		document.getElementById(id).style.display = 'block';
	} else {
		document.getElementById(id).style.display = 'none';
	}
}

function changeclass(obj,state,classname){
	if (state) {
		document.getElementById(obj).className = classname+'_hover';
		if (document.getElementById(obj+"_ul")) {
			document.getElementById(obj+"_ul").style.display = 'block';
		}
		
		
	} else {
		document.getElementById(obj).className = classname;
		if (document.getElementById(obj+"_ul")) {
			document.getElementById(obj+"_ul").style.display = 'none';
		}
	}
	
}


var ns = (navigator.appName.indexOf("Netscape") != -1);
var d = document;
function JSFX_FloatDiv(id, sx, sy){
	var el=d.getElementById?d.getElementById(id):d.all?d.all[id]:d.layers[id];
	var px = document.layers ? "" : "px";
	window[id + "_obj"] = el;
	if(d.layers)el.style=el;
	el.cx = el.sx = sx;el.cy = el.sy = sy;
	el.sP = function(x,y){this.style.left=x+px;this.style.top=y+px;};
	el.floatIt = function(){
		var pX, pY;
		pX = (this.sx >= 0) ? 0 : ns ? innerWidth : 
		document.documentElement && document.documentElement.clientWidth ? document.documentElement.clientWidth : document.body.clientWidth;
		pY = ns ? pageYOffset : document.documentElement && document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop;
		if(this.sy<0) 
		pY += ns ? innerHeight : document.documentElement && document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body.clientHeight;
		this.cx += (pX + this.sx - this.cx)/8;this.cy += (pY + this.sy - this.cy)/8;
		this.sP(this.cx, this.cy);
		
		setTimeout(this.id + "_obj.floatIt()", 40);
	}
	return el;
}


function html_alert(message) {
	container = document.getElementById('html_alert');
	if (container && message != '') {
		container.style.display = '';
		container.innerHTML = message
	}
}

function load() {
	return true;
}

function move_selected(id_from, id_to) {
		var from = document.getElementById(id_from);
		var to = document.getElementById(id_to);
		var i;
		if (from) {
			var size = from.options.length;	
			for(i = 0; i < size; i++){
				if(from.options[i].selected == true && (i != size-1)) {
					var option = from.options[i].text;
					var index = to.options.length;
					select_insert(id_to, index-1, option, from.options[i].value);
					select_delete(id_from, option);
					size = from.options.length;
					i--;
				}
			}
		} 
}


//function that appends an element at a drop-down list
function select_append(id, option, value){
  var elem = document.getElementById(id);//get element
  if(elem){
    var size = elem.options.length; //get the no of options
    elem.options[size] = new Option(option, value);
  }
  return null;
}

//function that inserts an element on the request position at a drop-down list
function select_insert(id, index, option, value){
  var elem = document.getElementById(id);//get element
  if(elem){
    var size = elem.options.length; //get the no of options
    if(index < size ){
      //inserts an option on the right index
	  if (index > 0) {
		  for (i = size; i > index-1; i--){
			elem.options[i] = new Option(elem.options[i-1].text, elem.options[i-1].value);
		  }
	  } else {
		  elem.options[size] = new Option(elem.options[index].text, elem.options[index].value);
	  }
		  elem.options[index] = new Option(option, value);
    } else{
      //apend if the indez overcomes the list size
      alert("Insert index overcomes the list size. the element will be append at the end.");
      elem.options[size] = new Option(option, value);
    }
  }
}

//function that removes an element at a drop-down list
function select_delete(id, option){
  var elem = document.getElementById(id);//get element
  if(elem){
    var size = elem.options.length; //get the no of options
    //find the position of that option
    position = -1
    for(i = 0; i < size; i++){
      if(elem.options[i].text  == option){
        position = i;
      }
    }
    //remove the element
    if(position > -1){
      elem.options[position] = null;
    } else{
      alert("Element wasn't found");
    }
  }
}

function changeState(obj1,obj2,obj3) {

	if (document.getElementById(obj3).className=="state_collapse") {
		document.getElementById(obj3).className="state_expand";
	} else if(document.getElementById(obj3).className=="state_expand") {
		document.getElementById(obj3).className="state_collapse";
	}
	
	if (document.getElementById(obj1).style.display=="") {
		document.getElementById(obj1).style.display="none";
	} else {
		document.getElementById(obj1).style.display="";
	}
	if (document.getElementById(obj2).style.display=="") {
		document.getElementById(obj2).style.display="none";
	} else {
		document.getElementById(obj2).style.display="";
	}

}

function show_tab(tabid, tabclass) {
	/* alert(tabid);
	alert(current_tab); */
	/* hide old tab */
	document.getElementById("tab_content"+current_tab).style.display = 'none';
	document.getElementById("tab"+current_tab).className = current_class + 'grey';
	document.getElementById("start"+current_tab).className = 'start_button_grey';
	document.getElementById("middle"+current_tab).className = 'middle_button_grey';
	document.getElementById("end"+current_tab).className = 'end_button_grey';
	/* display new tab */
	document.getElementById("tab_content"+tabid).style.display = '';
	document.getElementById("tab"+tabid).className = tabclass + 'orange';
	document.getElementById("start"+tabid).className = 'start_button_orange';
	document.getElementById("middle"+tabid).className = 'middle_button_orange';
	document.getElementById("end"+tabid).className = 'end_button_orange';
	
	current_tab = tabid;
	current_class = tabclass;
}



function show_hide(elem_id, state) {
	elem = document.getElementById(elem_id);
	if (elem) {
		if (state != '' && (state == 'show' || state == 'hide')) {
			if (state == 'show') {
				elem.style.display = '';
			} else {
				elem.style.display = 'none';
			}
		} else {
			if (elem.style.display == 'none') {
				elem.style.display = '';
			} else {
				elem.style.display = 'none';
			}
		}
	}
}

/*!\ fn relate() {{{
 * \brief Relate a checkbox with a group of fields.
 *  
 * \param id_check Checkbox ID
 * \param invert TRUE/FALSE Invert selection meaning disable fields when checked, enable when unchecked.
 *               Default FALSE.
 * \param ... List of field IDs. A field ID can be specified as 'id' or '<readroot_id>#<fid>|<fid>|...';
 *            the second form specifies a list of fields from the readroot template <id>.
 * 
 * \return TRUE on success
 * \return FALSE on error
 */
function relate(obj, invert) {

	var i;
	if (!obj || arguments.length == 2) {
		return false;
	}

	var id_list = new Array;
	
	for (i = 2; i < arguments.length; i ++) {
		/* parse IDs */
		var arg = arguments[i];
		id_list.push(arg);
	}
	
	var state = true;
	
	if (obj.tagName == 'INPUT') {
		if ((obj.type == 'checkbox') || (obj.type == 'radio')) {
			state = (invert == false)?!obj.checked:obj.checked;
		}
	}

	if (obj.tagName == 'SELECT') {
		var values = invert.split(',');
		var selected_value = obj.options[obj.selectedIndex].value;
		state = true;
		for (i = 0; i < values.length; i ++) {
			if (values[i] == selected_value) {
				state = false;
			}
		}
	}

	for (i = 0; i < id_list.length; i ++) {
		var _obj = document.getElementById(id_list[i]);
		
		if (_obj) {
			_obj.disabled = state;
		}
	}

	return true;

} /* }}} relate */



function show_layer(inner_html_text) {
	pos_x = mouse_x;//window.event.clientX;
	pos_y = mouse_y; //window.event.clientY;
	obj = document.getElementById('help_layer');
	obj.style.visibility = "";
	obj.innerHTML = inner_html_text;
	obj.style.left = (pos_x+25)+'px';
	obj.style.top = pos_y+'px';
}

function hide_layer() {
 	obj = document.getElementById('help_layer');
	obj.style.visibility = "hidden";
} 

function toggle_country_menu(state){
	if (state) {
		document.getElementById('countries_menu').style.display='block';
		document.getElementById('countries').className='countries_on';
	} else { 
		document.getElementById('countries_menu').style.display='none';
		document.getElementById('countries').className='countries';
	}
}



function activate_tab(button_id, tab_class, alt_text) {
	
	document.getElementById(current_tab).className = current_classname+'_off';
	document.getElementById(button_id).className = tab_class+'_on';
	document.getElementById('buttons_' + current_tab ).style.display = 'none';
	document.getElementById('buttons_' + button_id ).style.display = '';
	document.getElementById('banner_container').className = 'index_banner_'+button_id;
	document.getElementById('banner_placeholder').useMap = '#Map_'+button_id;
	document.getElementById('banner_placeholder').alt = alt_text;
	current_classname = tab_class;
	current_tab = button_id;
	
}