// variables 

var comparisonGraphColours = [ "H6668B0","HC40038","H659A9A","HD9BA00","HF46C21","H98B913","HFFB300","H95AFDE" ];

var date = new Date();
var dConst = { day:(date.getDate()<10?"0"+date.getDate():""+date.getDate()), month:((date.getMonth()+1)<10?"0"+(date.getMonth()+1):""+(date.getMonth()+1)), year:date.getFullYear(), nextYear:null }
dConst.nextYear = new Date(dConst.month+"/"+dConst.day+"/"+(dConst.year+1))

var rowSelected = null; // for the code finder

var pageUpdateInterval = null; // for auto updating the page

var isWin = (navigator.userAgent.indexOf("Win")>-1);
var isIE = (navigator.userAgent.indexOf("MSIE")>-1);
var ieMac = (isIE&&(navigator.userAgent.indexOf("Mac")>-1)); // for some ieMac specific rendering problems


var iframeObj = null;	 // used for the virtual iframe that returns finex codes

// global browser check

if ((document.layers)||(document.all&&!document.getElementById)) location = "sli_portfolio_browser.wsp";

// onload functions

if (ieMac) window.onload = initialise; else if (window.attachEvent) window.attachEvent("onload",initialise); else window.addEventListener("load",initialise,true);

function initialise() {
	if (typeof(page)=="undefined") page=-1
	switch(page) {
		// sli_portfolio_home_out.wsp
		case 1: swapNegativeReturns(); 
				setPageUpdate();
				break;
		// sli_portfolio_announcements.wsp
		case 2: setPageUpdate();
				break;
		// sli_portfolio_latest_price.wsp
		case 3: setPageUpdate();
				/*				
				var url = location.href.toString();
				var urlKeys = url.substr(url.indexOf("?")+1).split("&");
				for (var i=0,l=urlKeys.length;i<l;i++) {
					if ((urlKeys[i].split("=")[0]=="day")&&(urlKeys[i].split("=")[1]!="")) 
					
				}*/
				var r = document.latestPriceForm.priceGraphDate;
				if (priceGraphDate!="1") { r[0].checked = true; showDatePriceRange(r[0]); } else { r[1].checked = true; showDatePriceRange(r[0]); }
				break;
		// sli_portfolio_comparison.wsp
		case 4: if (document.getElementById("comparisonCode1").value.replace(/\s/g,"")!="") updateGraph();
				break;
	}
}
	

// functions 

// check if the user wishes to delete portfolio item

function deleteCheck() {
	return confirm("Are you sure?\n\nYou cannot undo this option.");
}

// simple popup call
function minWin(url,name,w,h) {
	window.open(url,name,"width="+w+",height="+h+",location=0,status=0,directories=0,menubar=0,scrollbars=1,resizable=1");
}

// used for the specific MySite popups
function openMySite(aLink) {
	window.open(aLink.href,aLink.target,"width=640,height=560,directories=0,scrollbars=1,toolbar=0,status=1,location=0,resizable=1");
	return false;
}

//clear all form elements
function clearThisForm(f) {
	var el = null;
	for (var i=0,l = f.elements.length;i<l;i++) {
		el = f.elements[i];
		if ((el.tagName=="input")&&(el.type=="text")) el.value="";
		if (el.tagName=="select") el.selectedIndex = 0;
	}
}


// Page auto update function.

function setPageUpdate(u) {
	if (!arguments.length) var u = (getCookie("updatePage")=="true"?true:false);
	if (u) {
		pageUpdateInterval = setTimeout(function(){location.reload(true)},((1000*60)*5)); 
	} else {
		clearTimeout(pageUpdateInterval);
		pageUpdateInterval = null;
	}
	document.getElementById("pageUpdate").checked = u;
	setCookie("updatePage",u,dConst.nextYear)
}


// some queries can return (£)-xxx.xx(p), this function swaps it to -(£)xxx.xx(p)

function swapNegativeReturns() {
	var cells = document.getElementsByTagName("SPAN");
	for (var i=0,l=cells.length;i<l;i++) { if (cells[i].className=="swapNegative") cells[i].innerHTML = cells[i].innerHTML.replace(/£-/,"-£"); }
}



