// JavaScript Document


//  global functions (2009-11-03)


// this code is for making click() function on any html element
// this is hack for non-IE browsers
if (typeof HTMLElement!='undefined'&&!HTMLElement.prototype.click) {
  HTMLElement.prototype.click = function(){
    var evt = this.ownerDocument.createEvent('MouseEvents');
    evt.initMouseEvent('click', true, true, this.ownerDocument.defaultView, 1, 0, 0, 0, 0, false, false, false, false, 0, null);
    this.dispatchEvent(evt);
  }
}

// global function addEventListener for all browsers
function addEvent(obj, type, fn) {
    if (obj.addEventListener) {
        obj.addEventListener(type, fn, false);
        return true;
    } else if (obj.attachEvent) {
        obj['e' + type + fn] = fn;
        obj[type + fn] = function() { obj['e' + type + fn](window.event); }
        var r = obj.attachEvent('on' + type, obj[type + fn]);
        return r;
    } else {
        obj['on' + type] = fn;
        return true;
    }
}

// global testing function if variable is empty
function isEmpty(text) {
    if (text == null) return true;
    return (text.replace('/^\s+|\s+$/g', '').length==0);
}

// this is common callback function for object events
function globalCallback(instance,method) {
  return function() {
    return method.apply(instance,arguments);
  }
}

// simple output all properties from object
function globalAlertObjectProperties(obj) {
  var text = '';
  for (var x in obj) {
    text = text+x+' = '+eval('obj.'+x)+'; \r\n';
  }
  alert(text);
}

// open popup window
function winOpen(soub,w,h) {
  if (!w && !h) {
    var start = window.open(soub,'open');
  } else {
    var start = window.open(soub,'open','width='+ w +',height=' + h +',top=10,left=10');
  }
	start.focus();
}

// this remove all free text nodes from element tree
function freeElemsRemover(parentElem) {
  var elems = parentElem.childNodes;
  if (parentElem.childNodes.length==0) return true;
  for (var i=0;i<elems.length;i++) {
    if (elems[i].nodeType==3 && dojo.trim(elems[i].nodeValue).length==0) {
      var removenode = parentElem.removeChild(elems[i]);
      freeElemsRemover(parentElem);
      break;
    } else {
      freeElemsRemover(elems[i]);
    }
  }
}

// load and run new js file
function loadJSFile(src) {
  var script  = document.createElement('script');
  script.type = 'text/javascript';
  script.src  = src;
  script.setAttribute('charset','utf-8');
  document.getElementsByTagName('head')[0].appendChild(script);
}


// end of document
