var ajax_status = false;
var nav_label_height = 68;
var nav_label_padding = 20;
var act_nav_label = new Array();
var fading = [];
var fade_list = new Object();
var scroll_list = new Object();
var persistent_nav_labels = new Array();
var collective_imgs = new Array();
var minimise_nav_interval_id = 0;
var is_enlarged = false;
var maximise_nav_callback = '';
var slideshow_imgs = new Array();
var slideshow_index = new Array();
var next_image_index = 0;
var act_bg_image = '';
var next_bg_image = '';
var slideshow_interval = null;
var interupt_image_id = false;
var was_sliding = false;
var map_showing = false;
var justify = 'width';
var timeouts = [];
var nav_ready = true;
_debug_num = -1;
var enlarging = false;
var slideshow_active_id = 0;
resized = true;

function $(obj_id) { return document.getElementById(obj_id); }

//Create a boolean variable to check for a valid Internet Explorer instance.
var xmlhttp = false;
//Check if we are using IE.
try
{
	//If the Javascript version is greater than 5.
	xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
	//If not, then use the older active x object.
	try
	{
		//If we are using Internet Explorer.
		xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
	}
	catch (E)
	{
		//Else we must be using a non-IE browser.
		xmlhttp = false;
	}
}

if (!xmlhttp && typeof XMLHttpRequest != 'undefined')
{
	xmlhttp = new XMLHttpRequest();
}

function make_request(server_page, obj_id)
{
	if (server_page.indexOf('?') > -1) server_page = server_page+"&"+time();
	else server_page = server_page+"?"+time();
	xmlhttp.open("GET", server_page);
	xmlhttp.onreadystatechange = function()
	{
		if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
		{
			var content = xmlhttp.responseText;
			if (obj_id)
			{
				$(obj_id).innerHTML = content;

				var ajaxScript = $(obj_id).getElementsByTagName("script");
				if(ajaxScript.length)
				{
					for (x = 0;x < ajaxScript.length; x++)
					{
						eval(ajaxScript[x].innerHTML);
					}
				}
			}
			xmlhttp.onreadystatechange = function(){};
			ajax_status = true;
		}
	}
	xmlhttp.send(null);
}

function time()
{
	var d = new Date();
	return d.getTime();
}

function log()
{
    if(typeof(console) != 'undefined')
    {
        for(i = 0; i < arguments.length; i++)
        {
            console.log(arguments[i]);
        }
    }
}

function fader()
{
    var obj = null;
	var speed = null;
	var interval_id = null;
    var opacity_now = null;
	var after_finish = null;

    this.setup = function(o)
	{
		if (!o) return false;
		obj = $(o);
        return true;
	}

    this.initiate = function(s,af)
	{
        speed = s;
		after_finish = af;
        if(opacity_now === null)
        {
            if(speed < 0) opacity_now = 100;
            else opacity_now = 0;
        }
        obj.style.opacity = (opacity_now / 100);
        obj.style.filter = "alpha(opacity=" + opacity_now + ")";
        if(speed > 0 && opacity_now == 0) obj.style.display = 'block';
        var interval = 30;
        if(interval_id)
        {
            clearInterval(interval_id);
            fading--;
        }
        interval_id = setInterval(do_fade,interval);
        fading++;
	}

    function do_fade()
	{
        x = opacity_now;
		new_opacity = x + speed;
        if (new_opacity <= 100 && new_opacity >= 0)
        {
            obj.style.opacity = (new_opacity / 100);
            obj.style.filter = "alpha(opacity=" + new_opacity + ")";
            opacity_now = new_opacity;
        }
        else
        {
            if (new_opacity < 0)
            {
                obj.style.opacity = 0;
                obj.style.filter = "alpha(opacity=0)";
                opacity_now = 0;
            }
            else if (new_opacity > 100)
            {
                obj.style.opacity = 1;
                obj.style.filter = "alpha(opacity=100)";
                opacity_now = 100;
            }
            if(speed < 0 && opacity_now == 0) obj.style.display = 'none';
            clearInterval(interval_id);
            interval_id = null;
            fading--;
			if(after_finish != null) after_finish();
        }
	}
}

