var url_transform="../../transform/servlets/transform.servlets.Transform";
var charset_encoding_default="iso-8859-1";
var browser_name;
var browser_ver;
get_browser();

function encode_uri(str_in,charset_encoding) {
  var preserve_char="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz$-_.!*()";
  var str_out="";
  if (charset_encoding && !isEmpty(charset_encoding))
    charset_encoding=charset_encoding.toLowerCase();
  else
    charset_encoding=charset_encoding_default;
  for (var i=0; i<str_in.length; i++) {
    var c=str_in.charAt(i);
    if (preserve_char.indexOf(c)!=-1)
      str_out+=c;
    else if (c==' ')
      str_out+='+';
    else if (c <= '~' || charset_encoding=="iso-8859-1") {
      if (c.charCodeAt) {
        var code=c.charCodeAt(0);
        if (code<256)
          str_out+='%'+new Number(code).toString(16);  
      }
      else
        str_out+=escape(c);
    }
    else if (encodeURI) {
      str_out+=encodeURI(c);
    }
  }    
  // alert("encoding: "+charset_encoding+" str_in: "+str_in+" str_out: "+str_out);
  return str_out;
}

function get_search_param(search,param) {
  var s=search;
  var pos=s.indexOf('?');
    
  if (pos>=0) {
    s=s.substr(pos+1);
  }
  while ((pos=s.indexOf('='))>=0) {
    var name;
    var value;

    name=s.substr(0,pos);
    s=s.substr(pos+1);
    if ((pos=s.indexOf("&"))>=0) {
      value=s.substr(0,pos);
      s=s.substr(pos+1);
    }
    else {
      value=s;
      s="";
    }
    if (name==param) {
      // alert(param+"="+value);
      return value;
    }
  }
  // alert(param+"=null");
  return null;
}

function remove_search_param(search,param) {
  var url=search;
  var s=search;
  var search="";
  var pos=s.indexOf('?');
    
  if (pos>=0) {
    url=s.substr(0,pos);
    s=s.substr(pos+1);
  }
  while ((pos=s.indexOf('='))>=0) {
    var name;
    var value;

    name=s.substr(0,pos);
    s=s.substr(pos+1);
    if ((pos=s.indexOf("&"))>=0) {
      value=s.substr(0,pos);
      s=s.substr(pos+1);
    }
    else {
      value=s;
      s="";
    }
    if (name!=param) {
      search+=((search=="") ? '?' : '&')+name+"="+value;
    }
  }
  // alert("search="+search);
  return url+search;
}

function get_browser() {
  var ua = navigator.userAgent; 
  var pos;

  pos=ua.indexOf("Opera");
  if (pos>=0) {
    browser_name="Opera";
    browser_ver=parseFloat(ua.substr(pos+browser_name.length+1,4));
  }
  else {
    browser_name=navigator.appName;
    if (browser_name=="Netscape") {
      pos=ua.indexOf("Netscape");
      if (pos>=0)
        browser_ver=parseFloat(ua.substr(pos+browser_name.length+1,4));
    }
    else if (browser_name=="Microsoft Internet Explorer") {
      pos=ua.indexOf("MSIE");
      if (pos>=0)
        browser_ver=parseFloat(ua.substr(pos+("MSIE").length+1,4));
    }
  }
  if (!browser_ver || isNaN(browser_ver))
    browser_ver=parseFloat(navigator.appVersion);
  //alert("browser: "+browser_name+" ver: "+browser_ver+" userAgent: "+navigator.userAgent+" appVersion: "+navigator.appVersion);
}

function verify_browser(ver_explorer,ver_nestcape,ver_opera,ver_unknown) {
  if (browser_name=="Microsoft Internet Explorer" && ver_explorer && browser_ver>=ver_explorer || browser_name=="Netscape" && ver_netscape && browser_ver>=ver_netscape || browser_name=="Opera" && ver_opera && browser_ver>=ver_opera || browser_name=="unknown" && ver_unknown &&  browser_ver>=ver_unknown)
    return true;
  else
    return false; 
}

function validate_field(field,msg) {
  if (isEmpty(field.value)) {
    if (msg!=null) {
      alert(msg);
      field.select();
    }
    return false;
  }
  else
    return true;
}

function validate_form(form,msg) {
  var i;

  for (i=0; i<form.elements.length; i++) {
    var e=form.elements[i];
    var flags_pos=e.name.lastIndexOf("__");
    if (flags_pos!=-1) {
      var flags=e.name.substring(flags_pos+2);
      if (flags.indexOf("m")!=-1 && isEmpty(e.value)) {
        if (msg!=null) {
          e.focus();
          e.select();
          alert(msg);
        }
        return false;
      }    
    }
  }
  return true;
}

function validate_email(field,msg) {
  if (isEmpty(field.value) || isEmail(field.value))
    result=true;
  else {
    if (msg!=null) {
      field.select();
      alert(msg);
    }
    return false;
  }
}

function validate_id(field,msg) {
  if (isEmpty(field.value) || isId(field.value))
    result=true;
  else {
    if (msg!=null) {
      field.select();
      alert(msg);
    }
    return false;
  }
}

function validate_uint(field,msg) {
  if (isUint(field.value) || isId(field.value))
    result=true;
  else {
    if (msg!=null) {
      field.select();
      alert(msg);
    }
    return false;
  }
}

function validate_usemap(field,msg) {
  if (isEmpty(field.value) || isUsemap(field.value))
    result=true;
  else {
    if (msg!=null) {
      field.select();
      alert(msg);
    }
    return false;
  }
}

function displayWindow(wnd_name,url,wnd_attr) {
  var wnd;
  // alert("displayWindow url: "+url);
  wnd=window.open(url,wnd_name,wnd_attr);
  if (wnd!=null) {
    if (url.indexOf("mailto:")==0)
      wnd.close();
    else
      wnd.focus();
  }
}

function displayModalDlg(width,height,url,argv) {
  var pos_top=top.window.screenTop+(screen.availHeight/2)-width/2;
  var pos_left=top.window.screenLeft+(screen.availWidth/2)-height/2;
  if (pos_top<0)
    pos_top=0;
  if (pos_left<0)
    pos_left=0;
  // alert(url);
  return window.showModalDialog(url,argv,"dialogHeight: "+height+"px; dialogWidth: "+width+"px; dialogTop: "+pos_top+"px; dialogLeft: "+pos_left+"px; help: no; resizable: yes; status: no; edge: sunken; unadorned: yes; center: yes");
}