// code finder results table
function showRowHover(obj,vis) {
	if (obj.className!="selected") {
		for (var i=0;i<obj.childNodes.length;i++) {
			obj.childNodes[i].style.backgroundColor = vis?"#edf1f5":"";
			obj.childNodes[i].style.color = vis?"#000":"";
		}
	}
}

function selectRow(obj) {
	if (!rowSelected) {
		obj.className = "selected";
		var chkbx = obj.childNodes[2].getElementsByTagName("input")[0];
		chkbx.checked = true;
		rowSelected = obj;
		return true;
	} 
	rowSelected.className="";
	for (var i=0;i<rowSelected.childNodes.length;i++) {
		if (rowSelected.childNodes[i].tagName=="TD") {
			rowSelected.childNodes[i].style.backgroundColor = "#dbe3eb";
			rowSelected.childNodes[i].style.color = "#40638d";
		}
	}
	var	chkbx = rowSelected.childNodes[2].getElementsByTagName("input")[0];	
	chkbx.checked = false;
	rowSelected = null;
	selectRow(obj)
}


function setDates(){
	with (document.forms["addnewitem"]){
    	for (var i=0; i<day.length; i++){
	      if (day.options[i].value == "@getVar[day]")
        day.options.selectedIndex = i;
    }
    for (var j=0; j<month.length; j++){
      if (month.options[j].value == "@getVar[month]")
        month.options.selectedIndex = j;
    }
    for (var k=0; k<year.length; k++){
      if (year.options[k].value == "@getVar[year]")
        year.options.selectedIndex = k;
    }
  }
}

function changeArrowImage(val){
  if (val > 0){
    document.write("<img src='images/port_portfolio_list_green_arrow.gif' width='10' height='10' alt='up' title='+'/>  ")
  } else if (val < 0){
    document.write("<img src='images/port_portfolio_list_red_arrow.gif' width='10' height='10' alt='down' title='-'/>")
  } else {
    document.write("<img src='images/port_fund_even_arrow.gif' width='12' height='9' alt='even' title='='/>")
  }
}

function setFundCodeRow(r) {
//	if (!r.checked) r.checked = true;
	selectRow(r.parentNode.parentNode);
	event.cancelBubble=true;
}


function sendBackCode(objID) {
	var chkbx = document.getElementById(objID).getElementsByTagName("INPUT");
	for (var i=0;i<chkbx.length;i++) {
		if (chkbx[i].checked) {
			if (referringobj=="") {
				opener.location="sli_portfolio_latest_price.wsp?unit="+chkbx[i].value.split(",")[1]+"&type="+chkbx[i].value.split(",")[0];
			} else {                  
				opener.document.getElementById(referringobj).value = chkbx[i].value.split(",")[1];
				opener.document.getElementById(typeobj).value = chkbx[i].value.split(",")[0];			
			}
		}
	}
	setTimeout("window.close()",250);
}	


//			(referringobj==""?opener.location="sli_portfolio_latest_price.wsp?unit="+chkbx[i].value.split(",")[1]+"&type="+chkbx[i].value.split(",")[0]:opener.document.getElementById(referringobj).value = chkbx[i].value.split(",")[1];opener.document.getElementById(referringobj).value)

function getCodes() {
 	var urlstr = "sli_portfolio_return_finexcode.wsp?";
	for (var i=0;i<arguments.length;i++) { urlstr += "code"+(i+1)+"="+arguments[i]+"&" }
	document.getElementById("resultsFrame").src = urlstr+"function=updateGraph";
}
	
