var CONFIG = {};
var objTabber;

window.addEvent('domready', function()
{	
	var strBaseHref = $(document.head).getElement('base');
	CONFIG.BASE_URL = strBaseHref.href;
	
	if ($('search-keyword'))
	{
		var objSearch = new Search();
	};
	
	if ($('newsticker'))
	{
		var objNewsticker = new Newsticker();
	};
	
	if($('content'))
	{
		$('content').getElements('div.tabs').each(function(tabContainer)
		{
			objTabber = new Tabber(tabContainer);
		});
	}
	
	if($('content'))
	{
		$('content').getElements('div.tabslite').each(function(tabContainer)
		{
			objTabber = new Tabberlite(tabContainer);
		});
	}
	
	if($('formcontact'))
	{
		$('formcontact').getElements('input[type=text]').each(function(elInput)
		{
			elInput.addEvent('keyup', function()
			{
				$('reaction_nskey').value = 'aNtIsPaMkEy!!11';
			});
		});
	}
	
	// Dropdown Navigation in the Main Nav
	if($('mainnav')) {
		$('mainnav').getElements('ul li.main').each(function(elListItem, intKey)
		{
			if (elListItem.getElement('ul'))
			{
				elListItem.getElement('a').addEvents(
				{
					mouseenter: function()
					{
						this.addClass('hover');
						elListItem.getElement('ul').addClass('hover');
					},
					mouseleave: function()
					{
						elListItem.getElement('ul').removeClass('hover');
						this.removeClass('hover');
					}
				});
				elListItem.getElement('ul').addEvents(
				{
					mouseenter: function()
					{
						this.addClass('hover');
						this.getParent().getElement('a').addClass('hover');
					},
					mouseleave: function()
					{
						this.removeClass('hover');
						this.getParent().getElement('a').removeClass('hover');
					}
				});
			};
		
		});
	}
	
	// custom stuff per page
	var strHref = location.href;
	var strFaqPattern = /faq/;
	var strBusinessPattern = /business-operations/;
	var strCulturePattern = /life-at-optiver\/global-culture/;
	var strBasicRequirements = /careers\/basic-requirements/;
	var strHistory = /the-company\/history/;	
	if(
		strFaqPattern.test(strHref)
		||
		strBusinessPattern.test(strHref)
		||
		strCulturePattern.test(strHref)
		||
		strBasicRequirements.test(strHref)
		||
		strHistory.test(strHref)
	)
	{
		var i = 0;
		$$('#content .usercontent h3').each(function(elTitle)
		{
			if(i != 0)
			{
				elTitle.setStyle('margin-top', '15px');
			}
			i++;
		});
		
		$$('#content .usercontent h4').each(function(elTitle)
		{
			var arrItems = new Array();
			var elContainer = new Element('div',
			{
			    'class': 'faqtoggle'
			});
			
			var elNext = elTitle.getAllNext();
			
			var blnUseElement = true;
			elNext.each(function(elItem)
			{
				var strTagName = elItem.tagName;
				if(true == blnUseElement && ('p'  == strTagName.toLowerCase() || 'ul'  == strTagName.toLowerCase()))
				{
					elItem.clone().inject(elContainer);
					elItem.destroy();
				}
				else
				{
					blnUseElement = false;
				}
			});
			
			elContainer.inject(elTitle, 'after');
			
			elTitle.setStyle('cursor', 'pointer');
			
			elTitle.addEvent('click', function()
			{
				elContainer.toggle();
			});
		});
	}
	
	var objJobOpportunitiesTable = new JobOpportunitiesTable();	
	
});

var Search = new Class(
{
	initialize:function()
	{
		var elInputHeader = $('search-keyword');
						
		elInputHeader.addEvents(
		{
			focus:function()
			{
				this.setStyle('background', 'transparent');
			},
			blur:function()
			{
				if(!$chk(this.value))
				{
					this.setStyle('background', 'transparent url(./inc/image/bg_search.png) no-repeat left -21px');
				}
			}
		});
	}
});

