// JavaScript Document
var pageTracker=_gat._getTracker("UA-778473-6");




//NoobSlide
var noobSlide=new Class({initialize:function(a){this.items=a.items;this.mode=a.mode||'horizontal';this.modes={horizontal:['left','width'],vertical:['top','height']};this.size=a.size||240;this.box=a.box.setStyle(this.modes[this.mode][1],(this.size*this.items.length)+'px');this.button_event=a.button_event||'click';this.handle_event=a.handle_event||'click';this.onWalk=a.onWalk||null;this.currentIndex=null;this.previousIndex=null;this.nextIndex=null;this.interval=a.interval||5000;this.autoPlay=a.autoPlay||false;this._play=null;this.handles=a.handles||null;if(this.handles){this.addHandleButtons(this.handles)}this.buttons={previous:[],next:[],play:[],playback:[],stop:[]};if(a.addButtons){for(var b in a.addButtons){this.addActionButtons(b,$type(a.addButtons[b])=='array'?a.addButtons[b]:[a.addButtons[b]])}}this.fx=new Fx.Tween(this.box,$extend((a.fxOptions||{duration:500,wait:false}),{property:this.modes[this.mode][0]}));this.walk((a.startItem||0),true,true)},addHandleButtons:function(a){for(var i=0;i<a.length;i++){a[i].addEvent(this.handle_event,this.walk.bind(this,[i,true]))}},addActionButtons:function(a,b){for(var i=0;i<b.length;i++){switch(a){case'previous':b[i].addEvent(this.button_event,this.previous.bind(this,[true]));break;case'next':b[i].addEvent(this.button_event,this.next.bind(this,[true]));break;case'play':b[i].addEvent(this.button_event,this.play.bind(this,[this.interval,'next',false]));break;case'playback':b[i].addEvent(this.button_event,this.play.bind(this,[this.interval,'previous',false]));break;case'stop':b[i].addEvent(this.button_event,this.stop.bind(this));break}this.buttons[a].push(b[i])}},previous:function(a){this.walk((this.currentIndex>0?this.currentIndex-1:this.items.length-1),a)},next:function(a){this.walk((this.currentIndex<this.items.length-1?this.currentIndex+1:0),a)},play:function(a,b,c){this.stop();if(!c){this[b](false)}this._play=this[b].periodical(a,this,[false])},stop:function(){$clear(this._play)},walk:function(a,b,c){if(a!=this.currentIndex){this.currentIndex=a;this.previousIndex=this.currentIndex+(this.currentIndex>0?-1:this.items.length-1);this.nextIndex=this.currentIndex+(this.currentIndex<this.items.length-1?1:1-this.items.length);if(b){this.stop()}if(c){this.fx.cancel().set((this.size*-this.currentIndex)+'px')}else{this.fx.start(this.size*-this.currentIndex)}if(b&&this.autoPlay){this.play(this.interval,'next',true)}if(this.onWalk){this.onWalk((this.items[this.currentIndex]||null),(this.handles&&this.handles[this.currentIndex]?this.handles[this.currentIndex]:null))}}}});



//--------------------------------Noobslide-------------------------------------------
/*
	window.addEvent('domready', function(){
var nS2 = new noobSlide({
			box: $('theSlides'),
			items: [0,1],
			interval: 3000,
			size: 820,
			fxOptions: {
				duration: 1400,
				transition: Fx.Transitions.Quart.easeOut,
				wait: false
			},
			addButtons: {
				//previous: $('prev1'),
				//play: $('play1'),
				//stop: $('stop1'),
				next: $('next1')
			}
		});

	}); //slut domready
*/


/*************************************************************/


