
var cws = new ChartingWebService();
var colors = "#f65d1a,#1a83f6,#efd715,#53e166,#8aa3d8,#c97dd2,#825f2a,#322d26,#09b0e9,#7ef1f0";

function respPageState(n, ctrl)
{
	var pageState = n;
	var control = document.getElementById(ctrl);

	if (pageState!=1)
	{
		document.body.style.cursor='wait';
		control.innerHTML="<img src=\"images/spinner.gif\" width=\"15\" height=\"15\" align=\"absmiddle\" class=\"opague\" hspace=\"8\" /> Loading...";				
	}
	if (pageState!=0)
	{
		document.body.style.cursor='default';
		control.innerHTML="Select an item to add:";				
	}
}


function toggleDataSelector(lyr)
{		
	var visLyr = document.getElementById(lyr);

	var elements;
	elements = document.getElementById("ChartBuilder").getElementsByTagName("div");
	
	for(i in elements)
	{
		if(/SelectorBox/.test(elements[i].className))
		{
			elements[i].style.visibility="hidden";
		}
	}			
	visLyr.style.visibility="visible";
}
	

function SetActiveCode()
{
	var initCode = document.getElementById("hdInitCode").value;
	
	if (initCode=="")
	{
		addToChart('NASX');
	}
	else
	{ 
		addToChart(initCode);
	}
	
	var items = document.frmLegend.cbLegend;
}
	
	
function loadMenu(src, target)
{
	var data = document.getElementById(src).value;				
	var menu = document.getElementById(target);
										
	var slctIndex = 0;
		
	var dataArr = new Array();
	dataArr = data.split(";");
		
	var i,option, optValue, optText, optionArr;
		
	for (i=0; i <dataArr.length; i++) 
	{
		option = dataArr[i]; //eg XYZ, XYZ Investments
			
		optionArr = new Array();
		optionArr = option.split(",");
			
		optValue = optionArr[0]; // XYZ
		optText = optionArr[1]; // XYZ Investments
								
		if (optText!=null)
		{
			menu.options.add(new Option(optText, optValue),1);							
		}	
	}
	
	menu.selectedIndex = slctIndex;				
}
	
	
function getIndex(src, match)
{
	var data = document.getElementById(src).value;				
	var dataArr = new Array();
	dataArr = data.split(";");
	
	var i, x, option, optValue, optText, optionArr, rtn;
	
	for (i=0; i <dataArr.length; i++) {
		
		option = dataArr[i]; 
		
		optionArr = new Array();
		optionArr = option.split(",");
		
		optValue = optionArr[0]; 
		optText = optionArr[1]; 
		
		if (optValue==match){
			rtn = i;
			break;
		}
	}
	
	rtn = dataArr.length - rtn - 1
	
	return rtn;
}						

		
function GetFundResults(code, filter)
{
	respPageState(0,'hdFundResults');
	
	var categories;
	
	if (document.getElementById("rgFundType_Units").checked)
	{
		categories = "UKA,OIC";
	}
	else
	{
		categories = "ITR";
	}
	
	if (filter == 'manager')
	{
	   cws.LoadUnitsByManagerCode(LoadFundList, categories, code, 'NameLong desc', '');
	}
	else
	{
	   cws.LoadUnitsBySectorClassCode(LoadFundList, categories, code, 'NameLong desc', '');
	}
}


function LoadFundList(r)
{
	id = document.getElementById("slctFundResults");
	id.options.length = 0;
	data = r.Items;
	
	if (data != null)
	{
		if (data.length > 1) {
			id.options.add(new Option(data.length + " funds found...", ""),1);
		}
		else if (data.length < 1) {
			id.options.add(new Option("0 funds found!", ""),1);
		}
		
		for(i = 0 ; i < data.length; i++)
		{
			id.options.add(new Option(data[i].Name, data[i].Code),1);
		}
	}
	respPageState(1,'hdFundResults');
} 