var Newsticker = new Class(
{
	elWrapper: null,
	arrItems: null,
	intItems: null,
	
	intActive: 0,
	intDelay: 7000,
	
	initialize:function()
	{
		this.elWrapper = $('newsticker');
		this.arrItems = this.elWrapper.getElements('li');
		this.intItems = this.arrItems.length;
		
		this.arrItems.each(function(elItem, intKey)
		{
			if (intKey < 1)
			{
				elItem.setStyle('display', 'block');
			}
			else
			{
				elItem.setStyles(
				{
					'display': 'block', 
					'opacity': 0
				});
			}
		});
		
		this.showNext.bind(this).delay(this.intDelay);
	},
	
	showNext:function()
	{
		this.arrItems[this.intActive].fade('out');
		
		this.intActive++;
		if (this.intActive == this.intItems)
		{
			this.intActive = 0;
		};
		
		this.arrItems[this.intActive].fade('in');
		
		this.showNext.bind(this).delay(this.intDelay);
	}
});

var Tabber = new Class(
{	
	intMaxPerPage: 4,
	intCurrentPage	: 1,
	intCurrentStart: 0,
	
	initialize: function(tabContainer)
	{
		if( tabContainer.getElements('ul.tabchoose').length === 0) 
		{
			return;
		}
		
		if(tabContainer.hasClass('tabslite'))
		{
			return;
		}
		
		tabContainer.tabOptions = tabContainer.getElements('ul.tabchoose li a');
		tabContainer.tabLists = tabContainer.getElements('div.tabs-list ul');
		
		if(tabContainer.tabLists.length === 0)
		{
			tabContainer.tabLists = tabContainer.getElements('div.tabs-list table tbody');
		}
		
		tabContainer.tabNav = tabContainer.getElement('div.navsmall');
		tabContainer.tabCurrentPageElm = tabContainer.tabNav.getElement('span.navsmall-currentpage');
		tabContainer.tabTotalPageElm = tabContainer.tabNav.getElement('span.navsmall-totalpage');
		tabContainer.tabNextButton = tabContainer.tabNav.getElement('a.navsmall-next');
		tabContainer.tabPrevButton = tabContainer.tabNav.getElement('a.navsmall-prev');
		
		if(tabContainer.hasClass('unlimited-items')) 
		{
			this.intMaxPerPage = 1000;
			tabContainer.tabNav.setStyle('display', 'none');
		}
		
		var classRef = this;
		tabContainer.tabOptions.each(function(tabOption, id)
		{
			tabOption.attachedListClass = tabOption.href.toString().split('#');
			tabOption.attachedListClass = tabOption.attachedListClass[1];
			
			tabOption.addEvent('click', function() 
			{					
				tabContainer.tabOptions.removeClass('active');
				this.addClass('active');
				
				classRef.intCurrentPage = 1;
				classRef.intCurrentStart = 0;
				
				tabContainer.tabLists.each(function(tabList)
				{
					if(tabList.hasClass(this.attachedListClass))
					{
						tabList.addClass('active-tablist');
						tabList.setStyle('display', '');
					}
					else
					{
						tabList.removeClass('active-tablist');
						tabList.setStyle('display', 'none');
					}
					
				}.bind(this));
				
				classRef.initNav(tabContainer);
				return false;
			});
		});
		
		this.currentTab = 0;

		this.autoClick(tabContainer);
		
		/*if(!tabContainer.hasClass('wholesale-trading'))
		{
			setInterval(function() { classRef.autoClick(tabContainer) }, 7000);
		}*/
	},
	
	autoClick: function(tabContainer)
	{				
		if(tabContainer.tabOptions[this.currentTab])
			tabContainer.tabOptions[this.currentTab].fireEvent('click');		
			
		this.currentTab++;
		
		if(this.currentTab == tabContainer.tabOptions.length)
		{
			this.currentTab = 0;
		}
	},
	
	initNav: function(tabContainer)
	{				
		if(tabContainer.getElements('ul').length == 1)
		{
			activeTabItems = tabContainer.getElements('tbody.active-tablist tr');
		}
		else
		{
			activeTabItems = tabContainer.getElements('ul.active-tablist li');			
		}
		
		this.amountOfPages = (activeTabItems.length / this.intMaxPerPage).round();
		if(this.amountOfPages === 0 || activeTabItems.length <= this.intMaxPerPage)
		{
			this.amountOfPages = 1;
			tabContainer.tabNav.fade('out');
		}
		else
		{
			//if(this.amountOfPages === 1 && activeTabItems.length > this.intMaxPerPage)
			//{
				//this.amountOfPages++;	
				tabContainer.tabNav.fade('in');				
			//}

			tabContainer.tabCurrentPageElm.set('text', this.intCurrentPage);
			tabContainer.tabTotalPageElm.set('text', this.amountOfPages);	
		}	
				
		range = { start: this.intCurrentStart, end: ( this.intCurrentStart + this.intMaxPerPage ) };
						
		activeTabItems.each(function(activeTabItem, key)
		{
			activeTabItem.setStyle('display', 'none');
						
			if(key >= range.start && key < range.end )
			{
				activeTabItem.setStyle('display', '');
			}
		}.bind(this));		
		
		tabContainer.tabPrevButton.getElement('img').set('src', './inc/image/btn_left_grey.gif');
		tabContainer.tabNextButton.getElement('img').set('src', './inc/image/btn_right_grey.gif');
		tabContainer.tabPrevButton.removeClass('active');
		tabContainer.tabNextButton.removeClass('active');
				
		if(range.start > 0)
		{
			tabContainer.tabPrevButton.getElement('img').set('src', './inc/image/btn_left_orange.gif');			
			tabContainer.tabPrevButton.addClass('active');
		}
		
		if(this.intCurrentPage != this.amountOfPages)
		{
			tabContainer.tabNextButton.getElement('img').set('src', './inc/image/btn_right_orange.gif');			
			tabContainer.tabNextButton.addClass('active');
		}
			
		if(!this.navInit)
		{
			tabContainer.tabPrevButton.addEvent('click', function() { this.prevPage(tabContainer); return false; }.bind(this));
			tabContainer.tabNextButton.addEvent('click', function() { this.nextPage(tabContainer); return false; }.bind(this));
			this.navInit = true;
		}
	},
	
	nextPage: function(tabContainer)
	{
		if(this.intCurrentPage == this.amountOfPages) 
		{
			return;
		}
		
		this.intCurrentPage++;		
		this.intCurrentStart += this.intMaxPerPage;
					
		this.initNav(tabContainer);
	},
	
	prevPage: function(tabContainer)
	{
		if(this.intCurrentPage == 1) 
		{
			return;
		}
		
		this.intCurrentPage--;		
		this.intCurrentStart -= this.intMaxPerPage;
		
		this.initNav(tabContainer);
	}	
});

