
// getElementById - não gera erro de o elemento não existir
function _get(id, doc) {
return typeof id == 'object' ? id : ((doc || document).getElementById(id) || null);
}

// altura do elemento <BODY>
function bodyHeight() {
  if(self.innerHeight) return self.innerHeight;
  else if(document.documentElement && document.documentElement.clientHeight) 
    return document.documentElement.clientHeight;
  else return document.body.clientHeight || 0;
}

// mede a rolagem da página
function getScroll() {
return { 'y': document.all ? document.documentElement.scrollTop : window.pageYOffset, 
         'x': document.all ? document.documentElement.scrollLeft : window.pageXOffset };
}

function bodyScroll() {
	if(document.documentElement && document.documentElement.scrollHeight) 
		return document.documentElement.scrollHeight;
	else return document.body.scrollHeight || 0;
}

function absBodyHeight() {
var bh1 = bodyScroll(), bh2 = bodyHeight();  
return Math.max(bh1, bh2);
}

// centraliza um elemento
function center(elem) {
var ew = elem.clientWidth, eh = elem.clientHeight, 
    top = ((bodyHeight() / 2) - (eh / 2)) + getScroll().y, 
    left = ((document.body.offsetWidth / 2) - (ew / 2)) + getScroll().x;
elem.style.top = top+'px';
elem.style.left = left+'px';
}


function behindBox(id) {
var outer = document.createElement('div'), bw = document.body.clientWidth, 
    bh = absBodyHeight(); //Math.max(bodyHeight(), document.body.clientHeight)+getScroll().y;
outer.id = id;
outer.style.cssText = 'position:absolute; top:0; left:0; width:'+bw+'px; height:'+bh+'px; background-color:#000000; '+
                      'opacity:.7; -moz-opacity:.7; filter:alpha(opacity=70); z-index:'+topZ()+';';
document.body.appendChild(outer);
return outer;
}

function topZ() {
var els = document.getElementsByTagName('*'), tz = 1;
	for(var i = 0; i < els.length; i++) {
		try { var z = els[i].style.zIndex; }
		catch(e) { var z = 0; }
		if(z && z < tz) tz = z;
	}
return tz + 1;
}

function dropElement(id) {
var e = _get(id);
  if(e) e.parentNode.removeChild(e);
}

// ajax (dhteumeuleu)
var AJAX = (function(AJAX) {
  return function(url) {
    var ajax = AJAX();
    ajax.open("GET", url, false);
    ajax.send("");
    return ajax;
  };
})(this.XMLHttpRequest ? function() { return new XMLHttpRequest; } 
                       : function() { return new ActiveXObject("Microsoft.XMLHTTP"); });


function makeQuery() {
var query = ['action=widget'];
	for(var i in wme_widget) {
		if(i == 'cats') query.push('cats[]='+wme_widget.cats.join('&cats[]='));
		else query.push(i+'='+encodeURIComponent(wme_widget[i]));
	}
return query.join('&');
}



function makeIframe(q) {
var ifr = '<iframe scrolling="no" frameborder="0" name="wme_widget_iframe" id="wme_widget_iframe" style="border-width:0pt; width:'+
          (parseInt(wme_widget.widget_width) + 2)+'px; height:'+(parseInt(wme_widget.widget_height) + 2)+
					'px;" src="'+wme_url+'/widget.php?'+q+'"></iframe>';
document.write(ifr);
}

  try {
		if(typeof wme_is_creating == 'undefined') {
		var q = makeQuery();
		makeIframe(q);
		}
	} catch(e) {
	document.write('ERROR!');
	}