<?xml version="1.0" encoding="UTF-8" ?>
<Module>
<ModulePrefs title="Portfolio Tracker(BSE)" author="Mudraa" author_email="mudraa@mudraa.com" render_inline="optional" description="Track your Stock Portfolio for Indian Stock Markets. Refreshes on its own based on set interval" scrolling="true" author_location="Bangalore, India" height="900" width="700" category="Finance" thumbnail="http://www.mudraa.com/images/screen2.png" screenshot="http://www.mudraa.com/images/screen1.png" >
<Require feature="setprefs"/>
<Require feature="settitle"/>
<Require feature="dynamic-height"/>
<Require feature="views"/>
</ModulePrefs>
<UserPref name="s0" display_name="Stock Code(1)" default_value="500325" />
<UserPref name="n0" display_name="Quantity(1)" default_value="100" />
<UserPref name="p0" display_name="Price(1)" default_value="500" />
<UserPref name="s1" display_name="Stock Code(2)" default_value="532174" />
<UserPref name="n1" display_name="Quantity(2)" default_value="100" />
<UserPref name="p1" display_name="Price(2)" default_value="700" />
<UserPref name="s2" display_name="Stock Code(3)" default_value="" />
<UserPref name="n2" display_name="Quantity(3)" default_value="0" />
<UserPref name="p2" display_name="Price(3)" default_value="0" />
<UserPref name="s3" display_name="Stock Code(4)" default_value="" />
<UserPref name="n3" display_name="Quantity(4)" default_value="0" />
<UserPref name="p3" display_name="Price(4)" default_value="0" />
<UserPref name="s4" display_name="Stock Code(5)" default_value="" />
<UserPref name="n4" display_name="Quantity(5)" default_value="0" />
<UserPref name="p4" display_name="Price(5)" default_value="0" />
<UserPref name="s5" display_name="Stock Code(6)" default_value="" />
<UserPref name="n5" display_name="Quantity(6)" default_value="0" />
<UserPref name="p5" display_name="Price(6)" default_value="0" />
<UserPref name="s6" display_name="Stock Code(7)" default_value="" />
<UserPref name="n6" display_name="Quantity(7)" default_value="0" />
<UserPref name="p6" display_name="Price(7)" default_value="0" />
<UserPref name="s7" display_name="Stock Code(8)" default_value="" />
<UserPref name="n7" display_name="Quantity(8)" default_value="0" />
<UserPref name="p7" display_name="Price(8)" default_value="0" />
<UserPref name="s8" display_name="Stock Code(9)" default_value="" />
<UserPref name="n8" display_name="Quantity(9)" default_value="0" />
<UserPref name="p8" display_name="Price(9)" default_value="0" />
<UserPref name="s9" display_name="Stock Code(10)" default_value="" />
<UserPref name="n9" display_name="Quantity(10)" default_value="0" />
<UserPref name="p9" display_name="Price(10)" default_value="0" />
<UserPref name="s10" display_name="Stock Code(11)" default_value="" />
<UserPref name="n10" display_name="Quantity(11)" default_value="0" />
<UserPref name="p10" display_name="Price(11)" default_value="0" />
<UserPref name="s11" display_name="Stock Code(12)" default_value="" />
<UserPref name="n11" display_name="Quantity(12)" default_value="0" />
<UserPref name="p11" display_name="Price(12)" default_value="0" />
<UserPref name="s12" display_name="Stock Code(13)" default_value="" />
<UserPref name="n12" display_name="Quantity(13)" default_value="0" />
<UserPref name="p12" display_name="Price(13)" default_value="0" />
<UserPref name="s13" display_name="Stock Code(14)" default_value="" />
<UserPref name="n13" display_name="Quantity(14)" default_value="0" />
<UserPref name="p13" display_name="Price(14)" default_value="0" />
<UserPref name="s14" display_name="Stock Code(15)" default_value="" />
<UserPref name="n14" display_name="Quantity(15)" default_value="0" />
<UserPref name="p14" display_name="Price(15)" default_value="0" />
<UserPref name="s15" display_name="Stock Code(16)" default_value="" />
<UserPref name="n15" display_name="Quantity(16)" default_value="0" />
<UserPref name="p15" display_name="Price(16)" default_value="0" />
<UserPref name="s16" display_name="Stock Code(17)" default_value="" />
<UserPref name="n16" display_name="Quantity(17)" default_value="0" />
<UserPref name="p16" display_name="Price(17)" default_value="0" />
<UserPref name="s17" display_name="Stock Code(18)" default_value="" />
<UserPref name="n17" display_name="Quantity(18)" default_value="0" />
<UserPref name="p17" display_name="Price(18)" default_value="0" />
<UserPref name="s18" display_name="Stock Code(19)" default_value="" />
<UserPref name="n18" display_name="Quantity(19)" default_value="0" />
<UserPref name="p18" display_name="Price(19)" default_value="0" />
<UserPref name="s19" display_name="Stock Code(20)" default_value="" />
<UserPref name="n19" display_name="Quantity(20)" default_value="0" />
<UserPref name="p19" display_name="Price(20)" default_value="0" />
<UserPref name="interval" display_name="Refresh time" default_value="30" datatype="enum">
<EnumValue value="30" display_value="30 sec" />
<EnumValue value="60" display_value="1 min" />
<EnumValue value="300" display_value="5 min" />
<EnumValue value="900" display_value="15 min" />
</UserPref>

