function sleep(delay) { var start = new Date().getTime(); while (new Date().getTime() < start + delay); }
function is_ie6() { return ($.browser.msie && $.browser.version=="6.0") }
function report_link(el) { window.open($(el).attr('rel')); }

var rtl = false;

$(function(){
	
	rtl = $('body').hasClass('rtl');
	
	setTimeout('Customs.bindEvents();',200);

	Customs.handleTypography();
	/*Customs.menuButtons();*/
	Customs.fixButtons();
	
	Customs.fixFooter();
	
	$('form input[type=submit], form button[type=submit]').removeAttr('disabled');
	$('form').bind('submit',function(event) {
		$('input[type=submit], button[type=submit]', this).attr('disabled','disabled').css('opacity','0.5');
	});

});

Customs = function () {
	var that = {};
	
	var lang_timer;
	var nav_timer;

	that.fixFooter = function () {
		$("#sitemap .stacked ul.menu li.expanded").each(function () {
			var el = $("a:first",this);
			if(el.outerHeight() > 20) {
				// Fix #3806
				el.html(el.html().replace(" ", "<br>"));
				el.css({'margin-top' : '-5px', 'z-index': '100', 'position': 'relative' , 'font-size' : '70%' , 'height': '20px'});
			}
		});
	}
	
	that.fixButtons = function () {

		$(".buttons").removeClass("buttons").addClass("ubutton");
	
		// Rewrite to green
		$(".ubutton .b36").removeClass("b36").addClass("blue");
		$(".ubutton .b32").removeClass("b32").addClass("blue");
		// Rewrite to white		
		$(".ubutton .orange").removeClass("orange").addClass("gray2");
		$(".ubutton .yellow").removeClass("yellow").addClass("white");
	
		// Buttons
		$(".ubutton a, .ubutton button").each(function () {
			
			var path = '/sites/all/themes/webtrader/images/buttons/';
			
			var color = 'blue';
			
			if($(this).hasClass('green')) color = 'green';
			if($(this).hasClass('green2')) color = 'green2';
			if($(this).hasClass('blue2')) color = 'blue2';
			if($(this).hasClass('gray2')) color = 'gray2';
			
			var eliptic = false;
			if($(this).hasClass('eliptic')) eliptic = true;

			var normal_filename = path + color + (eliptic ? '2' : '') + '.png'; 
			var hover_filename = path + color + (eliptic ? '2' : '') + '-over.png';
			
			$(this).css('background-image', 'url("' + normal_filename + '")');
			
			var k = Array();
			$(this).parents().each(function () { 
				if($(this).css('display') == 'none') {
					k.push(this);
					$(this).css('display', 'block').css('visibility','hidden');
				}
			});
			
			var text_width = $(this).outerWidth();
			
			
			
			if (is_ie6()) {
				text_width += 36;
			}
			
			if(k) {
				for(z in k) {
					$(k[z]).css('display', 'none').css('visibility','visible');
				}
			}
			
			/* Too much toying around with widths, should be ok for now, refactor later */
			
			var bg_position = (Math.round((text_width) / 36)) * 36;
			
			var id = $(this).attr('id');
			
			if(id === 'login-block-submit') {
				bg_position = 36;
			}
			
			if(color == 'blue2' || color == 'gray2') {
				bg_position = bg_position - 72;
				$(this).css('width', bg_position + 144);
			} else {
				$(this).css('width', bg_position + 82);
			}
			
			if(color == 'green2') {
				$(this).css('width', 144)
				bg_position = 0;
			}
			
			$(this).css('background-position', (rtl ? '100%' : '0px') + ' -' + bg_position + 'px');
			
		     
			$(this).hover(function () {
				$(this).css('background-image', 'url("' + hover_filename + '")');
			}, function () {
				$(this).css('background-image', 'url("' + normal_filename + '")');
			});
			
			if(is_ie6()) DD_belatedPNG.fixPng(this);
			
		});
	}
	
	// Timer for hiding lang dropdown
	that.lang_hide = function () {
		$("#lang-dropdown").hide();
	}
	that.nav_hide = function () {
		$("#nav ul li ul").hide();
		$("#nav ul li a").removeClass('hover');
	}

	that.handleTypography = function () {

		$("#google-search-form").submit(function () {
			if($("#google-search-form-hidden").size() > 0)
			{
			    $(".gsc-input").attr("value", $("#edit-search-input").attr("value"));
			    $(".gsc-search-button").click();
				return false;
			}
		});
		
		$("#edit-search-submit").click(function (e) {
			if($("#google-search-form-hidden").size() > 0) {
				e.preventDefault();
				$(".gsc-input").attr("value", $("#edit-search-input").attr("value"));
				$(".gsc-search-button").click();
			}
		});

		// Init timer, 4 sec
		$("#lang-dropdown").mouseenter(function () {
			clearTimeout(lang_timer);
		}).mouseleave(function () {
			lang_timer = setTimeout("Customs.lang_hide()", 4000);
		});
		
		$(".trading-products-link").wrap('<div class="trading-products-link-wrap"></div>');

	}
	
	that.bindEvents = function () {
		
		$("legend").wrap('<div class="legend_wrap"></div>');
		$("input.error").prev().addClass('error');
		$("select.error").parent().find('label').addClass('error');
		
		$(".cvv2-preview").append('<span class="cvv2-tooltip"></span>').hover(function () {
			$(".cvv2-tooltip").show();
		}, function () {
			$(".cvv2-tooltip").hide();
		});
		
		
		// Clicking outside lang select / login or pressing ESC to hide dropdowns
		$(document).click(function (e) {
	
			if($(e.target).parents(".langsel").size() == 0)	{
				$("#lang-dropdown").hide(); 
				$('#langbtn').css('visibility','visible');
			}
	
			if($(e.target).parents(".login").size() == 0)	{
				$("#login-dropdown").hide();
				$(".login p").css('visibility','visible');
			}
			
			if($(e.target).parents("#chart_instruments_title").size() == 0)	{
				$("#chart_instruments_dropdown").hide();
			}

		}).keypress(function(e) {
			 var kC = (window.event) ? event.keyCode : e.keyCode;
		     if(kC == 27) {
		    	 $("#lang-dropdown, #login-dropdown").hide(); 
				 $("#langbtn, .login p").css('visibility','visible');
				 $("#chart_instruments_dropdown").hide();
				 
		     }
		});
		
		
		$('#logbtn').click(function (e) {
		
			$("#login-dropdown").toggle();
	    	e.preventDefault();
	
		});
		
		$('#login-email').focus(function () { $(this).select(); });
		
		// Lang Nav
		$('#lang-dropdown ul').prepend('<li class="first"></li>').append('<li class="last"></li>');
		$('#lang-dropdown').prepend('<span id="lang-dropdown-arrow"></span>');
		$('#lang-dropdown-arrow').click(function () { $("#lang-dropdown").hide(); $('#langbtn').css('visibility','visible'); });
		$('#langbtn').click(function (e) { e.preventDefault(); $("#lang-dropdown").show(); });
		
		// Main Nav
		
		$('#nav ul li ul').each(function () {
			$("li:first", this).css("border","none");
		});
		
		
		$('#nav a').attr("title", "");
		
		$('#nav ul li.expanded').mouseenter(function () {
			
			clearTimeout(nav_timer);
			
			$("#nav ul li ul").hide();
			$("#nav ul li a").removeClass('hover');
			
			$("a:first", this).addClass('hover');
			$("ul", this).show();
			
		}).mouseleave(function () {
			
			nav_timer = setTimeout("Customs.nav_hide()", 3000);
			
		});
		
		// Tabbed Boxes
		$("#hp_main .hp_tabs li").click(function (e) {
			
			$(".hp_tabs li").removeClass("current");
			$(this).addClass("current");
			var classname = $(this).attr('className').replace(" current" , "").replace("hp_tab_", "");
			$(".hp_content").removeClass("current");
			$(".hp_content_" + classname).addClass("current");
			
		});
		
		// Tables 
		$(".content table").each(function () {
			
			var odd = true;
			
			$("tr", this).each(function () {
				$("td:first, th:first", this).css("border-left","none");
				$("td:last, th:last", this).css("border-right","none");
				
				$("td:odd",this).addClass("odd");
				if(odd) $(this).addClass("odd");
				odd = !odd;
			});
			
		});
		
		$("#faq-list .faq-item h3").click(function () {
			$(this).parent().find(".faq-inner").toggle();			
		}).hover(function () {
			$(this).addClass('over');
		}, function () {
			$(this).removeClass('over');
		});
		
		$('.content form .help').live('mouseover',function() { $(this).addClass('hover-help'); $(this).attr('title',''); }).live('mouseout', function() { $(this).removeClass('hover-help'); });
	}

	that.temp = {};
	
	return that;
}();
