/**
*  Created by Edgar Post [edgar@mediamonks.com] on 2008-06-10.
*  Copyright (c) 2008 MediaMonks. All rights reserved.
*/

var CONFIG =
{
	BASE_URL: 'http://www.optiver.com/',
	IMAGE_DIR: 'data/navigation/',
	NAVIGATION: 
	{
		BG_IMG: 'bg-navigation-main-item.png',
		BG_IMG_HOVER: 'bg-navigation-main-item-hover.png'
	}
};

function copyValue(strValue)
{
	document.getElementById('fakecvinput').value = strValue;
}

/**
 * undocumented class
 *
 * @author Edgar Post
 **/
var AjaxForm = new Class(
{
	initialize: function(form)
	{
		form.inputs 	= form.getElements('input');
		form.textareas 	= form.getElements('textarea');
			
		form.set('send', 
		{
			onComplete: function()
			{
				var response = JSON.decode(this.response.text);
				var succesHeader;
				
				if(response.success)
				{
					succesHeader = new Element('h2').set('text', 'Thank You').inject(this.options.data, 'before');
					succesHeader = new Element('p').set('text', response.success).inject(this.options.data, 'before');
					this.options.data.dispose();
					return;
				}
				
				for(var fieldName in response)
				{
					if($(fieldName))
					{
						$(fieldName).getParent().addClass('error');
					}
				}	
			}
		});
			
		form.onsubmit = function()
		{
			$extend(this.inputs, this.textareas);
				
			this.inputs.each(function(input)
			{
				input.getParent().removeClass('error');
			});
			
			this.send();
			
			return false;
		};
	}
});

function insertKey(argField)
{	
	$(argField).value = 'aNtIsPaMkEy!!11';
}

/**
 * undocumented class
 *
 * @author Edgar Post
 **/
var NavLeft = new Class(
{
	initialize: function()
	{
		if(!$('content').getElement('ul.leftmenu'))
		{
			return;
		}
		
		var objMenu = $('content').getElement('ul.leftmenu');
		var objMenuItems = objMenu.getElements('li.has-submenu');
		
		objMenuItems.each(function(objMenuItem)
		{
			objMenuItem.subMenu = objMenuItem.getElement('ul');
			objMenuItem.subMenuHeight = objMenuItem.subMenu.getSize().y;
			objMenuItem.setStyle('height', '30px');			
						
			objMenuItem.animSub = new Fx.Tween(objMenuItem,{duration:150});
			objMenuItem.opened = false;
			objMenuItem.getElement('a').addEvent('click', function()
			{
				switch(this.getParent().opened) 
				{
					case true :		
						this.getParent().animSub.start('height', 30);						
						this.getParent().opened = false;					
						break;
						
					case false :			
						this.getParent().animSub.start('height', (this.getParent().subMenuHeight+30)+'px');					
						this.getParent().opened = true;					
						break;
				}
				if(this.getParent().hasClass('has-submenu'))
				{
					return false;
				}
			});
			
			if(objMenuItem.subMenu.getElements('a.active').length > 0)
			{
				objMenuItem.getElement('a').fireEvent('click');
			}
		});
	}
});

/**
 * 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;
	}
});

/**
 * undocumented class
 *
 * @author Edgar Post
 **/
