	/**
	*	Few global variables to know object states
	*/
	
	var isGoogle = false;

    function showLoading(state)
    {
        if (state == 1)
        {
			var win_size = getViewportSize();
			var fromTop = (document.documentElement.scrollTop || document.body.scrollTop);
			var fromLeft = (document.documentElement.scrollLeft || document.body.scrollLeft);
			Element.setStyle('loading', {visibility: "hidden", display: "block"});
			var dimensions = Element.getDimensions('loading');			
			var top_cord = fromTop + Math.floor(win_size[1]/2) - Math.floor(dimensions.height/2);
			var left_cord = fromLeft + Math.floor(win_size[0]/2) - Math.floor(dimensions.width/2);
            Element.setStyle('loading', {display: "block", visibility: "visible", top: top_cord+'px', left: left_cord+'px'});
        }
        else if (state == 2)
        {
            Element.setStyle('loading', {display: "none"});
        }
    }
	
	/**
    *   Returns an array of [width, height] with viewport(window) size
    */
	function getViewportSize()
	{
		var size = [0, 0];
		
		if (typeof window.innerWidth != 'undefined')
		{
			size = [
				window.innerWidth,
				window.innerHeight
			];
		}
		else if (typeof document.documentElement != 'undefined'
			&& typeof document.documentElement.clientWidth !=
	     	'undefined' && document.documentElement.clientWidth != 0)
		{
			size = [
			document.documentElement.clientWidth,
			document.documentElement.clientHeight
		   ];
		}
		else
		{
		  size = [
		   document.getElementsByTagName('body')[0].clientWidth,
		   document.getElementsByTagName('body')[0].clientHeight
		  ];
		}
	
		return size;
	}
	
	function addOnLoadEvents(func)
	{
		var oldonload = window.onload;

		if (typeof window.onload != 'function') {
			window.onload = func;
		} else {
			window.onload= function() {
				oldonload();
				func();
			}
		}
	}
	
	function clickAdvanced()
	{
		//if (Element.getStyle('advanced_form', 'display') == "block")
		if ($('advanced_form').getStyle('display') == 'block')
		{
			disableElements($('advanced_form'), 2);
			//Effect.BlindUp('advanced_form', {duration: 0.2});
			$('advanced_form').toggle();
		}
		else
		{
			disableElements($('advanced_form'), 1);
			//Effect.Toggle('advanced_form', {duration: 0.2});
			$('advanced_form').toggle();
		}
	}
	
	function disableElements(target, state)
	{
		var inputs = target.getElementsByTagName('INPUT');
		var selects = target.getElementsByTagName('SELECT');
		if (inputs.length > 0)
		{
			for(var i=0; i<inputs.length; i++)
			{
				
					if (state == 1)
						inputs[i].disabled = false;
					else
						inputs[i].disabled = true;
				
			}
		}
			
		if (selects.length > 0)
		{
			for(var i=0; i<selects.length; i++)
			{
				
				if (state == 1)
					selects[i].disabled = false;
				else
					selects[i].disabled = true;
			}
		}
		
	}
	
	function change_search_links(target)
	{
		var links = document.getElementsByClassName('active_search_links');
		if (links.length > 0)
		{
			for(var i=0; i<links.length; i++)
			{
				Element.removeClassName(links[i], 'active');
			}
		}
		if (target)
		{
			if (target.id == 'google_link')
			{
				//alert($('main_page_search_internet'));
				Element.hide('advanced_form');
				Element.hide('advanced_link');
				Element.hide('main_page_search');
				Element.setStyle('main_page_search_internet', {display: "block"});
			}
			else
			{
				Element.hide('main_page_search_internet');
				Element.show('advanced_link');
				Element.show('main_page_search');
			}
			
		}
	}
	
	function onChecklistOver(event)
	{
		var target = Event.element(event);
		if (target)
		{
			Element.setStyle(target, {background: '#777777', color: '#ffffff'});
		}
	}
	
	function onChecklistOut(event)
	{
		var target = Event.element(event);
		if (target)
		{
			Element.setStyle(target, {background: '#FFFFFF', color: '#000000'});
		}
	}
	
	function initChecklist() 
	{
		if (document.all && document.getElementById) 
		{
			var lists = document.getElementsByClassName('checklist');
			for(var i=0; i<lists.length; i++)
			{
				var labels = lists[i].getElementsByTagName('LABEL');
				for(var j=0; j<labels.length; j++)
				{
					Event.observe(labels[j], 'mouseover', onChecklistOver );
					Event.observe(labels[j], 'mouseout', onChecklistOut );
				}
			}
		}
	}
	
	addOnLoadEvents(initChecklist);
	
	function limit_text(target, limit)
	{
		if (typeof target.value != "undefined")
		{
			if (target.value.length > limit)
			{
				target.value = target.value.substr(0, limit);
			}
		}
	}
	
	function addNumber(start)
	{
		var i = start;
		var phones = $('phones');
		if (phones && options)
		{
			i++;
			var line = '<div id="phone'+i+'">'
			+'+ <input type="text" name="data[CompanyPhone]['+ i +'][country_code]" style="width: 60px;" />'
			+' - <input type="text" name="data[CompanyPhone]['+ i +'][city_code]" style="width: 60px;" />'
			+' - <input type="text" name="data[CompanyPhone]['+ i +'][number]" style="width: 120px;" />'
			+' <select name="data[CompanyPhone]['+ i +'][type]" style="width: 100px;">';
			for (var j=1; j<options.length; j++)
			{
				line += '<option value="'+ j +'">'+ options[j] +'</option>';
			}
			line += '</select></div>';
			new Insertion.Bottom(phones, line);
		}
	}
	
	function changeLocation(target)
	{
		if (typeof target.value != "undefined")
		{
			if (target.value != "")
			{
				document.location.href = target.value;
			}
		}
	}
	
	function debug(text)
	{
		var debug = $('debug');
		if (debug)
		{
			debug.innerHTML = text +'<br />'+ debug.innerHTML;
		}
		else
		{
			new Insertion.Top(document.body, '<div id="debug" style="z-index: 100000; background: #FFFFFF; border: solid 1px #000000; width: 300px; height: 300px; position: absolute; right: 50px; top: 100px; overflow: auto;"></div>');
		}
	}
	
	function form_hover_action()
	{
		var inputs = $$('.form_hover');
			for (var i=0; i<inputs.length; i++)
			{
				Event.observe(inputs[i], 'focus', 
					function(event) 
					{ 
						var others = $$('.form_hover_other');
						for(var i=0; i<others.length; i++)
						{
							others[i].tabIndex = "-1";
						}
					});
			}
	}
	
	var total_selected_categories = $H();
	function limit_categories(target)
	{
		if (target.checked == true)
		{
			total_selected_categories[target.id] = "1";
		}
		else if (target.checked == false)
		{
			total_selected_categories.remove(target.id);
		}
		var count = total_selected_categories.keys();
		
		if (count.length > 10)
		{
			Element.show('category_warning');
		}
		else
		{
			Element.hide('category_warning');
		}
	}
	
	// for tricked out language select
	var CustomSelect = Class.create();
	/**
	*	Controls the behaviour of the "droplist"
	*/
	
	CustomSelect.prototype = {
		initialize: function(element)
		{
			this.element = $(element);
			this.eventClick = this.elementClick.bindAsEventListener(this);
			this.eventOver = this.elementOver.bindAsEventListener(this);
			this.eventOut = this.elementOut.bindAsEventListener(this);
			if (this.element)
			{
				var lis = this.element.getElementsByTagName('LI');
				for (var i=0; i<lis.length; i++)
				{
					Event.observe(lis[i], "click", this.eventClick);
					Event.observe(lis[i], "mouseover", this.eventOver);
					Event.observe(lis[i], "mouseout", this.eventOut);
				}
			}
		},
		
		elementClick: function(event)
		{
			var target = Event.element(event);
			if (Element.hasClassName(target, 'selected'))
			{
				if (Element.hasClassName(target.parentNode, 'selectOpen'))
				{
					Element.removeClassName(target, 'selected');
					Element.removeClassName(target.parentNode, 'selectOpen');
				}
				else
				{
					Element.addClassName(target, 'selected');
					Element.addClassName(target.parentNode, 'selectOpen');
				}
			}
			else
			{
				var lis = target.parentNode.getElementsByTagName('LI');
				for (var i=0; i<lis.length; i++)
				{
					lis[i].className = '';
				}
				Element.addClassName(target, 'selected');
				Element.removeClassName(target.parentNode, 'selectOpen');
			}
			Event.observe(document, "mousedown", this.listClose.bindAsEventListener(this));
		},
		
		elementOver: function(event)
		{
			var target = Event.element(event);
			Element.addClassName(target, 'hover');
		},
		
		elementOut: function(event)
		{
			var target = Event.element(event);
			Element.removeClassName(target, 'hover');
		},
		
		listClose: function(event)
		{
			var cords = [Event.pointerX(event), Event.pointerY(event)];
			if (Position.within(this.element, cords[0], cords[1]))
			{
				if(Event.element(event).tagName == "A")
				{
					Event.stopObserving(document, "mousedown", this.listClose);
					//var close = this.listClose.bindAsEventListener(this);
					//setTimeout(close, 100);
				}
				else
				{
					Element.removeClassName(this.element, 'selectOpen');
				}
			}
			else
			{
				if (Element.descendantOf(Event.element(event), this.element))
				{
					if (Event.element(event).tagName != "A")
					{
						Event.stopObserving(document, "mousedown", this.listClose);
						Element.removeClassName(this.element, 'selectOpen');
					}
				}
				else
				{
					Event.stopObserving(document, "mousedown", this.listClose);
					Element.removeClassName(this.element, 'selectOpen');
				}
			}			
		}
	};

	function showLanguages()
	{
		var language = new CustomSelect('languages');
	}
	addOnLoadEvents(showLanguages);