function fade_nav_label(obj,speed,after_finish)
{
	if (fade_list[obj])
	{
		fade_list[obj].initiate(speed,after_finish);
	}
	else
	{
		fade_list[obj] = new fader;
		fade_list[obj].setup(obj);
		fade_list[obj].initiate(speed,after_finish);
	}
}

function fade(obj,speed,after_finish)
{
	if(!resized)
	{
		setTimeout("fade(" + obj + "," + speed + "," + after_finish + ")", 100);
		return false;
	}
	if (speed < 0)
	{
		opac_start = 100;
		opac_end = 0;
	}
	else
	{
		opac_start = 0;
		opac_end = 100;
	}
	if (fade_list[obj])
	{
		opacity(obj, opac_start, opac_end, slideshow_fade_duration);
		if (after_finish) setTimeout(after_finish, slideshow_fade_duration);
		//fade_list[obj].initiate(speed,after_finish);
	}
	else
	{
		opacity(obj, opac_start, opac_end, slideshow_fade_duration);
		if (after_finish) setTimeout(after_finish, slideshow_fade_duration);
		/*fade_list[obj] = new fader;
		fade_list[obj].setup(obj);
		fade_list[obj].initiate(speed,after_finish);*/
	}
}

function show_nav_label(level, name)
{
	/*if (fading)
	{
		setTimeout(function(){show_nav_label(level, name)}, 250);
		return false;
	}*/
	position_nav_label(level);
    if(!act_nav_label[level]) act_nav_label[level] = 'blank';
    $('nav_label_' + level).src = $('nav_label_' + level).src.replace(act_nav_label[level], name);
    //setTimeout("position_nav_label("+level+");", 15);

    fade_nav_label('nav_label_wrap_' + level, 7);
    act_nav_label[level] = name;
}

function hide_nav_label(level)
{
	/*if (fading)
	{
		setTimeout(function(){hide_nav_label(level)}, 250);
		return false;
	}*/
    if(persistent_nav_labels[level]) show_nav_label(level, persistent_nav_labels[level]);
    else fade_nav_label('nav_label_wrap_' + level, -7);
}

function position_nav_label(level, lines)
{
	/*if(!lines) lines = 1;
    _nav_label_wrap = $('nav_label_wrap_' + level);
    _nav_label_wrap.style.top = ((level - 1) * ((nav_label_height + nav_label_padding)) * lines) + $('top_nav').offsetHeight + 14 + 'px';*/
	i = 1;
	_top = 0;
	while(i < level)
	{
		_top += $('nav_label_wrap_' + i).offsetHeight + nav_label_padding;
		i++;
	}
    $('nav_label_wrap_' + level).style.top = _top + $('top_nav').offsetHeight + 14 + 'px';
}

function show_collective_image(id)
{
	if(enlarging || is_enlarged == id) return false;
	$('collective_img').src = collective_imgs[id]['large'].src;
	$('collective_img').alt = collective_imgs[id]['large'].alt;
	for(i in collective_imgs) $('image_control_' + i).className = $('image_control_' + i).className.replace(' image_control_act','');
	$('image_control_' + id).className = $('image_control_' + id).className + ' image_control_act';
	$('enlarger').onclick = new Function("enlarge("+id+")");
	if(is_enlarged) enlarge(id);
	else position_footer();
}