var NavTop = new Class(
{	
	startY				: 0,
	incrementY			: 35,
	
	initialize: function()
	{				
		var i = 0;
		$$('ul.level0 li a').each(function(node)
		{
			node.nodeParent = node.getParent();
			level = node.nodeParent.getParent().className;
						
			switch(level)
			{
				case 'level0' :
				
					this.setupItem0(node, this, i);
					
					node.nodeParent.addEvents(
					{
						'mouseenter': this.mouseOver0,
						'mouseleave': this.mouseOut0
					});
					
					i++;
					
					break;
					
				case 'level1' :
				
					this.setupItem1(node, this);
					
					node.nodeParent.addEvents(
					{
						'mouseenter': this.mouseOver1,
						'mouseleave': this.mouseOut1
					});	
					
					node.addEvents(
					{
						'click': this.mouseClick1
					});	
					
					break;
			}
			
		}.bind(this));
		
		$('header').getElement('div.navigation-main ul').setStyle('visibility', 'visible');
	},
	
	setupItem0: function(node, classRef, i)
	{			
		node.setStyles(
		{
			'background-image'			: 'url('+CONFIG.IMAGE_DIR+CONFIG.NAVIGATION.BG_IMG+')',
			'background-position'		: 'left '+( classRef.startY - 8 )+'px'
		});
		
		node.getElement('span').dispose();
			
		var elmLi;			
		if(node.getParent().getElement('ul'))
		{
			node.addClass('has-submenu');
			
			submenu = node.getParent().getElement('ul');
									
			if(Browser.Engine.trident)
			{
				submenuWidth = submenu.getParent().getSize().x + 10;
				
				submenu.getElements('li a').each(function(subitem)
				{
					subitem.setStyle('width', submenuWidth);
				});
				
				submenu.setStyle('margin-left', -node.getParent().getSize().x);
			}
			
			submenu.setStyle('display', 'none');
				
			elmLi = new Element('li').addClass('last-border').injectInside(node.getParent().getElement('ul'));
		}
		
		node.hasSubmenu = $chk( node.getParent().getElement('ul') );
		
		node.backgroundYPos = classRef.startY;
		node.activeItem = false;
			
		classRef.startY -= classRef.incrementY;
	},
	
	mouseOver0: function()
	{	
		if(this.activeItem) { return; }
		this.activeItem = true;
		
		if(!this._href)
		{
			this._href = this.getElement('a');
		}
		
		this.toggleClass('hover');
		
		this._href.setStyles(
		{
			'background-image'			: 'url('+CONFIG.IMAGE_DIR+CONFIG.NAVIGATION.BG_IMG_HOVER+')',
			'background-position'		: 'left '+( this._href.backgroundYPos + 1 )+'px'
		});
		
		if(this._href.hasSubmenu)
		{
			if(!this.submenu)
			{
				this.submenu = this.getElement('ul');
			}
			
			this.submenu.setStyle('display', 'block');
		}
	},
	
	mouseOut0: function()
	{
		if( !this.activeItem) { return; }
		this.activeItem = false;
		
		if(!this._href)
		{
			this._href = this.getElement('a');
		}
		
		this.toggleClass('hover');
		
		this._href.setStyles(
		{
			'background-image'			: 'url('+CONFIG.IMAGE_DIR+CONFIG.NAVIGATION.BG_IMG+')',
			'background-position'		: 'left '+( this._href.backgroundYPos - 8 )+'px'
		});
		
		if(this._href.hasSubmenu)
		{
			if(!this.submenu)
			{
				this.submenu = this.getElement('ul');
			}
			
			this.submenu.setStyle('display', 'none');
		}
	},
	
	setupItem1: function(node, classRef)
	{
		if(node.getParent().getElement('ul'))
		{
			submenu = node.getParent().getElement('ul');
		}
		node.hasSubmenu = $chk( node.getParent().getElement('ul') );
	},
	
	mouseOver1: function()
	{
		if(this == this.getParent().getLast().getPrevious())
		{
			this.getParent().getElement('li.last-border').setStyle('background-color', '#ef4a26');
		}	
	},
	
	mouseOut1: function()
	{
		this.getParent().getElement('li.last-border').setStyle('background-color', '#262626');
	},
	
	mouseClick1: function()
	{		
		if(this.hasSubmenu)
		{
			if(!this.nodeParent.submenu)
			{
				this.nodeParent.submenu = this.nodeParent.getElement('ul');
			}
			
			if(!this.nodeParent.submenuHeight)
			{
				this.nodeParent.submenuHeight = this.nodeParent.submenu.getSize().y;
			}
			
			if(!this.nodeParent.animSub)
			{
				this.nodeParent.animSub = new Fx.Tween(this.nodeParent,{duration:300});
			}
			
			if(this.nodeParent.submenuHeight == this.nodeParent.getStyle('padding-bottom').toInt())
			{
				this.toggleClass('active');
				this.nodeParent.animSub.start('padding-bottom', 0);			
			}
			else
			{
				this.toggleClass('active');
				this.nodeParent.animSub.start('padding-bottom', this.nodeParent.submenuHeight);							
			}
			
			return false;
		}
	}
});

/**
 * undocumented class
 *
 * @author Edgar Post
 **/
