/* Copyright 2008 - 2009 StockTradersPlace.com */var jg,jgo;var p_nopat=0;var canpatstr=new Array("","doji","almost doji","hammer","inverted hammer","spinning top","counterattack up","counterattack down","separating lines up","separating lines down","separating lines gapup","separating lines down","harami t1","harami t2","engulfing up","engulfing down","piercing pattern","dark cloud cover","morning star","evening star");var forced_client;var ca_left,ca_top,ca_right,ca_bottom,ca_left_offset,ca_top_offset;var p_frames=7;var frame_pen=Array("#50a029","#c4e1a4","#cde7b0","#d5ecbc","#def2c8","#ffffff","#60cc00");var standard_pen="#000000";var marker_pen="#969696";var ema_pen="#0000ff";var upcan_pen="#6e6e6e";var downcan_pen="#5a5a5a";var nocan_pen="#808080";var ic_pen="#116611";var upcan_brush="#00e600";var downcan_brush="#ff1414";var nocan_brush="#808080";var bckgnd_brush1="#ffffcc";var bckgnd_brush2="#f8fff1";var km_pen="#116611";var font="arial";var fontsize="15px";var cwidth=15;var cheight=15;var icfont="verdana";var icfontsize="15px";var iccwidth=15;var iccheight=15;var dow=Array("Sun","Mon","Tue","Wed","Thu","Fri","Sat");var nm={Jan:0,Feb:1,Mar:2,Apr:3,May:4,Jun:5,Jul:6,Aug:7,Sep:8,Oct:9,Nov:10,Dec:11};var hwm,lwm,yrange;var xspan,yspan;var chartx,charty;var bb_id=new Array();var bb_left=new Array();var bb_top=new Array();var bb_right=new Array();var bb_bottom=new Array();var bbhwm=-1,picked_bbi=-1,picked_id=-1;var po=0;var exchange="",stockname="",ndays=0,nperiod=10;var date=new Array();var open=new Array();var high=new Array();var low=new Array();var close=new Array();var canpat=new Array();var canrec=new Array();var canact=new Array();var ema=new Array();var RecIdx=-1;function Rec(b,g,c,d,e,f,a,k,j){RecIdx++;date[RecIdx]=b;open[RecIdx]=g;high[RecIdx]=c;low[RecIdx]=d;close[RecIdx]=e;canpat[RecIdx]=f;canrec[RecIdx]=a;canact[RecIdx]=k;ema[RecIdx]=j}function pick(a,c){var b;picked_bbi=-1;for(b=0;b<=bbhwm;b++){if(a>=bb_left[b]&&a<=bb_right[b]&&c>=bb_top[b]&&c<=bb_bottom[b]){picked_bbi=b;picked_id=bb_id[b];return}}}function find(){var a;if(picked_bbi==-1){return picked_bbi}picked_bbi=-1;for(a=0;a<=bbhwm;a++){if(picked_id==bb_id[a]){picked_bbi=a;return picked_bbi}}return picked_bbi}function picknext(a){if(picked_bbi==-1){if(a=="oneleft"){picked_bbi=0}else{if(a=="oneright"){picked_bbi=bbhwm}}}else{if(a=="oneleft"){--picked_bbi}else{if(a=="oneright"){++picked_bbi}}if(picked_bbi==-1){picked_bbi=bbhwm}else{if(picked_bbi>bbhwm){picked_bbi=0}}}picked_id=bb_id[picked_bbi]}function frame(d,c,b,a){for(i=0;i<p_frames;i++){jg.setColor(frame_pen[i]);jg.drawRect(d+i,c+i,b-d-2*i,a-c-2*i)}}function map(a){var b;b=charty-((a-lwm)/yrange*yspan);return parseInt(b)}function text(a,f,b,e,d,c){width=d*b.length;switch(e){case"DT_LEFT":align="left";break;case"DT_RIGHT":a-=width;align="right";break;case"DT_CENTER":a-=parseInt(width/2);align="center";break}if(c=="jg"){jg.drawStringRect(b,parseInt(a),parseInt(f),parseInt(width),align)}else{jgo.drawStringRect(b,parseInt(a),parseInt(f),parseInt(width),align)}}function draw_cbswin(E,D){var a,L,b,z;var G,A,d,F,k,q;var u,s,t;var j;var g;var I=9,c=4;var r=parseInt(I/2),C=I+c;var B=20,l=4,f=10,o=6,m=6;var M,e;if(stockname.length==0){return}a=ca_left+(marketspage)?110:85;L=ca_top+50;b=ca_right-65;z=ca_bottom-170;if(D=="overlay"){jgo.clear();p();jgo.paint();return}jg.clear();jgo.clear();jg.setFont(font,fontsize,Font.PLAIN);frame(ca_left,ca_top,ca_right,ca_bottom);jg.setColor(standard_pen);jg.drawRect(a,L,b-a,z-L);str=stockname.toUpperCase()+" : "+exchange.toUpperCase();text(a+(b-a)/2,L-cheight-o,str,"DT_CENTER",cwidth,"jg");xspan=b-a+1-2*B;yspan=z-L+1-2*B;F=parseInt(xspan/C);if(ndays<F){F=ndays}if(D=="pageleft"){po+=F}else{if(D=="pageright"){po-=F}else{if(D=="hpageleft"){po+=parseInt(F/2)}else{if(D=="hpageright"){po-=parseInt(F/2)}else{if(D=="oneleft"){po++}else{if(D=="oneright"){po--}else{if(D=="pagefirst"){po=ndays-F}else{if(D=="pagelast"){po=0}}}}}}}}if(po+F>ndays){po=ndays-F}if(po<0){po=0}hwm=-1000000000;lwm=1000000000;for(G=F-1+po;G>=po;G--){if(high[G]>hwm){hwm=high[G]}if(low[G]<lwm){lwm=low[G]}if(ema[G]>hwm){hwm=ema[G]}if(ema[G]<lwm){lwm=ema[G]}}yrange=hwm-lwm;k=xspan%C;chartx=parseInt(a+B+k/2+c/2);charty=parseInt(z-B);if((F-1+po)<(ndays-nperiod)){A=1}else{A=(F+po)-(ndays-nperiod)}d=(F-1+po)-A;jg.setColor(ema_pen);u=chartx+A*C;for(G=d;G>=po;G--){jg.drawLine(u+r-C,map(ema[G+1]),u+r,map(ema[G]));u+=C}q=0;u=chartx;for(G=F-1+po;G>=po;G--){jg.setColor(standard_pen);jg.drawLine(u+r,z+l,u+r,z-l);if(canact[G]!=0){if(marketspage){str=(canact[G]>0)?"U":"D"}else{str=(canact[G]>0)?"B":"S"}text(u+r,z+l,str,"DT_CENTER",cwidth,"jg")}if(canpat[G]>p_nopat){jg.setColor(nocan_brush);jg.fillRect(u+r-2,z-l-4,5,4)}jg.setColor(standard_pen);jg.drawLine(u+r,map(low[G]),u+r,map(high[G])-1);if(open[G]<close[G]){M=upcan_pen;e=upcan_brush;s=map(close[G])}else{if(open[G]>close[G]){M=downcan_pen;e=downcan_brush;s=map(open[G])}else{M=nocan_pen;e=nocan_brush;s=map(open[G])}}w=I;h=Math.abs(map(open[G])-map(close[G])+1);jg.setColor(e);jg.fillRect(u,s,w,h);jg.setColor(M);jg.drawRect(u,s,w-1,(h>1)?h:1);bb_id[q]=G;bb_left[q]=u;bb_top[q]=map(high[G]);bb_right[q]=u+I-1;bb_bottom[q]=map(low[G]);++q;u+=C}bbhwm=q-1;jg.setColor(standard_pen);t=parseInt(yspan/f);j=yrange/f;for(G=0;G<=f;G++){jg.drawLine(a-l,charty-G*t,a+l+1,charty-G*t);str=f2d(lwm+G*j);text(a-l-o,charty-G*t-cheight/2,str,"DT_RIGHT",cwidth,"jg")}text(a,L-cheight-o,date[F-1+po],"DT_LEFT",cwidth,"jg");text(b,L-cheight-o,date[po],"DT_RIGHT",cwidth,"jg");p();jg.paint();jgo.paint();return;function p(){H();if(marketspage){J()}else{v()}K()}function H(){jgo.setColor(marker_pen);if(find()!=-1){u=bb_left[picked_bbi]+((bb_right[picked_bbi]-bb_left[picked_bbi])/2);jgo.drawLine(u,L+2*l,u,bb_top[picked_bbi]-8);jgo.drawLine(u,bb_bottom[picked_bbi]+8,u,z-2*l-1);w=bb_right[picked_bbi]-bb_left[picked_bbi]+4;h=bb_bottom[picked_bbi]-bb_top[picked_bbi]+16;jgo.drawRect(bb_left[picked_bbi]-2,bb_top[picked_bbi]-8,w,h)}if(picked_bbi!=-1){if(canrec[picked_id]!=0){s=map(f2d(Math.abs(canrec[picked_id])));jgo.drawLine(a+2*l,s,b-2*l,s)}}}function v(){jgo.setColor(ic_pen);jgo.setFont(icfont,icfontsize,Font.PLAIN);charty=parseInt(z-B);u=parseInt(ca_left+(ca_right-ca_left)/2);s=parseInt(charty+(ca_bottom-charty)/4);if(picked_bbi==-1){G=0}else{G=picked_id}val=date[G].split("-");g=day_of_week(val[0],val[1],val[2]);str="Information and Action Commentary for "+g+" "+date[G];text(u,s+iccheight+m,str,"DT_CENTER",iccwidth,"jgo");s+=cheight+m;str="Open "+f2d(open[G])+" - High "+f2d(high[G])+" - Low "+f2d(low[G])+" - close "+f2d(close[G]);str+=" - ema "+f2d(ema[G]);str+=(canpat[G]>p_nopat)?" - "+canpatstr[canpat[G]]:"";text(u,s+iccheight+m,str,"DT_CENTER",iccwidth,"jgo");s+=iccheight+m;if(canact[G]!=0){strbs=(canact[G]>0)?"bought":"sold";stra=f2d((canact[G]>0)?canact[G]:Math.abs(canact[G]));str="Today, stock was "+strbs+" at "+stra+".";text(u,s+iccheight+m,str,"DT_CENTER",iccwidth,"jgo");s+=iccheight+m}if(canrec[G]>0){str="Next trading day, buy if stock closes above "+f2d(canrec[G])+" with an up candle."}else{if(canrec[G]<0){str="Next trading day, sell if stock closes below "+f2d(Math.abs(canrec[G]))+" with a down candle."}else{str="Continue to wait for buy/sell signal."}}text(u,s+iccheight+m,str,"DT_CENTER",iccwidth,"jgo")}function J(){jgo.setColor(ic_pen);jgo.setFont(icfont,icfontsize,Font.PLAIN);charty=parseInt(z-B);u=parseInt(ca_left+(ca_right-ca_left)/2);s=parseInt(charty+(ca_bottom-charty)/4);if(picked_bbi==-1){G=0}else{G=picked_id}val=date[G].split("-");g=day_of_week(val[0],val[1],val[2]);str="Information and Action Commentary for "+g+" "+date[G];text(u,s+iccheight+m,str,"DT_CENTER",iccwidth,"jgo");s+=cheight+m;str="Open "+f2d(open[G])+" - High "+f2d(high[G])+" - Low "+f2d(low[G])+" - close "+f2d(close[G]);str+=" - ema "+f2d(ema[G]);str+=(canpat[G]>p_nopat)?" - "+canpatstr[canpat[G]]:"";text(u,s+iccheight+m,str,"DT_CENTER",iccwidth,"jgo");s+=iccheight+m;if(canact[G]!=0){str="Today, index closed ";str+=(canact[G]>0)?"up":"down";str+=" from the previous day establishing ";str+=((canact[G]>0)?"an uptrend":"a downtrend")+" reversal.";text(u,s+iccheight+m,str,"DT_CENTER",iccwidth,"jgo");s+=iccheight+m}if(canrec[G]>0){str="On the next trading day, look for an uptrend reversal if ";str+="index closes above "+f2d(canrec[G])+" with an up candle."}else{if(canrec[G]<0){str="On the next trading day, look for a downtrend reversal if ";str+="if index closes below "+f2d(Math.abs(canrec[G]))+" with a down candle."}else{str="Continue to wait for up/down signal."}}text(u,s+iccheight+m,str,"DT_CENTER",iccwidth,"jgo")}function K(){if(E==""){return}jgo.setFont(font,fontsize,Font.PLAIN);jgo.setColor(km_pen);if(E=="pick"){str="pick candlestick"}else{if(E=="onepos"){str="shift one position"}else{if(E=="hpage"){str="shift half page"}else{if(E=="page"){str="shift full page"}else{if(E=="allpages"){str="shift first/last page"}else{if(E=="bckgndclr"){str="choose background color"}}}}}}text(ca_left+(ca_right-ca_left)/2,ca_bottom-2*cheight,str,"DT_CENTER",cwidth,"jgo")}}function day_of_week(a,c,b){var e=new Date();e.setFullYear(b,nm[c],a);return dow[e.getDay()]}function f2d(a){var b=Math.round(a*100%100);return Math.floor(a)+"."+(b<10?"0":"")+(b==0?"0":b)}var keymidx=0;var keymhwm=4;var keymode=new Array("pick","onepos","hpage","page","allpages","bckgndclr");var shiftkey=4,ctrlkey=2,altkey=1,nomod=0;function pkd(b,a,c,d){mod=nomod;if(a){mod+=shiftkey}if(c){mod+=ctrlkey}if(d){mod+=altkey}if(b==37){if(mod==nomod){if(keymode[keymidx]=="pick"){picknext("oneleft");draw(keymode[keymidx],"overlay")}else{if(keymode[keymidx]=="onepos"){draw(keymode[keymidx],"oneleft")}else{if(keymode[keymidx]=="hpage"){draw(keymode[keymidx],"hpageleft")}else{if(keymode[keymidx]=="page"){draw(keymode[keymidx],"pageleft")}else{if(keymode[keymidx]=="allpages"){draw(keymode[keymidx],"pagefirst")}else{if(keymode[keymidx]=="bckgndclr"){document.getElementById("chartarea").style.backgroundColor=bckgnd_brush1}}}}}}return false}}else{if(b==39){if(mod==nomod){if(keymode[keymidx]=="pick"){picknext("oneright");draw(keymode[keymidx],"overlay")}else{if(keymode[keymidx]=="onepos"){draw(keymode[keymidx],"oneright")}else{if(keymode[keymidx]=="hpage"){draw(keymode[keymidx],"hpageright")}else{if(keymode[keymidx]=="page"){draw(keymode[keymidx],"pageright")}else{if(keymode[keymidx]=="allpages"){draw(keymode[keymidx],"pagelast")}else{if(keymode[keymidx]=="bckgndclr"){document.getElementById("chartarea").style.backgroundColor=bckgnd_brush2}}}}}}return false}}else{if(b==38&&mod==nomod){if(--keymidx<0){keymidx=keymhwm}draw(keymode[keymidx],"overlay");return false}else{if(b==40&&mod==nomod){if(++keymidx>keymhwm){keymidx=0}draw(keymode[keymidx],"overlay");return false}}}}return true}var _setclientareacnt=0;function setclientarea(n){var j;var k,a;var l,e,b,q;var g,d,o,m,c;var f=800;var p=500;maxheight=600;forced_client=false;k=document.body.clientWidth;a=document.body.clientHeight;if(typeof(k)=="undefined"||typeof(a)=="undefined"){forced_client=true;k=1200;a=800}l=g=(marketspage)?200:250;e=o=(marketspage)?100:130;m=(marketspage)?90:120;c=(o-m)/2;d=30;b=k-(2*o);if(b<f){b=f}q=(a-g>parseInt(0.5*b))?parseInt(0.5*b):a-g;if(q<p){q=p}else{if(q>maxheight){q=maxheight}}ca_left=0;ca_top=0;ca_right=b-1;ca_bottom=q-1;ca_left_offset=e;ca_top_offset=l;document.getElementById("reservedarea").style.height=l+q;document.getElementById("chartarea").style.left=e;document.getElementById("chartarea").style.top=l;document.getElementById("chartarea").style.width=b;document.getElementById("chartarea").style.height=q;document.getElementById("chartoverlay").style.left=e;document.getElementById("chartoverlay").style.top=l;document.getElementById("chartoverlay").style.width=b;document.getElementById("chartoverlay").style.height=q;document.getElementById("cmds").style.top=l-d;document.getElementById("cmds").style.height=d;document.getElementById("cmds").style.visibility="visible";if(!marketspage){document.getElementById("slookup").style.visibility="visible";document.getElementById("pflist").style.visibility="visible";document.getElementById("ruhead").style.left=c;document.getElementById("ruhead").style.top=l-22;document.getElementById("ruhead").style.visibility="visible";document.getElementById("rulist").style.left=c;document.getElementById("rulist").style.top=l;document.getElementById("rulist").style.width=m;document.getElementById("rulist").style.height=q;document.getElementById("rulist").style.visibility="visible";document.getElementById("pflist").style.left=ca_left_offset+b-20;document.getElementById("pfhead").style.left=ca_left_offset+b;document.getElementById("pfhead").style.top=l-22;document.getElementById("pfhead").style.width=m;document.getElementById("pfhead").style.visibility="visible";document.getElementById("pfstocks").style.left=ca_left_offset+b+c;document.getElementById("pfstocks").style.top=l;document.getElementById("pfstocks").style.width=m;document.getElementById("pfstocks").style.height=q;document.getElementById("pfstocks").style.visibility="visible"}if(n){draw(keymode[keymidx],"pagecurrent")}}var _devoutput=false;function toggle_devoutput(){if(_devoutput){document.getElementById("devoutput").style.visibility="hidden";_devoutput=false}else{document.getElementById("devoutput").style.visibility="visible";_devoutput=true}}function dump(){_s((forced_client)?"forced_client is true":"forced_client is false");_s("document.body.clientWidth and clientHeight "+document.body.clientWidth+" "+document.body.clientHeight);_s("chart area: "+ca_left+" "+ca_top+" "+ca_right+" "+ca_bottom+" offset "+ca_left_offset+" "+ca_top_offset);_s("reservedarea height "+document.getElementById("reservedarea").style.height);_s("chartarea height "+document.getElementById("chartarea").style.height);_s("chartoverlay height "+document.getElementById("chartoverlay").style.height);_s("document.body.scrollLeft and Top "+document.body.scrollLeft+"  "+document.body.scrollTop)}function init(){jg=new jsGraphics("chartarea");jgo=new jsGraphics("chartoverlay");setclientarea(false)}document.onkeydown=function(a){if(cinslfield){return true}if(finpflist){return true}if(typeof(a)=="undefined"){a=window.event}key=a.keyCode;shift=a.shiftKey;ctrl=a.ctrlKey;alt=a.altKey;return pkd(key,shift,ctrl,alt)};document.onkeyup=function(a){if(cinslfield){return true}if(finpflist){return true}if(typeof(a)=="undefined"){a=window.event}key=a.keyCode;shift=a.shiftKey;ctrl=a.ctrlKey;alt=a.altKey;return true};document.onclick=function(a){var g,f,c,k,j,e,d,b;if(typeof(a)=="undefined"){a=window.event}g=a.clientX;f=a.clientY;c=document.body.scrollLeft;k=document.body.scrollTop;if(typeof(document.body.clientLeft)!="undefined"&&typeof(document.body.clientTop)!="undefined"){j=document.body.clientLeft;e=document.body.clientTop}else{j=e=0}d=g+c-j-ca_left_offset;b=f+k-e-ca_top_offset;if(d>ca_left&&d<ca_right&&b>ca_top&&b<ca_bottom){pick(d,b)}draw(keymode[keymidx],"overlay")};window.onresize=function(){setclientarea(true)};function toggle_single(){(_single)?_single=false:_single=true}var _scnt=0;var _str="";var _single=true;function _s(a){if(_single){_str=a}else{(a=="")?_str=a:_str+=a+"<br/>"}document.getElementById("devoutput").innerHTML=_str}function draw(d,a){var b,c;draw_cbswin(d,a)}window.onload=function(){var d,c,b,a;if(typeof(marketspage)=="undefined"){marketspage=false}init();d=(new Date()).getTime();if(typeof(LoadData)=="function"){LoadData()}c=(new Date()).getTime()-d;if(ndays&&RecIdx){if(ndays!=RecIdx+1){alert("software error: ndays ("+ndays+") is not 1 greater than RecIdx ("+RecIdx+")")}}draw(keymode[keymidx],"pagecurrent");if(!marketspage){pfinit()}if(!marketspage){ishowhideall()}};