/*
 * Toggling the refferring years in the table on/off
 */
function input_year_onclick() {
	if (this.checked) overview_year_show(this.value);
	else overview_year_hide(this.value);
	
	//position table to the left
	
	if(iTblOverviewWidth < visible_table_width+136+73) {
		elDivOverview.setStyle('left', iDivOverviewOffsetX);
		removeTableScrollEvents();

	} else {
		addTableScrollEvents();
	} 
}

function overview_year_show(year) {
	var colindex = (year - 1998) + 1;
	//colindexSum = colindexSum + colindex;
	overview_year_toggle(colindex, displayTableCell);
}

function overview_year_hide(year) {
	var colindex = (year - 1998) + 1;
	display = 'none';
	//colindexSum = colindexSum - colindex;
	overview_year_toggle(colindex, display);
}

function overview_year_toggle(colindex, display) {

	elTblOverview.getElements('tr').each(function(tr){
		var td = tr.getElements('td')[colindex];					
		if(td)td.setStyle('display', display);
	});

	//Market label and td/th handling
	if(display == 'none' && usIndex != 0){
		usIndex = usIndex - 1;
	} else if (usIndex != 10)
	{
		usIndex = usIndex + 1;
	}

	setYearCount(usIndex);

	// Retrieve new table width
	iTblOverviewWidth = elTblOverview.getSize()['size']['x'];

	iDivOverviewDirection = 'right';

	overview_move();
}


/*
 * -Comparing panel functions
 * -showing/hiding the compare & info-panel through animation
 */
function compare_show() {

	//intHeight = elDivOverview.getStyle('height').toInt();
	intHeight = elDivOverview.getSize()["size"]["y"];
	
	/*if(window.gecko){
		intHeight = intHeight - 80;
	} else {
		intHeight = intHeight - 80;
	}*/
	
	intWidth = 175;
	intLeft = 552;
	if (window.webkit)
	{
		intWidth = 176;
		intLeft = 551;
	}
	
	compare_animate(intHeight,intWidth,intLeft,1);
	styleCompare();
	compare_infopanel_hide();
}

function compare_hide() {
	compare_animate(0,154,573,0);
	unstyleCompare();
	compare_infopanel_show();
}

function compare_infopanel_show() {
	var delay = 300;
	var fx = new Fx.Styles(elTblInfoOverview, {duration:delay, transition:Fx.Transitions.Sine.easeOut});
	
	fx.stop().start({'opacity' : 1});	
}

function compare_infopanel_hide() {
	var delay = 300;
	var fx = new Fx.Styles(elTblInfoOverview, {duration:delay, transition:Fx.Transitions.Sine.easeOut});
	
	fx.stop().start({'opacity' : 0});
}

function compare_animate(h,w,l,intOpacity) {
	var delay = 300;

	var fxCompare = new Fx.Styles(elCompareSelection, {duration:delay, transition:Fx.Transitions.Sine.easeOut});
	var fxHeader = new Fx.Styles(elCompareHeader, {duration:delay, transition:Fx.Transitions.Sine.easeOut});
	var fxForm = new Fx.Styles(elCompareForm, {duration:delay, transition:Fx.Transitions.Sine.easeOut});

	fxCompare.stop().start({'width' : w, 'left' : l});
	fxHeader.stop().start({'width' : w});
	fxForm.stop().start({'width' : w, 'height' : h});
}


function styleCompare(){
	btnCompareOverview.addClass('open');
}
function unstyleCompare(){
	var delay = 299;
	btnCompareOverview.removeClass('open');
}

function setYearCount(count){
	spanColindexSum.setHTML(count);
}

/*
 * Actually moving the table
 */
function overview_move() {
		if (iDivOverviewDirection != null) {			
			 
			 switch (iDivOverviewDirection) {
				 case 'right':
					 iDivOverviewLeft = (iDivOverviewLeft + iFxDivOverviewDistance); 
					 break;
				 case 'left':
					 iDivOverviewLeft = (iDivOverviewLeft - iFxDivOverviewDistance); 
					 break;
			 }
			 
			 // Limit movement left side
			 if (iDivOverviewLeft > iDivOverviewOffsetX) {
					iDivOverviewDirection = null;
					iDivOverviewLeft = iDivOverviewOffsetX; 
			 }
			 // Limit movement right side
			 if (iDivOverviewLeft <= -(iTblOverviewWidth - visible_table_width) + 73) {
					iDivOverviewDirection = null;
					iDivOverviewLeft = -(iTblOverviewWidth - visible_table_width) + 73;
					//disable scrolling to the right when table is to small
			 }
			 //overview_move_start(iDivOverievewLeft);
			 elDivOverview.setStyle('left', iDivOverviewLeft);
			 overview_move.delay(iFxDivOverviewDelay, this);
		} 
}