var Tabber = new Class(
{	
	maxPerPage	: 3,
	currentPage	: 1,
	currentStart: 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 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.maxPerPage = 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.currentPage = 1;
				classRef.currentStart = 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.maxPerPage).round();
		if(this.amountOfPages === 0 || activeTabItems.length <= this.maxPerPage)
		{
			this.amountOfPages = 1;
			tabContainer.tabNav.fade('out');
		}
		else
		{
			if(this.amountOfPages === 1 && activeTabItems.length > this.maxPerPage)
			{
				this.amountOfPages++;	
				tabContainer.tabNav.fade('in');				
			}

			tabContainer.tabCurrentPageElm.set('text', this.currentPage);
			tabContainer.tabTotalPageElm.set('text', this.amountOfPages);	
		}	
				
		range = { start: this.currentStart, end: ( this.currentStart + this.maxPerPage ) };
						
		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', 'image/btn-left-grey.gif');
		tabContainer.tabNextButton.getElement('img').set('src', 'image/btn-right-grey.gif');
		tabContainer.tabPrevButton.removeClass('active');
		tabContainer.tabNextButton.removeClass('active');
				
		if(range.start > 0)
		{
			tabContainer.tabPrevButton.getElement('img').set('src', 'image/btn-left-orange.gif');			
			tabContainer.tabPrevButton.addClass('active');
		}
		
		if(this.currentPage != this.amountOfPages)
		{
			tabContainer.tabNextButton.getElement('img').set('src', '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.currentPage == this.amountOfPages) 
		{
			return;
		}
		
		this.currentPage++;
		
		this.currentStart += this.maxPerPage;
			
		this.initNav(tabContainer);
	},
	
	prevPage: function(tabContainer)
	{
		if(this.currentPage == 1) 
		{
			return;
		}
		
		this.currentPage--;
		
		this.currentStart -= this.maxPerPage;
		
		this.initNav(tabContainer);
	}	
});

/**
 * undocumented class
 *
 * @author Edgar Post
 **/
var ExchangesAndProducts = new Class(
{
	initialize: function()
	{
		$('content').getElements('ul.exchanges-products').each(function(container)
		{
			this.setAccordion(container);
			
		}.bind(this));
	},
	
	setAccordion: function(container)
	{
		container.getElements('a').each(function(item)
		{
			item.subContainer = item.getParent().getParent().getParent();
			
			item.subList = item.subContainer.getElement('ol');
			
			item.subList.setStyle('display', 'none');
					
			item.addEvent('click', function()
			{								
				if(this.subList.getStyle('display') == 'block')
				{
					this.subContainer.getElement('img').setProperty('src', 'image/btn-right-grey.gif');
					this.subContainer.removeClass('active');
					this.subContainer.getElement('a').removeClass('active');
					this.subList.getElements('ol').setStyle('display', 'none');
					this.subList.setStyle('display', 'none');
				}
				else
				{
					this.subContainer.getElement('img').setProperty('src', 'image/btn-down-grey.png');
					this.subContainer.addClass('active');
					this.subContainer.getElement('a').addClass('active');
					this.subList.setStyle('display', 'block');					
				}
				return false;
			});
		});
	}
});

/**
 * undocumented class
 *
 * @author Edgar Post
 **/
var LanguageSelect = new Class(
{
	initialize: function()
	{
		var clicker = $('header').getElement('li.language-select');
		var list = $('header').getElement('li.language-select ul');
		
		list.fade('hide');
		
		clicker.addEvent('click', function()
		{
			list.fade('toggle');
		});
	}
});

/**
 * undocumented class
 *
 * @author Edgar Post
 **/
var Search = new Class(
{
	initialize: function()
	{
		var inputHeader = $('search-keyword');
		var inputResults = $('search-results-keyword');
				
		inputHeader.addEvents(
		{
			'keyup': function()
			{
				if(inputResults)
				{
					inputResults.value = this.value;
				}
			},
			'focus': function()
			{
				this.setStyle('background', 'transparent');
			},
			'blur': function()
			{
				if( ! $chk(this.value) )
				{
					this.setStyle('background', 'transparent url(../../image/bg-searchinput-defaultvalue.png) no-repeat top left');					
				}
			}
		});
		
		if(inputResults)
		{
			inputHeader.value = inputResults.value;
			inputHeader.setStyle('background', 'transparent');
			
			inputResults.addEvents(
			{
				'keyup': function()
				{
					inputHeader.value = this.value;
				}
			});
		}
	}
});

