if (typeof window.onload != 'function')
{
	window.onload = eventInit;
}else if (window.attachEvent){
	window.attachEvent('onload',eventInit);
}else if (document.addEventListener) {
    document.addEventListener("DOMContentLoaded", eventInit, false);
}

window.onresize = delayedEventResize;
if (typeof window.onresize != 'function')
{
	//window.onresize = delayedEventResize;
}else if (window.attachEvent){
	window.attachEvent('onresize',delayedEventResize);
}

function eventInit()
{
	if (window.initElementTable)
		window.initElementTable();
	if (typeof production_initialize == 'function')
		production_initialize();
}

var resizeEventTimeout = false;

function eventResize()
{
	if (resizeEventTimeout != false)
	{
		clearTimeout(resizeEventTimeout);
		resizeEventTimeout = false;
	}
		
	if (typeof sliderResize == 'function')
	{
		//Gallery resize callback
		sliderResize();
	}
}

function delayedEventResize(e)
{
	if (resizeEventTimeout != false)
		clearTimeout(resizeEventTimeout);
		
	//Attaching timeout, because of multiple IE event fireing
	resizeEventTimeout = setTimeout('eventResize();', 200);
}

/** Returns element by id */
function getElement( el )
{
	if (typeof el == 'string') {
		var tmp = document.getElementById(el);
		if (tmp)
		{
			return tmp;
		}else{
			return null;
		}
	}else{
		return el;
	}
}

/** Return event target object */
function getTarget( e )
{
	var targ;
	if (!e) var e = window.event;
	if (e.target) targ = e.target;
	else if (e.srcElement) targ = e.srcElement;
	if (targ.nodeType == 3) // defeat Safari bug
		targ = targ.parentNode;
		
	return targ;
}

	
/** Returns window size as array*/
function getWindowSize ()
{
	if( typeof( window.innerHeight ) == 'number' ) {
		return new Array(window.innerWidth, window.innerHeight);
	} else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
		return new Array(document.documentElement.clientWidth, document.documentElement.clientHeight);
	} else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
		return new Array(document.body.clientWidth, document.body.clientHeight);
	} else {
		return 0;
	}
}

/** Returns page content height */
function getPageHeight ()
{
	if( typeof( window.scrollHeight ) == 'number' ) {
		return window.scrollHeight;
	} else if( document.documentElement && document.documentElement.clientHeight ) {
		return document.documentElement.scrollHeight;
	} else if( document.body && document.body.clientHeight ) {
		return document.body.document.scrollHeight;
	} else {
		return 0;
	}
}


/** Returns scrolled content height*/
function getScrollTop ()
{
	if (document.documentElement && document.documentElement.scrollTop)
		return document.documentElement.scrollTop;
	else if (document.body)
		return document.body.scrollTop;
	else
		return 0;
}

/** Changes opacity from [start] to [end] in [millisec] milliseconds */
function opacity(id, start, end, millisec)
{
	var step_size = 32;		//After how many ms change opacity
	var steps = Math.round(millisec / step_size);
	var timer = 0;
	var step_change = (end - start) / steps;
	var opac = start;
	
	for(i = 0; i < steps; i++)
	{
		opac = opac + step_change;
		if (opac < 0) opac = 0;
		if (opac > 100) opac = 100;
		
		setTimeout("changeOpac(" + Math.round(opac) + ",'" + id + "')",timer);
		timer = timer + step_size;
	}
	
	if (opac != end)
		setTimeout("changeOpac(" + end + ",'" + id + "')",timer);
}

/** Animates position and width of the element */
function animateSizePos(id, left_start, top_start, width_start, width_end, height_start, height_end, millisec)
{
	var steps = parseInt(millisec / 32);
	var w_step = (width_end - width_start) / steps;
	var h_step = (height_end - height_start) / steps;
	var t_w = width_start;
	var t_h = height_start;
	var t_l = left_start;
	var t_t = top_start;
	
	for(var i = 0; i < steps; i++)
	{
		t_w = t_w + w_step;
		t_h = t_h + h_step;
		t_l = t_l - w_step / 2;
		t_t = t_t - h_step / 2;
		
		if (i == steps - 1)
		{
			t_w = width_end;
			t_h = height_end;
		}
		
		setTimeout("setSizePos('" + id + "', " + parseInt(t_w) + ", " + parseInt(t_h) + ", " + parseInt(t_l) + ", " + parseInt(t_t) + ");", 32 * (i + 1));
	}
}