<Content type="html">
<![CDATA[
<HEAD>
<style type="text/css"><!--body {
font: normal 10px auto "Tahoma", Verdana, Arial, Helvetica, sans-serif;
color: #4f6b72;
background: #FFFFFF;
}

a {
color: #004B8A;
}



#loc {
position: absolute;
left: 0px;
top: 50;

}
caption {
padding: 0 0 5px 0;
width: 700px;
font: italic 11px "Tahoma", Verdana, Arial, Helvetica, sans-serif;
text-align: right;
}

th {
font: bold 10px "Tahoma", Verdana, Arial, Helvetica, sans-serif;
color: #000030;
border-right: 1px solid #C1DAD7;
border-bottom: 1px solid #C1DAD7;
border-top: 1px solid #C1DAD7;
text-transform: uppercase;
text-align: left;
padding: 1px 1px 1px 1px;
background: #E0EAF4;
}

th.nobg {
border-top: 0;
border-left: 0;
border-right: 1px solid #C1DAD7;
background: none;
}

td {
border-right: 1px solid #C1DAD7;
border-bottom: 1px solid #C1DAD7;
background: #fff;
padding: 1px 1px 1px 1px;
color: #4f6b72;
word-wrap: break-word;
}

tr.alt {
background: #F5FAFA;
color: #00429C;
}
td.alt {
background: #F5FAFA;
color: #00429C;
font: bold 10px "Tahoma", Verdana, Arial, Helvetica, sans-serif;
}
td.alt1 {
background: #F5FAFA;
color: green;
font: bold 10px "Tahoma", Verdana, Arial, Helvetica, sans-serif;
}
td.negalt {
background: #F5FAFA;
color: #8B0000;
font: bold 10px "Tahoma", Verdana, Arial, Helvetica, sans-serif;
}


th.spec {
border-left: 1px solid #C1DAD7;
border-top: 0;
background: #fff;
font: bold 10px "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif;
}

th.specalt {
border-left: 1px solid #C1DAD7;
border-top: 0;
background: #f5fafa;
font: bold 10px "Tahoma", Verdana, Arial, Helvetica, sans-serif;
color: #000081;
}
-->
</style><SCRIPT type="text/javascript" language="javascript">
var timer;
var newDiv = null;
var prefs = new _IG_Prefs(__MODULE_ID__);
var _numStocks = 20;

function roundNumber(numberField) {
if(isNaN(numberField)) { return '-'; }
var rnum = numberField;
var rlength = 2; // The number of decimal places to round to
if (rnum > 8191 && rnum < 10485) {
rnum = rnum-5000;
var newnumber = Math.round(rnum*Math.pow(10,rlength))/Math.pow(10,rlength);
newnumber = newnumber+5000;
} else {
var newnumber = Math.round(rnum*Math.pow(10,rlength))/Math.pow(10,rlength);
}
return newnumber;
}
//http://quote.yahoo.com/d/quotes.csv?s=%5ebsesn+%5ensei+532418.BO+ASHOKLEY.NS+GPIL.NS+530005.BO+MLL.NS+NTPC.NS+TTML.NS&f=nvl1'
function init()
{
//Create a div in which we will be rendering table
newDiv = document.createElement("div");
document.body.appendChild(newDiv);
get_stockdetails();
}

function CommaFormatted(volume)
{
var delimiter = ","; // replace comma if desired
var a = volume;//.split('.',2)
if(isNaN(volume)) { return '-'; }
var i = parseFloat(volume);
i = Math.abs(i);
var n = new String(i);
var a = [];
while(n.length > 3)
{
var nn = n.substr(n.length-3);
a.unshift(nn);
n = n.substr(0,n.length-3);
}
if(n.length > 0) { a.unshift(n); }
volume = a.join(delimiter);
return volume;
}


function get_stockdetails()
{
var mudStock = new Array(_numStocks-1);
var arrStock = new Array(_numStocks-1);
var arrShares = new Array(_numStocks-1);
var arrPrice = new Array(_numStocks-1);
var arrCurrPrice = new Array(_numStocks-1);
var arrCurrchange = new Array(_numStocks-1);
var isConfigured = false;
var surl = "http://finance.yahoo.com/d?s=";
var confStocks = 0;
var quotes = "";

//_IG_AdjustIFrameHeight(800);

//get user settings
for (i=0; i<_numStocks; i++){
mudStock[i] = prefs.getString("s" + i);
arrStock[i] = mudStock[i]+".BO";
arrShares[i] = parseFloat(prefs.getString("n" + i));
arrPrice[i] = parseFloat(prefs.getString("p" + i));
arrCurrPrice[i] = 0;
arrCurrchange[i] = 0;
if (mudStock[i] !='' && mudStock[i]!=null ) {
quotes += _esc(arrStock[i]);
isConfigured = true;
quotes += '+';
confStocks++;
}
}

if (confStocks > 0) {
surl += _esc(quotes)+"&f=nl1c2vgh&random="+ Math.random();
_IG_FetchContent(surl, _IG_Callback(processResult));
}

function processResult(str) {
//Just a temporary div, later this will be assigned to newDiv.
var responseText = str;
var shtml = "<div >";
if (responseText == null || responseText == "") {
shtml += "<i><font size='3'>Service is temporarily unavailable. </font></i></div>";
newDiv.innerHTML = shtml;
timer = setTimeout( 'get_stockdetails()', 5000 ) ;
return;
}


//Lets create table & headers for the same.

shtml += "<table >";
shtml += "<tr><th scope='col' >Script Name</th>";
shtml += "<th scope='col' >Market Price</th>"
shtml += "<th scope='col' >Vol</th>"
shtml += "<th scope='col' >Day Low</th>"
shtml += "<th scope='col' >Day High</th>"
shtml += "<th scope='col' >Qty</th>"
shtml += "<th scope='col' >Cost Price</th>"
shtml += "<th scope='col' >Profit / Loss</th></tr>"

// Lets replace \n by commas because we will be getting multiple records
var tmp1 = responseText.replace(new RegExp( "\\n", "g" ), ",");

//Replace any double quotes; that looks ugly
var tmp2 = tmp1.replace(new RegExp( "\"", "g" ),"");

// Use the split function to extract substrings separated by comma
// delimiters.
var contacts = tmp2.split(",");

//Process array of extracted substrings.
var rec = 0;
var total_profit = 0;
var pct_prof = 0;
var invest = 0;
var mktvalue = 0;
var col = 0;
for (var i = 0; i < contacts.length ; i++) {
switch(col)
{
case 0 : //Script name, Qty, Buy Price
if (rec%2 == 0) {
shtml += "<tr><th scope='row' class='specalt'>";
} else {
shtml += "<tr><th scope='row' class='spec'>";
}
shtml += "<a href='http://www.mudraa.com/topics.php?stockcode=" + mudStock[rec]+ "' target='_blank'>" + contacts[i] + "</a></th>";

col++;
break;
case 1 : //Mkt Price and change
arrCurrPrice[rec] = roundNumber(parseFloat(contacts[i]));
i++;
arrCurrchange[rec] = contacts[i];
if(roundNumber(parseFloat(contacts[i]))<0){
shtml += "<td class='negalt'>" + arrCurrPrice[rec] + "<br>"+ arrCurrchange[rec]+ "</td>";
}else{
shtml += "<td class='alt1'>" + arrCurrPrice[rec] + "<br>"+ arrCurrchange[rec]+ "</td>";
}
col++;
break;
case 2 : //Volume
shtml += "<td class='alt'>" + CommaFormatted(contacts[i]) + "";
shtml += "<center><br><a href='http://www.mudraa.com/chart1.php?stockcode=" + mudStock[rec]+ "' target='_blank' title='click here to view one year daily chart'>iChart</a></center></td>";
col++;
break;
case 3 : //Day Low
shtml += "<td class='alt'>" + roundNumber(parseFloat(contacts[i])) + "</td>";
col++;
break;
case 4 : //Day High & Profit
shtml += "<td class='alt'>" + roundNumber(parseFloat(contacts[i])) + "</td>";
shtml += "<td class='alt'>" + arrShares[rec] + "</td>";
shtml += "<td class='alt'>" + arrPrice[rec] + "</td>";
invest = invest + roundNumber(parseFloat(arrPrice[rec]) * parseFloat(arrShares[rec]));
currVal = roundNumber(parseFloat(arrShares[rec] * arrCurrPrice[rec]));
mktvalue = mktvalue + roundNumber(currVal);
earnVal = roundNumber(currVal - roundNumber(parseFloat(arrShares[rec]) * parseFloat(arrPrice[rec])));
total_profit = roundNumber(total_profit + earnVal);
if (earnVal < 0) {
shtml += "<td class='negalt'>";
} else {
shtml += "<td class='alt1'>";
}
if (arrPrice[rec] != 0) {
shtml += earnVal + "<br>[" + roundNumber((arrCurrPrice[rec] - arrPrice[rec]) * 100/arrPrice[rec]) + "%]";
}
else
{
shtml += "0";
}
shtml +=" <br> </td></tr>";

col = 0;
rec++;
break;

}


if (rec >= confStocks)
break;




} //end of for

shtml += "</table><table><tr><td class='alt'>Value at Cost:<br>"+ roundNumber(invest) + " </td>";
shtml += "<td class='alt'>Value at Market Price:<br>"+ roundNumber(mktvalue) + " </td>";

if (total_profit < 0)
shtml += "<td class='negalt'>Total Loss: <br>" + total_profit + " [" + roundNumber(total_profit * 100/invest) + "%]</td>";
else
shtml += "<td class='alt1'>Total Profit: <br>" + total_profit + " [" + roundNumber(total_profit * 100/invest) + "%]</td>";

shtml += "</tr></table>Note: Prices may be delayed by few minutes.";
shtml += "</div>";

// Output html in div.
//newDiv.innerHTML = shtml;
document.getElementById("container1").innerHTML = shtml; 
_IG_AdjustIFrameHeight();

var interval = prefs.getInt('interval');

//timer = setTimeout( 'get_stockdetails()', parseFloat(interval * 1000) ) ;
}
}

</SCRIPT>
</HEAD>
<BODY style="border:none" onload="init();">
<basefont size="3">

<p align="left" valign="top" color="blue">Edit settings (First of Top Three Buttons) and add your Portfolio details. <a href='http://www.mudraa.com/searchstock1.php' OnClick="window.open(this.href,'search','width=450,height=500,toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=1,resizable=1');
return false;"> Click Here</a> for stock code search. 
</p>
<DIV id="container1" class=scroll style="overflow:auto;"></DIV><br>
<iframe frameborder=0 WIDTH=350 HEIGHT=700 SRC='http://www.mudraa.com/directads.php'></IFRAME>
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "UA-2333942-1";
urchinTracker();
</script>
</BODY>
]]>
</Content>
</Module>