<?xml version="1.0" encoding="UTF-8"?>
<Module>
<ModulePrefs title="Custom Portfolio" 
  author="Khaja" 
  author_email="knajimuddin@gmail.com" 
  render_inline="optional" 
  description="Maintain your own portfolio. Supports all major Stock Exchanges. Refreshes on its own based on set interval" 
  scrolling="true" 
  height="400" 
  width="350" 
  category="Finance" 
  thumbnail="http://manoj.marathe.googlepages.com/stkscreen-tb.png"
  screenshot="http://manoj.marathe.googlepages.com/stkscreen.png"/> 
<UserPref name="l0" display_name="Share Format" default_value="Script code,# Shares,Cost Price" /> 
<UserPref name="s0" display_name="Share (1)" default_value="NTPC.NS,10000,200.25" /> 
<UserPref name="s1" display_name="Share (2)" default_value="TCS.NS,10,1020.75" /> 
<UserPref name="s2" display_name="Share (3)" default_value="" /> 
<UserPref name="s3" display_name="Share (4)" default_value="" /> 
<UserPref name="s4" display_name="Share (5)" default_value="" /> 
<UserPref name="s5" display_name="Share (6)" default_value="" /> 
<UserPref name="s6" display_name="Share (7)" default_value="" /> 
<UserPref name="s7" display_name="Share (8)" default_value="" /> 
<UserPref name="s8" display_name="Share (9)" default_value="" /> 
<UserPref name="s9" display_name="Share (10)" default_value="" /> 
<UserPref name="s10" display_name="Share (11)" default_value="" /> 
<UserPref name="s11" display_name="Share (12)" default_value="" /> 
<UserPref name="s12" display_name="Share (13)" default_value="" /> 
<UserPref name="s13" display_name="Share (14)" default_value="" /> 
<UserPref name="s14" display_name="Share (15)" default_value="" /> 
<UserPref name="s15" display_name="Share (16)" default_value="" /> 
<UserPref name="s16" display_name="Share (17)" default_value="" /> 
<UserPref name="s17" display_name="Share (18)" default_value="" /> 
<UserPref name="s18" display_name="Share (19)" default_value="" /> 
<UserPref name="s19" display_name="Share (20)" default_value="" /> 
<UserPref name="s20" display_name="Share (21)" default_value="" /> 
<UserPref name="s21" display_name="Share (22)" default_value="" /> 
<UserPref name="s22" display_name="Share (23)" default_value="" /> 
<UserPref name="s23" display_name="Share (24)" default_value="" /> 
<UserPref name="s24" display_name="Share (25)" default_value="" /> 
<UserPref name="s25" display_name="Share (26)" default_value="" /> 
<UserPref name="s26" display_name="Share (27)" default_value="" /> 
<UserPref name="s27" display_name="Share (28)" default_value="" /> 
<UserPref name="s28" display_name="Share (29)" default_value="" /> 
<UserPref name="s29" display_name="Share (30)" default_value="" /> 
<UserPref name="s30" display_name="Share (31)" default_value="" /> 
<UserPref name="s31" display_name="Share (32)" default_value="" /> 
<UserPref name="s32" display_name="Share (33)" default_value="" /> 
<UserPref name="s33" display_name="Share (34)" default_value="" /> 
<UserPref name="s34" display_name="Share (35)" default_value="" /> 
<UserPref name="s35" display_name="Share (36)" default_value="" /> 
<UserPref name="s36" display_name="Share (37)" default_value="" /> 
<UserPref name="s37" display_name="Share (38)" default_value="" /> 
<UserPref name="s38" display_name="Share (39)" default_value="" /> 
<UserPref name="s39" display_name="Share (40)" default_value="" /> 
<UserPref name="s40" display_name="Share (41)" default_value="" /> 
<UserPref name="s41" display_name="Share (42)" default_value="" /> 
<UserPref name="s42" display_name="Share (43)" default_value="" /> 
<UserPref name="s43" display_name="Share (44)" default_value="" /> 
<UserPref name="s44" display_name="Share (45)" default_value="" /> 
<UserPref name="s45" display_name="Share (46)" default_value="" /> 
<UserPref name="s46" display_name="Share (47)" default_value="" /> 
<UserPref name="s47" display_name="Share (48)" default_value="" /> 
<UserPref name="s48" display_name="Share (49)" default_value="" /> 
<UserPref name="s49" display_name="Share (50)" default_value="" /> 
<UserPref name="interval" display_name="Refresh time" default_value="30" datatype="enum"> 
<EnumValue value="5" display_value="5 sec" /> 
<EnumValue value="30" display_value="30 sec" /> 
<EnumValue value="60" display_value="1 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;}
#mytable {position: absolute;left: 0px;top: 50;padding: 0;margin: 0;}

#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(50);
var _numStocks = 50;

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;
}

 
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 stock = 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 = "";

  for (i=0; i<_numStocks; i++)
  {
     tmp5=prefs.getString("s" + i) ;
     if (tmp5.length > 0) {
        tmp6=tmp5.split(",");
        stock[i] = tmp6[0];
        arrShares[i] = parseFloat(tmp6[1]);
        arrPrice[i] = parseFloat(tmp6[2]);
        arrCurrPrice[i] = 0;
        arrCurrchange[i] = 0;
        if (stock[i] !='' && stock[i] !=null && arrShares[i] !=0 && arrShares[i] != null) 
        {
           quotes += _esc(stock[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) {
     var responseText = str;
     var shtml = "<div id='mytable'>";
     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;
     }
     
     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>" ;

     var tmp1 = responseText.replace(new RegExp( "\\n", "g" ), ",");
     var tmp2 = tmp1.replace(new RegExp( "\"", "g" ),"");
     var contacts = tmp2.split(",");
     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://in.finance.yahoo.com/q?s=" + stock[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]) + "</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'>";

                   }
                   shtml += earnVal + "<br>[" + roundNumber((arrCurrPrice[rec] - arrPrice[rec]) * 100/arrPrice[rec]) + "%]</td></tr>";
                   col = 0;
                   rec++;  
                   break;
        }
        if (rec >= confStocks)
           break;
      }
     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></div>";
     newDiv.innerHTML = shtml;
     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=350,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. <br> Note : Prices may be delayed by few minutes.</p>
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript"></script>
</BODY>
]]></Content>
</Module>