function animateMargin(id, left_margin_start, left_margin_end, millisec )
{
	var steps = parseInt(millisec / 32);
	var m_step = (left_margin_end - left_margin_start) / steps;
	var t_m = left_margin_start;
	
	for (var i = 0; i < steps; i++)
	{
		t_m = t_m + m_step;
		if (i == steps - 1)
		{
			t_m = left_margin_end;
		}
		
		setTimeout("document.getElementById('" + id + "').style.marginLeft = \"" + t_m + "px\";", 32 * (i + 1));
	}
}

/** Sets size and position of to the element */
function setSizePos(id, width, height, left, top)
{
	var el = document.getElementById(id);
	
	if (el)
	{
		el.style.width = width + 'px';
		el.style.height = height + 'px';
		
		el.style.left = left + 'px';
		el.style.top = top + 'px';
	}
}

/** Change the opacity of the element */
function changeOpac(opacity, id) {
    var object = getElement(id);
	if (!object || !object.style)
		return;
	
	object = object.style;
    object.opacity = (opacity / 101);
    object.MozOpacity = (opacity / 101);
    object.KhtmlOpacity = (opacity / 101);
    object.filter = "alpha(opacity=" + opacity + ")";
}var prev_item = 'cu';

function initElementTable()
{
	var table = getElement('elementTable');
	if (table == null)
		return;
	
	var imgs = table.getElementsByTagName('IMG');
	var a_el = table.getElementsByTagName('A');
	
	for(var i = 0; i < imgs.length; i++)
	{
		imgs[i].onclick = elementTableActivate;
	}
	
	for(var i = 0; i < a_el.length; i++)
	{
		a_el[i].onclick = elementTableActivate;
	}
	
}

/* Returns height of the rows, which comes before given element */
function calcLineHeight(target_s_id)
{
	var classa = document.getElementById('element_line_' + target_s_id).className;
	classa = classa.substr(classa.length - 1,1);
	
	var el_table = document.getElementById('elementTable');
	var trs = el_table.getElementsByTagName('TR');
	var total_h = 0;

	for(var i = 0; i < classa; i++)
	{
		var tds = trs[i].getElementsByTagName('TD');
		var max_h = 0;
		
		for(var k = 0; k < tds.length; k++)
		{
			if (tds[k].offsetHeight > max_h)
				max_h = tds[k].offsetHeight;
		}
		
		total_h = total_h + max_h;
	}
	
	return total_h;
}

function elementTableActivate( e )
{
	var targ = getTarget(e);
		
	var parentEl = targ.parentNode;
	var target_id = parentEl.getAttribute('id');
	
	if (!target_id)
	{
		var parentEl = targ.parentNode.parentNode;
		var target_id = parentEl.getAttribute('id');
		
		if (!target_id)
		{
			var parentEl = parentEl.parentNode;
			var target_id = parentEl.getAttribute('id');
			
			if (target_id)
				target_s_id = target_id.substr(8, 2);		
		}else{
			target_s_id = target_id.substr(8, 2);
		}
	}else{
		target_s_id = target_id.substr(13, 2);
	}
	
	if (target_id)
	{
		if (prev_item == target_s_id)
			return;

		var mainEl = getElement('element_' + target_s_id);
		var a_el = mainEl.getElementsByTagName('A');
		
		a_el[0].className = a_el[0].className + ' jsActive'; 
		
		opacity('element_img_' + target_s_id, 20, 100, 400);
		opacity('element_item_' + target_s_id, 20, 100, 400);
		opacity('element_line_' + target_s_id, 0, 100, 400);

		/* 
		 * Line height depends on the content height in cells
		 * Calculating line height and assigning
		 */
		var tmp_h = calcLineHeight(target_s_id) + 30;
		var line_el = document.getElementById('element_line_' + target_s_id);
		line_el.style.marginTop = '-' + tmp_h + 'px';
		line_el.style.height = tmp_h + 'px';
		
		if (prev_item != null)
		{
			var mainEl = getElement('element_' + prev_item);
			var a_el = mainEl.getElementsByTagName('A');
			
			if (a_el[0])
				a_el[0].className = a_el[0].className.replace(/jsActive/, ''); 

			opacity('element_img_' + prev_item, 100, 20, 200);
			opacity('element_item_' + prev_item, 100, 20, 200);
			opacity('element_line_' + prev_item, 100, 0, 200);
		}
		
		prev_item = target_s_id;
	}
}

