LANG = new Object();
LANG.LANG = 'DE';

/* A workaround for IE issues in mootools 1.2.1
 * - Recreates FX.Scroll() but utilises 1.2.0's getPosition/getOffset routines.
 */
Fx.Scroll2 = new Class({
 
    'Extends': Fx.Scroll,
    'styleString': Element.getComputedStyle,
    'styleNumber': function(element, style) {
        return this.styleString(element, style).toInt() || 0;
    },
    'borderBox': function(element) {
        return this.styleString(element, '-moz-box-sizing') == 'border-box';
    },
    'topBorder': function(element) {
        return this.styleNumber(element, 'border-top-width');
    },
    'leftBorder': function(element) {
        return this.styleNumber(element, 'border-left-width');
    },
    'isBody': function(element) {
        return (/^(?:body|html)$/i).test(element.tagName);
    }, 
    'toElement': function(el) {
        var offset   = {x: 0, y: 0};
        var element  = $(el);
       
        if (this.isBody(element)) {
            return offset;
        }
        var scroll = element.getScrolls();
               
        while (element && !this.isBody(element)){
            offset.x += element.offsetLeft;
            offset.y += element.offsetTop;
           
            if (Browser.Engine.gecko){
                if (!this.borderBox(element)){
                    offset.x += this.leftBorder(element);
                    offset.y += this.topBorder(element);
                }
                var parent = element.parentNode;
                if (parent && this.styleString(parent, 'overflow') != 'visible'){
                    offset.x += this.leftBorder(parent);
                    offset.y += this.topBorder(parent);
                }
            } else if (Browser.Engine.trident || Browser.Engine.webkit){
                offset.x += this.leftBorder(element);
                offset.y += this.topBorder(element);
            }
 
            element = element.offsetParent;
            if (Browser.Engine.trident) {
                while (element && !element.currentStyle.hasLayout) {
                    element = element.offsetParent;
                }
            }
        }
        if (Browser.Engine.gecko && !this.borderBox(element)){
            offset.x -= this.leftBorder(element);
            offset.y -= this.topBorder(element);
        }
       
        var relative = this.element;
        var relativePosition = (relative && (relative = $(relative))) ? relative.getPosition() : {x: 0, y: 0};
        var position = {x: offset.x - scroll.x, y: offset.y - scroll.y};
       
        return this.start(position.x - relativePosition.x, position.y - relativePosition.y);
    }
});

var act_page = 0;
var act_type = 'gallery';
var last_page = 2;
var scroll ;
window.addEvent('domready', function()
{
	// define scrollable preview area
	if($('pics2')) scroll = new Fx.Scroll2('pics2',
	{
		wait: false,
		duration: 500,
		offset: {'x': 0, 'y': -20},
		transition: Fx.Transitions.Quad.easeInOut
	});
	// set pictures get from ajax request
	showPics = function(r)
	{
		var clips = JSON.decode(r);
		var page = 0;
		var div = new Element('div', { 'id': ('picpage' + page), 'class': 'picpage' }).inject($('pics-inner'));
		var i = 0;
		$('pics-inner').setStyle('background', 'none');
		clips.each(function(el)
		{
			if (i%15==0 && i > 0) {
				page++;
				div = new Element('div', {'id': ('picpage' + page), 'class': 'picpage' }).inject($('pics-inner'));
			}
			var a = new Element('a', { href: '/' + LANG.LANG + '/' + act_type + '/view/' + el.id + '/' + escape(el.title) + '.html' }).inject(div);
			new Element('img', { src: el.image['128x96'], width: 128, height: 96, border: 0 }).inject(a);
			i++;
		});
		// set pagination
		var pages = (clips.length/15).ceil();
		last_page = pages-1;
		for (var c = 0; c < pages; c++)
		{
			var li = new Element('li', {'class': 'paginate_middle'});
			var span = new Element('span', {'class': 'page', 'html': c+1 });
			
			span.inject(li);
			li.inject($('pages'));
		}
		
		var li_prev = new Element('li', {'class': 'page_prev'});
		var li_next = new Element('li', {'class': 'page_next'});
		
		li_prev.inject($('pages'));
		li_next.inject($('pages'));
		
		addPagingEvents();
	}
	// set tags pulldown
	setTags = function(r)
	{
		if($('tags')) {
			var tags = JSON.decode(r);
			new Element('option', { value: '', html: 'Alle Tags' }).inject($('tags'));
			tags.each(function(tag)
			{
				new Element('option', { value: tag['tag'], html: tag['tag'] }).inject($('tags'));
			});
		}
	}
	// Button: Pics
	$('but_pics').addEvent('click', function(event)
		{
			act_type = 'gallery';
			// de/activate buttons
			event = new Event(event).stop();
			$('but_pics').addClass('active');
			$('but_clips').removeClass('active');
			$('more_label').innerHTML = 'Mehr Bilder';
			$('more_label').href = '/' + LANG.LANG + '/gallery';

			// show loading gif
			$('pics-inner').empty();
			if($('pages')) $('pages').empty();
			$('pics-inner').setStyle('background', 'transparent url(\'/images/common/loading.gif\') scroll no-repeat 340px 150px');
			scroll.set(0, 0);
			act_page = 0;

			// request content
			var req = new Request({
				'method': 'post',
				'url': '/' + LANG.LANG + '/start',
				'onComplete': function(ret) { showPics.attempt(ret); }
			}).send('type=gallery&jscall=Content::getContents');
			
			// request tags
			if($('tags')) $('tags').empty();
			var req = new Request({
				'method': 'post',
				'url': '/' + LANG.LANG + '/start',
				'onComplete': function(ret) { setTags.attempt(ret); }
			}).send('type=gallery&jscall=getTags'); 

		});
	// Button: Clips
	$('but_clips').addEvent('click', function(event)
		{
			act_type = 'clips';
			// de/activate buttons
			event = new Event(event).stop();
			$('but_pics').removeClass('active');
			$('but_clips').addClass('active');
			$('more_label').innerHTML = 'Mehr Videos';
			$('more_label').href = '/' + LANG.LANG + '/clips';
			
			// show loading gif
			$('pics-inner').empty();
			if($('pages')) $('pages').empty();
			$('pics-inner').setStyle('background', 'transparent url(\'/images/common/loading.gif\') scroll no-repeat 340px 150px');
			scroll.set(0, 0);
			act_page = 0;

			// request content
			var req = new Request({
				'method': 'post',
				'url': '/' + LANG.LANG + '/start',
				'onComplete': function(ret) { showPics.attempt(ret); }
			}).send('type=clip&jscall=Content::getContents');

			// request tags
			if($('tags')) $('tags').empty();
			var req = new Request({
				'method': 'post',
				'url': '/' + LANG.LANG + '/start',
				'onComplete': function(ret) { setTags.attempt(ret); }
			}).send('type=clip&jscall=getTags'); 
			
		});
	
	// tags
	if($('tags')) $('tags').addEvent('change', function (el)
	{
		$('pics-inner').empty();
		$('pics-inner').setStyle('background', 'transparent url(\'/images/common/loading.gif\') scroll no-repeat 340px 150px');
		scroll.set(0, 0);
		act_page = 0;
		$('pages').empty();
		sendform(this.form.id, 'Content::getContents', showPics);
	});
	
	addPagingEvents();
});

