function objInitAsVisible (el, visible) {
	if ( !$(el) ) return false;
	if (visible) {
		$(el).setStyle('display', 'block');
		$(el).setStyle('opacity', 1);
	}
	else {
		$(el).setStyle('display', 'none');
		$(el).setStyle('opacity', 0);
	}
}

function objFadeIn (el) {
	var fade = new Fx.Style(el, 'opacity', {duration:600});
	$(el).setStyle('display', 'block');
	fade.start(1);
}

function objFadeOut (el) {
	var fade = new Fx.Style(el, 'opacity', {duration:600});
	fade.start(0);
	setTimeout('$(\''+el+'\').setStyle(\'display\', \'block\')', 600);
}

// scrollObj must be object
// left/rightArrow must be a name, i.e. string, not object
function setupScrollArrows( scrollObj, leftArrow, rightArrow, scrollAreaWidth, scrollLimit, fadeDelay ) {
	var scrollcounter = 0;
	$(rightArrow).addEvent('click', function(event) {
		event = new Event(event).stop();
		if (scrollcounter == 0) objFadeIn(leftArrow);
		if (scrollcounter < scrollLimit) {
			scrollcounter = scrollcounter + 1;
			scrollObj.scrollTo(scrollAreaWidth*scrollcounter,0);
			if (scrollcounter == scrollLimit ) setTimeout('objFadeOut(\'' + rightArrow + '\')', fadeDelay);
		}
	});
	
	$(leftArrow).addEvent('click', function(event) {
		event = new Event(event).stop();
		if (scrollcounter == scrollLimit) objFadeIn(rightArrow);
		if (scrollcounter > 0 ) {
			scrollcounter = scrollcounter - 1;
			scrollObj.scrollTo(scrollAreaWidth*scrollcounter,0);
			if (scrollcounter == 0 ) setTimeout('objFadeOut(\'' + leftArrow + '\')', fadeDelay);
		}
	});
}

// setup arrows for models scrolling
function setupModelArrows( scrollObj, leftArrow, rightArrow, scrollAreaWidth, scrollLimit ) {
	var scrollcounter = 0;
	$(rightArrow).addEvent('click', function(event) {
		event = new Event(event).stop();
		if (scrollcounter == 0) objFadeIn(leftArrow);
		if (scrollcounter < scrollLimit) {
			scrollcounter = scrollcounter + 1;
			scrollObj.scrollTo(scrollAreaWidth*scrollcounter,0);
		}
	});
	
	$(leftArrow).addEvent('click', function(event) {
		event = new Event(event).stop();
		if (scrollcounter == scrollLimit) objFadeIn(rightArrow);
		if (scrollcounter > 0 ) {
			scrollcounter = scrollcounter - 1;
			scrollObj.scrollTo(scrollAreaWidth*scrollcounter,0);
		}
	});
}

var SCROLL_SPEED = 1400;