/**
 * undocumented class
 *
 * @author Edgar Post
 **/
var SendAFriend = new Class(
{
	initialize: function()
	{
		if(!$('content').getElement('form.send-a-friend'))
		{
			return;
		}
		else
		{
			$('content').getElement('form.send-a-friend').getElements('input').each(function(input)
			{
				input.standardValue = input.value;
				input.addEvents(
				{
					'focus': function()
					{
						if(this.value == this.standardValue)
						{
							this.value = '';
						}
					},
					'blur': function()
					{
						if(this.value === '')
						{
							this.value = this.standardValue;
						}
					}
				});
			});
		}
	}
});

/**
 * undocumented class
 *
 * @author Edgar Post
 **/
var Pushbox = new Class(
{
	initialize: function(page_id)
	{
		var flashElm = $('content').getElement('div.pushbox');
	
		if(!flashElm) { return; }
		
		var so = new SWFObject('inc/swf/pushbox_loader.swf', 'pushboxSwf', '725', '305', '8', "#262626");
		so.addVariable('baseurl', 	CONFIG.BASE_URL);
		so.addVariable('page_id', page_id);
		so.addParam('wmode', 'opaque');
		so.addParam('allowScriptAccess', 'always');
		so.write(flashElm);
	}
});

/**
 * undocumented class
 *
 * @author Edgar Post
 **/
var PushboxAu = new Class(
{
	initialize: function(page_id)
	{
		var flashElm = $('content').getElement('div.pushbox');
	
		if(!flashElm) { return; }
		
		var so = new SWFObject('pushbox_loader.swf', 'pushboxSwf', '725', '305', '8', "#262626");
		so.addVariable('baseurl', 	CONFIG.BASE_URL);
		so.addVariable('page_id', page_id);
		so.addParam('wmode', 'opaque');
		so.addParam('allowScriptAccess', 'always');
		so.write(flashElm);
	}
});

/**
 * 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 GoogleMaps = new Class(
{
	objMap				: null,
	objDirections		: null,
	objMarkerLang		: null,
	objMarkerLong		: null,
	google				:
	{
		maps			: null,
		directions		: null,
		zoom			: 16,
		marker			: null
	},
	directions			:
	{
		from			: null,
		to				: null
	},
	
	initialize: function( strLocation, intLangtitude, intLongtitude )
	{
		this.directions.to	 	= strLocation;
		this.objMarkerLang	 	= intLangtitude;
		this.objMarkerLong	 	= intLongtitude;
		this.objMap 			= $('gmaps-map');
		this.objDirections 		= $('gmaps-directions');
		this.directions.form	= $('gmaps-form');
		
		this.setFormEvent();
		this.loadMaps();
	},
	
	setFormEvent: function()
	{
		this.directions.form.onsubmit = function()
		{
			this.getDirections();
			return false;
		}.bind(this);
	},	
	
	loadMaps: function()
	{
		this.google.map = new GMap2(this.objMap);
		this.google.center = new GLatLng(this.objMarkerLang, this.objMarkerLong);
		this.google.map.setCenter(this.google.center, this.google.zoom);
		this.google.map.addControl(new GSmallMapControl());			
		this.google.map.addOverlay(new GMarker(this.google.center));
		this.google.directions = new GDirections(this.google.map, this.objDirections);   				 
		GEvent.addListener(this.google.directions, "error", this.handleError);
	},
	
	getDirections: function()
	{
		this.objDirections.set('html', '');
		this.directions.from = $('from').value;
		
		if(this.directions.from === '')
		{
			return alert( 'Please enter your location.' );
		}
		
      	this.google.directions.load(this.directions.from+" to "+this.directions.to);
	},
	
	handleError: function()
	{
		switch(this.getStatus().code)
		{
			case G_GEO_SUCCESS :
				break;
				
			case G_GEO_UNKNOWN_ADDRESS :
				alert( 'Given address could not be found. Please try to be more specific.' );
				break;
				
			case G_GEO_BAD_REQUEST :
				alert( '(1) Could not request to Google Maps server. Please try again later.' );
				break;
			case G_GEO_SERVER_ERROR :
				alert( '(2) Could not request to Google Maps server. Please try again later.' );
				break;
			case G_GEO_BAD_KEY :
				alert( '(3) Could not request to Google Maps server. Please try again later.' );
				break;
			case G_GEO_TOO_MANY_QUERIES :
				alert( '(4) Could not request to Google Maps server. Please try again later.' );
				break;
				
			case G_GEO_MISSING_QUERY :
				alert( 'Please enter your location.' );
				break;
				
			case G_GEO_UNAVAILABLE_ADDRESS :
				alert( 'Given address is unavailable.' );
				break;
				
			case G_GEO_UNKNOWN_DIRECTIONS :
				alert( 'Could not determine directions. Please try it from another location.' );				
				break;
		}
	}
});

/**
 * undocumented class
 *
 * @author Edgar Post
 **/