//--------------Moquee----------------
Mooquee = new Class({
    Implements: [Options],
 
    options: {
        element: 'mooquee',
        cssitem: 'mooquee_item',
        firstitem:0,
        trans:{'tin':'up', 'tout':'fade'}, //each transition is up, down, left, right, fade
        pause: 1, //seconds (keep pause equal or higher to duration to allow time for items to reset)
        duration: 1, //number of seconds to move marquee items
        overflow:'hidden', //if your item flows over how do you want to handle it. Auto(scroll) or Hidden work best...
        startOnLoad:true
    },
    initialize: function(options){
        this.setOptions(options);
        this.itemFXs = [];
        this.outDelay = 0;
        this.inDelay = 0;
        this.started = false;
        this.currentitem = this.options.firstitem;
        this.loop = true;
        if (typeof(this.options.trans) == "string") this.options.trans = {'tin':this.options.trans, 'tout':this.options.trans};
       
        window.addEvent('domready', function() {
            //get all mooqueeItems
            this.items = $$('#' + this.options.element + ' .' + this.options.cssitem);
            this.totalitems = this.items.length;
            if($(this.options.element).style.overflow != 'hidden')
                $(this.options.element).style.overflow = 'hidden';
            if($(this.options.element).style.position != 'relative')
                $(this.options.element).style.position = 'relative';
 
            this.setMooqueeFXs();
            this.setTrans(this.options.trans);// has setMooqueeItems in it
 
            if(this.options.startOnLoad)
                this.mooveAll.delay(this.options.pause*1000 ,this);
        }.bind(this));
       
       
    },
    setMooqueeItems: function(){
        this.resetting =true;
        var i=0;
       
        this.items.each(function (element){
            if($(element).style.position != 'absolute')
                $(element).style.position = 'absolute';
            $(element).style.width = $(this.options.element).clientWidth + 'px';
            $(element).style.overflow = this.options.overflow;
           
            if(i == this.currentitem)
                this.itemFXs[i].set(this.resetStyle).set(this.inStyle);
            else
                this.itemFXs[i].set(this.resetStyle).set(this.startStyle);
           
            i++;
        }.bind(this));
        this.resetting =false;
    },
    setMooqueeFXs: function(){
        var i=0;
        this.items.each(function (element){
            this.itemFXs[i] = new Fx.Morph(element,{duration:(this.options.duration*1000)});
            i++;
        }.bind(this));
    },
    mooveAll: function(){
 
        this.previousitem = this.currentitem;
       
        if((this.currentitem + 1) == this.totalitems)
            this.currentitem = 0;
        else
            this.currentitem = this.currentitem + 1;
       
        this.moove.delay(this.outDelay*this.options.duration*1000, this, this.previousitem);
        this.moove.delay(this.inDelay*this.options.duration*1000, this, this.currentitem);
 
    },
    moove: function(itemnumber){
        if(itemnumber == this.previousitem)
        {
            this.itemFXs[itemnumber].start(this.outStyle).chain(function(){
                if(!this.resetting)this.itemFXs[itemnumber].set(this.resetStyle).set(this.startStyle);
            }.bind(this));
        } else {
            this.itemFXs[itemnumber].start(this.inStyle).chain(function(){
                if(this.loop == true)
                    this.loopTimer = this.mooveAll.delay(this.options.pause*1000 ,this);
            }.bind(this));
        }
    },
    setTrans: function(newTrans){
        this.startStyle = {}
        this.inStyle = {};
        this.outStyle = {};
        this.resetStyle = {};
        this.inDelay = 0;
        switch(newTrans.tin){
                case 'up':
                    this.startStyle = {'top': $(this.options.element).clientHeight};
                    this.inStyle = {'top': 0};
                break;
                case 'down':
                    this.startStyle = {'top': $(this.options.element).clientHeight * -1};
                    this.inStyle = {'top': 0};
                break;
                case 'left':
                    this.startStyle = {'left': $(this.options.element).clientWidth};
                    this.inStyle = {'left': 0};
                break;
                case 'right':
                    this.startStyle = {'left': $(this.options.element).clientWidth * -1};
                    this.inStyle = {'left': 0};
                break;
                case 'fade':
                    this.startStyle = {'opacity': 0};
                    this.inStyle = {'opacity': 1};
                break;
        }
        switch(newTrans.tout){
                case 'up':
                    this.outStyle = {'top': $(this.options.element).clientHeight * -1};
                    this.resetStyle = {'top': 0};
                break;
                case 'down':
                    this.outStyle = {'top': $(this.options.element).clientHeight};
                    this.resetStyle = {'top': 0};
                break;
                case 'left':
                    this.outStyle = {'left': $(this.options.element).clientWidth * -1};
                    this.resetStyle = {'left': 0};
                break;
                case 'right':
                    this.outStyle = {'left': $(this.options.element).clientWidth};
                    this.resetStyle = {'left': 0};
                break;
                case 'fade':
                    this.outStyle = {'opacity': 0};
                    this.resetStyle = {'opacity': 1};
                    this.inDelay = .5;
                break;
        }
        this.setMooqueeItems();
    }
});

