/* ---------------------------------------------------------------------------------------------------- */
/* =outbox.js */
/* ---------------------------------------------------------------------------------------------------- */

/* constructor */
function outboxframework () {};
var outbox = new outboxframework();

/* init */
outboxframework.prototype.init = function () {
	this.navigation.init();
}


/* -------------------------------------------------- */
/* =navigation */

/* constructor */
function navigation () {};
outboxframework.prototype.navigation = new navigation();

/* init */
navigation.prototype.init = function () {
	this.container = mxm.dom.getElement("main-navigation");
	this.mainnav_items = mxm.dom.getElementsByTagAndClassName("li","main",this.container);
	this.attach();
}

/* attach */
navigation.prototype.attach = function () {
	for (var i=0; i < this.mainnav_items.length; i++) {
		this.mainnav_items[i].onmouseover = this.subnav_show.bind(this, this.mainnav_items[i]);
		this.mainnav_items[i].onmouseout = this.subnav_hide.bind(this, this.mainnav_items[i]);
	}
}

/* subnav_show */
navigation.prototype.subnav_show = function (mainnav_item) {
	mxm.dom.addElementClass(mainnav_item,"over");
}

/* subnav_hide */
navigation.prototype.subnav_hide = function (mainnav_item) {
	mxm.dom.removeElementClass(mainnav_item,"over");
}