function updateGraph() {
	var	graph = document.getElementById("comparisongraphimage");
	if (graph.style.display!="inline") graph.style.display="inline";
	for (var i=1;i<5;i++) { if (!document.comparisongraphform["comparisonCode"+i].value.replace(/\s/g,"").length) document.comparisongraphform["comparisonCode"+i].value="" }
	document.getElementById("infobox").innerHTML = "Updating graph... please wait";
	document.getElementById("infobox").style.display = "block";
	// if no arguments are passed create the code string from the stuff on the page and call the function again.
	if (!arguments.length) getCodes(document.comparisongraphform.comparisonCode1.value,document.comparisongraphform.comparisonCode2.value,document.comparisongraphform.comparisonCode3.value,document.comparisongraphform.comparisonCode4.value,(document.comparisongraphform.port1?document.comparisongraphform.port1.value:""),(document.comparisongraphform.port2?document.comparisongraphform.port2.value:""),(document.comparisongraphform.port3?document.comparisongraphform.port3.value:""),document.comparisongraphform.index.value);
	else {
		var c = arguments[0];
		var codesURL="";
		var colsURL = "";
		var graphDates = getComparisonGraphDates();
		if (graphDates.s == null) {
			setTimeout('document.getElementById("infobox").style.display="none"',3000);
			return false;
		}
		var duplicateCodes = [];
		for (var i=0;i<8;i++) {
			if (c[i]) {
				if (i<4) {
					codetype = document.comparisongraphform.elements["comparisonCode"+(i+1)+"type"].value;
					if ((parseInt(arguments[0][8][i],10)!=1)&&(codetype=="")) {
						duplicateCodes[duplicateCodes.length] = i;
					} else {
						codesURL += (codesURL!=""?",":"")+(codetype!=""?codetype+c[i].split(",")[0].substr(1):c[i].split(",")[0]);
					}
				} else {
					codesURL += (codesURL!=""?",":"")+c[i]; 
				}
				colsURL += (colsURL!=""?",":"")+comparisonGraphColours[i]; 
			}
		}
		showDuplicateCodes(duplicateCodes)
		var graphURL = "gifchart.asp?code="+codesURL+"&gpcolour="+colsURL+"&wd=560&ht=300&ftcolour=H000000&bgcolour=Hffffff&gdcolour=H808080&bdcolour=Hffffff&axcolour=H000000&gphtype=4&span=0&ShowDate=1&LogoPos=2&chartbgcolour=He5e5e5&hdg=2&hdgpos=1&fg=1&gs=2&fontsize=8&plotpixsize=2&fontname=arial&plstyle=0&pn=0&yoffs=0&startdate="+graphDates.s+"&enddate="+graphDates.e;
		graph.onload = function() { document.getElementById("infobox").style.display="none"; }
		graph.onerror = function() { document.getElementById("infobox").style.display="none"; }
		graph.src = graphURL;
		for (var i=1;i<5;i++) {
			if (document.getElementById("comparisonCode"+i).value.replace(/\s/g,"")!="") document.getElementById("compCode"+i+"Links").style.display = "inline"; else document.getElementById("compCode"+i+"Links").style.display = "none";
		}
	}

}

function showDuplicateCodes(e) {
	for (var i=0; i<4; i++) {
		document.getElementById("comparisonCode"+(i+1)).className = "";
	}
	for (var i=0; i<e.length; i++) {
		document.getElementById("comparisonCode"+(e[i]+1)).className = "duplicatecode";
	}
	document.getElementById("duplicatecodemessage").style.display = e.length>0?"block":"none";
}

function  setLatestPriceDuplicate () {
//	alert(dupCodeType);
//	alert(codeTypePassed);
//	alert(document.getElementById("type").value);
}



function compCodeLinks(url,c) {
	location.href = "/stanlife/"+url+"?unit="+document.getElementById("comparisonCode"+c).value;
}