var NewsTicker = new Class(
{
	currentItem		: 1,
	objContainer	: null,
	objItems		: null,
	intTime			: 5000,
	
	initialize: function()
	{
		this.objContainer = $('content').getElement('div.newsheadline');
		if(!this.objContainer) { return; }
		
		this.objContainer.objDate 	= this.objContainer.getElement('p span');
		this.objContainer.objTitle 	= this.objContainer.getElement('p a');
		
		var self = this;
		var jsonRequest = new Request.JSON(
		{
			url: 'api/news/', 
			onComplete: function()
			{
				self.objItems = this.response.json;
				if(self.objItems.length > 1)
				{
					self.loop.delay(self.intTime, self);
				}
			}
		}).get({});
	},
	loop: function()
	{
		this.objContainer.objTitle.fade('hide');
		
		this.objContainer.objDate.set('text', this.objItems[this.currentItem].date);
		this.objContainer.objTitle.set('text', this.objItems[this.currentItem].title);
		this.objContainer.objTitle.set('href', this.objItems[this.currentItem].url);
		
		this.objContainer.objTitle.fade('in');
		
		this.currentItem++;
		
		if(this.currentItem == this.objItems.length)
		{
			this.currentItem = 0;
		}
		
		this.loop.delay(this.intTime, this);
	}
});


/**
 * undocumented class
 *
 * @author Edgar Post
 **/
var FactsTicker = new Class(
{
	currentItem		: 1,
	objContainer	: null,
	objItems		: null,
	intTime			: 5000,
	
	initialize: function()
	{
		this.objContainer = $('content').getElement('div.factsticker');
		if(!this.objContainer) { return; }
		
		this.objContainer.objTitle 	= this.objContainer.getElement('p a');
		
		var self = this;
		var jsonRequest = new Request.JSON(
		{
			url: 'api/facts/', 
			onComplete: function()
			{
				self.objItems = this.response.json;
				if(self.objItems.length > 1)
				{
					self.loop.delay(self.intTime, self);
				}
			}
		}).get({});
	},
	loop: function()
	{
		this.objContainer.objTitle.fade('hide');
		
		this.objContainer.objTitle.set('text', this.objItems[this.currentItem].title);
		
		this.objContainer.objTitle.fade('in');
		
		this.currentItem++;
		
		if(this.currentItem == this.objItems.length)
		{
			this.currentItem = 0;
		}
		
		this.loop.delay(this.intTime, this);
	}
});

window.addEvent('domready', function()
{
	var baseHref = $(document.head).getElement('base');
	CONFIG.BASE_URL = baseHref.href;
	
	if($('header').getElement('div.navigation-main'))
	{
		var objNavTop = new NavTop();
		var objSearch = new Search();
	}
	
	var objNavLeft = new NavLeft();
	var objJobOpportunitiesTable = new JobOpportunitiesTable();	
	var objSendAFriend = new SendAFriend();	
	var objNewsTicker = new FactsTicker();
	//var objNewsTicker = new NewsTicker();
	
	var objTabber;
	$('content').getElements('div.tabs').each(function(tabContainer)
	{
		objTabber = new Tabber(tabContainer);		
	});
	
	var objForm;
	$('content').getElements('form.ajax-enabled').each(function(form)
	{
		objForm = new AjaxForm(form);
	});
		
	var objExchangesAndProducts = new  ExchangesAndProducts();
});