function enlarge(id)
{
	if(enlarging) return false;
	enlarging = true;
	$('footer').style.display = 'none';
	if(!$('collective_img_wrap').style.width) $('collective_img_wrap').style.width = $('collective_img_wrap').offsetWidth + 'px';
	//fade('collective_img_wrap',-10,minimise_nav);
	$('collective_img_wrap').style.display = 'none';
	minimise_nav();
	//img = main_img_link.firstChild;
	//changeOpac(0, 'bg_wrap');
	$('bg_wrap').innerHTML = '<img id="bg_img" src="' + collective_imgs[id]['massive'].src + '" alt="' + collective_imgs[id]['massive'].alt + '" onload="resize_bg();" onclick="unlarge(\'' + id + '\')" style="opacity:0;"/>';
	//setTimeout(function(){
	resize_bg();
	if(browser['client'] == 'Safari')
	{
		$('bg_img').onload = function()
		{
			fade('bg_img',5);
			fade('bg_wrap',5,not_enlarging);
			resize_bg('bg_img');
		}
	}
	else
	{
		fade('bg_img',5);
		fade('bg_wrap',5,not_enlarging);
	}
	
	
	//},1000);
	is_enlarged = id;
}

function unlarge(id)
{
	if(enlarging) return false;
	enlarging = true;
	//img = $(img);
	fade('bg_wrap',-5,not_enlarging);
	maximise_nav();
	maximise_nav_callback = "fade('collective_img_wrap',10,position_footer)";
	is_enlarged = false;
}

function toggle_large(id)
{
	if(is_enlarged) unlarge(id);
	else enlarge(id);
}

function minimise_nav()
{
    //$('top_nav_wrap').style.height = $('top_nav').offsetHeight + 13 + 'px';
	//debug(0, $('top_nav').offsetHeight);
	nav_items = $('top_nav').getElementsByTagName('LI');
	for(n in nav_items)
	{
		if(nav_items[n].firstChild)
		{
			if(nav_items[n].firstChild.className != 'act') nav_items[n].style.display = 'none';
		}
	}
	clearInterval(minimise_nav_interval_id);
	minimise_nav_interval_id = setInterval(do_minimise_nav, 30);
}

function do_minimise_nav()
{
	_top_nav = $('top_nav');
	if (browser.client == 'Internet Explorer') speed = -10;
	else speed = -3;
	min_height = 15;
	height_now = _top_nav.offsetHeight;
	if (height_now + speed > min_height) _top_nav.style.height = height_now + speed + 'px';
	else
	{
		//$('top_nav').style.backgroundColor = 'transparent';
		_top_nav.style.height = min_height + 'px';
		clearInterval(minimise_nav_interval_id);
		minimise_nav_interval_id = 0;
	}
}

function maximise_nav()
{
	//$('top_nav').style.backgroundColor = '';
	nav_items = $('top_nav').getElementsByTagName('LI');
	for(n in nav_items)
	{
		if(nav_items[n].firstChild)
		{
			nav_items[n].style.display = '';
		}
	}
	clearInterval(minimise_nav_interval_id);
	minimise_nav_interval_id = setInterval(do_maximise_nav, 30);
}

function do_maximise_nav()
{
	_top_nav = $('top_nav');
	speed = 3;
	max_height = $('top_nav_inner').offsetHeight;
	height_now = _top_nav.offsetHeight;
	if (height_now + speed < max_height) _top_nav.style.height = height_now + speed + 'px';
	else
	{
		_top_nav.style.height = max_height + 'px';
		clearInterval(minimise_nav_interval_id);
		minimise_nav_interval_id = 0;
		if(maximise_nav_callback != '')
		{
			eval(maximise_nav_callback);
			maximise_nav_callback = '';
		}
	}
}

function get_viewport_dimensions()
{
	return {
		width: self.innerWidth || (document.body.offsetWidth || document.documentElement.offsetWidth),
		height: self.innerHeight || (document.body.offsetHeight || document.documentElement.offsetHeight)
	};
}

function resize_next_bg()
{
	$('bg_wrap').style.display = 'block';
	$(next_bg_image).style.display = 'block';
	var temp = resize_bg(next_bg_image);
	$(next_bg_image).style.display = 'none';
	$('bg_wrap').style.display = 'none';
	return true;
}

