// Evaluate the URI to get a start value
var myURI = new URI();
var start = 0, prev = 0, next = 0;
var sliding = false;
var mySlide;
var actual_items;
var viewable_items;

window.addEvent('domready',function() {
	// Get start status
	start = (myURI.get('fragment') || 0) - 1 + 1;
	
	// Set up Menus
	if ($('top_navigation')) {
		var myMenu = new MenuMatic({ id: "top_navigation", matchWidthMode: true, opacity: 100 });
	}
	
	// Set up restrictor
	if ($('restrictor')) {
		BuildRestrictor();
	}
});

function UpdateGiftCertificateOptions() {
    var dm = $('delivery_method').value;
    if (dm == 'mail-recipient') {
        $('recipient-mailing').setStyle('display','block');
    }
    else {
        $('recipient-mailing').setStyle('display','none');
        $$('#recipient-mailing input').each(function(input) {
            input.value = '';
        });
    }
}

function UpdateSizes(_selector) {
	var new_sizes = _selector.getElements('option')[_selector.selectedIndex].title.split(' ');
	$$('input[name="size_height_min"]')[0].value = new_sizes[0];
	$$('input[name="size_height_max"]')[0].value = new_sizes[0];
	
	$$('input[name="size_width_min"]')[0].value = new_sizes[1];
	$$('input[name="size_width_max"]')[0].value = new_sizes[1];
}

function ToggleRestrictor(_new) {
	myURI.setData('show',_new);
	myURI.go();
}

function BuildRestrictor() {
	var search = myURI.getData('search');
	var show = myURI.getData('show');
	
	var toggle_all = new Element('a', { href: '#', html: 'show all posters', onclick: "ToggleRestrictor()" });
	var toggle_movies = new Element('a', { href: '#', html: 'show only movie posters', onclick: "ToggleRestrictor('movies')" });
	var toggle_hide_movies = new Element('a', { href: '#', html: 'hide movie posters', onclick: "ToggleRestrictor('hide_movies')" });
	var divider = new Element('span', { html: '|' });
	var indicator = new Element('span', { 'class': 'indicator' });
	
	
	if (show == 'movies') {
		indicator.innerHTML = 'Showing only movie posters';
		$('restrictor').adopt(indicator,toggle_all,divider,toggle_hide_movies);
	}
	else if (show == 'hide_movies') {
		indicator.innerHTML = 'Hiding movie posters';
		$('restrictor').adopt(indicator,toggle_all,divider,toggle_movies);
	}
	else {
		indicator.innerHTML = 'Showing all matching posters';
		$('restrictor').adopt(indicator,toggle_hide_movies,divider,toggle_movies);
	}
}

function CheckForMediabox(_cl) {
	var isInIFrame = (window.location != window.parent.location) ? true : false;
	if (!isInIFrame) {
		top.location.href = "/cgi-local/search.cgi?search=" + _cl;
	}
}

function StoreRecentlyViewed(_id) {
	var recents = Cookie.read('recently_viewed') || '';
	recents = recents.split(',');
	recents.unshift(_id);
	recents = recents.clean().unique();
	Cookie.write('recently_viewed',recents.join(','));
}

function InitSlider() {
	var initial_step = Cookie.read('thumbnail_size') || 165;
	var faded = false;
	var ready = false;
	mySlide = new Slider($('slider'), $('knob'), {
		range: [80, 250],
 		steps: 10,
 		initialStep: initial_step,
 		onChange: function(step){
 			sliding = true;
 			if (!ready) {
 				return;
 			}
 			if (!faded) {
				$$('#posters li img').each( function(element) {
					element.setStyle('display', 'none');
					faded = true;
				});
			}
			viewable_items = 0;
			SetThumbnails(step);
		},
		onComplete: function(step) {
  			Cookie.write('thumbnail_size', step, {duration: 30, path: '/' });
			
			if (ready) {	// Prevent double-processing
				AdjustImages(step);
				AddImages(step);
				DrawPaginator();
				$$('#posters li.on img').each( function(element) {
					element.setStyle('display', 'inline');
					faded = false;
				});
			}
			else {
				AdjustImages(step);
				AddImages(step);
				DrawPaginator();
				$$('#posters li.on img').each( function(element) {
					element.setStyle('display', 'inline');
					faded = false;
				});			
			}
			ready = true;
			sliding = false;
		}
	});
	
	if (initial_step >= 250) {
		mySlide.set(249).set(250);
	}
}

function SetThumbnails(new_size) {
	// Takes the new size value (ostensibly from the slider)
	var height = Math.floor(new_size / ratio_average);
	var li_style = 'width: ' + (new_size + 20) + 'px; height: ' + (height + 30) + 'px;';
	if (document.styleSheets[0].cssRules) {
		document.styleSheets[0].cssRules[0].style.cssText = li_style;
	}
	else {
		document.styleSheets[0].rules[0].style.cssText = li_style;
	}
	SetVisibles(new_size,height);
}