/*
    mookieExampleOne = new Mooquee({
       element:'citatlist',
       trans:{'tin':'fade', 'tout':'fade'},
       duration:1, //time in seconds
       pause:8
    });*/
//--------------Slut Moquee----------------

//Ticker
var mooTicker = new Class({
  Implements: Options,
  options: {
    groupBy: 1,
    interval: 5000
  },
  
  initialize: function(containerElement,options) {  
    // Set options
    this.setOptions(options);
    this.groupBy = this.options.groupBy;
    this.interval = this.options.interval;
    
    // Set container div
    this.container = containerElement;
     
    this.messages = $(this.container).getChildren();
    this.number_of_messages = this.messages.length - 1;
    
    this.group = new Array(this.groupBy);
    this.start_message = 0;
    this.end_message = this.groupBy;
    
    this.FxFade = new Fx.Tween(null,{property:'opacity'});
    
    // Display first message
    this.hideAllMessages();
    this.showMessage();
    // Install timer
    this.timer = this.showMessage.periodical(this.interval,this);
  },
 
  showMessage: function() {
    for(var i = 0; i < this.groupBy; i++) {
      if(this.start_message > this.number_of_messages) {
        this.start_message = 0;
      }
      this.group[i] = this.messages[this.start_message];
      this.start_message += 1;
    }
   
    this.group.each(function(item) {
      item.setStyle('display','inline-block');
      item.fade('in');
    }.bind(this));

    this.fadeMessage.delay(this.interval-1000,this);
  },
 
  fadeMessage: function() { 
    this.group.each(function(item) {
      item.set('tween',{link:'chain'});
      item.tween('opacity','0');
      item.tween('display','none');
    }.bind(this));
  },
 
  hideAllMessages: function() { 
    this.messages.setStyles({
      'display':'none',
      'opacity':0
    });
  }
});

window.addEvent('domready',function(){
var myTicker = new mooTicker('citatlist',{interval:6400});

});

//--------------Ladda Google Analytics----------------

window.addEvent('domready',function(){
//Analytics
//var pageTracker=_gat._getTracker("UA-778473-3");
pageTracker._initData();
pageTracker._trackPageview();

});