/*
Setting table highlighting events
*/
function table_highlighting() {
	 var table = [];
	 var rowcount = 0;
	 var colcount = 0;
		
		elTblOverview.getElements('tr').each(function(tr){
			tr.setProperty('id', 'row' + rowcount);
			tr.getElements('td').each(function(td) {

				 td.setProperty('id', rowcount + 'x' + colcount);
				 colcount++;

				 td.addEvent('mouseenter', function(){
					 var tr = this.getParent();		
					 var arr = this.id.split('x');
					 var col = arr[1];
					 var row = arr[0];

					 tr.getElements('td').each(function(td) {							 
						 td.addClass('bg-grey_mist');					
					 });

					 tr.getParent().getElements('tr').each(function(tr) {
						 var row = tr.id.split('row')[2];
						 el = tr.getElements('td')[col];

						 if(el){
							 if (el.hasClass('bg-azure')) el.addClass('bg-cyan');
							 else if (el) el.addClass('bg-grey_mist');
						 }
					 });

					 elTblInfoOverview.getElements('tr')[row].getElements('td').each(function(el){
							el.addClass('bg-grey_mist'); // Set refferring information table row
					 });
						
					 this.addClass('target');

				 });

				 td.addEvent('mouseleave', function(){
					 var tr = this.getParent();						 
					 var arr = this.id.split('x');
					 var col = arr[1];
					 var row = arr[0];

					 tr.getElements('td').each(function(td) {							 
						 td.removeClass('bg-grey_mist');							
					 });

					 tr.getParent().getElements('tr').each(function(tr) {
						 var row = tr.id.split('row')[1];
						 el = tr.getElement('#' + row + 'x' + col);
						 
						 if(el){
							 if (el.hasClass('bg-cyan')) el.removeClass('bg-cyan');
							 else if (el) el.removeClass('bg-grey_mist');
						 }
					 });

					 elTblInfoOverview.getElements('tr')[row].getElements('td').each(function(el){
						 el.removeClass('bg-grey_mist');
					 });
					 
					 this.removeClass('target');
				 });

			});
			
			colcount = 0;
			rowcount++;
		});

		if(objWait) objWait.setBolAddedHighlightEvents(true);
}

function removeLoader(){
	if(objWait.bolResizeDivOverview && objWait.bolAddedHighlightEvents && objWait.bolAddedCompareEvents){
		var fxLoader = new Fx.Styles(elLoader, {duration:600, transition:Fx.Transitions.Sine.easeOut});
		fxLoader.stop().start({'opacity' : 0});
		elTblInfoOverview.setStyle('visibility', 'visible');
		$clear(periodical);
		//now fire introductionScrolling and then attach the scrolling events else if the mouse accedently enter the scrollbars the scrolling would stop
		introductionScroll.delay(600);
	}
}

function introductionScroll() {

	iDivOverviewDirection = 'left';
	btnRight.removeClass('leave').addClass('enter');
	overview_move.delay(1000);
	periodical2 = introductionScrollButtons.periodical(500);

}

function introductionScrollButtons(){

	if(iDivOverviewDirection == null){
		addTableScrollEvents();
		btnRight.removeClass('enter').addClass('leave');
		$clear(periodical2);
	}
}

/*
 * ADD TABLE EVENTS
 */
function addTableScrollEvents(){

	btnLeft.addEvent('mouseenter', function() {
		this.removeClass('leave').addClass('enter');
		iDivOverviewDirection = 'right';
		overview_move();
	});
	btnLeft.addEvent('mouseleave', function() {
		this.removeClass('enter').addClass('leave');
		iDivOverviewDirection = null;
	});

	btnRight.addEvent('mouseenter', function() {
		this.removeClass('leave').addClass('enter');
		iDivOverviewDirection = 'left';
		overview_move();
	});
	btnRight.addEvent('mouseleave', function() {
		this.removeClass('enter').addClass('leave');
		iDivOverviewDirection = null;
	});
	//btnRight.setStyle('cursor', 'pointer');
	//btnLeft.setStyle('cursor', 'pointer');
	if(objWait) objWait.setBolAddedTableScrollEvents(true);
}

function removeTableScrollEvents(){
	btnLeft.removeEvents();
	btnRight.removeEvents();
	//btnRight.setStyle('cursor', 'default');
	//btnLeft.setStyle('cursor', 'default');
}

function addCompareEvents(){
	
	btnCompareOverview.addEvent('click', function(){
		bolCompareToggle = elCompareSelection.getProperty('toggle');

		if(bolCompareToggle == 'closed' ) {
			compare_show();
			elCompareSelection.setProperty('toggle', 'open');
			//bolCompareToggle = 'open';
		}
		else if (bolCompareToggle == 'open')
		{
			compare_hide();
			//bolCompareToggle = 'closed';
			elCompareSelection.setProperty('toggle', 'closed');
		}
	});

	// Set compare-form events
	elCompareForm = elCompareSelection.getElement('.compare-form');
	elCompareForm.getElements('input').each(function(el){
		el.addEvent('click', input_year_onclick);
	});

	if(objWait) objWait.setBolAddedCompareEvents(true);

}

