/* Code for AJAX online check */
function getItem(name) {
	return document.getElementById ? 
	document.getElementById(name) : 
	(document.all ? top.document.all[name] : null); 
	}

function create_grad(col1,col2,cnt) {
	var grad_var = new Object();
        grad_var.cur_i = 0;
        grad_var.iter_count = cnt;
        grad_var.src_color = col1;
        grad_var.dst_color = col2;
        grad_var.delta =
          [ ( 0.0 + col2[0] - col1[0] ) / cnt
          , ( 0.0 + col2[1] - col1[1] ) / cnt
          , ( 0.0 + col2[2] - col1[2] ) / cnt
          ];

	return grad_var;
}

function next_grad(grad_var) {
   if( grad_var.cur_i >= grad_var.iter_count ) return null;
   grad_var.cur_i++;
   var color = [0,0,0];
   function setGV(i) {
        var m_fun = null;
      	if( grad_var.delta[i] > 0 )
          m_fun = Math.min;
        else m_fun = Math.max;
        color[i] = m_fun(grad_var.dst_color[i],
      	          Math.round( grad_var.src_color[i] + 
                              grad_var.delta[i]*grad_var.cur_i ) )
      };
   setGV(0); setGV(1); setGV(2);
   return color;
   }

   function gradient(itms, grad_var) {
   	var cur_col = next_grad(grad_var);
   	if(!cur_col) {
          return;
        }       
        for(var i=0; i< itms.length; i++) {
        	itms[i].style.backgroundColor = 
	        	"rgb("+cur_col[0]+","+cur_col[1]+","+cur_col[2]+")";
        }
   	function gradient_rec() { gradient(itms,grad_var); }
        setTimeout(gradient_rec,100);
   }

   function node_position(tr,grad_var) {
	var prev_tr = tr.previousSibling;
	var table = tr.parentNode;
	var comp = table.compareFun;
	
	if(prev_tr && prev_tr.nodeName == "TR") {
	  var col =  table.compareCol;
	  var sign = table.compareSign;
	  var v1 = tr.getElementsByTagName("TD")[col].cellValue;
	  var v2 = prev_tr.getElementsByTagName("TD")[col].cellValue;
	  var comp_res	= comp(v1,v2);
	  if(comp_res == sign) {
		table.insertBefore(tr,prev_tr);
		node_position(tr,grad_var);
	  } else { 
	    if(grad_var)
	      gradient(tr.getElementsByTagName("TD"), grad_var);
	    tr.style.display = ''; } 	
	} else {
	    if(grad_var)
	      gradient(tr.getElementsByTagName("TD"), grad_var);
            tr.style.display = '';
	}
   }
   
   function run_gradient(tr) {
        if(tr.className == "odd") {
          var grad = create_grad(
            [ 0xdf, 0x79, 0x14 ], [ 0xE6, 0xF0, 0xFF ],20); 
          gradient(tr.getElementsByTagName("TD"), grad);
        } else {
          var grad = create_grad(
            [ 0xdf, 0x79, 0x14 ], [ 0xFF, 0xFF, 0xFF ],20); 
          gradient(tr.getElementsByTagName("TD"), grad);
        }
   }
   function numerate_list(tr_block) {
      /*
      var tr_list = tr_block.getElementsByTagName("TR"); 
      var c = tr_list.length % 2;
      for(var i=0; i<tr_list.length; i++) {
        var e = tr_list[i];
        first_td = tr_list[i].getElementsByTagName("TD")[0];
        if( i % 2 == c ) {
          e.className = "odd";
        }
        if( i % 2 != c ) {
          e.className = "";
        }
      }
      */
   }

   function compareStr(v1, v2) {
     if(v1 > v2) return -1 ;
     else if (v1 == v2) return 0;
     else return 1;
   }
   function compareFloat(f1,f2) {
     var v1 = parseFloat(f1);
     var v2 = parseFloat(f2);
     if(v1 > v2) return -1 ;
     else if (v1 == v2) return 0;
     else return 1;
   }
   function compareInt(i1,i2) {
     var v1 = parseInt(i1);
     var v2 = parseInt(i2);
     if(v1 > v2) return -1 ;
     else if (v1 == v2) return 0;
     else return 1;
   }
   function reorder(tbl) {
     var items = new Array();
     for(var j=0; j<tbl.childNodes.length; j++) {
     	if(tbl.childNodes[j].nodeName == "TR" )
	     	items.push(tbl.childNodes[j]);
     } 
     for(var j=0; j<items.length; j++) {
        tbl.removeChild(items[j]);
     }
     for(var j=0; j<items.length;j++) {
     	tbl.appendChild(items[j]);
     	node_position(items[j],null);
     }
   }
   function setCompare(itm,f,c) {
     itm.compareFun = f;
     if(itm.compareCol == c) 
     	itm.compareSign = -itm.compareSign;
     else {
	itm.compareCol = c;
	itm.compareSign = 1;
     }	
     reorder(itm);
   }
