function check_browser()
{

	var is_supported = false;
	
	if( document.createElement )
	{
		if (window.attachEvent && window.ActiveXObject)
		{
			is_supported = true;
		}
		
		if (window.XMLHttpRequest)
		{
			is_supported = true;
		}
	}
	
	return is_supported;
}

function init_current()
{
	if( check_browser() ) // does the web browser support
	{
		var req_el = document.getElementById('requirements-message');
		
		if( req_el )
		{
			req_el.style.display = "none";
		}
	}
	
	hide();
	
	if( navigator.userAgent.indexOf('Windows') != -1)
	{
		// for Opera and other browsers on Windows. Otherwise font size is too big
		// IE has font adjusted in IE specific CSS files
		document.body.style.fontSize = '.8em';
	}
	
	//var canvas_el = createEl('div','canvas');
	var content_el = getEl('canvas');
	
	if( content_el)
	{
		content_el.className += ' drag-boundary';
	}

	load_triggers();
	
	var set = 'home';
	var icons_images = null;
	
	if( typeof( include ) != 'undefined' )
	{
			set = include;
	}

	if( typeof( icons_files ) != 'undefined' )
	{
		set = icons_files['curr_set'];
		icons_images = icons_files['img_names'];
		base_dir = icons_files['base_dir'];

		for( var i=0; i<icons_images.length; i++)
		{
			img_src = base_dir + '/' + icons_images[i];
			new_image(img_src);
		}
		
		slideshow_buttons = [
		'/images/resources/buttons/btn_play.gif',
		'/images/resources/buttons/btn_play_on.gif',
		'/images/resources/buttons/btn_stop.gif',
		'/images/resources/buttons/btn_stop_on.gif'
		];
		
		for( var i=0; i<slideshow_buttons.length; i++)
		{
		
			img_src = slideshow_buttons[i];
			new_image(img_src);
		
		/*
			img_src = slideshow_buttons[i];
			var im = new Image();
			im.src = img_src;
			//new_image(img_src);
			var el = createEl('div');
			el.style.width = "10px";
			el.style.height = "10px";
			//el.style.display = "none";
			document.body.appendChild(el);
			el.style.backgroundImage = "url(" + img_src + ")";
			*/
		}
				
		if( set && set == 'home' )
		{
			play_audio();
		}
	}
	
	slideshow_obj = null;
	icons_obj = null;	
	create_icons_obj();
	create_slideshow_obj();

	setTimeout('load_thumbnails()',1000);
}

function create_slideshow_obj()
{

	if( (slideshow_obj) )
	{
		return;	//already exists
	}
	
	slideshow_obj = new dynamic_content();
	slideshow_obj.set_callback('slideshow_func');
	slideshow_obj.set_on_complete_callback('slideshow_stop');
	//slideshow_obj.debug();
	slideshow_obj.set_duration(1);

}

function create_icons_obj()
{

	if( (icons_obj) )
	{
		return;	//already exists
	}
	
	icons_obj = new dynamic_content();
	icons_obj.set_callback('my_load2');
//	icons_obj.debug();
	icons_obj.set_duration(.2);

}

function load_triggers()
{
		// caller init_current(). Assigns event handlers to page components
		
		var slide_show_start = getEl('slide-show-start');
		if( slide_show_start )
		{
			EventManager.Add(slide_show_start,'click',slideshow, false);
		}
		
		var slide_show_stop = getEl('slide-show-stop');
		if( slide_show_stop )
		{
			EventManager.Add(slide_show_stop,'click',slideshow_stop, false);
		}
}

function load_thumbnails()
{
	// called by init_current(); sets icon display data and displays icons.
	
	if( typeof( icons_files) == 'undefined' )
	{
		return;
	}
	
	icons_obj.set_data(icons_files);
	icons_obj.run();
}