function SetVisibles(width,height) {
	var max_cols = Math.floor(($('right').getCoordinates().width) / (width + 42)) || 1;
	var max_rows = Math.floor((window.getCoordinates().height - 200) / (height + 50)) || 1;
	var max_posters = max_cols * max_rows;
	
	$$('#posters li.on').each(function(poster) {
		poster.removeClass('on');
		poster.addClass('off');
	});
	
	var AllPosters = $$('#posters li');
	
	for (var i = start; i < start + max_posters && i < AllPosters.length; i++) {
		var poster = AllPosters[i];
		poster.removeClass('off');
		poster.addClass('on');
	}
}

function AdjustImages(new_size) {
	$$('#posters li.on a img').each(function(image) {
		AdjustImage(image,new_size);
	});
}

function AdjustImage(image,new_size) {
	var ratio = image.getParent().rev;
	var width = new_size;
	var height = width / ratio;
	if (height > new_size / ratio_average) {
		height = new_size / ratio_average;
		width = height * ratio;
	}

	image.setStyles({ 'width': width, 'height': height });
}

function AddImages(new_size) {
	// Loads images in boxes that have not yet had them loaded and passes the loaded element to SetImageRatio for ratio reeducation and class adjustment
	new_size = new_size || Cookie.read('thumbnail_size') || 175;
	$$('#posters li.on a').each(function(element) {
		if (element.rev && !element.getFirst('img')) {
			var cl = element.getParent().title.split(": ",1);
			var poster_image = new Asset.image('/small/' + cl + '.jpg', {
				onload: function(image) {
					AdjustImage(image,new_size);
					element.getParent().removeClass('unloaded');
				}
			}).inject(element, 'top');
		}
	});
}

function InitDraggablePosters() {
	// Makes everything in the poster list draggable!
	document.ondragstart = function () { return false; };
	$$('#posters li').each(function(element) {	
		element.addEvent('mousedown', function(e) {		
			e = new Event(e).stop();
			
			if ($('draggable')) { $('draggable').dispose(); }
			
			var clone = this.clone()
				.setStyles(this.getCoordinates())
				.addClass('draggable')
				.addClass($('posters').className)
				.setProperty('id','draggable')
				.setStyles({'opacity': 0.7, 'position': 'absolute'})
				.inject(document.body);
			
			var myDrag = new Drag.Move(clone, {
				droppables: '.droppable',
			
				onDrop: function(clone, droppable, event){
					if (droppable) {
						var myFx = new Fx.Morph(droppable, { duration: 750 }).start('.unhover');
						Sexy.info(droppable.id);
					}
					clone.fade('out');
					clone.dispose();
				},
			
				onEnter: function(clone, droppable){
					var myFx = new Fx.Morph(droppable, { duration: 150 }).start('.hover');
				},
			
				onLeave: function(clone, droppable){
					var myFx = new Fx.Morph(droppable, { duration: 150 }).start('.unhover');
				}
			});
			
			myDrag.start(e);
		});
	});
}

function InitList() {
	SetThumbnails(mySlide.step);
	AddImages();
	DrawPaginator();
	$$('#posters li.on a img').each(function(image) {
		AdjustImage(image,mySlide.step);
		image.setStyle('display','inline');
	});
}

function ToggleSoldDisplay() {
	if (sold == 'yes') {
		// Going from sold showing to not showing
		myURI.setData('sold',null);
		myURI.go();
	}
	else {
		// Going from sold hidden to showing
		var search = myURI.getData('search');
		if (search) {
			search = search.replace('+',' ');
			myURI.setData('search',search);
		}
		var title = myURI.getData('title');
		if (title) {
			title = title.replace('+',' ');
			myURI.setData('title',title);		
		}
		myURI.setData('sold','yes');
        myURI.set('query',myURI.get('query').replace('%2B','%20'));
		myURI.go();
	}
}

function xToggleSoldDisplay() {
	// Switches the display between showing sold poster and not, adjusting initial position accordingly
	show_sold = Cookie.read('show_sold') == '1' ? '0' : '1';
	Cookie.write('show_sold',show_sold);
	
	if (show_sold == '1') {
		// Going from sold showing to not showing
		myURI.set('fragment',null);
		var current_data = myURI.get('data');
		current_data['initial_cl'] = $$('#posters li.on')[0].title.split(": ",1)[0];
		myURI.set('data',current_data);
		myURI.go();
	}
	else {
		// Going from sold showing to 
		myURI.set('fragment',$$('#posters li.on')[0].getAllPrevious('.available').length);
		myURI.go();
		window.location.reload(true);
	}
}