function resize_bg(img_to_resize)
{
	resized = false;
	//set some vars
	if (!justify) justify = 'width';
	viewport_dimentions = get_viewport_dimensions();
	_wrap = $('wrap');
	min_width = _wrap.offsetWidth + 40;
	min_height = 692;
	_bg_wrap = $('bg_wrap');
	_bg_img = img_to_resize ? $(img_to_resize) : (act_bg_image ? $(act_bg_image) : $('bg_img'));
	//get new width and height
	new_width = viewport_dimentions.width > min_width ? viewport_dimentions.width : min_width;
	new_height = viewport_dimentions.height > min_height ? viewport_dimentions.height : min_height;
	//resize the bg_wrap to fit screen
	_bg_wrap.style.width = new_width + 'px';
	_bg_wrap.style.height = new_height + 'px';
	//get the ratio of the image
	ratio = _bg_img.offsetWidth / _bg_img.offsetHeight;
	//check resize by width
	img_height = new_width / ratio;
	_bg_img.style.width = 'auto';
	_bg_img.style.height = 'auto';
	if(img_height >= new_height)
	{
		//this will not display any white space
		if (justify == 'width') _bg_img.style.width = '100%';
		else
		{
			_bg_img.style.width = 'auto';
			_bg_img.style.height = '100%';
		}
		//_bg_img.style.height = img_height + 'px';
	}
	else
	{
		//we'll see white space so resize to height
		//img_width = ratio * new_height;
		//_bg_img.style.width = img_width + 'px';
		_bg_img.style.height = '100%';
	}
	if(justify != 'width') _bg_img.style.left = ((new_width - _bg_img.offsetWidth) / 2) + "px";
	
	resized = true;
	return true;
}

function preload_images()
{
	var d = document;
	if(d.images)
	{
		if(!d.imgs) d.imgs = new Array();
		num_images = d.imgs.length;
		args = arguments;
		for(i = 0; i < args.length; i++)
		{
			d.imgs[num_images] = new Image;
			d.imgs[num_images++].src = args[i];
		}
	}
}

function scroller()
{
	var scroll = null;
	var scroller_up = null;
	var scroller_down = null;
	var wrap = null;
	var content = null;
	var step = null;
	var scroll_interval_id = 0;
	var mode = 'v';

	this.setup = function(sc, w, c, st)
	{
		if (!sc && !w && !c && !st) return false;
		scroll = $(sc);
		wrap = $(w);
		content = $(c);
		scroller_up = $(sc + '_up');
		scroller_down = $(sc + '_down');
		scroller_left = $(sc + '_left');
		scroller_right = $(sc + '_right');
		if(scroller_up && scroller_down)
		{
			if(content.offsetHeight <= wrap.offsetHeight)
			{
				scroll.style.display = 'none';
				return false;
			}
			mode = 'v';
		}
		if(scroller_left && scroller_right)
		{
			if(content.offsetWidth <= wrap.offsetWidth)
			{
				scroll.style.display = 'none';
				return false;
			}
			mode = 'h';
		}
		wrap.style.position = 'relative';
		content.style.position = 'relative';
		step = st;
		if(scroller_up)
		{
			scroller_up.onmousedown = function()
			{
				scroll_it(step);
				scroll_interval_id = setInterval(function(){scroll_it(step);},100);
			}
			scroller_up.onmouseup = function()
			{
				clearInterval(scroll_interval_id);
			}
		}
		if(scroller_down)
		{
			scroller_down.onmousedown = function()
			{
				scroll_it(-step);
				scroll_interval_id = setInterval(function(){scroll_it(-step);},100);
			}
			scroller_down.onmouseup = function()
			{
				clearInterval(scroll_interval_id);
			}
		}
		if(scroller_left)
		{
			scroller_left.onmousedown = function()
			{
				scroll_it(step);
				scroll_interval_id = setInterval(function(){scroll_it(step);},100);
			}
			scroller_left.onmouseup = function()
			{
				clearInterval(scroll_interval_id);
			}
		}
		if(scroller_right)
		{
			scroller_right.onmousedown = function()
			{
				scroll_it(-step);
				scroll_interval_id = setInterval(function(){scroll_it(-step);},100);
			}
			scroller_right.onmouseup = function()
			{
				clearInterval(scroll_interval_id);
			}
		}
        return true;
	}

    function scroll_it(s)
	{
		switch(mode)
		{
			case 'v':
				offset_now = content.offsetTop;
				new_offset = offset_now + s;
				max_offset = wrap.offsetHeight - content.offsetHeight;
				if(new_offset < 0 && new_offset > max_offset)
					content.style.top = new_offset + 'px';
				else
				{
					if(s > 0) content.style.top = '0px';
					else content.style.top = max_offset + 'px';
				}
				break;

			case 'h':
				offset_now = content.offsetLeft;
				new_offset = offset_now + s;
				max_offset = wrap.offsetWidth - content.offsetWidth;
				if(new_offset < 0 && new_offset > max_offset)
					content.style.left = new_offset + 'px';
				else
				{
					if(s > 0) content.style.left = '0px';
					else content.style.left = max_offset + 'px';
				}
				break;
		}
	}
}

