/********************
VARIABLES
********************/
//Top Navigator Variables
currentTopNav = "";
topNavArraySize = 6;
topNavArray = new Array(topNavArraySize);
for(var i=0;i<topNavArraySize;i++) {
	topNavArray[i]=new Array(3);
}
topNavArray[0][0]="LS_Home";
topNavArray[0][1]="images/site/LS_home_down.jpg";
topNavArray[0][2]="images/site/LS_home.jpg";
topNavArray[1][0]="LS_Feature";
topNavArray[1][1]="images/site/LS_latestFilms_down.jpg";
topNavArray[1][2]="images/site/LS_latestFilms.jpg";
topNavArray[2][0]="LS_DVD";
topNavArray[2][1]="images/site/LS_dvd_down.jpg";
topNavArray[2][2]="images/site/LS_dvd.jpg";
topNavArray[3][0]="LS_Screening";
topNavArray[3][1]="images/site/LS_screenRoom_down.jpg";
topNavArray[3][2]="images/site/LS_screenRoom.jpg";
topNavArray[4][0]="LS_Library";
topNavArray[4][1]="images/site/LS_filmLibrary_down.jpg";
topNavArray[4][2]="images/site/LS_filmLibrary.jpg";
topNavArray[5][0]="LS_Forum";
topNavArray[5][1]="images/site/LS_forum_down.jpg";
topNavArray[5][2]="images/site/LS_forum.jpg";

//International Event Variables
currentInternationalEvent=0;


/********************
SHOW HIDE FUNCTIONS
********************/
function getLinkObject(obj) {
	return document.getElementById(obj);
}
function showLink(obj) {
	obj.className = 'visibility_visible';
}
function hideLink(obj) {
	obj.className = 'visibility_hidden';
}

/********************
ONLOAD URL PARSING FUNCTIONS
********************/
//body on load
function bodyOnload() {
	preloadImages(); //loads all preload images
	
	ajaxbackEnable = true; //enables the back button code for ajax
	if (BrowserDetect.browser=="Explorer") {
		if (BrowserDetect.version=="6") ajaxbackEnable = false;
		ajaxbackEnable = false;
	}
	if (BrowserDetect.browser=="Safari") ajaxbackEnable = false;

	if (ajaxbackEnable) initialize(); //inits the initialize function in the ajaxback class
	
}
//when a page loads, it checks to see if there is an anchor.  if there is, it loads the anchor.
function turnAnchorToParam() {
	var href = window.location.href;
	if ( href.indexOf("#") > -1 ){
		var anchorID = href.substr(href.indexOf("#")+1);
		return anchorID;
	} else {
		return null;
	}
}

/********************
BROWSER DETECT
*  Browser name: BrowserDetect.browser
* Browser version: BrowserDetect.version
* OS name: BrowserDetect.OS
http://www.quirksmode.org/js/detect.html
********************/
var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};
BrowserDetect.init();

/********************
HANDLEBAR SLIDER FUNCTIONS
********************/

/* slider functions */
// mouse wheel code from http://adomas.org/javascript-mouse-wheel/
//modifed by 65 media - includes dynamic slider naming and color change
function handle(delta, slider) {
	slider.setValueBy(-delta);
}
/** Event handler for mouse wheel event. */
function wheel(event, slider){
	var delta = 0;
	if (!event) /* For IE. */
		event = window.event;
	if (event.wheelDelta) { /* IE/Opera. */
		delta = event.wheelDelta/120;
		/** In Opera 9, delta differs in sign as compared to IE. */
		if (window.opera)
			delta = -delta;
	} else if (event.detail) { /** Mozilla case. */
		/** In Mozilla, sign of delta is different than in IE.
		* Also, delta is multiple of 3.
		*/
		delta = -event.detail/3;
	}

	/** If delta is nonzero, handle it.
	* Basically, delta is now positive if wheel was scrolled up,
	* and negative, if wheel was scrolled down.
	*/
	if (delta)
		handle(delta, slider);

	/** Prevent default actions caused by mouse wheel.
	* That might be ugly, but we handle scrolls somehow
	* anyway, so don't bother here..
	*/
	if (event.preventDefault)
		event.preventDefault();
	
	event.returnValue = false;
}
// scroll the element vertically based on its width and the slider maximum value
function scrollVertical(value, element, slider) {
	element.scrollTop = Math.round(value/slider.maximum*(element.scrollHeight-element.offsetHeight));
}