window.addEvent('domready', function() {
	/* -------------------------------------------------- */
	/* =team */
	// Videos ---------------------------------------
	if($('video-container') != null) {
		var videoPath;
		var videoPerson = 'michael';
		var videoNumber = 1;
		var maxVideos = 3;
		var isPlaying = 0;
		
		$('video-overlay').setStyle('background', 'url(/_gfx/michael.jpg) no-repeat left top');
		$(videoPerson).setStyle('display', 'block');
		
		jwplayer().onIdle(function() {
			isPlaying = 0;
			$('video-overlay').setStyle('background', 'url(/_gfx/' + videoPerson + '.jpg) no-repeat left top');
		});
		
		jwplayer().onPlay(function() {
			isPlaying = 1;
			$('video-overlay').setStyle('background', 'none');
		});
		
		jwplayer().onBuffer(function() {
			isPlaying = 1;
		});
		
		jwplayer().onPause(function() {
			isPlaying = 1;
		});
		
		$('video-overlay').addEvents({
			mouseenter: function() {
				if(isPlaying == 0) {
					videoPath = '/_mov/' + videoPerson + '_' + videoNumber + '.mp4';
					
					jwplayer().load(videoPath);
					jwplayer().play(true);
					
					videoNumber < maxVideos ? videoNumber++ : videoNumber = 1;
				}
			}
		});
		
		$('team-thumbs-container').getElements('a').addEvents({
			mousedown: function() {
				videoNumber = 1;
				videoPerson = this.getProperty('name');
				maxVideos = this.getProperty('rel');
				
				videoPath = '/_mov/' + videoPerson + '_' + videoNumber + '.mp4';
				imgPath = '/_gfx/' + videoPerson + '.jpg';
				
				jwplayer().stop();
				$('video-overlay').setStyle('background', 'url(/_gfx/' + videoPerson + '.jpg) no-repeat left top');
				$('team-detail-container').getElements('div.member-detail').setStyle('display', 'none');
				$(videoPerson).setStyle('display', 'block');
				
				jwplayer().load(videoPath);
			}
		});
	}
	
	/* -------------------------------------------------- */
	/* =gallery */
	// Design Buttons -------------------------------
	
	if($('galBoxDesign')) {
		changeGalDesign();
		
		$('galBoxDesign').addEvents({
			mousedown: function() {
				if(!this.hasClass('active')) {
					$$('.galDesign a').toggleClass('active');
					changeGalDesign();
				}
			}
		});
		
		$('galListDesign').addEvents({
			mousedown: function() {
				if(!this.hasClass('active')) {
					$$('.galDesign a').toggleClass('active');
					changeGalDesign();
				}
			}
		});
	}
	
	function changeGalDesign() {
		if($('galBoxDesign').hasClass('active')) {
			$$('.galList').setProperty('class', 'galBox');
			galBox();
			
			addDesignToLink($$('.galNavi a'), "1");
			addDesignToLink($$('.galBox'), "1");
			if($('display') != null) {
				addDesignToInputHidden($('display'), "1");
			}
		} else if($('galListDesign').hasClass('active')) {
			$$('.galBox').setProperty('class', 'galList');
			galList();
			
			addDesignToLink($$('.galNavi a'), "2");
			addDesignToLink($$('.galList'), "2");
			if($('display') != null) {
				addDesignToInputHidden($('display'), "2");
			}
		}
	}
	
	function addDesignToLink(container, value) {
		container.each(function(item,index){
			if(item.getProperty('href').indexOf('display')!=-1) {
				var $href = item.getProperty('href').substring(0,item.getProperty('href').length-1);
				$href += value;
				item.setProperty('href',$href);
			} else {
				item.setProperty('href',item.getProperty('href')+'&display='+value);
			}
		});
	}

    function addDesignToInputHidden(container, value) {
        container.setProperty('value', value);
    }

	// RollOver Effect ------------------------------
	var imgOpacity = 0.6;
	var standardBGColor = '#f1f0f0';
	var overBGColor = '#e5e5e5';
	
	// galImg
	$$('.galImg').set('opacity', imgOpacity).set('morph', { duration: 250 });
	
	// galLink
	function galBox() {
		$$('.galBox .galImg').addEvents({
			mouseenter: function() {
				this.morph({ 'opacity': 1 });
			},
			mouseleave: function() {
				this.morph({ 'opacity': imgOpacity });
			}
		});
	}
	
	// galLinkList
	function galList() {
		$$('.galList').set('background-color', standardBGColor).set('morph', { duration: 250 }).addEvents({
			mouseenter: function() {
				this.morph({ 'background-color': overBGColor });
				this.getElement('img.galImg').morph({ 'opacity': 1 });
			},
			mouseleave: function() {
				this.morph({ 'background-color': standardBGColor });
				this.getElement('img.galImg').morph({ 'opacity': imgOpacity });
			}
		});
	}
	
	if($('filter')) {
		// Filter before
		$('filter').setStyles({
			position: 'absolute',
			cursor: 'pointer'
		});
		$('hider').setStyle('cursor', 'default').addClass('hide');
		
		var openFilters = new Fx.Morph('hider', {
			onComplete: function()  {
				$('filter-container').removeClass('hide');
				filterClosed = false;
			}
		});
		
		// Filter Area
		//var filterOpenTimeout;
		var filterClosed = true;
		
		$('filter').addEvents({
			mousedown: function() {
				if(filterClosed) {
					$('filter').setStyle('background-color', '#fff');
					$('filter-text').setStyle('color', '#000');
					$('hider').removeClass('hide');
					var originalHeight = $('filter-container').getSize().y + 'px';
					
					$('closeFilter').setStyle('display', 'block');
					$('filter-container').addClass('hide');
					
					openFilters.start({ 'height': originalHeight });
				}
			},
			/*mouseenter: function() {
				$('filter').setStyle('border', '1px solid #000');
				$('filter-text').setStyle('color', '#000');
				
				filterOpenTimeout = setTimeout('openFilterArea()', 400);
				
				openFilterArea = function() {
					if(filterClosed) {						
						$('filter').setStyle('background-color', '#fff');
						$('hider').removeClass('hide');
						var originalHeight = $('filter-container').getSize().y + 'px';
						
						$('closeFilter').setStyle('display', 'block');
						$('filter-container').addClass('hide');
						
						openFilters.start({ 'height': originalHeight });
					}
				}
			},*/
			mouseleave: function() {
				$('filter').setStyle('border', '');
				if(filterClosed) $('filter-text').setStyle('color', '#fff');
				
				//clearTimeout(filterOpenTimeout);
			}
		});
		
		$('closeFilter').addEvents({
			mouseup: function() {	
				if(filterClosed == false) {
					filterClosed = true;
					$('filter').setStyle('background-color', '#cc3337');
					$('filter-text').setStyle('color', '');
					$('closeFilter').setStyle('display', 'none');
					$('hider').setStyle('height', '0').addClass('hide');
				}
			},
			mouseenter: function() {
				$('closeFilter').setStyle('color', '#cc3337');
			},
			mouseleave: function() {
				$('closeFilter').setStyle('color', '');
			}
		});
		
		var mouseX;
		var mouseY;
		
		$$('.singleSlider').addEvents({
			mouseover: function() {
				$('altText').setStyle('display', 'block');
			},
			mouseleave: function() {
				$('altText').setStyle('display', '');
			}
		});
		
		// Filter Range
		prodTimeRange = function(sliderValue) {
			if(sliderValue <= 10) {
				return sliderValue;
			} else {
				switch (sliderValue) {
					case 20: return 11; break;
					case 30: return 12; break;
					case 40: return 13; break;
					case 50: return 14; break;
					case 60: return 15; break;
					case 70: return 16; break;
					case 80: return 17; break;
					case 90: return 18; break;
					case 100: return 19; break;
					case 110: return 20; break;
					case 120: return 21; break;
					case 130: return 22; break;
					case 140: return 23; break;
					case 150: return 24; break;
					case 160: return 25; break;
					case 170: return 26; break;
					case 180: return 27; break;
				}
			}
		}
		
		// Filter Slider
		var pTNewValue;
		var pTLastValue = prodTimeRange(parseInt($('pTime').get('value')));
		var prodTime = $('prodTime');
		
		var prodTimeSlider = new Slider(prodTime, prodTime.getElement('.knob'), {
			range: [1, 28],
			initialStep: pTLastValue,
			steps: 27,
			snap: 1,
			onChange: function(value) {
				if(value <= 10) {
					pTNewValue = value;
				} else {
					pTNewValue = (value-10+1)*10;
				}
				$('pTValue').set('text', 'bis ' + pTNewValue + ' Arbeitstage');
			},
			onComplete: function(value) {
				if(value <= 10) {
					pTNewValue = value;
				} else {
					pTNewValue = (value-10+1)*10;
				}
				$('pTime').set('value', pTNewValue);
			}
		});
		
		// Filter Range
		filterRange = function(sliderValue) {
			if(sliderValue <= 10) {
				return sliderValue;
			} else {
				switch (sliderValue) {
					case 11: return 50; break;
					case 12: return 100; break;
					case 13: return 500; break;
					case 14: return 1000; break;
					case 15: return 2500; break;
					case 16: return 5000; break;
					case 17: return 10000; break;
					case 18: return 50000; break;
					case 19: return 100000; break;
					case 20: return 50000000; break;
				}
			}
		}
		
		// Value Range
		valueRange = function(shownValue) {
			if(shownValue <= 10) {
				return shownValue;
			} else {
				switch (shownValue) {
					case 50: return 11; break;
					case 100: return 12; break;
					case 500: return 13; break;
					case 1000: return 14; break;
					case 2500: return 15; break;
					case 5000: return 16; break;
					case 10000: return 17; break;
					case 50000: return 18; break;
					case 100000: return 19; break;
					case 50000000: return 20; break;
				}
			}
		}
		
		thousandSeparator = function(value) {
			switch (value) {
				case 1000: return "1'000"; break;
				case 2500: return "2'500"; break;
				case 5000: return "5'000"; break;
				case 10000: return "10'000"; break;
				case 50000: return "50'000"; break;
				case 100000: return "100'000"; break;
				case 50000000: return "50'000'000"; break;
				default: return value;
			}
		}
		
		// Filter Doppelslider Min
		var firstLoad_min = 0; // Flag
		
		var hMNewValue_min;
		var hMLastValue_min = valueRange(parseInt($('hMany_min').get('value')));
		var lastPos_min;
		
		var howMany_min = $('howManyMin');
		var howManyMinSlider = new Slider(howMany_min, howMany_min.getElement('.knob'), {
			range: [0, 20],
			initialStep: hMLastValue_min,
			steps: 20,
			snap: 1,
			onChange: function(value) {
				if(firstLoad_min > 0) {
					if(value < valueRange(parseInt($('hMany_max').get('value')))) {
						hMNewValue_min = filterRange(value);	
						$('hMany_min').set('value', hMNewValue_min);
						var separatedValue_min = thousandSeparator(hMNewValue_min);
						$('hMValue_min').set('text', 'von ' + separatedValue_min + ' Exemplare');
						lastPos_min = value;
					} else {
						this.set(lastPos_min);
					}
				} else {
					firstLoad_min++;
				}
			}
		});
		
		// Filter Doppelslider Max
		var firstLoad_max = 0 // Flag
		
		var hMNewValue_max;
		var hMLastValue_max = valueRange(parseInt($('hMany_max').get('value')));
		var lastPos_max;
		
		var howMany_max = $('howManyMax');
		var howManyMaxSlider = new Slider(howMany_max, howMany_max.getElement('.knob'), {
			range: [0, 20],
			initialStep: hMLastValue_max,
			steps: 20,
			snap: 1,
			onChange: function(value) {
				if(firstLoad_max > 0) {
					if(value > valueRange(parseInt($('hMany_min').get('value')))) {
						hMNewValue_max = filterRange(value);
						$('hMany_max').set('value', hMNewValue_max);
						var separatedValue_max = thousandSeparator(hMNewValue_max);
						$('hMValue_max').set('text', 'bis ' + separatedValue_max + ' Exemplare');
						lastPos_max = value;
					} else {
						this.set(lastPos_max);
					}
				} else {
					firstLoad_max++;
				}
			}
		});
	}
});

