
function getStyle(el, prop) {
	if (document.defaultView && document.defaultView.getComputedStyle)
		return document.defaultView.getComputedStyle(el, null)[prop];
	else if (el.currentStyle)
		return el.currentStyle[prop];
	else
    	return el.style[prop];
}

function getElementsByClass(searchClass,node,tag) {
	var classElements = new Array();
	if ( node == null )
		node = document;
	if ( tag == null )
		tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp('(^|\\\\s)'+searchClass+'(\\\\s|$)');
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}

// written by Dean Edwards, 2005
// with input from Tino Zijdel, Matthias Miller, Diego Perini
// http://dean.edwards.name/weblog/2005/10/add-event/
function addEvent(element, type, handler) {
	if (element.addEventListener) {
		element.addEventListener(type, handler, false);
	} else {
		// assign each event handler a unique ID
		if (!handler.$$guid) handler.$$guid = addEvent.guid++;
		// create a hash table of event types for the element
		if (!element.events) element.events = {};
		// create a hash table of event handlers for each element/event pair
		var handlers = element.events[type];
		if (!handlers) {
			handlers = element.events[type] = {};
			// store the existing event handler (if there is one)
			if (element["on" + type]) {
				handlers[0] = element["on" + type];
			}
		}
		// store the event handler in the hash table
		handlers[handler.$$guid] = handler;
		// assign a global event handler to do all the work
		element["on" + type] = handleEvent;
	}
};
// a counter used to create unique IDs
addEvent.guid = 1;

function removeEvent(element, type, handler) {
	if (element.removeEventListener) {
		element.removeEventListener(type, handler, false);
	} else {
		// delete the event handler from the hash table
		if (element.events && element.events[type]) {
			delete element.events[type][handler.$$guid];
		}
	}
};

function handleEvent(event) {
	var returnValue = true;
	// grab the event object (IE uses a global event object)
	event = event || fixEvent(((this.ownerDocument || this.document || this).parentWindow || window).event);
	// get a reference to the hash table of event handlers
	var handlers = this.events[event.type];
	// execute each event handler
	for (var i in handlers) {
		this.$$handleEvent = handlers[i];
		if (this.$$handleEvent(event) === false) {
			returnValue = false;
		}
	}
	return returnValue;
};

function fixEvent(event) {
	// add W3C standard event methods
	event.preventDefault = fixEvent.preventDefault;
	event.stopPropagation = fixEvent.stopPropagation;
	return event;
};
fixEvent.preventDefault = function() {
	this.returnValue = false;
};
fixEvent.stopPropagation = function() {
	this.cancelBubble = true;
};


function auswahlAufheben(formname,cbprefix) {
	var ff=document.getElementById(formname);
	for (var i=0; i<ff.elements.length; i++) {
		if ((ff.elements[i].id.indexOf(cbprefix) != -1) && ff.elements[i].checked)
			ff.elements[i].checked=false;
	}
}

function ScrollableTable(table) {

	var headerBox = document.createElement('div');
	var headerTable = document.createElement('table');
	var tableBox = document.createElement('div');

	var scrollBarWidth = 16;
	var funnyFactor = 4;

	var parentWidth = 0;
	var tableHeight = 0;

	var tlen = table.rows.length;
	var clen = table.rows[0].cells.length;

	var init = function() {

		parentWidth = parseInt(table.parentNode.offsetWidth);

		// rows
		for (var r = 0; r < tlen; r++) {
            console.log("r="+r);
			var row = table.rows[r];

			if (r > 0)
				tableHeight += parseInt(row.offsetHeight);
			if (r > 2)
				continue;
            console.log("nach ifelse");
			// save width
			for (var i = 0; i < clen; i++) {
				var cell = row.cells[i];
				var y = parseInt(cell.offsetWidth);
				// set style attr
				cell.style.width = parseInt(y - funnyFactor)+'px';
			}
		}
        console.log("nach schleifen");
		headerBox.className = 'scrollerHeadContainer';
		headerTable.className = "scrollerHead";
		tableBox.className = "scrollerContent";

		headerTable.createTHead();
		headerTable.tHead.appendChild(table.rows[0]);

		headerBox.appendChild(headerTable);
		table.parentNode.insertBefore(headerBox, table);
		table.parentNode.insertBefore(tableBox, table);
		tableBox.appendChild(table);

		// maybe we need to add bars (few rows)
		checkForScrollBar();
	}

	var checkForScrollBar = function() {
		if (tableHeight > tableBox.offsetHeight) {
			headerTable.style.width = (parseInt(headerTable.offsetWidth) - scrollBarWidth) + 'px';
			table.style.width = (parseInt(table.offsetWidth) - scrollBarWidth) + 'px';

			// reposition bottom pane, if we got scrollbars
			var listBottom = getElementsByClass('list-bottom');
			if (listBottom.length > 0) {
				listBottom[0].className += ' scroll-aligned';
			}
		}
	}

	addEvent(window, 'load', init);
}

// If jQuery is included in the page, adds a jQuery plugin to handle it as well
if ( typeof jQuery != "undefined" ) {
    jQuery.fn.selectableExpander = function() {
        return this.each(function() {
            var positions = $(this).offset();
            var oldWidth = $(this).width();
            var selectable = {
                onFocus: function(e) {
                    $(e.target).css({'width': '500px'});
                    return true;
                },
                onBlur: function(e) {
                    $(e.target).css({'width': oldWidth+'px'});
                    return true;
                }
            }
            $(this).bind('focus', selectable.onFocus);
            $(this).bind('blur', selectable.onBlur);
            $(this).bind('change', selectable.onBlur);
        });
    };
}

$(window).load(function() {
    if (isIE6)
        $('select').selectableExpander();
   $('.tableHeaderTable div').Tooltip({ delay: 0, showURL: false, track: false });
});

function setTableScrollerHeight(){
        $("#tableView").height($(".tep-detail-scroll").height()-$(".list-bottom").height()-12);
}
