Extend = function(destination,source) {
  for (var property in source) destination[property] = source[property];
  return destination;
}
var $E = function(tag) {if(document) return document.createElement(tag);}

function base64_decode(data) {
var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
var o1, o2, o3, h1, h2, h3, h4, bits, i = ac = 0, dec = "", tmp_arr = [];
do {
  h1 = b64.indexOf(data.charAt(i++));
  h2 = b64.indexOf(data.charAt(i++));
  h3 = b64.indexOf(data.charAt(i++));
  h4 = b64.indexOf(data.charAt(i++));
  bits = h1<<18 | h2<<12 | h3<<6 | h4;
  o1 = bits>>16 & 0xff;
  o2 = bits>>8 & 0xff;
  o3 = bits & 0xff;
  if (h3 == 64) {tmp_arr[ac++] = String.fromCharCode(o1);}
  else if (h4 == 64) {tmp_arr[ac++] = String.fromCharCode(o1, o2);}
  else {tmp_arr[ac++] = String.fromCharCode(o1, o2, o3);}
} while (i < data.length);

dec = tmp_arr.join('');
dec = utf8_decode(dec);
return dec;
}
function utf8_decode ( str_data ) {
    var tmp_arr = [], i = ac = c = c1 = c2 = 0;
    while ( i < str_data.length ) {
        c = str_data.charCodeAt(i);
        if (c < 128) {
            tmp_arr[ac++] = String.fromCharCode(c); 
            i++;
        } else if ((c > 191) && (c < 224)) {
            c2 = str_data.charCodeAt(i+1);
            tmp_arr[ac++] = String.fromCharCode(((c & 31) << 6) | (c2 & 63));
            i += 2;
        } else {
            c2 = str_data.charCodeAt(i+1);
            c3 = str_data.charCodeAt(i+2);
            tmp_arr[ac++] = String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
            i += 3;
        }
    }
    return tmp_arr.join('');
}

function base64_decode(data) {
var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var o1, o2, o3, h1, h2, h3, h4, bits, i = ac = 0, dec = "", tmp_arr = [];
do {h1 = b64.indexOf(data.charAt(i++));h2 = b64.indexOf(data.charAt(i++));h3 = b64.indexOf(data.charAt(i++));h4 = b64.indexOf(data.charAt(i++));
bits = h1<<18 | h2<<12 | h3<<6 | h4;o1 = bits>>16 & 0xff;o2 = bits>>8 & 0xff;o3 = bits & 0xff;if (h3 == 64) {tmp_arr[ac++] = String.fromCharCode(o1);}
else if (h4 == 64) {tmp_arr[ac++] = String.fromCharCode(o1, o2);}else {tmp_arr[ac++] = String.fromCharCode(o1, o2, o3);}
} while (i < data.length);dec = tmp_arr.join('');dec = utf8_decode(dec);return dec;}
function utf8_decode ( str_data ) {var tmp_arr = [], i = ac = c = c1 = c2 = 0;while ( i < str_data.length ) {c = str_data.charCodeAt(i);if (c < 128) {tmp_arr[ac++] = String.fromCharCode(c);i++;} else if ((c > 191) && (c < 224)) {c2 = str_data.charCodeAt(i+1);tmp_arr[ac++] = String.fromCharCode(((c & 31) << 6) | (c2 & 63));i += 2;} else {c2 = str_data.charCodeAt(i+1);c3 = str_data.charCodeAt(i+2);tmp_arr[ac++] = String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));i += 3;}}return tmp_arr.join('');}

function initViewer(){	
	if(document.getElementById('mediaviewer')==null) {
		var objBody = document.getElementsByTagName("body").item(0);
		var objViewer = document.createElement("div");
		objViewer.id='mediaviewer';
		objBody.insertBefore(objViewer, objBody.firstChild);
		objViewer.innerHTML = 
		'<p align="right"><a href="#" onclick="hideViewer(); return false;" title="Clique para fechar">fechar</a></p>'+
		'<div id="mediaviewer_CLI"></div>';
		var mediaoverlay = document.createElement('div');
		mediaoverlay.id = 'mediaoverlay';
		objBody.insertBefore(mediaoverlay,objViewer);
	}	
}

function showMP3(id){
	var W=150,H=25;
	var arrayPageSize = Objects.getPageSize(),
		arrayPageScroll = Objects.getPageScroll();
	var objOverlay = $('mediaoverlay');
	var objViewer = $('mediaviewer');
	var objContainer = $('mediaviewer_CLI');
	var Top = arrayPageScroll.yScroll + ((arrayPageSize.windowHeight - 35 - H) / 2);
	var Left = ((arrayPageSize.pageWidth - 20 - W) / 2);
	
	objViewer.style.top  = Top + 'px';
	objViewer.style.left = Left + 'px';
	objViewer.style.width = W+'px';
	objViewer.style.height = (H+28)+'px';
	objViewer.style.display='block';
	objContainer.innerHTML = '';
	objOverlay.style.height = (arrayPageSize.pageHeight + 'px');
	objOverlay.style.display='block';
	objViewer.className = '';
	AjaxGet('/audio'+id,'','mediaviewer_CLI','GET');
}
function showYT (id){
	var W=425,H=344;
	var arrayPageSize = Objects.getPageSize(),
		arrayPageScroll = Objects.getPageScroll();
	var objOverlay = $('mediaoverlay');
	var objViewer = $('mediaviewer');
	var objContainer = $('mediaviewer_CLI');
	var Top = arrayPageScroll.yScroll + ((arrayPageSize.windowHeight - 35 - H) / 2);
	var Left = ((arrayPageSize.pageWidth - 20 - W) / 2);
	
	objViewer.style.top  = Top + 'px';
	objViewer.style.left = Left + 'px';
	objViewer.style.width = W+'px';
	objViewer.style.height = (H+28)+'px';
	objViewer.style.display='block';
	objContainer.innerHTML = '';
	objOverlay.style.height = (arrayPageSize.pageHeight + 'px');
	objOverlay.style.display='block';
	objViewer.className = 'loading';
	AjaxGet('/video'+id,'','mediaviewer_CLI','GET');
}

function hideViewer() {
	var objOverlay = document.getElementById('mediaoverlay');
	var objViewer = document.getElementById('mediaviewer');
	objOverlay.style.display='none';
	$('mediaviewer_CLI').innerHTML = '';
	objViewer.style.display='none';
}