function findEquity(epic, name)
{
   respPageState(0,'hdEqResults');
	if (epic != "")
	{
		cws.LoadEquities(LoadEquityList, 'Name desc', "Code LIKE '" + epic + "%'");
	}
	else if (name != "")
	{
		cws.LoadEquities(LoadEquityList, 'Name desc', "Name LIKE '" + name + "%'");
	}
	else
	{
	   clearMenu("slctEquityResults");
	}
}

	
function LoadEquityList(r)
{
	id = document.getElementById("slctEquityResults");
	id.options.length = 0;
	data = r.Items;

	if (data != null)
	{
		if (data.length > 1) {
			id.options.add(new Option(data.length + " equities found...", ""),1);
		}
		else if (data.length < 1) {
			id.options.add(new Option("0 equities found!", ""),1);
		}
		
		for(i = 0 ; i < data.length; i++)
		{
			id.options.add(new Option(data[i].Name, data[i].Code),1);
		}
	}
	
	respPageState(1,'hdEqResults');
}


function processRequest(req)
{
	if (req){
		clearTimeout(req);
	}
	setTimeout(req,2000);
}	
		
	
function getParams(url)
{
	var aUrl = url.split("?");							
	var scriptName = aUrl[0];
	var query = "";
	var params = new Array();
	
	if (aUrl.length > 1){
		query = aUrl[1].split("=");
		params = query[1].split(",");					
	}
	
	return params;
}	
	
	
function parseURL(url, r)
{
	var strReturn = "";
				
	var aUrl = url.split("?");							
	var scriptName = aUrl[0];
	
	var allCodes="";
	var hideCodes="";
	var span = "";
	
	var qStr = new Array();
	var qCodes = new Array();
	var qHide = new Array();
	var qSpan = new Array();
									
	if (aUrl.length > 1){
	
		qStr = aUrl[1].split("&");
		
		qCodes = qStr[0].split("=");
			allCodes = qCodes[1];
		
		if (qStr.length > 1){						
			qHide = qStr[1].split("=");	
			hideCodes = qHide[1];				
		}
		
		if (qStr.length > 2){
			qSpan = qStr[2].split("=");
			span = qSpan[1];
		}
	}
	
	switch(r){
		case "script":
			strReturn = scriptName;
			break;
		case "codes":
			strReturn =  allCodes;
			break;
		case "hide":
			strReturn =  hideCodes;
			break;
		case "span":
			strReturn =  span;
			break;
	}
	
	return strReturn;
}	
				
	
function addToChart(code)
{
	var aColors = colors.split(","); 
	
	var img = document.getElementById("ChartImg");
	var currSrc = img.src;
	var newSrc;				
	
	img.src="images/chart_loader.gif";

	if (currSrc.indexOf(code) < 0){
						
		var allCodes = parseURL(currSrc,"codes");
		var hiddenCodes = parseURL(currSrc,"hide");
		var span = parseURL(currSrc,"span");
		
		var arrAllCodes = new Array();
		
		if (allCodes!="")
		{
			arrAllCodes = allCodes.split(",");
		}
		
		var len = arrAllCodes.length;										

		if (len < 10)
		{
			arrAllCodes[len] = code;
			var strCodes = arrAllCodes.join();	
			newSrc = "chartbuilder.aspx?codes=" + strCodes + "&hide=" + hiddenCodes + "&span=" + span;		
			img.src = newSrc;
			getFullName(strCodes);
		}
		else
		{
			img.src=currSrc;
			alert("Maximum of 10 instruments");
		}
	}
	else 
	{
		img.src=currSrc;
	}
}


function getFullName(strCode)
{
   cws.LoadInstruments(updateLegend, strCode, '', '');
}


