
/* $Id: template.js 22499 2009-04-17 01:59:01Z aplooy $ */

var selected_element = null;
var over_element     = null;
var curr_properties  = null;


event_handler.addMethod(ONRESIZE,   'updateSelectionBorder()');


function altRowsUpdate(obj, todo, sColor,what_style){
    var len = obj.rows.length;
	if( !todo ){
		for( i=0; i<len; i++ ){

		    if (obj.rows[i].cells[1]) {
		        cell_tbls = obj.rows[i].cells[1].getElementsByTagName('TABLE')
		        if (cell_tbls) {
		            for (t=0; t<cell_tbls.length; t++) {
		                eval('cell_tbls[t].style.'+what_style+' = ""');
		            }
		        }
		    }

			eval('obj.rows[i].style.'+what_style+' = ""');
		}
	} else {
		var x = 1;
		var color = "";

		for( i=0; i<len; i++ ){
			tmp = i/2; tmp = tmp + " ";
			//var color = (tmp.indexOf(".") == -1) ? sColor : "transparent";
			if (tmp.indexOf(".") == -1) {

			    if (obj.rows[i].cells[1]) {
			        cell_tbls = obj.rows[i].cells[1].getElementsByTagName('TABLE')
    		        if (cell_tbls) {
    		            for (t=0; t<cell_tbls.length; t++) {
    		                eval('cell_tbls[t].style.'+what_style+' = sColor');
    		            }
    		        }
    		    }

			    eval('obj.rows[i].style.'+what_style+' = sColor');
			}
		}
	}

}

function altRows(objId, todo, sColor, what_style){
	var oPrev = document.getElementsByName(objId);
	if (oPrev.length) {
	    for(x=0; x<oPrev.length; x++){
	        altRowsUpdate(oPrev[x], todo, sColor,what_style);
	    }
	} else {
	    altRowsUpdate(oPrev, todo, sColor,what_style);
	}
}



function highLight(element) {
    // Set the selected element
    over_element = element;

    // Show hightlight Div
    hlDiv = getElement('div_highlight');
    hlDiv.style.display      = '';
    hlDiv.style.MozOpacity   = '.5';
    hlDiv.style.opacity   = '.5';
    hlDiv.style.height       = element.offsetHeight;
    hlDiv.style.width        = element.offsetWidth;
    hlDiv.style.top          = getOffset(element, 'top');
    hlDiv.style.left         = getOffset(element, 'left');
}

function hideHighlight() {
    hlDiv = getElement('div_highlight');
    hlDiv.style.display = 'none';
}

function clickHighlight() {
    selected_element = over_element;

    // Set Selection Border
    updateSelectionBorder();

    // Show properties
    showProperties(selected_element.id);

    if (selected_element.onclick != null) {
        if (ns) {
	        eval(selected_element.getAttribute('onclick'));
	    } else {
	        selected_element.click();
	    }
	}
}


function updateSelectionBorder(){
    selDiv = getElement('sel_element');
    if (!selDiv) return false;

    if (selected_element != null) {

        from_top = getOffset(selected_element,  'top');
        from_left = getOffset(selected_element, 'left');

        if(ns) {
            from_top  -= 2;
            from_left -= 2;
        }

        selDiv.style.height  = selected_element.offsetHeight;
        selDiv.style.width   = selected_element.offsetWidth;
        selDiv.style.top     = from_top;
        selDiv.style.left    = from_left;
        selDiv.style.display = '';
    }

    // Hide hightligh div
    hideHighlight();
}




function showProperties(eId) {
    // If there is alredy a poperty sheet turn it off
    if (curr_properties != null) {
        curr_properties.style.display = 'none';
    }

    // Dipslay the new one
    prop_id = eId + '_props';
    var element = parent.document.getElementById(prop_id);
    if(element){
        element.style.display = '';
        curr_properties = element;
    }

}


function setInnerHTML(eId, value){
    var element = getElement(eId);
    if(element){
        element.innerHTML = value;
    }
    updateSelectionBorder();
}


function updateStyle(eId, what, val) {
    if (typeof(eId) == "object") {
        obj = eId;
    } else {
        obj = getElement(eId);
    }

    if (obj) {
        if (what == "fontSize") {
            val = getFontPx(val);
        }
        if (document.getElementsByName(eId).length > 1){
            obj = document.getElementsByName(eId);
            for(i=0;i<obj.length;i++){
                eval('obj['+i+'].style.'+what+' = "'+val+'"');
            }
        }
        else {
            eval('obj.style.'+what+' = "'+val+'"');
        }
        updateSelectionBorder();
    }
}

function getElement(eId) {
    var element = document.getElementById(eId);
    if (element) {
        return element;
    } else {
        return null;
    }
}

function getOffset(element, which) {
    var px = 0;
    var tbl_bdr = null;
    while (element != null) {
        offset = (which=="top") ? element.offsetTop : element.offsetLeft;
		px += parseInt(offset);
		if (element.tagName == "TABLE") {
		    if (element.border) {
		        px -= element.border;
		    }
		}
		element = element.offsetParent;
	}
	return px;
}


function getFontPx(val){
    var ret = 0;
    switch (val + '') {
        case '1':
            ret = '7pt';
            break;
        case '2':
            ret = '8pt';
            break;
        case '3':
            ret = '10pt';
            break;
        case '4':
            ret = '12pt';
            break;
        case '5':
            ret = '14pt';
            break;
        case '6':
            ret = '19pt';
            break;
        default:
            ret = '12pt';
            break;
    }
    return ret;
}