function init_scroll(scroll, wrap, content, step)
{
	scroll_list[scroll] = new scroller;
	scroll_list[scroll].setup(scroll, wrap, content, step);
}

window.onresize = window_resized;

function window_resized()
{
	if(is_enlarged)
	{
		resize_bg();
	}
	position_footer();
}

function trigger_slideshow()
{
	if(browser['client'] == 'Safari')
	{
		$('bg_img_1').onload = function()
		{
			return false;
		}
	}
	for (var i in fading)
	{
		if (fading[i]) return false;
	}
	circulate_image_index();
	get_next_bg_image();
	var temp = resize_next_bg();
	if(act_bg_image) fade(act_bg_image,-5,switch_slideshow_image);
	remove_slideshow_acts();
	slideshow_active_id = slideshow_index[next_image_index];
	if($('artist_slideshow_image_' + slideshow_index[next_image_index])) $('artist_slideshow_image_' + slideshow_index[next_image_index]).className += ' artist_slideshow_image_act';
	fade('bg_wrap',5);
	fade(next_bg_image,5);
	act_bg_image = next_bg_image;
	next_image_index++;
	if($('artist_slideshow_act')) $('artist_slideshow_act').innerHTML = next_image_index;
	if(slideshow_interval !== null)
	{
		stop_slideshow(true);
		start_slideshow(true);
	}
	return true;
}

function remove_slideshow_acts()
{
	for(i in slideshow_index)
		if($('artist_slideshow_image_' + slideshow_index[i]))
			$('artist_slideshow_image_' + slideshow_index[i]).className = $('artist_slideshow_image_' + slideshow_index[i]).className.replace(' artist_slideshow_image_act','');
}

function switch_slideshow_image()
{
	circulate_image_index();
	get_next_bg_image();
	next_image = slideshow_imgs[slideshow_index[next_image_index]];
	$(next_bg_image).src = next_image.src;
	$(next_bg_image).alt = next_image.alt;
}

function circulate_image_index()
{
	if(next_image_index > slideshow_index.length - 1) next_image_index = 0;
	if(next_image_index < 0) next_image_index = slideshow_index.length - 1;
}

function get_next_bg_image()
{
	switch(act_bg_image)
	{
		case 'bg_img_1':
			next_bg_image = 'bg_img_2';
			break;

		case 'bg_img_2':
		default:
			next_bg_image = 'bg_img_1';
			break;
	}
}

