window.std = {};
window.std.coords  = function(ev)
{
 if (!ev) ev = window.event;

 var x = window.Event?parseFloat(ev.pageX):parseFloat(window.event.clientX)+parseFloat(document.body.scrollLeft)-parseFloat(document.body.clientLeft);
 var y = window.Event?parseFloat(ev.pageY):parseFloat(window.event.clientY)+parseFloat(document.body.scrollTop)-parseFloat(document.body.clientTop);

 /* Firefox 2.0 mousescroll error fix */
 if (ev.delta && window.instance.browserDetect.appname == 'Firefox' && window.instance.browserDetect.version == '2')
 {
  var target = ev.target ? ev.target : ev.srcElement;
  var pos = window.std.node.pos(target);
  x = pos.x + x/15;
  y = pos.y + y/15;
 }

 return {x: x, y: y}
};

window.std.pos = function(node)
{
 var curleft = curtop = 0;

 if (node && node.offsetParent)
 {
  curleft = node.offsetLeft;
  curtop = node.offsetTop;
  while (node = node.offsetParent)
  {
   curleft += node.offsetLeft;
   curtop += node.offsetTop;
  }
 }

 return {x: parseInt(curleft), y: parseInt(curtop)};
};

window.std.embed = function(node)
{
    var parent = node;
    while (parent.parentNode && parent.nodeName != 'svg')
        parent = parent.parentNode;

    return $(top.window.document).find(".hasSVG[num="+$(parent).attr('num')+"]")[0];
}

window.std.def = window.__def__ = function()
{
 for (var i=0; i<arguments.length; i++)
  if (arguments[i]!=null && String(arguments[i])!='undefined' && String(arguments[i]).length!=0)
   return arguments[i];
 return null
};

window.std.parseURL = function(url) 
{
    var a =  document.createElement('a');
    a.href = url;
    return {
        source: url,
        protocol: a.protocol.replace(':',''),
        host: a.hostname,
        port: a.port,
        query: a.search,
        params: (function(){
            var ret = {},
                seg = a.search.replace(/^\?/,'').split('&'),
                len = seg.length, i = 0, s;
            for (;i<len;i++) {
                if (!seg[i]) { continue; }
                s = seg[i].split('=');
                ret[s[0]] = s[1];
            }
            return ret;
        })(),
        file: (a.pathname.match(/\/([^\/?#]+)$/i) || [,''])[1],
        hash: a.hash.replace('#',''),
        path: a.pathname.replace(/^([^\/])/,'/$1'),
        relative: (a.href.match(/tp:\/\/[^\/]+(.+)/) || [,''])[1],
        segments: a.pathname.replace(/^\//,'').split('/')
    };
}