//loads a page with an individual slider on that page
//this uses prototype.js and slider.js
function loadSlider(id1, track1, handle1, id2, track2, handle2, id3, track3, handle3) {
	if (id1!=undefined&& id1!="") {
		// vertical slider control
		var slider1 = new Control.Slider(handle1, track1, {
			axis: 'vertical',
			range: $R(0,20),
			onSlide: function(v) { scrollVertical(v, $(id1), slider1);  },
			onChange: function(v) { scrollVertical(v, $(id1), slider1); }
		});
		
		// hide scrollbar  feature
		if ($(id1).scrollHeight <= $(id1).offsetHeight) {
			slider1.setDisabled();
			$(track1).hide();
		}
		
		Event.observe(id1, 'DOMMouseScroll', function(e){wheel(e, slider1)}); // mozilla
		Event.observe(id1, 'mousewheel', function(e){wheel(e, slider1)}); // IE/Opera
		
		obj = $(handle1);
		obj.className = "dkgray_bg";
	}
	
	if (id2!=undefined && id2!="") {
		var slider2 = new Control.Slider(handle2, track2, {
			axis: 'vertical',
			range: $R(0,20),
			onSlide: function(v) { scrollVertical(v, $(id2), slider2);  },
			onChange: function(v) { scrollVertical(v, $(id2), slider2); }
		});
		
		// hide scrollbar  feature
		if ($(id2).scrollHeight <= $(id2).offsetHeight) {
			slider2.setDisabled();
			$(track2).hide();
		}

		Event.observe(id2, 'DOMMouseScroll', function(e){wheel(e, slider2)}); // mozilla
		Event.observe(id2, 'mousewheel', function(e){wheel(e, slider2)}); // IE/Opera		
		
		obj = $(handle2);
		obj.className = "dkgray_bg";
	}
	if (id3!=undefined&& id3!="") {
		var slider3 = new Control.Slider(handle3, track3, {
			axis: 'vertical',
			range: $R(0,20),
			onSlide: function(v) { scrollVertical(v, $(id3), slider3);  },
			onChange: function(v) { scrollVertical(v, $(id3), slider3); }
		});	

		// hide scrollbar  feature
		if ($(id3).scrollHeight <= $(id3).offsetHeight) {
			slider3.setDisabled();
			$(track3).hide();
		}		
		
		Event.observe(id3, 'DOMMouseScroll', function(e){wheel(e, slider3)}); // mozilla
		Event.observe(id3, 'mousewheel', function(e){wheel(e, slider3)}); // IE/Opera	
		
		obj = $(handle3);
		obj.className = "dkgray_bg";		
	}
}

/*****************************
HEADER FUNCTIONS
*****************************/
//master search by click
function loadMasterSearchClick() {
	theterms = document.mastersearchform.mastersearch.value;
	if (theterms!="") loadPage("15",true,"ms",theterms);	
}
//master search hit enter key
function loadMasterSearch(e) {
	if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13)) {
		theterms = document.mastersearchform.mastersearch.value;
		if (theterms!="") loadPage("15",true,"ms",theterms);
	}
	return false;
}
// select text when clicking in a text field 
function select_all() {
	var text_val=eval(this);
	text_val.focus();
	text_val.select();
}