/*
   function create_node(j) {
   	var tr = document.createElement("tr");
   	tr.setAttribute("id",j);
   	var td1 = document.createElement("td");
   	var td2 = document.createElement("td");
   	td1.appendChild(document.createTextNode(""+j));
   	td1.cellValue = j;
   	td2.appendChild(document.createTextNode(""+j*j));
   	td2.cellValue = "" + j*j;
   	tr.appendChild(td1);
   	tr.appendChild(td2);
   	return tr;
   }
   function show_next() {
	var tbl = getItem('tbl');
	if( ! tbl.compareFun ) {
		tbl.compareFun = compareInt;
		tbl.compareCol = 0;
		tbl.compareSign = 1;
	}
   	var tr = create_node(Math.round(Math.random()*100));
   	tr.style.dispaly = "none";
	tbl.appendChild(tr);
	node_position(tr,create_grad([0,160,160],[255,255,255],10));
   }
*/

function update_progress(id, w_bar, w_total, cur) {
	var cur1 = cur % ( 2 * w_total+2*w_bar );
	var cur1 = cur % (w_total+w_bar );

	if( cur1 > w_total + w_bar) 
		cur1 = (2*w_total + 2*w_bar) - cur1;

	var cur_w = Math.max(0, cur1 - w_bar);
	var cur_p = Math.min(w_total - cur_w, cur1 - cur_w);

	getitem(document,id).style.width = '' + cur_p + '%';
	getitem(document,id+"_white").style.width = '' + cur_w + '%';
/*
	if( typeof cur_val == 'undefined' ) cur_val = (cur1 % 100)+ "%";
	getitem(document,id+"_val").innerHTML= cur_val;
*/
}

   function create_event_row(event)
        {
                  var tr = document.createElement("tr");
                  //tr.setAttribute("id",j);
                  var td_shost_name = document.createElement("td");
                  var td_result = document.createElement("td");
                  var td_size = document.createElement("td");
                  var td_response_time = document.createElement("td");
                  var td_speed = document.createElement("td");
                  var td_ip = document.createElement("td");
                  var td_partner = document.createElement("td");
                  var td_lst = [ td_shost_name,
                               td_result,
                               td_size,
                               td_response_time,
                               td_speed,
                               td_ip,
                               td_partner 
                             ];

                  td_shost_name.cellValue = event.n;
                  td_shost_name.className = "r";
                  if(event.shost.shost_primary)
                    td_shost_name.style.fontWeight = "bold";
                  td_shost_name.appendChild(
                    document.createTextNode(event.shost.shost_name));

                  if(event.error)
                    td_result.style.color = "red";
                  td_result.innerHTML = event.resultat;

                  td_size.appendChild(
                    document.createTextNode(event.size));

                  td_response_time.appendChild(
                    document.createTextNode(event.response_time));
                  td_response_time.style.textAlign="right";

                  td_speed.appendChild(
                    document.createTextNode(event.speed));
                  td_speed.style.textAlign="right";
                  

                  td_ip.appendChild(
                    document.createTextNode(event.ip));

                  if(event.shost.shost_sponsor) {
                    var a = document.createElement("a");
                    a.href = event.shost.shost_sponsor.url;
                    a.appendChild(
                      document.createTextNode(event.shost.shost_sponsor.name));
                    td_partner.appendChild(a);
                  }       

                  for(var j=0;j<td_lst.length;j++)
                    tr.appendChild(td_lst[j]);

                  return tr;
              }
   function clearContent(e) {
                var new_e = e.cloneNode(false);
                e.parentNode.insertBefore(new_e,e);
                e.parentNode.removeChild(e);
                return new_e;
        }

   function create_event_row2(event)
        {
                  var tr = getItem('src_row');
                  var td_shost_name = getItem('c_shost_name');
                  var td_result = getItem('c_result');
                  var td_size = getItem('c_size');
                  var td_response_time = getItem('c_response_time');
                  var td_speed = getItem('c_speed');
                  var td_ip = getItem('c_ip');
                  var td_partner = getItem('c_partner');
                  var td_lst = [ td_shost_name,
                               td_result,
                               td_size,
                               td_response_time,
                               td_speed,
                               td_ip,
                               td_partner 
                             ];

                  for(var i=0; i< td_lst.length; i++) {
                        td_lst[i].innerHTML = "";
                  }
                  
                  td_shost_name.cellValue = event.n;
                  td_shost_name.appendChild(
                    document.createTextNode(event.shost.shost_name));

                  if(event.error)
                    td_result.style.color = "red";
                  else 
                    td_result.style.color = "";
                  td_result.innerHTML = event.resultat;

                  td_size.innerHTML = event.size;

                  td_response_time.innerHTML = event.response_time;

                  td_speed.innerHTML = event.speed;
                  
                  td_ip.innerHTML = event.ip;

                  if(event.shost.shost_sponsor) {
                    var a = document.createElement("a");
                    a.className = "gray";
                    a.href = event.shost.shost_sponsor.url;
                    a.appendChild(
                      document.createTextNode(event.shost.shost_sponsor.name));
                    td_partner.appendChild(a);
                  } else { td_partner.innerHTML = "&nbsp;" }
                  var new_row = tr.cloneNode(true);
                  new_row.id = "row_"+event.n;
                  for(var i=0; i< new_row.childNodes.length; i++) {
                    if(typeof new_row.childNodes[i].id != "undefined")
                        new_row.childNodes[i].id += ""+event.n;
                  }

                  return new_row;
              }