function ToggleListDisplay(new_value) {
	$('posters').setProperty('class',new_value);
	if (new_value == 'table') {
		InitList();
	}
	else {
//		$$('#posters li').each(function(element) { element.setStyle('width', '100%'); element.setStyle('height', 'auto'); });
	}
}

function GoTo(target) {
	var myURI = new URI();
// 	if (target >= actual_items && (500 * poster_set) < total) {	// If the target is beyond the scope of the current set
// 		var last_index = poster_set * (actual_items + (sold == 1 ? 0 : sold_items));
// 		myURI.set('query','set=' + (poster_set - 1 + 2) );
// 		myURI.set('fragment',null);
// 		myURI.go();
// 	}
// 	else if (start == 0 && target < 0 && poster_set > 1) {
// 		myURI.set('query','set=' + (poster_set -1) );
// 		myURI.set('fragment', 500 - viewable_items);
// 		myURI.go();
// 	}
//	else
	if (target > 0 && target < actual_items) {
		start = target;
		myURI.set('fragment', start || '0').go();
		InitList();
	}
	else if (target <= 0) {
		start = 0;
		myURI.set('fragment', start || '0').go();
		InitList();	
	}
}

function DrawPaginator() {
	actual_items = $$('#posters li').length - $$('#posters li.filler').length;
	viewable_items = viewable_items || $$('#posters li.on').length;
	var pages = Math.ceil(actual_items / viewable_items);
	var current = Math.ceil((start + 1) / viewable_items);
	prev = (start - viewable_items);
	next = (start + viewable_items);

	var start_poster = ((start - 1 + 2) + (poster_set - 1) * 500);
	var end_poster = start_poster - 1 + ($$('#posters li.on').length < viewable_items ? $$('#posters li.on').length : viewable_items);
	
	var sold_toggler;
	if (sold_items > 0 && sold_items < total) {
		sold_toggler = ' | <span style="cursor:pointer;" onclick="ToggleSoldDisplay();"> ' + (sold == 'yes' ? 'hide ' + sold_items + ' sold posters' : 'also show ' + sold_items + ' sold posters') + '</span>';
	}
	else {
		sold_toggler = '';
	}
	
	if (total > 1) {
		$$('.paginator').each( function(paginator) {
			paginator.innerHTML = 'Viewing Posters ' + start_poster + ' through ' + end_poster + ' of ' + (sold == 'yes' ? total : total - sold_items) + sold_toggler;
		});
	}
}

function FillPage() {
	// Evaluate the height of the window
	var cutoff = window.getCoordinates().height - 20;
	
	// Get rid of the existing fillers
	$$('#posters li.filler').each( function(element) { element.dispose(); });

	var full = false;	
	while (full == false) {
		var last = $$('#posters li')[$$('#posters li').length - 1];			// Get the last element of the list as it stands at this moment
		if (last.hasClass('off')) {										// Make sure it's not been disabled by SetVisibles
			break;
		}
	
		var filler = last.clone().injectAfter(last).addClass('filler');	// Set up a new clone

		if (filler.getCoordinates().bottom > cutoff) {					// Check to see if this filler goes beyond the edge of the allowable area
			full = true;												// If so, set full to true
			filler.destroy();											// Get rid of this (last, overflowing) element
		}
	}

}

function InitNavigation() {
	// Anpassung IE6
	if(window.ie6) var heightValue='100%';
	else var heightValue='';
	
	// Selektoren der Container fŸr Schalter und Inhalt
	var togglerName='dt.toggler_';
	var contentName='dd.toggled_';
	
	
	// Selektoren setzen
	var counter=0;	
	var toggler=$$(togglerName+counter);
	var content=$$(contentName+counter);
	
	while(toggler.length>0)
	{
		if(open_menus.length <= counter) {
			open_menus[counter] = -1;
		}
		
		// Accordion anwenden
		var accordion = new Accordion(toggler, content, {
			opacity: false,
			alwaysHide: true,
			initialDisplayFx: false,
			display: open_menus[counter] - 1 + 1,
			onComplete: function() { 
				var element=$(this.elements[this.previous]);
				if(element && element.offsetHeight>0) element.setStyle('height', heightValue);			
			},
			onActive: function(toggler, content) {
				toggler.addClass('open');
			},
			onBackground: function(toggler, content) {
				toggler.removeClass('open');
			}
		});
		
//		accordion.display($('toggler_type'));
		
		// Selektoren fŸr nŠchstes Level setzen
		counter++;
		toggler=$$(togglerName+counter);
		content=$$(contentName+counter);
	}
}
