/**
* Custom Function JS
* (c) blueend web:applications AG
*/
FeatureSlider = Class.create();
FeatureSlider.prototype = {
	initialize:function(el,options){
		this.el = $(el);
		if (!this.el) return false;
		this.items = $(el).select('.item');

		// Options
		this.slide_margin = 10; // Margin between Slides
		this.auto_next = 0; // Go to next slide each x Seconds
		this.center_vertical = false; // Center items vertically
		if(options.pagenav){
			this.pagenav = $(options.pagenav);

		}else{
			this.pagenav = false;
		}

		// Init
		this.current_item = 0;
		this.item_height = 450;
		this.item_width = this.items[0].getWidth();
		this.items.each(function(el){
			el.absolutize();
			if (this.item_height<el.getHeight()) this.item_height = el.getHeight();
			el.setStyle({position: 'absolute', width: this.item_width});
			el.hide();
		}.bind(this));
		
		this.el.setStyle({height: this.item_height, width: this.item_width, overflow: 'hidden', position: 'relative'});

		if (this.center_vertical){
			this.items.each(function(el){
				var new_height = ((this.item_height - el.getHeight()) / 2);
				el.setStyle({top: new_height});
			}.bind(this));
		}else{
			this.items.each(function(el){
				el.setStyle({top: '0px'});
			}.bind(this));
		}

		// Set Slide Positions based on item size
		this.position = [];
		this.position['start'] = [-this.item_width-this.slide_margin,0]; // Start
		this.position['show'] = [0,0]; // Visible
		this.position['end'] = [this.item_width+this.slide_margin,0]; // End
		this.status = 'ready'; // Mini-Queue
		this.queue = [];
		this._moveIn(0, true);

		if (this.auto_next>0)
			new PeriodicalExecuter(this._autoNext.bind(this), this.auto_next);
	},

	nextItem: function(no_queue){
		this.auto_next = false;
		this._nextItem();
		this._pageNav();
	},

	previousItem: function(){
		this.auto_next = false;
		this._previousItem();
		this._pageNav();
	},
	
	gotoItem: function(number){
		if(this.current_item != number){
			this._moveIn(number,true);
			this._moveOut(this.current_item,true);
			this.current_item = number;
			this._pageNav();
		}
	},
	
	_pageNav: function(){
		if (this.pagenav){
			this.pagenav.select('a.pagebtn').invoke('removeClassName','sel');
			this.pagenav.select('a.pagebtn')[this.current_item].addClassName('sel');
		}
	},

	_autoNext: function(){
		if (this.auto_next>0) {
			this._nextItem();
		}
	},

	_nextItem: function(no_queue){
	  var nextItem = ((this.current_item + 1)>(this.items.length-1)) ? 0 : (this.current_item + 1);
		this._moveIn(nextItem,true);
		this._moveOut(this.current_item,true);
		this.current_item = nextItem;
	},

	_previousItem: function(no_queue){
	  var nextItem = ((this.current_item - 1)>=(0)) ? (this.current_item - 1) : this.items.length-1;
		this._moveIn(nextItem, false);
		this._moveOut(this.current_item, false);
		this.current_item = nextItem;
	},

	_moveIn:function(itemID, reverse){
		this.status = 'running';
		var startPos = (reverse) ? 'end' : 'start';
		this.items[itemID].setStyle({left: this.position[startPos][0]+'px'}).show(); //top: this.position[startPos][1]
		
		new Effect.Morph(this.items[itemID],{style: 'left: '+this.position['show'][0]+'px;', afterFinish: this.endEffect.bindAsEventListener(this)}); //top:'+this.position['show'][1]+'px;'
	},

	_moveOut:function(itemID, reverse){
		this.status = 'running';
		var endPos = (!reverse) ? 'end' : 'start';
		new Effect.Morph(this.items[itemID],{style: 'left: '+this.position[endPos][0]+'px;', afterFinish: this.endEffect.bindAsEventListener(this)}); //top:'+this.position[endPos][1]+'px;
	},

	endEffect:function(){
		return true;
		if (this.queue.length>0){
			var click = this.queue.shift();
			if (click=='next') this.nextItem(true); else this.previousItem(true);
		} else {
			this.status = 'ready';
		}
	},

	checkQueue:function(click){
		return true;
		if (this.status == 'running'){
			this.queue.push(click);
			return false;
		}
		return true;
	}
}


// JS function for uncrypting spam-protected emails:
function UnCryptMailto(s) {	//
	var n=0;
	var r="";
	for(var i=0; i < s.length; i++) {
		n=s.charCodeAt(i);
		if (n>=8364) {n = 128;}
		r += String.fromCharCode(n-(2));
	}
	return r;
}
  // JS function for uncrypting spam-protected emails:
function linkTo_UnCryptMailto(s)	{	//
	location.href='mailto:'+UnCryptMailto(s);
}


/* Examples for onLoad */
Object.extend(Event, {
  _domReady : function() {
    if (arguments.callee.done) return;
    arguments.callee.done = true;

    if (this._timer)  clearInterval(this._timer);

    this._readyCallbacks.each(function(f){ if (typeof f == 'function') f(); });
    this._readyCallbacks = 'done';
},
  onDOMReady : function(f) {
    if (Event._readyCallbacks == 'done' &&  typeof f == 'function'){
    	f();
    	return;
		}

    if (!this._readyCallbacks) {
      var domReady = this._domReady.bind(this);

      if (document.addEventListener)
        document.addEventListener("DOMContentLoaded", domReady, false);

        /*@cc_on @*/
        /*@if (@_win32)
        		var dummy = location.protocol == "https:" ?  "https://javascript:void(0)" : "javascript:void(0)";
            document.write("<script id=__ie_onload defer src='" + dummy + "'><\/script>");
            document.getElementById("__ie_onload").onreadystatechange = function() {
                if (this.readyState == "complete") domReady();
            };
        /*@end @*/

        if (/WebKit/i.test(navigator.userAgent)) {
          this._timer = setInterval(function() {
            if (/loaded|complete/.test(document.readyState)) domReady();
          }, 10);
        }

        Event.observe(window, 'load', domReady);
        Event._readyCallbacks =  [];
    }
    Event._readyCallbacks.push(f);
  }
});
Event.onDOMReady(function(){

}); // Call DomReady at least once

//Fire Script as soon as Window Loads
//Event.observe(window,'load',wbt_init);
