/* http://shad:13080/dev/vpf/htdocs/ */
var html_base = new String(document.getElementById('baseuri').href);
var agt = navigator.userAgent.toLowerCase();
var is_op = (agt.indexOf("opera") != -1);
var is_ie = (agt.indexOf("msie") != -1) && document.all && !is_op;
var is_ie5 = (agt.indexOf("msie 5") != -1) && document.all && !is_op;
var is_mac = (agt.indexOf("mac") != -1);
var is_gk = (agt.indexOf("gecko") != -1);
var is_sf = (agt.indexOf("safari") != -1);
var is_kq = (agt.indexOf("konqueror") != -1);


if(!VPF) var VPF={};


VPF.core = function() {
  return {

    html_base : new String(document.getElementById('baseuri').href),

    /** ltrim a string (c) phpjs.org */
    ltrim : function(str, charlist) {
      charlist = !charlist ? ' \s\xA0' : charlist.replace(/([\[\]\(\)\.\?\/\*\{\}\+\$\^\:])/g, '\$1');
      var re = new RegExp('^[' + charlist + ']+', 'g');
      return str.replace(re, '');
    },

    /** write mail link */
    write_ailme : function(emname, emhost, name) {
      if( !name )
      name = emname + '@' + emhost;
      document.write('<a href="mailto:' + emname + '@' + emhost + '">' + name + '</a>');
   },
   is_external: function(a) {
     return a.attr('href').substr(0, html_base.length) != html_base;
   }
  };
}();

// expects a relative url as given by the jQuery.address plugin
VPF.request = function() {
  var _href = '';
  var _req = [];
  var _langdir = '';

  function _extract_lang_dir() {
    // assuming length of 2 is language :) 
    // ... an app is hardly ever named with just2 chars
    if( _req[0] && _req[0].length == 2 ) { 
      _langdir = _req[0];
      _req = _req.slice(1);
    }
  }

  function _parse() { 
    _req = VPF.core.ltrim(_href, '/').split('/');
  }
  return {
    init : function(href) {
      _href = href;
      _parse();
      _extract_lang_dir();
    },
    get : function(idx) {
      if( idx >= _req.length || idx < 0 )
        return '';
      return _req[idx];
    },
    app : function() { return this.get(0); },
    action : function() { return this.get(1); },
    url : function(full) {
      var u = '';
      if( full )
        u = VPF.core.html_base;

      if( _langdir )
        u += _langdir + '/';

      u += _req.join('/');

      return u;
    }
    /* returns the fragment */
  };
}();


/* 
 * translates email adresses into char codes 
 *
 * Usage:
 * tinyMCE.init({
 *   ...
 *   save_callback : "tinyMceSaveContent"
 *   ...
 * });
 *
 */
function tinyMceSaveContent( element_id, html, body )
{
  var returnValue = html.replace( /href=\"mailto\:(\S*)\"/gi, function ( mailto )
      {
      var email = mailto.substring( 6, mailto.length - 1 );
      var code = '';

      for ( var i = 0; i < email.length; i++ )
      {
      code += '&#' + email.charCodeAt( i ) + ';';
      }

      return 'href="' + code + '"';
      } );

  return returnValue;
}
