//global functions and vars
var SITE_URL='/';

var IE = document.all?true:false;
if(!IE) document.captureEvents(Event.KEYPRESS);
if(!IE) document.captureEvents(Event.MOUSEMOVE);

function getXmlHttpRequestObject(){
  if(window.XMLHttpRequest) return new XMLHttpRequest();
  else if(window.ActiveXObject) return new ActiveXObject("Microsoft.XMLHTTP");
}
function doAjax(url,func){
  receiveReq.open("GET", url, true);
  receiveReq.onreadystatechange=eval(func);
  receiveReq.send(null);
}
function addHandler(object, event, handler){
  if(!IE) object.addEventListener(event, handler, false);
  else object.attachEvent('on' + event, handler);
}
function removeHandler(object, event, handler){
  if(!IE) object.removeEventListener(event, handler, false);
  else object.detachEvent('on' + event, handler);
}

function dump(obj, obj_name) {
  var result = '';
  for (var i in obj)
    result += obj_name + '.' + i + ' = ' + obj[i] + '\n';
  return result;
}

function getCharCode(e){
  if(!e) if(window.event) e=window.event;
  if(typeof(e.keyCode)=='number') char_code=e.keyCode;
  else if(typeof(e.which)=='number') char_code=e.which;
  else if(typeof(e.charCode)=='number') char_code=e.charCode;
  return char_code;
}

String.prototype.trim=function() { return this.replace(/^\s+|\s+$/g, ''); }
String.prototype.explode=function(sep){
  if(sep.length!=''){
    var res_arr=Array();
    var str=this;
    var i=0;
    while((pos=str.indexOf(sep))!=-1){
      res_arr[i++]=str.substr(0,pos);
      str=str.substr(pos+sep.length);
    }
    res_arr[i++]=str.substr(0,str.length);
    if(res_arr.length>0) return res_arr;
    else Array(this);
  }return false;
}
String.prototype.get_in_str=function(fstr,lstr,limit,trim){
  if(!limit) var limit=0;
  var str=this;
  var temp_arr=Array();
  var lcnt=0;
  while(str.indexOf(fstr)!=-1 && (limit ? lcnt<limit : true)){
    var fpos=str.indexOf(fstr)+fstr.length;
    str=str.substr(fpos);
    var lpos=str.indexOf(lstr);
    var val=(lpos!=-1 ? str.substr(0,lpos) : str);
    temp_arr[temp_arr.length]=(trim ? val.trim() : val);
    str=str.substr(lpos+lstr.lenght);
    lcnt++;
  }
  return (limit==1 ? (temp_arr[0] ? temp_arr[0] : '') : temp_arr);
}
Array.prototype.in_array=function(obj){
  var len=this.length;
  for(var x=0; x<=len; x++){
    if(this[x]==obj) return true;
  }
  return false;
}
function isInt(x){
  var y=parseInt(x);
  if(isNaN(y)) return false;
  return x==y && x.toString()==y.toString();
}
function getSelectionStart(o){
  if(o.createTextRange){
    var r=document.selection.createRange().duplicate();
    r.moveEnd('character',o.value.length);
    if(r.text=='') return o.value.length;
    return o.value.lastIndexOf(r.text);
  }else return o.selectionStart;
}
function getSelectionEnd(o) {
  if(o.createTextRange){
    var r=document.selection.createRange().duplicate();
    r.moveStart('character',-o.value.length);
    return r.text.length;
  }else return o.selectionEnd;
}
function input_check_numeric(elemID,after_dot){
  if(!after_dot) after_dot=0;
  elem=document.getElementById(elemID);
  var pos=getSelectionStart(elem)+1;
  var temp_str='';
  elem.value=elem.value.replace(',','.');
  for(i=0; i<elem.value.length; i++){
    ch=elem.value.substr(i,1);
    if((ch.charCodeAt(0)>=48 && ch.charCodeAt(0)<=57) || (after_dot>0 && ch=='.' && temp_str.indexOf('.')==-1)) temp_str+=ch;
  }
  if((pos=temp_str.indexOf('.'))!=-1) temp_str=temp_str.substr(0,pos+after_dot+1);
  elem.value=temp_str;
}

if(!getCookie('newWinCounter')) createCookie('newWinCounter','0',1);
function open_window(link,w,h){
  var newWinCounter=getCookie('newWinCounter');
  var top = (screen.height - h) / 2;
  var left = (screen.width - w) / 2;
  var win = "width="+(w+20)+",height="+(h+20)+",top="+top+",left="+left+",menubar=no,location=no,resizable=yes,scrollbars=yes";
  newWin = window.open(link,'newWin'+newWinCounter,win);
  newWinCounter
  newWin.focus();
  createCookie('newWinCounter',newWinCounter+1,1);
}
function createCookie(name,value,days) {
  if (days) {
    var date = new Date();
    date.setTime(date.getTime()+(days*24*60*60*1000));
    var expires = "; expires="+date.toGMTString();
  }
  else var expires = "";
  document.cookie = name+"="+value+expires+"; path=/";
}

function getCookie(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;
}

function eraseCookie(name) {
  createCookie(name,"",-1);
}

function clear_select(select_elem,first_text){
  while (select_elem.firstChild) {
    select_elem.removeChild(select_elem.firstChild);
  }
  if(first_text) select_elem.options[0]=new Option(first_text,0);
}
function dataTable(table_id,head_tr){
  var tabla=document.getElementById(table_id);
  for(i=0; i<tabla.rows.length; i++){
    if(!(head_tr && i==0)) dataTableTr(tabla.rows[i]);
  }
}
function input_focus(inp_id,text,func){
  var inp=document.getElementById(inp_id);
  if(inp.value=='') inp.value=text;
  function inp_focus(e){
    if(inp.value.trim()==text) inp.value='';
  }
  function inp_blur(e){
    if(func) eval(func);
    if(inp.value.trim()=='') inp.value=text;
  }
  addHandler(inp,'focus',inp_focus);
  addHandler(inp,'blur',inp_blur);
}
function dataTableTr(obj){
  function msover(e){
    this.className='dataTableRowOver';
  }
  function msout(e){
    this.className='dataTableRow';
  }
  function msclick(e){
    if(this.className!='dataTableRowSelected'){
      this.className='dataTableRowSelected';
      removeHandler(obj,'mouseover',msover);
      removeHandler(obj,'mouseout',msout);
    }else{
      this.className='dataTableRowOver';
      dataTableTr(this);
    }
  }
  addHandler(obj,'mouseover',msover);
  addHandler(obj,'mouseout',msout);
  addHandler(obj,'click',msclick);
}