function icon_handler(ev)
{
	// when on home page clicking on an icon loads corresponding page
	var el = get_evt_targ(ev);
	var img = el.style.backgroundImage;
	var str = img.replace('url(','');
	str  = str.replace(')', '');
	str  = str.replace(/\"/g, '');
	str  = str.replace('.jpg', '');
	components = str.split('/');
	set = components[components.length-1];
	document.location.href= 'index.php?include=' + set;
}

function load_slideshow(str)
{	
	if( typeof(resized_files) == 'undefined' )
	{
		return;
	}
	
	slideshow_stop();
	slideshow_obj.set_data(resized_files);
	setTimeout('load_images()', 2000);
	setTimeout("getEl('slideshow-control').style.display='block'",2000);
	var slideshow_info = getEl('slide-show-info');
	
	if( typeof(resized_files) != 'undefined' )
	{
		slideshow_info.innerHTML = '(' + resized_files['img_names'].length + ' images)';
	}
}

function slideshow_configure()
{	

	if( !(slideshow_obj && page) )
	{
		return;
	}
	
	var data = page.slideshow_data;
	
	slideshow_obj.set_duration(1);
	slideshow_data.set_data(data);
}

function load_images()
{
	var val = slideshow_obj.get_data();
	var cat = val['curr_set'];
	var images = val['img_names'];	
	var img_dir = val['base_dir'];
	
	if( !(cat && images && img_dir) )
	{
		return;
	}
	
	for( var i=0,j=images.length; i<j; i++ )
	{
		img_src = img_dir + '/' + images[i];
		new_image(img_src);
		var el = createEl('div');
		el.style.width = "1px";
		el.style.height = "1px";
		el.style.display = "none";
		document.body.appendChild(el);
		el.style.backgroundImage = "url(" + img_src + ")";
	}	
}

function set_sideshow_triggers()
{
	var slideshow_trigger = getEl('slide-show-trigger');

	if( slideshow_trigger )
	{
		slideshow_trigger.onclick = slideshow;
	}

	var slideshow_speed_control = getEl('slideshow-speed');

	if( slideshow_speed_control )
	{
		
		slideshow_speed_control.onchange = function()
		{
			var speed = slideshow_speed_control.value;

			if( speed )
			{
				//speed = speed * 1000

				if( typeof( slideshow_obj == 'object') )
				{
					slideshow_obj.set_duration(speed);
					
				}
			}
		}
	}
}

function slideshow_func(obj)
{
	//var images = arguments[1]['dyn-img']; //dynamic_content_data.items['dyn-img'];

	if( this.curr_items['reset'] )
	{
		slideshow_stop();
		return;
	}
	var img_width = 0; 
	var img_height = 0;
	var image = this.curr_items['img_names'];
	var img_dir = this.get_data_item('base_dir'); 
	var img_dimensions = this.curr_items['img_dims']; //obj['dyn-img-dimensions'];
	
	if( ! image )
	{
		slideshow_stop();
		return;
	}

	var slideshow_info = getEl('slide-show-info');
	
	var curr_dir = img_dir;
	
	slideshow_info.innerHTML = (this.item_num + 1) + ' of  ' + this.num_items;
	
	if( img_dimensions )
	{
		img_dims = img_dimensions.split('|');
		
		if( img_dims.length == 2 )
		{
			img_width = img_dims[0];
			img_height = img_dims[1];
		}
	}
	
	var big_div = getEl('slideshow-canvas');
	
	if( !big_div )
	{
		big_div = create_big_div('slideshow-canvas');
		EventManager.Add(big_div,'dblclick', slideshow_stop, false);
	}
	
	if( big_div )
	{
		change_opacity(big_div.id,0);
		
		var page_height = theObjs['content'].getHeight();
		var max_height = 0;
		
		if( page_height )
		{
			max_height = page_height - 50;
		}
			
		big_div.style.width =  img_width  ? img_width  + 'px' : 'auto';
		big_div.style.height = img_height ? img_height + 'px' : 'auto';
	
		if( max_height && (img_height > max_height) )
		{
		//	big_div.style.height = max_height + 'px';
			big_div.style.width = 'auto';
		}


		big_div.src = img_dir + '/' + image;
		big_div.title = "Double click to hide";
		setTimeout('opacity_changer_up(' + '"' + big_div.id + '")', 200);	
	}
}



function opacity_changer(el_id,num)
{
	if( typeof( num ) == 'undefined' )
	{
		num = 10;
	}
	
	if( num >= 0 )
	{
		change_opacity(el_id, num);
		num -= 2;
		setTimeout('opacity_changer("' + el_id + '",' + num + ')', 1);
	}
	else
	{
		setTimeout('opacity_changer_up("' + el_id + '",' + num + ')', 1);
	}
}


function opacity_changer_up(el_id,num)
{
	if( typeof( num ) == 'undefined' )
	{
		num = 6;
	}
	if( num <= 10 )
	{
		change_opacity(el_id, num);
		num += 2;
		setTimeout('opacity_changer_up("' + el_id + '",' + num + ')', 5);
	}
}

function hide_slideshow()
{
	var slideshow_canvas = getEl('slideshow-canvas');
	slideshow_canvas.style.display = "none";
	change_opacity('content',10);	
}

function pause_slideshow()
{
	
}

function get_image_dimensions(img_name)
{
	var img_names = resized_files['img_names'];
	var img_dims = resized_files['img_dims'];
	
	var img_size = null;
	
	for( var i=0,j=img_names.length; i<j; i++ )
	{
		if( img_names[i] == img_name )
		{
			img_size = img_dims[i];
			break;
		}
	}
	
	return img_size;
}

function slideshow()
{
	if( !slideshow_obj )
	{
		return;
	}

	slideshow_stop();
	
	change_opacity('canvas',1);
	
	var full_sized_canvas = getEl('big-div');
	
	if( full_sized_canvas )
	{
		full_sized_canvas.style.display = 'none';
	}
	
	var ajax_loading = getEl('slide-show-loading');
	
	if( ajax_loading )
	{
			ajax_loading.style.visibility = "visible";
	}

	var start_button = getEl('slide-show-start');
	start_button.style.backgroundImage = 'url(/images/resources/buttons/btn_play_on.gif)';
	start_button.style.backgroundPosition = "1px 1px";
	var stop_button = getEl('slide-show-stop');
	stop_button.style.backgroundImage = 'url(/images/resources/buttons/btn_stop.gif)';
	stop_button.onmouseover = function() { this.style.backgroundImage = 'url(/images/resources/buttons/btn_stop_on.gif)' }
	stop_button.onmouseout = function() { this.style.backgroundImage = 'url(/images/resources/buttons/btn_stop.gif)' }
	
	do_slideshow();
}

function do_slideshow()
{
	var speed = 5;
	
	var slideshow_speed_control = getEl('slideshow-speed');
	
	if( slideshow_speed_control && slideshow_speed_control.value )
	{
	//	speed = slideshow_speed_control.value;
	}

	slideshow_canvas = getEl('slideshow-canvas');
	
	if( slideshow_canvas )
	{
			slideshow_canvas.style.display = 'block';
	}
	
	slideshow_obj.init(); //reset
	slideshow_obj.set_duration(speed);
	slideshow_obj.run();

}


function slideshow_stop()
{
	if( typeof( slideshow_obj ) == 'object' )
	{
		slideshow_obj.stop();
	}
	
	var big_div = getEl('slideshow-canvas');
	
	if( big_div )
	{
		big_div.style.display = 'none';
	}
	
	var slideshow_info = getEl('slide-show-info');
	
	if( typeof(resized_files) != 'undefined' )
	{
		slideshow_info.innerHTML = '(' + resized_files['img_names'].length + ' images)';
	}
	
	change_opacity('canvas',10);
	
	var start_button = getEl('slide-show-start');
	start_button.style.backgroundImage = 'url(/images/resources/buttons/btn_play.gif)';
	start_button.style.backgroundPosition = "0px 0px";
  	var stop_button = getEl('slide-show-stop');
	stop_button.style.backgroundImage = 'url(/images/resources/buttons/btn_stop_on.gif)';
  	stop_button.onmouseover = function() { this.style.backgroundImage = 'url(/images/resources/buttons/btn_stop_on.gif)' }
	
}

//////////////////////////////////////////////////////////////////////////////////////////////

function ucwords(str)
{
  var i, c, wd, s='', cap = true;
  
  for (i = 0; i < str.length; ++i) {
    c = str.charAt(i);
    wd = isWordDelim(c);
    if (wd) {
      cap = true;
    }  
    if (cap && !wd) {
      c = c.toUpperCase();
      cap = false;
    }
    s += c;
  }
  return s;

  function isWordDelim(c)
  {
    // add other word delimiters as needed
    // (for example '-' and other punctuation)
    return c == ' ' || c == '\n' || c == '\t';
  }
} // end xCapitalize()

function hide()
{
	var els_to_hide = getElementsByClass('hide','enclosure');

	for(i=0;i<els_to_hide.length;i++)
	{
		els_to_hide[i].style.display = 'none';
	}
}

function category_to_dirname(cat)
{
	cat = cat.replace(/ /g, '_');
	cat = cat.toLowerCase();
	return cat;
}

function my_load2()
{

	var val = this.curr_items;

	if( !val )
	{
		return;
	}

	var parent_el = getEl('canvas');
	var file_path = this.get_data_item('base_dir');
	var dirname = this.get_data_item('curr_set');
	var dims = val['img_dims']; //val['dyn-img-dimensions'];
	var image = val['img_names'] ; //val['dyn-img'];
	var el_width, el_height, default_height, default_width;
	el_width = el_height = default_width = default_height = '64px';
	
	if( this.num_runs < 1 )
	{
		
	}
	
	if( dirname && image)
	{
		if( dims )
		{
			var dimensions = dims.split('|');
			
			if( dimensions.length == 2 && dimensions[0] != 'unknown' )
			{
				el_width = dimensions[0] + 'px';
				el_height = dimensions[1] + 'px';
			}
		}
		
		el_id = 'div' + this.num_runs;
		var el = getEl(el_id);
		var content_el = getEl('canvas');
		
		if( !el )
		{
			el = createEl('div',el_id,'icons');
			
			if( el && content_el)
			{
				content_el.appendChild(el);
			}
		
		}

		if( el )
		{
			el.title = image + " dims height: " + el_height + " width: " + el_width;
		
			el.title = "Click for larger image";
			el.style.display = 'block';
			el.style.position = 'absolute';
			if( browser.ie && ! browser.ie7 )
			{
				el.style.cursor = 'hand';
			}
		//	el.style.border = '1px solid black';
			el.style.width = el_width;
			el.style.height = el_height;
	
			curr_dir = dirname;
			
			var row_cats = [
			
				'works_in_steel', 
				'installations',
				'office_refurbishment',
				'paintings',
				'photography',
				'collections'
				
			]
			if( row_cats.in_array(curr_dir) )
			{
				curr_dir = 'rows';
				//el.style.width = default_width;
				//el.style.height =  default_height;
			}
			
			curr_coords = get_coords(curr_dir);
				
			if( ! curr_coords )
			{
			
				return;
			}	
			
			var coords_str = curr_coords[this.num_runs];
		
			
			if( this.num_runs == this.num_items-1 )
			{
				//	setTimeout('load_slideshow("' + dirname + '")',2000)
					load_slideshow();
			}
			
			
			if( !coords_str ) 
			{		
				return;
			}	
			
			var coords = coords_str.split('|');
			var x_coord = coords[0];
			var y_coord = coords[1];
			el.style.left = x_coord + 'px';
			el.style.top = y_coord + 'px';
			jpg = file_path + '/' + image;
		
			el.style.backgroundImage = 'url(' + jpg + ')';
	
			
			//el.title = el_id + ' ' + this.num_items; //el_id + '  ' + image; //el_id + " x: " + x_coord  + " y: " + y_coord;
			//el.title =  jpg + ' ' + el_id; //el_id + " x: " + x_coord  + " y: " + y_coord;

			
			if( dirname == 'home' )
			{
				var func = icon_handler;
				el.onclick = func;
				var cat = get_category(image);
				cat = cat.replace(/_/g, ' ');
				cat = ucwords(cat);
				el.title = "Click to visit " + cat;
				
			//	EventManager.Add(el,'click',func, false);
			}
			else
			{
				//EventManager.Add(el,'click',show_full_sized, false);
				el.onclick = show_full_sized;
				//el.title = "Click for larger image";
			//	document.body.innerHTML += "<p> num items: " + this.num_items + "curr num: " + this.num_runs  + ' im: ' + image + "</p>";;
			}
		
		}
	}
}

function get_category(dir)
{
	var str = '';
	
	if( dir.indexOf('.jpg') )
	{
		str = dir.replace('.jpg','');
	}
	else
	{
		var pattern  = /\/([^\/]+)$/;
		var dirs =  dir.match(pattern);

		if( dirs.length && dirs[1] )
		{
			str =  dirs[1];
		}
	}

	return str;
}

function get_coords(cat)
{

var all_coords =
		{
			drawings: 
			[
				'81|71',	//done
				'315|312',
				'136|419',
				'182|241',
				'483|48',	//done
				'365|462',
				'9|180',
				'182|170',
				'50|330',
				'679|109',
				'330|104',
				'57|431',
				'209|456',
				'581|123',
				'635|54'
			],

			portraits:
			[

				'81|71',	//done
				'315|312',
				'182|452',
				'182|170',
				'182|240',	//done
				'441|446',
				'9|180',
				'576|13', // originally 556|113
				'50|330',
				'679|109',
				'330|104',
				'10|444',
				'363|511',
				'581|123',
				'635|54'
			],

			home:
			[

				'81|71',	//done
				'315|312',
				'136|419',
				'182|241',
				'483|48',	//done
				'365|462',
				'9|180',
				'182|170',
				'50|330',
				'679|109',
				'330|104',
				'57|431',
				'209|456',
				'581|123',
				'635|54'
			],

			exhibitions:
			[
				'295|451',
				'323|71',
				'161|526',
				'139|161',
				'139|251',
				'250|71',
				'355|290',
				'139|372',
				'29|71',
				'67|251',
				'24|526',
				'518|48',
				'635|54'
			],

			rows:
			[
				// row 1
				'24|90',
				'104|90',
				'184|90',
				'264|90',
				'344|90',
				'424|90',
				'504|90',
				'584|90',
				'664|90',

				//row 2
				'24|266',
				'104|266',
				'184|266',
				'264|266',
				'344|266',

				//row 3

				'24|449',
				'104|449',
				'184|449',
				'264|449',
				'344|449',
				'424|449',
				'504|449',
				'584|449',
				'664|449',
			],

			photography:

			[
				'95|183',
				'315|320',
				'197|453',
				'397|97',
				'443|507',
				'169|278',
				'211|77',
				'686|126',
				'538|54',
				'211|125',
				'19|521',
				'61|350'
			],

			commissions:

			[
				'312|441',
				'219|277',
				'234|517',
				'549|50',
				'437|497',
				'170|277',
				'351|103',
				'38|441',
				'48|82',
				'282|103',
				'36|529',
				'119|277'
			]

}

	var coords = all_coords[cat];
	
	return coords;
}

function show_full_sized(e)
{

	var thumbnail = get_evt_targ(e);
	
	if( !thumbnail )
	{
		return;
	}
	
	var thumbnail_bg = thumbnail.style.backgroundImage;
	
	if( !thumbnail_bg )
	{
		return;
	}
	
	if( thumbnail_bg.indexOf('/home/') != -1 )
	{
		return;
	}
	
	
	var img = thumbnail_bg.replace('icons','resized');
	img = img.replace(/\"/g,''); // opera returns double quoted href inside url() 
	img = img.replace('url(','');
	img = img.replace(')','');
	
	var ims = img.split('/');
	var im = ims[ims.length-1];
	var width = 0;
	var height = 0;

	var dimensions_str = get_image_dimensions(im);

	if( dimensions_str )
	{
		var dimensions = dimensions_str.split('|');

		if( dimensions.length = 2 )
		{
			width = dimensions[0];
			height = dimensions[1];
		}
	}
	
	var canvas_el = getEl('big-div');
		
	if( !canvas_el  )
	{
		canvas_el = create_big_div();
	
	}
	
	if( canvas_el )
	{
		var func = function() { getEl(canvas_el.id).style.display="none"}; //this.style.display="none" not available in IE
		EventManager.Add(canvas_el,'dblclick',func, false);
		canvas_el.display = 'none'
		canvas_el.title = "Double click to hide";
	
		var content_el = theObjs['content'];
		content_height = content_el.getHeight();
		canvas_el.style.width  = width  ? width  + 'px' : 'auto';
		canvas_el.style.height = height ? height + 'px' : 'auto';
		
		if( content_height && (height > content_height - 50) )
		{
			canvas_el.style.width = 'auto';
			canvas_el.style.height = (content_height - 50) + 'px';
			canvas_el.style.top = '20px';
			canvas_el.style.left = '20px';
			
		}
		
		canvas_el.src = img;
		canvas_el.style.zIndex = 1000;
		canvas_el.style.backgroundRepeat = "no-repeat";

		setTimeout( "getEl('big-div').style.display = 'block'", 200);
	}
}

function create_big_div(id)
{

	id = id || 'big-div';
	var big_div = createEl('img',id,'');

	if( big_div )
	{
		document.body.appendChild(big_div);

		if( typeof(drag) == 'object' )
		{
			drag.add(id);
		}

	}

	return big_div;
}

function play_audio()
{
	if( typeof(soundManager) == 'undefined' )
	{
		return;
	}
	
	soundManager.url = 'soundmanager2.swf'; // path to movie
	
	soundManager.onload = function() 
	{
		soundManager.createSound(
		{
		  id: 'rollover',
		  url: 'snippet.mp3',
		  autoLoad: true,
		  autoPlay: true,
		  volume: 5
		  });
  
  	}
  
}

/*
try {
  document.execCommand('BackgroundImageCache', false, true);
} catch(e) {}
*/
