function modal(id, type)
{
try{
content = Element(id).cloneNode(true);
//Acrescentado para eliminar bug do IE que deixa um formulario inválido,
//se for inserido outro na mesma página com o mesmo ID, ficando ambos inválidos
content_code = content.innerHTML;
content.innerHTML = content_code.replace("_template","");
title = Element(id + '_title').value;
width = Element(id + '_width').value;
height = Element(id + '_height').value;
close_action = Element(id + '_close_action').value;
create_action = Element(id + '_create_action').value;
save_action = Element(id + '_save_action').value;
onload_action = Element(id + '_onload_action').value
}
catch(e){}
var objBody = document.getElementsByTagName("body").item(0);
/* the Overlay */ // create overlay div and hardcode some functional styles
var objOverlay = document.createElement("div");
objOverlay.setAttribute('id','overlay');
objOverlay.style.position = 'absolute';
objOverlay.style.top = '0';
objOverlay.style.left = '0';
objOverlay.style.zIndex = '90';
objOverlay.style.width = '100%';
var arrayPageSize = getPageSize();
var arrayPageScroll = getPageScroll();
// set height of Overlay to take up whole page and insert. Show at the end of this function.
objOverlay.style.height = (arrayPageSize[1] + 'px');
objOverlay.style.display = 'none';
objBody.insertBefore(objOverlay, objBody.firstChild);
/* the div */ // create lightbox div, same note about styles as above
var objLightbox = document.createElement("div");
objLightbox.setAttribute('id','lightbox');
objLightbox.style.position = 'absolute';
objLightbox.style.display = 'none';
objLightbox.style.zIndex = '100';
var objLightbox_height = height;
var objLightbox_width = width;
objLightbox.style.height = objLightbox_height + "px";
objLightbox.style.width = objLightbox_width + "px";
var lightboxTop = ((arrayPageSize[3] - objLightbox_height) / 2);
var lightboxLeft = ((arrayPageSize[0] - objLightbox_width) / 2 );
objLightbox.style.top = (lightboxTop < 0) ? "0px" : lightboxTop + "px";
objLightbox.style.left = (lightboxLeft < 0) ? "0px" : lightboxLeft + "px";
objBody.insertBefore(objLightbox, objOverlay.nextSibling);
// create caption
var objCaption = document.createElement("div");
objCaption.setAttribute('id','lightboxCaption');
objCaption.innerHTML = title;
objLightbox.appendChild(objCaption);
// create warnings
var objWarning = document.createElement("div");
objWarning.setAttribute('id','lightboxWarning');
objWarning.style.height = '21px';
objLightbox.appendChild(objWarning);
// Create Content
var objContent = document.createElement("div");
objContent.setAttribute('id','lightboxContent');
objContent.style.height = (objLightbox_height - 65) + "px";
objContent.innerHTML = content.innerHTML;
objLightbox.appendChild(objContent);
// create foot
var objCaption = document.createElement("div");
objCaption.setAttribute('id','lightboxFoot');
var close_button = '';
if (type == 'create')
var create_save_button = '';
else if(type == 'save')
var create_save_button = '';
objCaption.innerHTML = '
'+close_button+'
'+create_save_button+'
'
objLightbox.appendChild(objCaption);
if (onload_action)
{
eval(onload_action);
}
//Show the modal.
objOverlay.style.display = 'block';
objLightbox.style.display = '';
}
function close_lightbox()
{
var objBody = document.getElementsByTagName("body").item(0);
var lightbox = document.getElementById('overlay');
lightbox_div = document.getElementById('lightbox');
objBody.removeChild(lightbox);
objBody.removeChild(lightbox_div);
return;
}
function getPageSize(){
var xScroll, yScroll;
if (window.innerHeight && window.scrollMaxY) {
xScroll = document.body.scrollWidth;
yScroll = window.innerHeight + window.scrollMaxY;
} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
xScroll = document.body.scrollWidth;
yScroll = document.body.scrollHeight;
} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
xScroll = document.body.offsetWidth;
yScroll = document.body.offsetHeight;
}
var windowWidth, windowHeight;
if (self.innerHeight) { // all except Explorer
windowWidth = self.innerWidth;
windowHeight = self.innerHeight;
} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
windowWidth = document.documentElement.clientWidth;
windowHeight = document.documentElement.clientHeight;
} else if (document.body) { // other Explorers
windowWidth = document.body.clientWidth;
windowHeight = document.body.clientHeight;
}
// for small pages with total height less then height of the viewport
if(yScroll < windowHeight){
pageHeight = windowHeight;
} else {
pageHeight = yScroll;
}
// for small pages with total width less then width of the viewport
if(xScroll < windowWidth){
pageWidth = windowWidth;
} else {
pageWidth = xScroll;
}
arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight)
return arrayPageSize;
}
function getPageScroll(){
var yScroll;
if (self.pageYOffset) {
yScroll = self.pageYOffset;
} else if (document.documentElement && document.documentElement.scrollTop){ // Explorer 6 Strict
yScroll = document.documentElement.scrollTop;
} else if (document.body) {// all other Explorers
yScroll = document.body.scrollTop;
}
arrayPageScroll = new Array('',yScroll)
return arrayPageScroll;
}
function Element(id)
{
return document.getElementById(id);
}
function add_css(){
var headID = document.getElementsByTagName("head")[0];
var cssNode = document.createElement('link');
cssNode.type = 'text/css';
cssNode.rel = 'stylesheet';
if (navigator.userAgent.toLowerCase().indexOf("msie") != -1)
cssNode.href = "./expressoAdmin1_2/js/modal/css/modal_ie.css";
else
cssNode.href = "./expressoAdmin1_2/js/modal/css/modal_fx.css";
cssNode.media = 'screen';
headID.appendChild(cssNode);
return;
}
/*
function load_lang(){
cExecute ('$this/js/modal/inc/load_lang', handler_load_lang);
}
var global_langs = new Array();
function handler_load_lang(data)
{
global_langs = eval(data);
}
function get_lang(key_raw)
{
key = key_raw.replace(/ /g,"_");
try{
lang = eval("global_langs."+key.toLowerCase());
return lang;
}
catch(e){
return key_raw + '*';
}
}*/
function make_msg(msg, type)
{
var html_msg =
'
'+
'
'+
'
' + msg + '
' +
'
';
return html_msg;
}
function write_msg(msg, type)
{
try
{
clearTimeout(setTimeout_write_msg);
}
catch(e){}
var objLightbox = Element("lightbox");
if (objLightbox != null)
{
var old_divStatusBar = Element("lightboxWarning");
var bgColor = "#EEEEEE";
}
else
{
var old_divStatusBar = Element("divStatusBar");
var bgColor = "#f7f8fa";
}
var msg_div = Element('em_div_write_msg');
if(!msg_div) {
msg_div = document.createElement('DIV');
msg_div.id = 'em_div_write_msg';
//msg_div.style.height = '2px';
msg_div.style.background = bgColor;
msg_div.style.display = 'none';
msg_div.align = "center";
msg_div.valign = "middle";
}
msg_div.innerHTML = make_msg(msg, type);
clean_msg();
old_divStatusBar.parentNode.insertBefore(msg_div,old_divStatusBar);
old_divStatusBar.style.display = 'none';
msg_div.style.display = '';
setTimeout_write_msg = setTimeout("clean_msg();", 4000);
}
function clean_msg()
{
var msg_div = Element('em_div_write_msg');
if ( (msg_div) && (msg_div.style.display != 'none') )
{
// Msg esta em outra tela. Precisa apaga-la.
/*
if ( (Element("lightbox") != null) && (msg_div.nextSibling.id == 'lightboxWarning') ) {}
else if ( (Element("lightbox") == null) && (msg_div.nextSibling.id == 'divStatusBar') ) {}
else
{*/
msg_div.style.display = 'none';
msg_div.nextSibling.style.display = '';
// }
}
}
if (document.all)
{
navigator.userAgent.toLowerCase().indexOf('msie 5') != -1 ? is_ie5 = true : is_ie5 = false;
is_ie = true;
}
add_css();
//load_lang();