//checks to see if the currently onmouseover tag is considered loaded
//if so, then make it the selected color
function makeTopNavActive(ct) {
	//alert("ct:"+ct+ " currentTopNav:"+currentTopNav);
	if (ct == "undefined") currentTopNav = ct;
	for (var i=0;i<topNavArraySize;i++) {
		var temptag = topNavArray[i][0];
		if (temptag == ("LS_" + currentTopNav)) {
			document[temptag].src = topNavArray[i][1];
		} else {
			document[temptag].src = topNavArray[i][2];
		}
	}
}

//the link box in the header
function toggleDynalinkVisibility() {
		var baseurl = window.location.href.substring(0,location.href.lastIndexOf("/")+1);
		var lf = document.getElementById("linkfield");
		
		objiframeforum = getLinkObject('iframeforum');
		if (objiframeforum != null) {
			 if (objiframeforum.contentDocument){ 
			   rv = objiframeforum.contentDocument; 
			 } else { 
			   // IE 
			   rv = document.frames['iframeforum'].document; 
			 } 
			var loctemp = (rv.location).toString();
			var loctemp_index = loctemp.indexOf("forum");
			loctemp = loctemp.substr(loctemp_index);
			iframeforum_src = loctemp;
		} else {
			iframeforum_src="";
		}

		if (iframeforum_src!="") {
			lf.value = baseurl + "?id=16&fid=" + iframeforum_src;
		} else if (currentPage=="") {
			lf.value = baseurl;
		} else {
			lf.value = baseurl + "?id=" + currentPage;
		}
	
		var el = document.getElementById("getlink");
		if ( el.className == 'visibility_hidden' ) {
			showLink(el);
			disableLinkMouseOver = true;
		} else {
			hideLink(el);
			disableLinkMouseOver = false;
		}
}

/********************
LIBRARY SEARCH LOADERS
********************/
// change boldness when switching between advanced and basic search
function changeSearchBoldness(whichBold) {
	var bs = document.getElementById("basic_search");
	var as = document.getElementById("advanced_search");

	if (whichBold=="bs") {
		bs.className = 'font_weight_bold';
		as.className = 'font_weight_normal';
	} else {
		as.className = 'font_weight_bold';
		bs.className = 'font_weight_normal';		
	}
}
//clear button for library search
function clearLibrarySearchValues() {
	document.librarysearch.librarysearchfield.value = "";
	document.librarysearch.releasedate.value = "";
	document.librarysearch.genre.value = "";
	document.librarysearch.distribution.value = "";
	for(i=0;i<3;i++) { document.librarysearch.color[i].checked=false; }
	document.librarysearch.color[2].checked=true; //check the last one
	for(i=0;i<5;i++) { document.librarysearch.within[i].checked=false; }
	document.librarysearch.within[4].checked=true; //check the last one
}

function showBasicSearch() {
	hideLink(getLinkObject('search_right_advanced'));
	hideLink(getLinkObject('search_right_searchbutton_long'));
	showLink(getLinkObject('search_right_searchbutton_short'));
	changeSearchBoldness('bs');
}
function showAdvancedSearch() {
	showLink(getLinkObject('search_right_advanced'));
	showLink(getLinkObject('search_right_searchbutton_long'));
	hideLink(getLinkObject('search_right_searchbutton_short'));
	changeSearchBoldness('as');
}

//called by clicking on the search button, and also the loadLibrarySearch function
function loadLibrarySearchClick(searchTerm, within, releasedate, genre, color, distribution) {
	if (searchTerm == "") searchTerm = document.librarysearch.librarysearchfield.value;

	if (within == "") {
		for(i=0;i<5;i++) { 
			if (document.librarysearch.within[i].checked==true) {
				within=document.librarysearch.within[i].value;
			}
		}
	}
	if (releasedate == "") releasedate=document.librarysearch.releasedate.value;
	if (genre == "") genre=document.librarysearch.genre.value;
	if (color == "") {
		for(i=0;i<3;i++) {
			if (document.librarysearch.color[i].checked==true) {
				color=document.librarysearch.color[i].value;
			}
		}
	}
	if (distribution == "") distribution=document.librarysearch.distribution.value;
	
	var op2 = within + ":::" + releasedate + ":::" + genre + ":::" + color + ":::" + distribution;
	loadPage("librarysearch", true, searchTerm, op2);
}
//called by enter key in search field
function loadLibrarySearch(e) {
	if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13)) {
		if (document.librarysearch.librarysearchfield.value != "") loadLibrarySearchClick("", "", "", "", "", "");
	}
	return false;
}