function updateLegend(r){

	var data = r.Items;	
	var img = document.getElementById("ChartImg");
	var currSrc = img.src;	
	var cHiddenCodes = parseURL(currSrc,"hide");

	var aColors = colors.split(",");
	
	var oTable = document.getElementById("tblLegend");
	var oTBody = document.getElementById("tbdyLegend");								
					
	if (oTBody)
		oTable.removeChild(oTBody);											
	
		var nTBody = document.createElement("tbody");
			nTBody.id = "tbdyLegend";
		
		oTable.appendChild(nTBody);
		
		var iconVis = "Images/iVisible.gif";
		var iconHid = "Images/iHide.gif";
		var icon;
											
		// insert a new row for each code
		for (var m=0; m<data.length; m++){										
		
				var x = m+1;
				var tCode = data[m].Code
				
				var nRow = document.createElement("tr");
				nRow.id = "i" + x; 
				
				nTBody.appendChild(nRow);
			
				var tdCell1 = nRow.insertCell(0);
				var tdCell2 = nRow.insertCell(1);
				var tdCell3 = nRow.insertCell(2);
				var tdCell4 = nRow.insertCell(3);
				var tdCell5 = nRow.insertCell(4);
				
				// Add checkbox
				
				tdCell1.innerHTML = "<input type=\"checkbox\" name=\"cbLegend\" id=\"cb" + data[m].Code + "\" value=\"" + data[m].Code + "\" />";

				//Add Icon
				if (cHiddenCodes.indexOf(tCode) >= 0){
					icon = iconHid;	
				}
				else {
					icon = iconVis;
				}
				
				tdCell2.innerHTML = "<img src=\"" + icon + "\" id=\"i" + data[m].Code + "\" />";
				
				//Add Key
				tdCell3.innerHTML = "<div class=\"key\" style=\"background-color:" + aColors[m] + " \">";
				
				//Add Label													
				tdCell4.setAttribute("class","txtBold");
				var txtNode= document.createTextNode(data[m].Name);
				tdCell4.appendChild(txtNode);
				
				
				tdCell5.innerHTML = getInstType(data[m].Code);
				
				//alert(oTable.innerHTML);
				
				
	}	
}								

function removeInstrument(){
										
	var img = document.getElementById("ChartImg");
	var currSrc = img.src;	
	var cHiddenCodes = parseURL(currSrc,"hide");
	var span = parseURL(currSrc,"span");
	var items = document.frmLegend.cbLegend;
	
	var aCodes = new Array();
	var hCodes = new Array();				
					
	var a=0;
	var h=0;
	
	for (var i=0; i<items.length; i++){
		
		
		if (items[i].checked==false){
			aCodes[a] = items[i].value;
			a++;
			
			if (cHiddenCodes.indexOf(items[i].value) >= 0){
				hCodes[h] = items[i].value;
				h++;
			}
		}
	}	
	
	var strCodes = aCodes.join();		
	var hidCodes = hCodes.join();								
	
	if (aCodes.length > 0){
		document.getElementById("ChartImg").src="chartbuilder.aspx?codes=" + strCodes + "&hide=" + hidCodes + "&span=" + span;					
	}else {
		document.getElementById("ChartImg").src="chartbuilder.aspx";												
	}
	
	getFullName(strCodes);
	
	document.frmLegend.cbSelectAll.checked=false;


}


function toggleInstrument(action){

	//debugger;

	var img = document.getElementById("ChartImg");
	var currSrc = img.src;	
	var items = document.frmLegend.cbLegend;
	
	// All codes
	var aAllCodes = new Array();
	var strCodes = "";		
	
	// Get hidden code stuff
	var currHiddenCodes = parseURL(currSrc,"hide");
	var aHideCodes = new Array();				
	var hCodeLen = 0;
	var hideCodes = "";
	
	if (currHiddenCodes!=""){
		aHideCodes = currHiddenCodes.split(",");
		hCodeLen = aHideCodes.length;
	}

	// Get span 
	var span = parseURL(currSrc,"span");
	
	var a=0;
	
	for (var i=0; i<items.length; i++){
		
		aAllCodes[i] = items[i].value;
		
		// Hide instruments
		if (action=="hide"){
			if (currHiddenCodes.indexOf(items[i].value) < 0){
				if (items[i].checked){
					aHideCodes[hCodeLen] = items[i].value;								
					document.getElementById("i" + items[i].value).src="Images/iHide.gif"
					hCodeLen++;
				}
			}
		}
		
		// Show instruments
		
		if (action=="show"){
			aHideCodes.length=a;
			
			if (currHiddenCodes.indexOf(items[i].value) >= 0) 
			{
				if (items[i].checked==false){
					aHideCodes[a] = items[i].value;	
					a++;
				}
				else {
					document.getElementById("i" + items[i].value).src="Images/iVisible.gif"															
				}
			}
		}
			
		items[i].checked=false;
	}
	
		hideCodes = aHideCodes.join();
		strCodes = aAllCodes.join();
		document.getElementById("ChartImg").src="chartbuilder.aspx?codes=" + strCodes + "&hide=" + hideCodes + "&span=" + span;		
		document.frmLegend.cbSelectAll.checked=false;
}