function getComparisonGraphDates() {
	var dateObj = { s:null, e:null }
	
	if (getRadioIdx(document.comparisongraphform.compGraphDate[0])) {
		var userDates = [ [document.comparisongraphform.s_d.value,document.comparisongraphform.s_m.value,document.comparisongraphform.s_y.value],[document.comparisongraphform.e_d.value,document.comparisongraphform.e_m.value,document.comparisongraphform.e_y.value] ]
		if (!validDate(userDates[0][0],userDates[0][1],userDates[0][2])||!validDate(userDates[1][0],userDates[1][1],userDates[1][2])) { 
			document.getElementById("infobox").innerHTML = "The date(s) you entered was valid...";
			return false;
		}
		if (new Date(userDates[0][1]+"/"+userDates[0][0]+"/"+userDates[0][2])>new Date(userDates[1][1]+"/"+userDates[1][0]+"/"+userDates[1][2])) {
			document.getElementById("infobox").innerHTML = "The start date is later than the end date...";
			return false;
		} 
		dateObj.s = (userDates[0][2]+"-"+userDates[0][1]+"-"+userDates[0][0]);
		dateObj.e = (userDates[1][2]+"-"+userDates[1][1]+"-"+userDates[1][0]);
	} else {
		dateObj.e = dConst.year+"-"+dConst.month+"-"+dConst.day;
		var d2 = new Date(date.getTime()-(document.comparisongraphform.constantdate.value*24*60*60*1000))
		dateObj.s = d2.getFullYear()+"-"+(d2.getMonth()<9?"0":"")+(d2.getMonth()+1)+"-"+(d2.getDate()<10?"0":"")+d2.getDate();
	}
	return dateObj;
}


function getRadioIdx(obj) {
	var radioSet = document.getElementsByName(obj.name);
	var radioIdx = null;
	for (var i=0;i<radioSet.length;i++) {
		if (radioSet[i].checked) radioIdx = i;
	}
	return radioIdx;
}

function validDate(d,m,y) {
	var dt = new Date(m+"/"+d+"/"+y);
	return !((d!=dt.getDate())||(m!=(dt.getMonth()+1))||(y!=dt.getFullYear()))
}

function showDateRange(obj) {
	var disabledFlag = (getRadioIdx(obj)?true:false);
	document.comparisongraphform.constantdate.disabled = disabledFlag;
	document.comparisongraphform.s_d.disabled = !disabledFlag;
	document.comparisongraphform.s_m.disabled = !disabledFlag;
	document.comparisongraphform.s_y.disabled = !disabledFlag;
	document.comparisongraphform.e_d.disabled = !disabledFlag;
	document.comparisongraphform.e_m.disabled = !disabledFlag;
	document.comparisongraphform.e_y.disabled = !disabledFlag;
}

function showDatePriceRange(obj) {
	var disabledFlag = (getRadioIdx(obj)?true:false);
	document.latestPriceForm.presetdate.disabled = disabledFlag;
	document.latestPriceForm.day.disabled = !disabledFlag;
	document.latestPriceForm.month.disabled = !disabledFlag;
	document.latestPriceForm.year.disabled = !disabledFlag;
}