/**************************************************************/
function activate_tab(tabs,name) {
  for(i=0; i< tabs.tabset.length; i++) {
    var cur_name = tabs.tabset[i];
    if( cur_name == name ) {
      getItem(cur_name+"-tab").className = "active";
      getItem(cur_name).className = "active";
      tabs.active = i;
    } else {
      var itm = getItem(cur_name+"-tab");
      if( itm != null )
        itm.className = "inactive";

      itm = getItem(cur_name);
      if( itm != null )
        itm.className = "inactive";
    }
  }
  function set_act(b_name, act) {
        var button = getItem(b_name);
        if(button != null) {
          if( tabs.button_type == 'hidden' )
            button.style.display = act ? 'none' : ''; 
          else
            button.disabled = act;
        }
  }
  set_act( 
        'next-'+tabs.suffix, 
        tabs.active >= tabs.tabset.length - 1
        );

  set_act( 
        'save-'+tabs.suffix, 
        tabs.active != tabs.tabset.length - 1
        );

  set_act( 
        'prev-'+tabs.suffix, 
        tabs.active == 0
        );

  return false;
}

function next_tab(tabs) {
  activate_tab(tabs, 
    tabs.tabset[Math.min(tabs.active + 1, 
             tabs.tabset.length-1)]);
  }
function prev_tab(tabs) {
  activate_tab(tabs, 
    tabs.tabset[Math.max(tabs.active - 1,0)]);
  }

/****************************************/

function moveCursorToEnd(input)
{
	function f() {
		var end = input.value.length;
		if (input.setSelectionRange) {
			input.setSelectionRange(end,end);
		}
		else if (input.createTextRange) {
			var range = input.createTextRange();
			range.collapse(true);
			range.moveStart('character', end);
			range.select();
		}
		input.focus();
	}
	AddToBodyOnload(f);
}

function helpOnFocus(t) {

  if(t.value==t.helpText)
    {t.value=""; t.style.color="black";}
}

function helpOnBlur() {
  if(this.value=="")
        {this.value=this.helpText; this.style.color="gray";}
}

function setItemHelp(item_id, text) {
  var item = getItem(item_id);
  var tmpVal = item.value;
  item.value = text;
  item.helpText = item.value;
  function setOnFocus(f) {
    var old_onfocus = item.onfocus;
    function _f() {
        if(old_onfocus) old_onfocus();
        f(this);
    }
    item.onfocus = _f;
  }
  setOnFocus(helpOnFocus);
  item.onblur = helpOnBlur;
  if(tmpVal != "") item.value=tmpVal;
  else  item.style.color="gray";
}

function resetItemHelp(form) {
  for(var i=0; i< form.elements.length;i++) {
        var e = form.elements[i];
        if(e.helpText != null && e.helpText == e.value)
          e.value = "";
  }
  return true;
}