function getInstType(code){

	var t = code.substring(0,1);
	var r = "";
	
	switch (t){
		case "F":
			r="Fund";
			break;
		case "E":
			r="Equity";
			break;
		case "N":
			r="Index";
			break;
		case "X":
			r="Sector";
			break;
	}
	
	return r;
}

function disableCtrl(ctrl){
	document.getElementById(ctrl).disabled=true;
}

function enableCtrl(ctrl){
	document.getElementById(ctrl).disabled=false;
}

function resetMenu(ctrl){
	document.getElementById(ctrl).selectedIndex = 0;
	
}

function clearMenu(ctrl){
	var menu = document.getElementById(ctrl)
	menu.options.length = 0;
	menu.options.add(new Option("Results...", ""));
	
	}

function clearField(ctrl){
	document.getElementById(ctrl).value = "";
}

function getValue(ctrl){
	return document.getElementById(ctrl).value;
}

function tempFunction(r){
	
	alert("Loading tempFunction");
	
	data = r.Items;
	
	if (data != null)
	{
		alert(data[0].Name);
	}
}

function setFocus(ctrl){
	var control = document.getElementById(ctrl);
	control.focus();
}

function loadTimeValues(val, ctrl){

	var menu = document.getElementById(ctrl);
	
	menu.options.length=0;

	var monthlyOptions = new Array("18:18 Months", "12:12 Months", "6:6 Months", "3:3 Months", "1:1 Month");
	var yearlyOptions = new Array("60:5 Years", "36:3 Years", "12:1 Year");

	if (val=="M"){
	
		for (i=0; i<monthlyOptions.length; i++){
		
			var option = monthlyOptions[i];
			var optionArr = option.split(":");
			
			var optValue = optionArr[0];
			var optText = optionArr[1];
			
			menu.options.add(new Option(optText, optValue),0);		
			
		}
	
		menu.selectedIndex=0;
	}
	
	if (val=="Y"){					
		
		for (i=0; i<yearlyOptions.length; i++){
		
			var option = yearlyOptions[i];
			var optionArr = option.split(":");
			
			var optValue = optionArr[0];
			var optText = optionArr[1];
			
			menu.options.add(new Option(optText, optValue),0);		
			
		}
		
		menu.selectedIndex=2;
	}				
}

function changeTimescale(val){				
	
	var img = document.getElementById("ChartImg");
	var currSrc = img.src;
	var script = parseURL(currSrc,"script")	
	var allCodes = parseURL(currSrc,"codes")
	var hiddenCodes = parseURL(currSrc,"hide");
	
	var newSrc = script + "?codes=" + allCodes + "&hide=" + hiddenCodes + "&span=" + val;
					
	img.src = newSrc;

}

function toggleChb(){

	var cbAll = document.frmLegend.cbSelectAll;
	var items = document.frmLegend.getElementsByTagName("input");
	var len = items.length;
					
	var state = false;	
	
	if (cbAll.checked){
		state=true;					
	}		
	
	for (var i=0; i<len; i++){
		items[i].checked=state;
	}
	
}

function displayFull(ctrl){
	var menu = document.getElementById(ctrl);
	menu.title=menu.options[menu.selectedIndex].text;
}