/****  sorting tables ****/

	var tableSortColumn,tableSortOrder = null;
	function sortTable(id,col,dir,callingRow) {
		tableSortColumn = col;
		tableSortOrder = (dir.replace(/sortDirection/,"")*1);
		if (tableSortOrder!=0) tableSortOrder = 0; else tableSortOrder = 1;
		var tempArray = [];	
		var sourceTable = [document.getElementById(id),document.getElementById(id).getElementsByTagName("tbody")[0],document.getElementById(id).getElementsByTagName("tr")]
		for (i=0;i<sourceTable[2].length;i++) {
			tempArray[tempArray.length] = sourceTable[2][i].cloneNode(true);
		}
		for (i=(tempArray.length-1);i>-1;i--) {
			sourceTable[2][i].parentNode.removeChild(sourceTable[2][i]);
		}
		tempArray.sort(decending)			
		for (i=0;i<tempArray.length;i++) {
			sourceTable[1].appendChild(tempArray[i]);
		}
		for (var i=0;i<callingRow.getElementsByTagName("TH").length;i++) {
			if (callingRow.getElementsByTagName("TH")[i].className.indexOf("sortDirection")>-1) {
				if (i!=col) callingRow.getElementsByTagName("TH")[i].className = "sortDirection2";
				else callingRow.getElementsByTagName("TH")[i].className = "sortDirection"+tableSortOrder;
				
			}
		}
		
	}
	
	
	function decending(a,b) {
		var sortval = 0;
		if (tableSortOrder) { //down
			if (a.getElementsByTagName("td")[tableSortColumn].innerHTML < b.getElementsByTagName("td")[tableSortColumn].innerHTML) sortval = -1;
			if (a.getElementsByTagName("td")[tableSortColumn].innerHTML > b.getElementsByTagName("td")[tableSortColumn].innerHTML) sortval = 1;
		} else {
			if (a.getElementsByTagName("td")[tableSortColumn].innerHTML > b.getElementsByTagName("td")[tableSortColumn].innerHTML) sortval = -1;
			if (a.getElementsByTagName("td")[tableSortColumn].innerHTML < b.getElementsByTagName("td")[tableSortColumn].innerHTML) sortval = 1;
		}		
		return sortval;
	}


	
	function populateTable() {
		var fundPrefix = null;
		for (var i=0;i<returnedFunds.length-1;i++) {
			if (fundPrefix!=returnedFunds[i][1]) {
				if (fundPrefix) document.writeln("</tbody>");
				fundPrefix=returnedFunds[i][1];
				document.writeln("<tbody>");
				document.writeln("<tr><th colspan='3'>"+getFundTableHeaderText(fundPrefix)+"</th></tr>");
			}
			document.writeln("<tr onmouseover='showRowHover(this,true)' onmouseout='showRowHover(this,false)' onclick='selectRow(this)'><td>"+returnedFunds[i][0]+"</td><td style='width:120px;text-align:center'>"+returnedFunds[i][2]+"</td><td style='width:60px;text-align:center'><input onclick='setFundCodeRow(this)' type='checkbox' value='"+returnedFunds[i][1]+","+returnedFunds[i][2]+"'/></td></tr>");
		}
		document.writeln("</tbody>");
	}

	function getFundTableHeaderText(f) {
		var returnText = "";
		switch (f) {
			case "E": returnText = "Equities"; break;
			case "N": returnText = "Indicies"; break;
			case "F": returnText = "Offshore funds"; break;
			case "O": returnText = "OEICs"; break;
			case "I": returnText = "Investment trusts"; break;
			case "L": returnText = "Life funds"; break;
			case "S": returnText = "Insurance"; break;															
			case "U": returnText = "Unit trusts"; break;															
			case "P": returnText = "Pensions"; break;															
			default : returnText = "Misc funds"; 
		}
		return returnText;
	}
	
	function FTSEgraph(tag) {
		var d = new Date();
		var imgSrc = "http://webfund5.finexprestel.com/stanlife/gifchart.asp?wd=200&ht=100&code=NUKX&gpcolour=H41618E&ftcolour=H000000&bgcolour=Hffffff&gdcolour=H808080&bdcolour=Hffffff&axcolour=H000000&gphtype=1&plotpixsize=2&span=0&ShowDate=1&chartbgcolour=HE5E5E5&hdg=0&fg=3&vgridint=1&yoffs=0&starttime=08:00&endtime="+(d.getHours()+":"+d.getMinutes())+"&unique="+d.getTime();
		return (tag?"<img src='"+imgSrc+"' id='FTSE' width='200' height='100' alt='FTSE100 today' title='FTSE100 today'/>":imgSrc);
	}		
		
		
	
// Generic cookie functions

	function getCookie(name) {
	    var start = document.cookie.indexOf(name+"=");
	    var len = start+name.length+1;
	    if ((!start) && (name != document.cookie.substring(0,name.length))) return null;
	    if (start == -1) return null;
	    var end = document.cookie.indexOf(";",len);
	    if (end == -1) end = document.cookie.length;
	    return unescape(document.cookie.substring(len,end));
	}
	
	function setCookie(name,value,expires,path,domain,secure) {
	    document.cookie = name + "=" +escape(value) +
	        ( (expires) ? ";expires=" + expires.toGMTString() : "") +
	        ( (path) ? ";path=" + path : "") + 
	        ( (domain) ? ";domain=" + domain : "") +
	        ( (secure) ? ";secure" : "");
	}
	
	function delCookie(name,path,domain) {
	    if (getCookie(name)) document.cookie = name + "=" +
	       ( (path) ? ";path=" + path : "") +
	       ( (domain) ? ";domain=" + domain : "") +
	       ";expires=Thu, 01-Jan-70 00:00:01 GMT";
	}	
	