function init_slideshow()
{
	for (i in slideshow_imgs)
	{
		preload_images(slideshow_imgs[i].src);
	}
	$('bg_wrap').innerHTML = '<img id="bg_img_1" src="' + slideshow_imgs[slideshow_index[next_image_index]].src + '" alt="' + slideshow_imgs[slideshow_index[next_image_index]].alt + '" onload="resize_bg();" style="display:none;opacity:0;"/>';
	var nxt = next_image_index + 1 < slideshow_index.length ? next_image_index + 1 : 0;
	$('bg_wrap').innerHTML+= '<img id="bg_img_2" src="' + slideshow_imgs[slideshow_index[nxt]].src + '" alt="' + slideshow_imgs[slideshow_index[nxt]].alt + '" onload="resize_bg();" style="display:none;opacity:0;"/>';
	if(browser['client'] == 'Safari')
	{
		$('bg_img_1').onload = function()
		{
			trigger_slideshow();
		}
	}
	else trigger_slideshow();
}

function start_slideshow(hide_restart)
{
	if($('artist_slideshow_toggle')) $('artist_slideshow_toggle').innerHTML = 'Stop Slideshow';
	if(!hide_restart) trigger_slideshow();
	slideshow_interval = setInterval(trigger_slideshow,slideshow_timer);
}

function stop_slideshow(hide_restart)
{
	if(!hide_restart && $('artist_slideshow_toggle')) $('artist_slideshow_toggle').innerHTML = 'Start Slideshow';
	clearInterval(slideshow_interval);
	slideshow_interval = null;
}

function toggle_slideshow()
{
	if(minimise_nav_interval_id) return false;
	if(slideshow_interval === null)
	{
		if($('artist_slideshow_toggle')) $('artist_slideshow_toggle').innerHTML = 'Stop Slideshow';
		minimise_nav();
		setTimeout(start_slideshow,1000);
	}
	else
	{
		maximise_nav();
		stop_slideshow();
	}
}

function interupt_slideshow(image_id)
{
	for (var i in fading)
	{
		if (fading[i])
		{
			return false;
		}
	}

	if (slideshow_active_id == image_id) return false;
	slideshow_active_id = image_id;
	interupt_image_id = image_id;
	if(act_bg_image)
	{
		fade('bg_wrap',-5);
		fade(act_bg_image,-5,interupt_slideshow_continue);
		remove_slideshow_acts();
	}
	if(slideshow_interval !== null)
	{
		was_sliding = true;
		stop_slideshow(true);
	}
	for(i in slideshow_index)
	{
		if(slideshow_index[i] == interupt_image_id)
		{
			next_image_index = i * 1;
			$('artist_slideshow_image_' + slideshow_index[next_image_index]).className += ' artist_slideshow_image_act';
			act_bg_image = '';
			break;
		}
	}
}

function interupt_slideshow_continue(ignore_safari)
{
	circulate_image_index();
	init_slideshow();
	/*if(browser['client'] == 'Safari')
	{
		if(!ignore_safari)
		{
			switch_slideshow_image();
			$(next_bg_image).onload = function()
			{
				interupt_slideshow_continue(true);
			}
			return false;
		}
	}
	else
	{
		switch_slideshow_image();
	}
	act_bg_image = next_bg_image;
	fade('bg_wrap',5);
	fade(act_bg_image,5);
	next_image_index++;
	$('artist_slideshow_act').innerHTML = next_image_index;
	if(was_sliding) start_slideshow(true);
	was_sliding = false;
	switch_slideshow_image();*/
}

function init(page)
{
	switch(page)
	{
		case 'artist':
			if(slideshow_imgs.length) init_slideshow();
			break;

		case 'home':
			if(slideshow_imgs.length)
			{
				init_slideshow();
				start_slideshow(true);
			}
			break;
	}
	position_footer();
	switch(page)
	{
		case 'contact':
			new_height = $('footer').offsetTop - $('contact').offsetTop - $('wrap').offsetTop;
			$('contact').style.height = new_height + 'px';
			break;
	}
}

function position_footer()
{
	viewport_dimentions = get_viewport_dimensions();
	_wrap = $('wrap');
	_wrap_height = _wrap.offsetHeight + _wrap.offsetTop;
	_footer = $('footer');
	_height = _wrap_height > viewport_dimentions.height ? _wrap_height : viewport_dimentions.height;
	_footer.style.top = (_height - 43) + 'px';
	_footer.style.display = 'block';
}