/* -------------------------------------------------- */
/* =favourites */

function Favorites() {
    if ((navigator.appName == "Microsoft Internet Explorer") && (parseInt(navigator.appVersion) >= 4)) {
		var url="http://www.outbox.ch/"
        var title="Outbòx - Bringt Ideen zum Ausdruck."
        window.external.AddFavorite(url,title)
    } else {
        var FavText = "Outbòx.ch";
        if(navigator.appName == "Netscape") FavText += " mit den Tasten STRG+D.";
        FavText += " zu den Favoriten hinzufügen";
        alert(FavText);
    }
}


/* ---------------------------------------------------------------------------------------------------- */
/* =writeSWF */
/* ---------------------------------------------------------------------------------------------------- */

function writeSWF (obj, params, vars) {
	this.obj = obj;
	this.params = params;
	this.vars = vars;
	this.swf = new SWFObject(this.obj.url,this.obj.name,this.obj.width,this.obj.height,"8","#EDEDED");
	for (key in this.vars) this.swf.addParam(key, this.vars[key]);
	for (key in this.vars) this.swf.addVariable(key, this.vars[key]);
	this.swf.write(this.obj.container);
}

/* -------------------------------------------------- */
/* =news */
function news() {};
outboxframework.prototype.news = new news();

/* init */
news.prototype = {
	init: function () {
		this.container = $('sidebar-wrapper');
		this.containerHeight = 0;
		this.position = 0;
		
		//
		// sidebar
		//
		this.sidebar = $('sidebar');
		this.sidebar.setStyles({
			'width': 2000,
			'position': 'absolute',
			'left': '0',
			'top': '0'
		});
		
		// animation
		this.fx = new Fx.Tween(this.sidebar, {
			transition: 'sine:in:out',
			duration: 500,
			link: 'cancel'
		});
		this.fx.set('left', 0);
		
		//
		// news-item
		//
		this.elements = this.sidebar.getElements('.news-item');
		this.elements.each(function (item) {
			// calc max container height
			var height = item.getStyle('height').toInt();
			if(height > this.containerHeight) {
				this.containerHeight = height;
			}
			// styles
			item.setStyles({
				'width': 150,
				'float': 'left',
				'margin-right': 20
			});
		}, this);
		
		// container
		this.container.setStyles({
			'overflow': 'hidden',
			'height': this.containerHeigt,
			'width': '170px'
		});
		
		//
		// triggers
		//
		this.triggers = {
			next: $('news-triggers').getElement('a[href$=next]'),
			back: $('news-triggers').getElement('a[href$=back]')
		}
		this.triggers.next.getParent().setStyle('display', 'inline');
		this.triggers.next.addEvent('click', this.move.bindWithEvent(this, 'next'));

		this.triggers.back.getParent().setStyle('display', 'inline');
		this.triggers.back.addEvent('click', this.move.bindWithEvent(this, 'back'));
		
		// start timer
		this.timer = (function () { this.moveNext(); }).bind(this).periodical(5000);
	},
	move: function (event, dir) {
		event.stop();
		
		$clear(this.timer);
		
		if((this.position > ((this.elements.length-1) * -170)) && (dir == 'next')) {
			this.moveNext();
		} else if((this.position < 0) && (dir == 'back')) {
			this.moveBack();
		} else {
			this.fx.start('left', 0);
			this.position = 0;
		}
	},
	moveNext: function () {
		if(!(this.position > ((this.elements.length-1) * -170))) {
			this.fx.start('left', 0);
			this.position = 0;
		} else {
			this.position = this.position -170;
			this.fx.start('left', this.position);
		}
	},
	moveBack: function () {
		this.position = this.position +170;

		this.fx.start('left', this.position);
	}
}

window.addEvent('domready', function () {
	if($('sidebar-wrapper')) news.prototype.init();
});


function editMenge(fid, id, currentValue) {
	var e = document.getElementById('divMenge' + id);
	if (e != null)
		e.innerHTML = '<form action="?action=updateAvailable&fid=' + fid + '&aid=' + id + '" method="post"><input type="text" id="txtmenge" name="menge" value="' + currentValue + '" size=\"6\"/></form>'
	
	var elmFocus = document.getElementById('txtmenge');
	elmFocus.focus();
}

function editSort(fid, id, currentValue) {
	var e = document.getElementById('divSort' + id);
	if (e != null)
		e.innerHTML = '<form action="?action=updateSort&fid=' + fid + '&sid=' + id + '" method="post"><input type="text" id="txtsort" name="sort" value="' + currentValue + '" size=\"6\"/></form>'
	
	var elmFocus = document.getElementById('txtsort');
	elmFocus.focus();
}