window.addEvent('domready', function() {
	var scrollcounter1 = 0;
	var scrollcounter2 = 0;
	var scrollcounter3 = 0;
	var scrollstep = 620;
	
	objInitAsVisible('scrollleft1', false);
	objInitAsVisible('scrollright1', true);
	objInitAsVisible('scrollleft2', false);
	objInitAsVisible('scrollright2', true);
	objInitAsVisible('scrollleft3', false);
	objInitAsVisible('scrollright3', true);
	
	// variables for scrollobject
	var scroll1, scroll2, scroll3, scroll4;
	var SCROLL_LIMIT1, SCROLL_LIMIT2, SCROLL_LIMIT3;
	
	if ($('scrollobject1')) {
		scroll1 = new Fx.Scroll('scrollobject1', {
			wait: false,
			duration: SCROLL_SPEED,
			transition: Fx.Transitions.Quad.easeInOut,
			wheelStops: false
		});
		// reset the scrolled object - toLeft() is needed for scrolling to work properly
		scroll1.set(0); scroll1.toLeft();
		// set scroller limit based on number of images in the box, minus 1
		SCROLL_LIMIT1 = $('scrollobject1').getElements('img').length - 1;
	}
	
	if ($('scrollobject2')) {
		scroll2 = new Fx.Scroll('scrollobject2', {
			wait: false,
			duration: SCROLL_SPEED,
			transition: Fx.Transitions.Quad.easeInOut,
			wheelStops: false
		});
		// reset the scrolled object - toLeft() is needed for scrolling to work properly
		scroll2.set(0); scroll2.toLeft();
		// set scroller limit based on number of images in the box, minus 1
		SCROLL_LIMIT2 = $('scrollobject2').getElements('img').length - 1;
	}
	
	if ($('scrollobject3')) {
		scroll3 = new Fx.Scroll('scrollobject3', {
			wait: false,
			duration: SCROLL_SPEED,
			transition: Fx.Transitions.Quad.easeInOut,
			wheelStops: false
		});
		// reset the scrolled object - toLeft() is needed for scrolling to work properly
		scroll3.set(0); scroll3.toLeft();
		// set scroller limit based on number of images in the box, minus 1
		SCROLL_LIMIT3 = $('scrollobject3').getElements('img').length - 1;
	}
	
	if ($('scrollleft1')) setupScrollArrows( scroll1, 'scrollleft1', 'scrollright1', scrollstep, SCROLL_LIMIT1, SCROLL_SPEED/2 );
	if ($('scrollleft2')) setupScrollArrows( scroll2, 'scrollleft2', 'scrollright2', scrollstep, SCROLL_LIMIT2, SCROLL_SPEED/2 );
	if ($('scrollleft3')) setupScrollArrows( scroll3, 'scrollleft3', 'scrollright3', scrollstep, SCROLL_LIMIT3, SCROLL_SPEED/2 );
	
	// cookies for ratings
	var ratings = Cookie.get('btiratings')?Cookie.get('btiratings'):Cookie.set('btiratings', '000000000', {path: "/", duration:365});
	
	/* setting up the models scrollbox */
	if ($('scroll-models')) {
		scroll4 = new Fx.Scroll('scroll-models', {
			wait: false,
			duration: SCROLL_SPEED,
			transition: Fx.Transitions.Quad.easeInOut,
			wheelStops: false
		});
		// reset the scrolled object - toLeft() is needed for scrolling to work properly
		scroll4.set(0); scroll4.toLeft();
		// set scroller limit based on number of images in the box, minus 1
		//SCROLL_LIMIT3 = $('scroll-models-left').getElements('img').length - 1;
	}
	if ($('scroll-models-left')) setupModelArrows( scroll4, 'scroll-models-left', 'scroll-models-right', 800, 4 );
});

//*** Ratings functions ***//

function getRatedState(rating_el, cookiename) {
	// rating_el[6].toInt() takes the last piece of 'ratingX' string (i.e. X) converts to integer
	// then subtract one to match the index which starts at 0
	//return Cookie.get(cookiename)[rating_el[6].toInt()-1] == 1;
	switch (rating_el) {
		case 'rating1':
			return Cookie.get(cookiename).charAt(0) == 1;
		case 'rating2':
			return Cookie.get(cookiename).charAt(1) == 1;
		case 'rating3':
			return Cookie.get(cookiename).charAt(2) == 1;
		case 'rating4':
			return Cookie.get(cookiename).charAt(3) == 1;
		case 'rating5':
			return Cookie.get(cookiename).charAt(4) == 1;
		case 'rating6':
			return Cookie.get(cookiename).charAt(5) == 1;
		case 'rating7':
			return Cookie.get(cookiename).charAt(6) == 1;
		case 'rating8':
			return Cookie.get(cookiename).charAt(7) == 1;
		case 'rating9':
			return Cookie.get(cookiename).charAt(8) == 1;
	}
}

// helper function
function setCharAt(string, index, character) {
	if (index > string.length-1) return string;
	return string.substr(0,index) + character + string.substr(index+1);
}