function show_email_form()
{
	fade('map_wrap',-20,show_email_form2);
}

function show_email_form2()
{
	$('form_wrap_inner').style.display = 'block';
	$('error_area').style.display = 'block';
	fade('form_wrap',20);
	map_showing = false;
	$('map_toggle').innerHTML = 'View Map';
}

function show_map()
{
	$('error_area').style.display = 'none';
	fade('form_wrap',-20,show_map2);
}

function show_map2()
{
	fade('map_wrap',20);
	map_showing = true;
	$('map_toggle').innerHTML = 'Contact us by Email';
}

function toggle_map()
{
	if(map_showing) show_email_form();
	else show_map();
}

function show_editions_form()
{
	fade('editions_toggle',-20,show_editions_form2);
}

function show_editions_form2()
{
	fade('editions_form',20);
	position_footer();
}

function activate_nav()
{
	_side_nav = $('side_nav');
	_top_nav_wrap = $('top_nav_wrap');
	if(_side_nav && _side_nav.className.indexOf(' side_nav_act') == -1) _side_nav.className += ' side_nav_act';
	if(_top_nav_wrap && _top_nav_wrap.className.indexOf(' top_nav_act') == -1) _top_nav_wrap.className += ' top_nav_act';
}

function deactivate_nav()
{
	_side_nav = $('side_nav');
	_top_nav_wrap = $('top_nav_wrap');
	if(_side_nav) _side_nav.className = _side_nav.className.replace(' side_nav_act','');
	if(_top_nav_wrap) _top_nav_wrap.className = _top_nav_wrap.className.replace(' top_nav_act','');
}

function show_editions_toggle()
{
	fade('editions_toggle',10);
}

function opacity(id, opacStart, opacEnd, duration)
{
	fading[id] = 1;
	//var speed = browser.client == 'Internet Explorer' ? 45 : 30;
	var speed = 30;
	var step = (opacEnd - opacStart) / (duration / speed);
    //speed for each frame
    var timer = 0;
	var opac = opacStart;

    //determine the direction for the blending, if start and end are the same nothing happens
    if(opacStart > opacEnd) dir = "down";
	else dir = "up";

	changeOpac(opac, id, dir);

	for(var timer = speed; timer <= duration; timer+=speed)
	{
		opac += step;
		timeouts[timeouts.length] = setTimeout("changeOpac(" + Math.round(opac) + ",'" + id + "','" + dir + "')",timer);
	}

	if (timer != duration)
	{
		timeouts[timeouts.length] = setTimeout("changeOpac(" + opacEnd + ",'" + id + "','" + dir + "')",duration);
	}
	setTimeout("fading['"+id+"'] = 0",duration);
}

//change the opacity for different browsers
function changeOpac(opacity, id, dir)
{
    var object = $(id).style;
	if(opacity == 0 && dir == "up")
	{
		if($(id).tagName == "TR") object.display = "";
		else object.display = "block";
	}
    object.opacity = (opacity / 100);
    object.filter = "alpha(opacity=" + opacity + ")";
	if(opacity == 0 && dir == "down") object.display = "none";
}

function debug(debug_id,debug_var)
{
	if (!debug_id)
	{
		_debug_num ++;
		debug_id = _debug_num;
	}
	if (!(debug_element = document.getElementById('debug_'+debug_id)))
	{
		var debug_element = document.createElement("div");
		debug_element.style.position = "fixed";
		debug_element.style.right="10px";
		debug_element.style.height="15px";
		debug_element.style.backgroundColor="#E0E0E0";
		debug_element.style.font="13px/17px verdana";
		debug_element.id = "debug_"+debug_id;
		debug_element.style.bottom = 10+(debug_id*20)+"px";
		document.body.appendChild(debug_element);
	}
	debug_element.innerHTML = debug_var;
}

function not_enlarging()
{
	enlarging = false;
}