function addPagingEvents()
{
	// go to next page
	$$('.page_next').addEvent('click', function(event)
		{
			event = new Event(event).stop();
			next_page = act_page+1;
			if (!$('picpage' + next_page))
				next_page = 0;
			scroll.toElement('picpage' + next_page);
			act_page = next_page;
		});
	// go to prev page
	$$('.page_prev').addEvent('click', function(event)
		{
			event = new Event(event).stop();
			prev_page = act_page-1;
			if (!$('picpage' + prev_page))
				prev_page = last_page;
			scroll.toElement('picpage' + prev_page);
			act_page = prev_page;
		});
	// pages
	$$('.page').each(function(el)
	{
		el.addEvent('click', function(event)
		{
			event = new Event(event).stop();
			act_page = el.innerHTML-1;
			scroll.toElement('picpage' + act_page);
		});
	});
}

var myPlayer, play=false, mute=false;

function playerReady(obj) {
	myPlayer = document.getElementById(obj['id']);
	addListeners();
}

function stateMonitor(obj) {
	if(obj.newstate=='PLAYING') $('videoOverLink').removeClass('hidden');
	if(obj.newstate=='COMPLETED') {
		$('videoOverEnd').removeClass('hidden');
		$('videoMute').addClass('hidden');
		$('videoPlay').addClass('hidden');
	}
}

//...loop until we get a valid playlist so we know that the player is really ready, then add the TIME Listener
function addListeners() {
	try {
	  playlist = myPlayer.getPlaylist();
	}catch(e){
	  setTimeout("addListeners();", 100);
	}

	myPlayer.addModelListener('STATE', 'stateMonitor');
};


window.addEvent('domready', function() {

	var so = new SWFObject('/js/player/' + ((Browser.Plugins.Flash.version >= 9) ? 'mediaplayer.swf' : 'expressInstall.swf'),'player','462','280','7');
	so.addParam("allowfullscreen", "true");
	so.addParam("wmode", "opaque");

	so.addParam('allowscriptaccess','always');
	if(LANG.app.sitename == 'Youpornflat') {
		so.addVariable("file","http://hn.inethoster.org/Youpornflat_Trailer_02.flv");
		so.addVariable("image","/images/subprojects/youporn/startseite/posterframe.jpg");
	} else {
		so.addVariable("file","http://hn.inethoster.org/hn_trailer_462x280.f4v");
		so.addVariable("image","/images/startseite/posterframe.jpg");
	}
	so.addVariable("autostart","false");
	so.addVariable("bufferlength","3");
	so.addVariable("width","462");
	so.addVariable("height","280");
	so.addVariable("javascriptid","player");
	so.addVariable("enablejs","true");
	so.addVariable('plugins', 'googlytics-1');

	so.addVariable("backcolor","232323");
	so.addVariable("frontcolor","FF8214");
	so.addVariable("lightcolor","FF8F32");
	so.addVariable("screencolor","000000");
	so.addVariable("icons","false");
	so.addVariable("controlbar","none");
	so.addVariable("mute",mute);

	//so.addVariable("stretching","fill");
	so.addVariable("streamer", "lighttpd");
	so.write('playerContainer');


	if( $('videoMute') ) {
		$('videoMute').addEvent('click', function(e) {

			if(mute) {
				myPlayer.sendEvent('MUTE', false);
				$('videoMute').addClass('active');
				mute=false;
			}
			else {
				myPlayer.sendEvent('MUTE', true);
				$('videoMute').removeClass('active');
				mute=true;
			}
		});
	}

	if( $('videoPlay') ) {
		$('videoPlay').addEvent('click', function(e) {

			if(play) {
				myPlayer.sendEvent('PLAY');
				$('videoPlay').addClass('active');
				play=false;
			}
			else {
				myPlayer.sendEvent('PLAY');
				$('videoPlay').removeClass('active');
				play=true;
			}
		});
	}
});