/*
 * HELPER FUNCTIONS AND CLASSES
 */

function selectAllBoxes(){
	$$(".compare-form").getElements('input').each(function(el) {
		el.setProperty('checked', true);
	});
}

function resizeDivOverview(){
	intTableHeight = elDivOverview.getStyle('height').toInt();
	
	//elTblOverview.setStyle('height', intTableHeight);
	if(window.gecko || window.ie7){
		elDivOverviewContainer.setStyle('height', intTableHeight);
	}
	elDivOverviewWrapper.setStyle('height', intTableHeight);
	btnLeft.setStyle('height', intTableHeight);
	btnRight.setStyle('height', intTableHeight);

	if(objWait) objWait.setBolResizeDivOverview(true);
}

/*
 * waitingObject to assist when the loader needs to be removed
 */
var waitingObject = new Class({
	initialize: function(){
		this.bolResizeDivOverview = false;
		this.bolAddedTableScrollEvents = false;
		this.bolAddedHighlightEvents = false;
		this.bolAddedCompareEvents = false;
	}
});
waitingObject.implement({
    setBolResizeDivOverview: function(bolTmp){
        this.bolResizeDivOverview = bolTmp;
    }
});
waitingObject.implement({
    setBolAddedTableScrollEvents: function(bolTmp){
        this.bolAddedTableScrollEvents = bolTmp;
    }
});
waitingObject.implement({
    setBolAddedHighlightEvents: function(bolTmp){
        this.bolAddedHighlightEvents = bolTmp;
    }
});
waitingObject.implement({
    setBolAddedCompareEvents: function(bolTmp){
        this.bolAddedCompareEvents = bolTmp;
    }
});


/*
Initiate
*/
function initTenYearOverview() {
	
	elDivOverviewContainer = $('far-overview-container');
	elDivOverviewWrapper = $('far-overview-wrapper');
	elDivOverview = $('far-overview-table');
	elTblOverview = $('far-overview');
	elTblInfoOverview = $('far-overview-info');
	fxDivOverview = new Fx.Styles(elDivOverview, {duration:iFxDivOverviewDelay, transition:Fx.Transitions.linear});
	iDivOverviewLeft = elDivOverview.getStyle('left').toInt();
	iDivOverviewOffsetX = (0 - elTblOverview.getElement('td').getSize()['size']['x']) + 25;
	iTblOverviewWidth = elTblOverview.getSize()['size']['x'];

	//Compare
	//colindexSum = 78;
	//dutchIndex = 2;
	usIndex = 10;
	//dutchTh = $('far-dutch-label');
	//usTh = $('far-us-label');
	if (window.ie) displayTableCell = ''; 
	else displayTableCell = '';

	// Replace elDivOverview to correct position with offset
	elDivOverview.setStyle('left', iDivOverviewOffsetX);	

	// Init table highlighting
	table_highlighting();

	// Enable movement events
	btnLeft = $('far-overview-move-left');
	btnRight = $('far-overview-move-right');
	//addTableScrollEvents();

	// Set compare events		
	elCompareSelection = $('ten-year-overview-selection');
	elCompareTop = $('ten-year-overview-top');
	elCompareHeader = $('ten-year-overview-header');
	elCompareContent = $('ten-year-overview-content');
	elCompareFooter = $('ten-year-overview-footer');

	btnCompareOverview = elCompareSelection.getElement('.ten-year-overview-toggleOverview');
	spanColindexSum = btnCompareOverview.getElement('#colindexSum');

	addCompareEvents();
	
	//firefox fix when reloading the page unchecked boxes wont be checked again.
	selectAllBoxes();
	setYearCount(usIndex);

	//finaly almost everything is done, now resize the whole page
	resizeDivOverview();

	//all functions have been called and now its time to remove loader
	elLoader = $('far-loader');
	periodical = removeLoader.periodical(2000);
}


/*
Variables
*/
var elLoader;
var periodical;
var periodical2;
var	objWait = new waitingObject();

var elDivOverviewContainer;
var elDivOverview; // The first div wrappep around the table			
var elTblOverview; // The overview table
var elTblInfoOverview; // The refferring information table inside the info panel -> right
var elCompareSelection; // Right compare table
var btnCompareOverview; // item to be clicked on
var spanColindexSum; //the html year counter
var elFrmCompare; // The compare form			
var iFxDivOverviewDelay = 15;
var iFxDivOverviewDistance = 5;
var iDivOverviewDirection;
var iDivOverviewLeft; // Current leftposition overview
var iDivOverviewOffsetX; // First column xpos offset			
var iTblOverviewWidth;
var visible_table_width = 480;
var intTableHeight;
var btnLeft;
var btnRight;

//year toggle
//var colindexSum;
//var dutchIndex;
//var usIndex;
//var dutchTh;
//var usTh;

var displayTableCell;

/*
Events
*/
//window.addEvent('load', initTenYearOverview);
