
	function changeLocation(locationFinder, locationTarget) {
		var value = locationFinder.options[locationFinder.selectedIndex].value;
		if(value=='en'){
			window.location = "/" + locationTarget + ".html";
		}else if(value=='de'){
			if(locationTarget == 'index'){
				window.location = "/de/spreads/" + locationTarget + ".html";
			}else{
				window.location = "/de/" + locationTarget + ".html";
			}
		}
	}


		var downColor = 'eb3c21';
		var upColor = '53ba23';

	function popup(url, optionalWidth, optionalHeight)
     {
		var height = 520;
		var width = 1010;
		if (optionalWidth) {
			width = optionalWidth;
		}
		if (optionalHeight) {
			height = optionalHeight;
		}
         var infoWindow = window.open(url, 'betfairWin', 'width=' + width + ',height=' + height + ',toolbar=0,resizable=0,scrollbars=1, status=1, menubar=0');
         if (window.focus)
         {
             infoWindow.focus();
         }
         return false;
     }


	var toggleMenu = {
		init : function(sContainerClass, sHiddenClass) {
			if (!document.getElementById || !document.createTextNode) {return;} // Check for DOM support
			var arrMenus = this.getElementsByClassName(document, 'ul', sContainerClass);
			var arrSubMenus, oSubMenu, oLink;
			for (var i = 0; i < arrMenus.length; i++) {
				arrSubMenus = arrMenus[i].getElementsByTagName('ul');
				for (var j = 0; j < arrSubMenus.length; j++) {
					oSubMenu = arrSubMenus[j];
					oLink = oSubMenu.parentNode.getElementsByTagName('a')[0];
					oLink.onclick = function(){
						toggleMenu.toggle(this.parentNode.getElementsByTagName('ul')[0], sHiddenClass); 
					    	return false;
					}
					// this.toggle(oSubMenu, sHiddenClass);
				}
			}
		},
		toggle : function(el, sHiddenClass) {
			var oRegExp = new RegExp("(^|\\s)" + sHiddenClass + "(\\s|$)");
			el.className = (oRegExp.test(el.className)) ? el.className.replace(oRegExp, '') : el.className + ' ' + sHiddenClass; // Add or remove the class name that hides the element
		},
		addEvent : function(obj, type, fn) {
			if (obj.addEventListener)
				obj.addEventListener(type, fn, false);
			else if (obj.attachEvent) {
				obj["e"+type+fn] = fn;
				obj[type+fn] = function() {obj["e"+type+fn](window.event);}
				obj.attachEvent("on"+type, obj[type+fn]);
			}
		},

		getElementsByClassName : function(oElm, strTagName, strClassName){
		    var arrElements = (strTagName == "*" && document.all)? document.all : oElm.getElementsByTagName(strTagName);
		    var arrReturnElements = new Array();
		    strClassName = strClassName.replace(/\-/g, "\\-");
		    var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
		    var oElement;
		    for(var i=0; i<arrElements.length; i++){
		        oElement = arrElements[i];
		        if(oRegExp.test(oElement.className)){
		            arrReturnElements.push(oElement);
		        }
		    }
		    return (arrReturnElements)
		}
	};

	toggleMenu.addEvent(window, 'load', function(){toggleMenu.init('menu','hidden');});
	
	var appContext = "/";
	if (window.location.pathname.indexOf('/portal/') == 0) {
		appContext = "/portal/";
	}

    function popupCommentary()
    {
        window.open("dailynews.html", 'mywindow', 'width=780, height=500, toolbar=0, resizable=1, scrollbars=1');
    }
    
    function showTip(tipNum)
    {
		var relativePath = (document.location.href.indexOf('tips_popup')>-1)? '' : 'tips/' ;
        window.open(relativePath + "tips_popup_"+tipNum+".html", 'tipwindow', 'width=620, height=355, toolbar=0, resizable=1, scrollbars=1');
    }
	
	Math.randomMax = function(maxVal, Float){
		var val = Math.random()*maxVal;
		return Float?val:Math.round(val);
	}
	
	Array.prototype.randomIndex = function(){
		return Math.randomMax(this.length-1);
	}
	Array.prototype.randomItem = function(){
		return this[Math.randomMax(this.length-1)];
	}
	
	
	function displayRandomTipLink(tips){
		var index = tips.randomIndex();
		var tip = tips[index];
		var str = '<a href="javascript:showTip(' + (index+1) + ');"><img width="70" src="images/' + (index+1) + '_en.gif"/></a> <h3>' + tip + ' <a href="javascript:showTip(' + (index+1) + ');">Read More</a></h3>';
		document.write(str)
	}
    

    var marketData = null;
    
    function startMarketData(locale) {
    	  marketData = new MarketData(locale);
    }
        
    function Market(id, name) {
    	this.marketId = id;
    	this.market = name;
    	this.bid = 0;
    	this.offer = 0;
    	this.change = "";
    	this.upOrDown = 0;
    }
    
    Market.prototype.getRow = function(rowNum) {
    	var html = "<tr class='dataRow altRow" + (rowNum % 2) + "'>";
    	html += "<td class='marketcell' id='market_" + this.marketId + "'></td>";
    	html += "<td class='updowncell' id='updown_" + this.marketId + "'></td>";
    	html += "<td class='bidcell' id='bid_" + this.marketId + "'></td>";
    	html += "<td class='offercell' id='offer_" + this.marketId + "'></td>";
    	html += "<td class='changecell' id='change_" + this.marketId + "'></td>";
    	html += "</tr>";
    	return html;
    }
    
    Market.prototype.update = function(upOrDown, bid, offer, change) {
	
	   	this.bid = bid;
		Ext.get('bid_' + this.marketId).dom.innerHTML = bid;
	
	    this.offer = offer;
		Ext.get('offer_' + this.marketId).dom.innerHTML = offer;
		
	   	this.change = change;
		Ext.get('change_' + this.marketId).dom.innerHTML = change;
	
		var highLightColor = upColor;
	
	   	this.upOrDown = upOrDown;
		if (this.upOrDown == 0) {
			Ext.get('updown_' + this.marketId).dom.innerHTML = '<img src="' + appContext + 'images/newbanners/uparrow.gif"/>';
	    }
    	if (this.upOrDown == 1) {
    		Ext.get('updown_' + this.marketId).dom.innerHTML = '<img src="' + appContext + 'images/newbanners/downarrow.gif"/>';
    		highLightColor = downColor;
    	}
	
		Ext.get('change_' + this.marketId).highlight(highLightColor);
		Ext.get('offer_' + this.marketId).highlight(highLightColor);
		Ext.get('bid_' + this.marketId).highlight(highLightColor);
	
		Ext.get('market_' + this.marketId).dom.innerHTML = this.market;

    }
    
    function MarketData(locale) {
    	this.data = new Array();

    	if (locale == 'UK') {
    		this.data.push(new Market(51158)); // FTSE
    		this.data.push(new Market(51151)); // GBP -> USD
    		this.data.push(new Market(51155)); // Wall Street
    		this.data.push(new Market(50756)); // Barclays
    		this.data.push(new Market(0,"Brent")); // Optional market name because Brent market changes ID every month, so search on market name too
    	}
    	
    	if (locale == 'Germany') {
    		this.data.push(new Market(51157)); // DAX
    		this.data.push(new Market(51155)); // Wall Street
    		this.data.push(new Market(51148)); // EUR -> USD
    		this.data.push(new Market(0,"Brent")); // Brent (149234)
    		this.data.push(new Market(51068)); // Microsoft
    	}
	
	this.draw();
	this.loadMarketData();

    }
    
    MarketData.tidyMarketName = function(originalMarketName) {
    	
    	var marketName = unescape(originalMarketName);
		marketName = marketName.replace(/\+/g,' ');
		if (marketName.indexOf(" ") == 0) {
			marketName = marketName.replace(/ /,'');
		}
		
		return marketName;
    	
    }
    
    MarketData.prototype.draw = function() {	
    	var html = "<table class='marketDataTable'><tr class='headerrow'><th class='marketheader'>Market</th><th class='updownheader'></th><th class='bidheader'>Bid</th><th class='offerheader'>Offer</th><th class='changeheader'>Change</th></tr>";
    	for(var i=0; i<this.data.length; i++) {
    		html += this.data[i].getRow(i);
    	}
    	html += "</table>";
    	var marketData = document.getElementById("marketData");
    	if(marketData){
    		marketData.innerHTML = html;
    	} 
    }
    
    MarketData.prototype.loadMarketData = function() {
    	
    	Ext.Ajax.request({
    		url : '/feeds/feed?name=publicprices', 
//    		url : appContext + 'feeds/feed?name=publicprices' , 
    		params : { sp : '' },
    		method: 'GET',
    		success: function(result, request) {
    	    	var originalData = result.responseText;
    	    	var split = originalData.split("\n");
    	    	for(var i=0; i< split.length; i++) {
    	    		var line = split[i];
    	    		var cols = line.split("\t");
    	    		if (cols.length > 1) {
    	    			var marketName = MarketData.tidyMarketName(cols[1]);
    	    			var marketId = cols[0].replace(/m=/,'');
    	    			
    	    			// console.log("Line " + i + " has " + cols.length + " cols, name: ", marketName);
    	    			for(var j=0; j < marketData.data.length; j++) {	
    	    				// market ids change sometimes, so also check if that market starts with the market name we optionally set
    	    				if (marketData.data[j].marketId == marketId || marketName.indexOf(marketData.data[j].market) == 0) {
    	    					marketData.data[j].market = marketName;				
    	    					marketData.data[j].update(cols[2], cols[3], cols[4], unescape(cols[8]));
    	    				}
    	    			}
    	    		} else {
    	    			// console.log("No data on line " + i);
    	    		}
    	    	}
    	    	 	
    	    	var t=setTimeout(marketData.loadMarketData,10000);
    	    	
    	    },
    		failure: function ( result, request) { 
    			// alert('Failure' + result.responseText); 
    		}
    	});
    	
    }
       
    var loadInstruments = function(location, hiLoTargetLocation) {
    	
    	Ext.Ajax.request({
    		url : appContext + location , 
    		method: 'GET',
    		success: function(result, request) {
    	    	var message = eval('(' + result.responseText + ')');
    	    	
    			var underlyings = message.res[0].body[0].children[0].underlying;
    			var menuItems = "";
    			for(var i = 0; i < underlyings.length; i++)
    			{
    				var underlying = underlyings[i];
    				var instrument = new Instrument(underlying.id, underlying.name);
    				var children = underlying.children[0].underlying;
    				for(var j = 0; j < children.length; j++) {
    					instrument.addChild(new Instrument(children[j].id, children[j].name));
    				}
    				
    				menuItems += instrument.render(hiLoTargetLocation);
    			}
    			
    			Ext.get("instrumentsNav").dom.innerHTML = menuItems;
    			toggleMenu.init('menu','hidden');

    	    },
    		failure: function ( result, request) { 
    			// alert('Failure' + result.responseText); 
    		}
    	});
    	
    }
      
	function Instrument(id, name) {
		this.instrumentId = id;
		this.name = name;
		this.children = new Array();
	}
	
	Instrument.prototype.render = function(hiLoTarget) {
		var html = "<li><a href='#'>" + this.name  + "</a><ul class='level2 hidden'>";
		
		for(var i = 0; i < this.children.length; i++) {
			html += "<li id='ug1'><a href='" + hiLoTarget + "#" + escape(this.name) + '/' + escape(this.children[i].name) + "'>" + this.children[i].name + "</a></li>";
		}
		
		html += "</ul></li>";
		
		return html;
	}
	
	Instrument.prototype.addChild = function(instrument) {
		this.children.push(instrument);
	}
	
	function loadHotOrNotData(locale) {
		var local = (locale=='UK')? 'en' : 'de'
		Ext.Ajax.request({
 	   		url : '/feeds/feed?name=hotornot'+local , 
    		method: 'GET',
    		success: function(result, request) {
    			var xml = result.responseXML;
    			var dq = Ext.DomQuery;
    			var lastUpdated = dq.selectValue("lastupdate", xml);
    			var index = dq.selectValue("index", xml);

    			var timePart = Ext.util.Format.date(Date.parseDate(lastUpdated,'H:i:s - Y-m-d'), 'H:ia');
    			var datePart = Ext.util.Format.date(Date.parseDate(lastUpdated,'H:i:s - Y-m-d'), 'd/m/Y');
    			var timezonePart = " ";
    			if (locale == 'Germany') {
    				timezonePart = " MEZ ";
    			}
    			
    			document.getElementById("tipsLastUpdatedDate").innerHTML = timePart + timezonePart + datePart;

    			var stocks = dq.select("tops stock", xml);
    			for(var i=0; i < stocks.length; i++) {
    				document.getElementById("hot_name_" + (i+1)).innerHTML = dq.selectValue("name",stocks[i]);
    				document.getElementById("hot_change_" + (i+1)).innerHTML = dq.selectValue("change",stocks[i]);
    			}

    			stocks = dq.select("flops stock", xml);
    			for(var i=0; i < stocks.length; i++) {
    				document.getElementById("not_name_" + (i+1)).innerHTML = dq.selectValue("name",stocks[i]);
    				document.getElementById("not_change_" + (i+1)).innerHTML = dq.selectValue("change",stocks[i]);
    			}
    		},
    		failure: function ( result, request) { 
    			// alert('Failure' + result.responseText); 
    		}
		});
		
	}