var Tabberlite = new Class(
{	
	intMaxPerPage: 4,
	intCurrentPage	: 1,
	intCurrentStart: 0,
	initialize: function(tabContainer)
	{
		if( tabContainer.getElements('ul.tabchoose').length === 0) 
		{
			return;
		}
		
		tabContainer.tabOptions = tabContainer.getElements('ul.tabchoose li a');
		tabContainer.tabLists = tabContainer.getElements('div.tabs-list div');
		
		if(tabContainer.tabLists.length === 0)
		{
			tabContainer.tabLists = tabContainer.getElements('div.tabs-list table tbody');
		}
		
		if(tabContainer.hasClass('unlimited-items')) 
		{
			this.intMaxPerPage = 1000;
			tabContainer.tabNav.setStyle('display', 'none');
		}
		
		var classRef = this;
		tabContainer.tabOptions.each(function(tabOption, id)
		{
			tabOption.attachedListClass = tabOption.href.toString().split('#');
			tabOption.attachedListClass = tabOption.attachedListClass[1];
			
			tabOption.addEvent('click', function() 
			{					
				tabContainer.tabOptions.removeClass('active');
				this.addClass('active');
				
				classRef.intCurrentPage = 1;
				classRef.intCurrentStart = 0;
				
				tabContainer.tabLists.each(function(tabList)
				{
					if(tabList.hasClass(this.attachedListClass))
					{
						tabList.addClass('active-tablist');
						tabList.setStyle('display', '');
					}
					else
					{
						tabList.removeClass('active-tablist');
						tabList.setStyle('display', 'none');
					}
					
				}.bind(this));
				return false;
			});
		});
		
		this.currentTab = 0;

		this.autoClick(tabContainer);
	},
	autoClick: function(tabContainer)
	{				
		if(tabContainer.tabOptions[this.currentTab])
			tabContainer.tabOptions[this.currentTab].fireEvent('click');		
			
		this.currentTab++;
		
		if(this.currentTab == tabContainer.tabOptions.length)
		{
			this.currentTab = 0;
		}
	}
});