//Parallax
Fx.Parallax = new Class({

	Implements: [Events, Options],

	options: {
		limit: {w:100, h:100},
		styles: {x: 'margin-left', y:'top'}
	},
	
	initialize: function(options){
		this.setOptions(options)
		this.pObjects = [];
		//setup mousemove event
		document.addEvent('mousemove', this.update.bind(this));
	},
	
	update: function(e){
		var p = this.getPercent(e.client);
		
		this.pObjects.each(function(el,i){
			this.setPosition(el,(this.pObjects.length-i), p);
		}, this);
	},
	
	add: function(elements, options){
		//adds elements to a level in the parallax or a new level if level is undefined
		elements = $$(elements);
		if(!options){options = {}};
		elements.each(function(el,i){
			el.store('x', el.getStyle(this.options.styles.x));
			el.store('y', el.getStyle(this.options.styles.y));
			el.store('options', options);
			el.store('styles', this.options.styles);
		}, this);
		
		if(options.level != undefined){
			this.pOjbects[options.level].combine(elements);
		}else{
			this.pObjects.push(elements);
		}
	},
	
	remove: function(element, level){
		if(element){
			this.pObjects[level].erase(element);
		}else{
			this.pObjects.splice(level, 1);
		}
	},
	
	getPercent: function(client){
		//calculates the percent of the parallax
		
		var percent = {x:0, y:0};
		
		var w = window.getWidth();
		var h = window.getHeight();
		
		if(client.y < (h/2)){
			var p = Math.round((client.y/(h/2)) * 100);
			p = 100-p;
			percent.y  = Math.round((this.options.limit.h/100)*p);
		}
		if(client.y > (h/2)){
			var p = Math.round((client.y/(h/2)) * 100);
			p = 100-p;
			percent.y  = Math.round((this.options.limit.h/100)*p);
		}
		if(client.x < (w/2)){
			var p = Math.round((client.x/(w/2)) * 100);
			p = 100-p;
			percent.x  = Math.round((this.options.limit.w/100)*p);
		}
		if(client.x > (w/2)){
			var p = Math.round((client.x/(w/2)) * 100);
			p = 100-p;
			percent.x  = Math.round((this.options.limit.w/100)*p);
		}
		
		return percent;
	},
	
	setPosition: function(element, amount, percent){
		//sets the position of the element with the parallax amount applied
		var opts = element.retrieve('options')[0];
		amount += 4;
		var o = {};
		if(opts.x != false){
			o[this.options.styles.x] = element.retrieve('x')[0].toInt()+(percent.x/amount);
		}
		if(opts.y != false){
			o[this.options.styles.y] = element.retrieve('y')[0].toInt()+(percent.y/amount);
		}
		element.setStyles(o);
	}
});


Fx.Morph = new Class({

	Extends: Fx.Morph,

	set: function(now){
		if (typeof now == 'string') now = this.search(now);
		for (var p in now) {
			var s = this.element.retrieve('styles');
			if(p == s.x){
				this.element.store('x', now[p][0].value);
			}else if(p == s.y){
				this.element.store('y', now[p][0].value);
			}
			this.render(this.element, p, now[p], this.options.unit);
		}
		return this;
	}

});

//setup
window.addEvent('domready', function(){
var windsizze = window.getSize(); //test									 
if (windsizze.x > 900 || windsizze.y > 590) { //test
		var para = new Fx.Parallax({
			limit: {w:490, h:80},
			styles: {x: 'margin-left', y:'margin-top'}
		});
			para.add([$('box1')]);
			para.add([$('box-g')]);
			para.add([$('box2')]);
			para.add([$('box-b')]);
			para.add([$('box3')]);
			para.add([$('box4')]);
} //Test			
	});

//slut Parallax


//-----------------------------------fixa on load-------------------------

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

			/* preloading */
var images = [
			  'konsult/img/spinner.gif',
			  'konsult/img/perlback.png',
			  'konsult/img/theKey.png'
			  ];
var loader = new Asset.images(images, {
    onComplete: function(){
        //advanced.start({'top': [-40,274], 'left': [-70,792]});
    }
});

//Ta bort IE's drag-funktion
if(Browser.Engine.trident){ document.ondragstart = function(){return false;} }

//Analytics outgoing links
	if(pageTracker) {
		$$('a[href^=http]').each(function(el) {
			el.addEvent('click',function() {
				var dd = '/klickad-link/' + el.get('href').replace('http://','');
				pageTracker._trackPageview(dd);
			}.bind(this));
		});
	} //slut Analytics


}); //slut onLoad