function setRatedState(rating_el, cookiename) {
	var ratings = Cookie.get(cookiename);
	if( !ratings ) return false;
	
	// clear cookies
	Cookie.remove(cookiename);
	
	// change character to indicate set was rated
	//ratings = setCharAt( ratings, rating_el[6].toInt()-1, '1' );
	switch (rating_el) {
		case 'rating1':
			ratings =  1 + ratings.substr(1);
			break;
		case 'rating2':
			ratings =  ratings.substr(0,1) + 1 + ratings.substr(2);
			break;
		case 'rating3':
			ratings =  ratings.substr(0,2) + 1 + ratings.substr(3);
			break;
		case 'rating4':
			ratings =  ratings.substr(0,3) + 1 + ratings.substr(4);
			break;
		case 'rating5':
			ratings =  ratings.substr(0,4) + 1 + ratings.substr(5);
			break;
		case 'rating6':
			ratings =  ratings.substr(0,5) + 1 + ratings.substr(6);
			break;
		case 'rating7':
			ratings =  ratings.substr(0,6) + 1 + ratings.substr(7);
			break;
		case 'rating8':
			ratings =  ratings.substr(0,7) + 1 + ratings.substr(8);
			break;
		case 'rating9':
			ratings =  ratings.substr(0,8) + 1;
			break;
	}
	
	// put the updated value into cookie
	Cookie.set(cookiename, ratings, {path: "/", duration:365});
}

function highlightStar(rating_el, starnum) {
	var starList = $ES('img',rating_el);
	// for number of stars go through each and highlight
	for ( i=0; i < starList.length; i++ ) {
		if( i < starnum ) 	starList[i].src='images/star1.gif';
		else 				starList[i].src='images/star2.gif';
	}
}

function resetStars(rating_el) {
	var rating;
	switch (rating_el) {
		case 'rating1':
			rating = 10; break;
		case 'rating2':
			rating = 8; break;
		case 'rating3':
			rating = 9; break;
		case 'rating4':
			rating = 8; break;
		case 'rating5':
			rating = 9; break;
		case 'rating6':
			rating = 9; break;
		case 'rating7':
			rating = 9; break;
		case 'rating8':
			rating = 10; break;
		case 'rating9':
			rating = 8; break;
	}
	
	var starList = $ES('img',rating_el);
	// for number of stars go through each and highlight
	for ( i=0; i < starList.length; i++ ) {
		if( i < rating )	starList[i].src='images/star1.gif';
		else 				starList[i].src='images/star2.gif';
	}
}

function incrementCounter(rating_el) {
	var spanCounter = $(rating_el).getElement('span').innerHTML;
	var newNumber = spanCounter.toInt()+1;
	$(rating_el).getElement('span').setHTML( newNumber );
}

function initEvents(rating_el) {
	$ES('img',rating_el).each( function(el,i) {
		el.addEvent('click', function(e) {
			e = new Event(e);
			if( !getRatedState(rating_el, 'btiratings') ) {
				incrementCounter(rating_el);
				setRatedState(rating_el,'btiratings');
				resetStars(rating_el);
			}
			e.stop();
		});
		el.addEvent('mouseover', function(e) {
			e = new Event(e);
			if( !getRatedState(rating_el, 'btiratings') ) highlightStar(rating_el,i+1);
			e.stop();
		});
		el.addEvent('mouseout', function(e) {
			e = new Event(e);
			if( !getRatedState(rating_el, 'btiratings') ) resetStars(rating_el);
			e.stop();
		});
	});
}

function loadClip(id, fileName, firstFrameName) {
	var str = '';
		str += '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553544400" width="512" height="384" id="fplayer" ';
		str += 'codebase="http://download.macromedia.com/pub/shockwave/cabs/content/swflash.cab#version=8,0,0,0">';
		str += '<param name="allowFullScreen" value="false" />';
		str += '<param name="movie" value="content/fplayer.swf" />';
		str += '<param name="FlashVars" value="moviefile=clips/' + fileName + '&clipframe=content/clips/' + firstFrameName + '" />';
		str += '<param name="quality" value="high" />';
		str += '<param name="wmode" value="transparent" />';
		str += '<param name="bgcolor" value="#ffffff" />';
		str += '<param name="scale" value="exactFit" />';
		str += '<embed src="content/fplayer.swf" ';
		str += 'FlashVars="moviefile=clips/' + fileName + '&clipframe=content/clips/' + firstFrameName + '" ';
		str += 'quality="high" scale="exactFit" wmode="transparent" ';
		str += 'bgcolor="#ffffff" width="512" height="384" name="fplayer" ';
		str += 'allowFullScreen="false" type="application/x-shockwave-flash" ';
		str += 'pluginspage="http://www.macromedia.com/go/getflashplayer" /></object>';
	document.getElementById(id).innerHTML = str;
}