/**
 * Numerical Test
 *
 * @author Edgar Post
 **/
var NumericalTest = new Class(
{
	initialize: function( userCode, register )
	{
		var flashElm = $('content').getElement('div#numerical-test');
		
		if(!flashElm) { return; }

		if(register)
		{
			var so = new SWFObject('api/numericaltest-register/code/'+userCode+'/numericaltest.swf?force=1', 'numericalTestSwf', '475', '624', '8', "#FFFFFF");
		}
		else
		{
			var so = new SWFObject('api/numericaltest/code/'+userCode+'/numericaltest.swf?force=1', 'numericalTestSwf', '485', '600', '8', "#FFFFFF");
		}

		so.addVariable('code', userCode);
		so.addVariable('user_code', userCode);			
		
		so.addVariable('baseurl', 	CONFIG.BASE_URL);
		
		so.write(flashElm);
	}
});

/**
 * undocumented class
 *
 * @author Edgar Post
 **/

var JobOpportunitiesTable = new Class(
{

	container: 		null,
	table: 			null,
	tabs0: 			null,
	tabs1: 			null,	
	
	initialize: function()
	{
	
		this.container = $('content').getElement('div.multitabs');
		
		if(!this.container) { return; }
		
		this.container.getElements('ul.multitabs-options-0,ul.multitabs-options-1').setStyle('display', 'block');
		
		this.table 			= this.container.getElement('table.job-opportunities-list');		
		this.tabs0 			= this.container.getElements('ul.multitabs-options-0 li a');
		this.tabs1 			= this.container.getElements('ul.multitabs-options-1 li a');
		this.tableSorters	= this.table.getElements('thead tr th a');
		this.jobGroups		= this.table.getElements('tbody');
		this.jobRows		= this.table.getElements('tbody tr');
		
		this.tabs0.each(function(tab)
		{
			tab.jobGroups = this.jobGroups;
			tab.jobRows = this.jobRows;
			tab.sisters = this.tabs0;
			tab.addEvent('click', this.mouseClickTab0);
			
		}.bind(this));
		
		this.tabs1.each(function(tab)
		{
			tab.jobGroups = this.jobGroups;
			tab.jobRows = this.jobRows;
			tab.sisters = this.tabs1;
			tab.addEvent('click', this.mouseClickTab1);
			
		}.bind(this));
		
		this.tableSorters.each(function(sorter)
		{
			sorter.table = this.table;
			sorter.sisters = this.tableSorters;
			sorter.addEvent('click', this.sortRows);
			
		}.bind(this));
		
		this.jobRows.each(function(row)
		{
			if( !row.hasClass('more-info') )
			{
				row.maxPerPage = this.maxPerPage;
				row.jobGroups = this.jobGroups;
				row.sisters = this.jobRows;
				row.jobGroups = this.jobGroups;
				//row.addEvent('click', this.mouseClickJobRow);
			}
			
		}.bind(this));
		
		this.tabs0[0].fireEvent('click');
		this.tabs1[0].fireEvent('click');
		this.tableSorters[0].fireEvent('click');
		
		var current = window.location.hash.split('#');
		if($chk(current[1]))
		{
			current = $$('a[href*=' + current[1] + ']')[0];
			current.fireEvent('click');
		}
	},
	
	sortRows: function()
	{		
		this.sisters.each(function(sorter)
		{
			sorter.removeClass('active');
			
			if( !sorter.arrowImg)
			{
				sorter.arrowImg = sorter.getElement('img');
			}
			
			sorter.arrowImg.setStyle('display', 'none');
		});
		
		this.addClass('active');
		
		var rows = this.table.getElements('tbody tr');
		
		if( this.orderDirection == 'asc' )
		{
			this.orderDirection = 'desc';
		}
		else
		{
			this.orderDirection = 'asc';
		}
		
		if( !this.orderBy )
		{
			this.orderBy = this.href.toString().split('#');
			this.orderBy = this.orderBy[1];
		}
		
		var columnToSort;
		switch(this.orderBy.toLowerCase())
		{
			case 'vacancy' :
				columnToSort = 0;
				break;
			case 'division' :
				columnToSort = 1;
				break;
			case 'location' :
				columnToSort = 2;
				break;
		}
		
		var newSorted = [];
		var i = 0;
		var self = this;
		rows.each(function(row)
		{
			if( !row.hasClass('more-info') )
			{
				if( !row.columns )
				{
					row.columns = row.getElements('td');
				}
				
				if( !row.moreInfo)
				{
					row.moreInfo = row.getNext();
				}
					
				currentText = row.columns[columnToSort].get('text');
				
				newSorted[i] = [currentText, row];
				i++;
			}
		});	
		
		newSorted = newSorted.sort();
		
		if( !this.arrowImg )
		{
			this.arrowImg = this.getElement('img');
		}
		
		this.arrowImg.setStyle('display', 'inline');
		
		if(this.orderDirection == 'desc')
		{
			this.arrowImg.set('src', '../image/btn-up-grey.png');
			newSorted = newSorted.reverse();
		}
		else
		{
			this.arrowImg.set('src', '../image/btn-down-grey.png');
		}
		
		newSorted.each(function(row)
		{
			row = row[1];
			row.inject(row.getParent());
			row.moreInfo.inject(row, 'after');
		});
		return false;
	},
	
	mouseClickTab0: function()
	{
		if( !this.goTo )
		{
			this.goTo = this.href.toString().split('#');
			this.goTo = this.goTo[1];
		}
		
		var self = this;
		this.jobGroups.each(function(jobGroup)
		{
			if(jobGroup.title == self.goTo || self.goTo == 'all')
			{
				jobGroup.setStyle('display', '');
			}
			else
			{
				jobGroup.setStyle('display', 'none');				
			}
		});
				
		this.sisters.each(function(tab)
		{
			tab.removeClass('active');
		});
		this.addClass('active');
	//	return false;
	},
	
	mouseClickTab1: function()
	{
		if( !this.goTo )
		{
			this.goTo = this.href.toString().split('#');
			this.goTo = this.goTo[1];
		}
		
		var self = this;
		this.jobRows.each(function(jobRow)
		{
			if(jobRow.hasClass(self.goTo) || self.goTo == 'all' && ! jobRow.hasClass('more-info'))
			{
				jobRow.setStyle('display', '');
			}
			else
			{
				jobRow.setStyle('display', 'none');				
			}
		});
		
		this.sisters.each(function(tab)
		{
			tab.removeClass('active');
		});
		this.addClass('active');
		return false;
	},
	
	mouseClickJobRow: function()
	{
		if( !this.moreInfo)
		{
			this.moreInfo = this.getNext();
		}
				
		var self = this;
		this.sisters.each(function(row)
		{		
			if( !row.hasClass('more-info') && row.getNext().hasClass('opened') )
			{
				if( !row.moreInfo)
				{
					row.moreInfo = row.getNext();
				}
				
				if(self != row)
				{
					row.opened = false;
				}
				
				row.moreInfo.removeClass('opened');
				row.moreInfo.setStyle('display', 'none');
			}
		});
		
		if(this.opened) 
		{
			this.opened = false;
			return;
		}
		
		this.opened = true;
		
		if(Browser.Engine.trident)
		{
			this.moreInfo.setStyle('display', 'block');
		}
		else
		{
			this.moreInfo.setStyle('display', 'table-row');			
		}
		
		this.moreInfo.addClass('opened');
		return false;
	}
});