/********************
INTERNATIONAL EVENTS HOVER FUNCTIONS
********************/
function internationalEventsHoverOver(eventsCount, eventsCurrent) {
	for (var i=0;i<eventsCount;i++) {
		var obj=getLinkObject("internationalEvents"+i);
		var obja=getLinkObject("internationalEventsA"+i);
		if (i==eventsCurrent) {
			obj.className = "ltgray_bg"
			obja.className = "text_color_white"
		} else {
			obj.className = "white_bg";
			obja.className = "text_color_black"
		}
	}			
}
function internationalEventsHoverOut(eventsCount) {
	for (var i=0;i<eventsCount;i++) {
		var obj=getLinkObject("internationalEvents"+i);
		var obja=getLinkObject("internationalEventsA"+i);
		if (i==currentInternationalEvent) {
			obj.className = "ltgray_bg" 
			obja.className = "text_color_white"
		} else {
			obj.className = "white_bg";
			obja.className = "text_color_black"
		}
	}			
}
function internationalEventsLoad(eventsCount, eventsCurrent) {
	currentInternationalEvent=eventsCurrent;
	for (var i=0;i<eventsCount;i++) {
		var objdate=getLinkObject("internationalEventsDate"+i);
		var objbody=getLinkObject("internationalEventsBody"+i);
		if (i==eventsCurrent) { //show
			showLink(objdate);
			showLink(objbody);
		} else { //hide
			hideLink(objdate);
			hideLink(objbody);
		}
	}			
}

/********************************************
GENERAL FUNCTIONS
********************************************/
function openPopup(url) {
	tempImg = newImage(url); //uses new image function from preloader.js
	lwidth=tempImg.width;
	lheight=tempImg.height;
	var lscreenX = ( screen.width - lwidth ) / 2;
	var lscreenY = ( screen.height - lheight ) / 2;
	if(( lscreenX % 1 ) > 0 ) lscreenX = lscreenX + .5;
	if(( lscreenY % 1 ) > 0 ) lscreenY = lscreenY + .5;
	var strOptions = "width=" + lwidth + ",height=" + lheight + ",toolbar=no,top=" + lscreenY + ",left=" + lscreenX;
	newWin = window.open(url, "_blank", strOptions);
	if (!newWin.closed) newWin.focus();
}

/*****************************************
REGISTER FORM VALIDATORS 
*****************************************/
function validateMessage(theemail, thephone) {
	msg = "";
	k=0;
	numblanks=0;
	if (theemail.length != 0) { 
		if (theemail.length < 5) { 
			msg += (++k) + ": Oops, check your email address again.\n";
		} else if (theemail.length > 64) {
			msg += (++k) + ": Email address must be 64 characters or less.\n";
		} else if (theemail.indexOf('@') == -1) {
			msg += (++k) + ": Oops, check your email address again.\n";
		} else if (theemail.indexOf('.') == -1) {
			msg += (++k) + ": Oops, check your email address again.\n";
		}
	} else {
		numblanks++;
	}
	
	if (thephone.length != 0) {
		if (thephone.length < 6) { 
			msg += (++k) + ": Oops, check your phone number again.\n";
		}
	} else {
		numblanks++;
	}
	
	if (msg!="" || numblanks==2) {
		if (msg!="") alert(msg);
		return false;
	} else {
		return true;
	}
}