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,I,H){RecIdx++;date[RecIdx]=B;open[RecIdx]=G;high[RecIdx]=C;low[RecIdx]=D;close[RecIdx]=E;canpat[RecIdx]=F;canrec[RecIdx]=A;canact[RecIdx]=I;ema[RecIdx]=H}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(Y,X){var A,f,B,T;var a,U,D,Z,I,N;var R,P,Q;var H;var G;var c=9,C=4;var O=parseInt(c/2),W=c+C;var V=20,J=4,F=10,L=6,K=6;var g,E;if(stockname.length==0){return }A=ca_left+(marketspage)?110:85;f=ca_top+50;B=ca_right-65;T=ca_bottom-170;if(X=="overlay"){jgo.clear();M();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,f,B-A,T-f);str=stockname.toUpperCase()+" : "+exchange.toUpperCase();text(A+(B-A)/2,f-cheight-L,str,"DT_CENTER",cwidth,"jg");xspan=B-A+1-2*V;yspan=T-f+1-2*V;Z=parseInt(xspan/W);if(ndays<Z){Z=ndays}if(X=="pageleft"){po+=Z}else{if(X=="pageright"){po-=Z}else{if(X=="hpageleft"){po+=parseInt(Z/2)}else{if(X=="hpageright"){po-=parseInt(Z/2)}else{if(X=="oneleft"){po++}else{if(X=="oneright"){po--}else{if(X=="pagefirst"){po=ndays-Z}else{if(X=="pagelast"){po=0}}}}}}}}if(po+Z>ndays){po=ndays-Z}if(po<0){po=0}hwm=-1000000000;lwm=1000000000;for(a=Z-1+po;a>=po;a--){if(high[a]>hwm){hwm=high[a]}if(low[a]<lwm){lwm=low[a]}if(ema[a]>hwm){hwm=ema[a]}if(ema[a]<lwm){lwm=ema[a]}}yrange=hwm-lwm;I=xspan%W;chartx=parseInt(A+V+I/2+C/2);charty=parseInt(T-V);if((Z-1+po)<(ndays-nperiod)){U=1}else{U=(Z+po)-(ndays-nperiod)}D=(Z-1+po)-U;jg.setColor(ema_pen);R=chartx+U*W;for(a=D;a>=po;a--){jg.drawLine(R+O-W,map(ema[a+1]),R+O,map(ema[a]));R+=W}N=0;R=chartx;for(a=Z-1+po;a>=po;a--){jg.setColor(standard_pen);jg.drawLine(R+O,T+J,R+O,T-J);if(canact[a]!=0){if(marketspage){str=(canact[a]>0)?"U":"D"}else{str=(canact[a]>0)?"B":"S"}text(R+O,T+J,str,"DT_CENTER",cwidth,"jg")}if(canpat[a]>p_nopat){jg.setColor(nocan_brush);jg.fillRect(R+O-2,T-J-4,5,4)}jg.setColor(standard_pen);jg.drawLine(R+O,map(low[a]),R+O,map(high[a])-1);if(open[a]<close[a]){g=upcan_pen;E=upcan_brush;P=map(close[a])}else{if(open[a]>close[a]){g=downcan_pen;E=downcan_brush;P=map(open[a])}else{g=nocan_pen;E=nocan_brush;P=map(open[a])}}w=c;h=Math.abs(map(open[a])-map(close[a])+1);jg.setColor(E);jg.fillRect(R,P,w,h);jg.setColor(g);jg.drawRect(R,P,w-1,(h>1)?h:1);bb_id[N]=a;bb_left[N]=R;bb_top[N]=map(high[a]);bb_right[N]=R+c-1;bb_bottom[N]=map(low[a]);++N;R+=W}bbhwm=N-1;jg.setColor(standard_pen);Q=parseInt(yspan/F);H=yrange/F;for(a=0;a<=F;a++){jg.drawLine(A-J,charty-a*Q,A+J+1,charty-a*Q);str=f2d(lwm+a*H);text(A-J-L,charty-a*Q-cheight/2,str,"DT_RIGHT",cwidth,"jg")}text(A,f-cheight-L,date[Z-1+po],"DT_LEFT",cwidth,"jg");text(B,f-cheight-L,date[po],"DT_RIGHT",cwidth,"jg");M();jg.paint();jgo.paint();return ;function M(){b();if(marketspage){d()}else{S()}e()}function b(){jgo.setColor(marker_pen);if(find()!=-1){R=bb_left[picked_bbi]+((bb_right[picked_bbi]-bb_left[picked_bbi])/2);jgo.drawLine(R,f+2*J,R,bb_top[picked_bbi]-8);jgo.drawLine(R,bb_bottom[picked_bbi]+8,R,T-2*J-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){P=map(f2d(Math.abs(canrec[picked_id])));jgo.drawLine(A+2*J,P,B-2*J,P)}}}function S(){jgo.setColor(ic_pen);jgo.setFont(icfont,icfontsize,Font.PLAIN);charty=parseInt(T-V);R=parseInt(ca_left+(ca_right-ca_left)/2);P=parseInt(charty+(ca_bottom-charty)/4);if(picked_bbi==-1){a=0}else{a=picked_id}val=date[a].split("-");G=day_of_week(val[0],val[1],val[2]);str="Information and Action Commentary for "+G+" "+date[a];text(R,P+iccheight+K,str,"DT_CENTER",iccwidth,"jgo");P+=cheight+K;str="Open "+f2d(open[a])+" - High "+f2d(high[a])+" - Low "+f2d(low[a])+" - Close: "+f2d(close[a]);str+=" - ema "+f2d(ema[a]);str+=(canpat[a]>p_nopat)?" - "+canpatstr[canpat[a]]:"";text(R,P+iccheight+K,str,"DT_CENTER",iccwidth,"jgo");P+=iccheight+K;if(canact[a]!=0){strbs=(canact[a]>0)?"bought":"sold";stra=f2d((canact[a]>0)?canact[a]:Math.abs(canact[a]));str="Today, stock was "+strbs+" at "+stra+".";text(R,P+iccheight+K,str,"DT_CENTER",iccwidth,"jgo");P+=iccheight+K}if(canrec[a]>0){str="Next trading day, buy if stock closes above "+f2d(canrec[a])+" with an up candle."}else{if(canrec[a]<0){str="Next trading day, sell if stock closes below "+f2d(Math.abs(canrec[a]))+" with a down candle."}else{str="Continue to wait for buy/sell signal."}}text(R,P+iccheight+K,str,"DT_CENTER",iccwidth,"jgo")}function d(){jgo.setColor(ic_pen);jgo.setFont(icfont,icfontsize,Font.PLAIN);charty=parseInt(T-V);R=parseInt(ca_left+(ca_right-ca_left)/2);P=parseInt(charty+(ca_bottom-charty)/4);if(picked_bbi==-1){a=0}else{a=picked_id}val=date[a].split("-");G=day_of_week(val[0],val[1],val[2]);str="Information and Action Commentary for "+G+" "+date[a];text(R,P+iccheight+K,str,"DT_CENTER",iccwidth,"jgo");P+=cheight+K;str="Open "+f2d(open[a])+" - High "+f2d(high[a])+" - Low "+f2d(low[a])+" - Close: "+f2d(close[a]);str+=" - ema "+f2d(ema[a]);str+=(canpat[a]>p_nopat)?" - "+canpatstr[canpat[a]]:"";text(R,P+iccheight+K,str,"DT_CENTER",iccwidth,"jgo");P+=iccheight+K;if(canact[a]!=0){str="Today, index closed ";str+=(canact[a]>0)?"up":"down";str+=" from the previous day establishing ";str+=((canact[a]>0)?"an uptrend":"a downtrend")+" reversal.";text(R,P+iccheight+K,str,"DT_CENTER",iccwidth,"jgo");P+=iccheight+K}if(canrec[a]>0){str="On the next trading day, look for an uptrend reversal if ";str+="index closes above "+f2d(canrec[a])+" with an up candle."}else{if(canrec[a]<0){str="On the next trading day, look for a downtrend reversal if ";str+="if index closes below "+f2d(Math.abs(canrec[a]))+" with a down candle."}else{str="Continue to wait for up/down signal."}}text(R,P+iccheight+K,str,"DT_CENTER",iccwidth,"jgo")}function e(){if(Y==""){return }jgo.setFont(font,fontsize,Font.PLAIN);jgo.setColor(km_pen);if(Y=="pick"){str="pick candlestick"}else{if(Y=="onepos"){str="shift one position"}else{if(Y=="hpage"){str="shift half page"}else{if(Y=="page"){str="shift full page"}else{if(Y=="allpages"){str="shift first/last page"}else{if(Y=="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 D=new Date();D.setFullYear(B,nm[C],A);return dow[D.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(L){var H;var I,A;var J,E,B,O;var G,D,M,K,C;var F=800;var N=500;maxheight=600;forced_client=false;I=document.body.clientWidth;A=document.body.clientHeight;if(typeof (I)=="undefined"||typeof (A)=="undefined"){forced_client=true;I=1200;A=800}J=G=(marketspage)?100:150;E=M=(marketspage)?100:130;K=(marketspage)?90:120;C=(M-K)/2;D=30;B=I-(2*M);if(B<F){B=F}O=(A-G>parseInt(0.5*B))?parseInt(0.5*B):A-G;if(O<N){O=N}else{if(O>maxheight){O=maxheight}}ca_left=0;ca_top=0;ca_right=B-1;ca_bottom=O-1;ca_left_offset=E;ca_top_offset=J;document.getElementById("reservedarea").style.height=J+O;document.getElementById("chartarea").style.left=E;document.getElementById("chartarea").style.top=J;document.getElementById("chartarea").style.width=B;document.getElementById("chartarea").style.height=O;document.getElementById("chartoverlay").style.left=E;document.getElementById("chartoverlay").style.top=J;document.getElementById("chartoverlay").style.width=B;document.getElementById("chartoverlay").style.height=O;document.getElementById("cmds").style.top=J-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=J-22;document.getElementById("ruhead").style.visibility="visible";document.getElementById("rulist").style.left=C;document.getElementById("rulist").style.top=J;document.getElementById("rulist").style.width=K;document.getElementById("rulist").style.height=O;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=J-22;document.getElementById("pfhead").style.width=K;document.getElementById("pfhead").style.visibility="visible";document.getElementById("pfstocks").style.left=ca_left_offset+B+C;document.getElementById("pfstocks").style.top=J;document.getElementById("pfstocks").style.width=K;document.getElementById("pfstocks").style.height=O;document.getElementById("pfstocks").style.visibility="visible"}if(L){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,I,H,E,D,B;if(typeof (A)=="undefined"){A=window.event}G=A.clientX;F=A.clientY;C=document.body.scrollLeft;I=document.body.scrollTop;if(typeof (document.body.clientLeft)!="undefined"&&typeof (document.body.clientTop)!="undefined"){H=document.body.clientLeft;E=document.body.clientTop}else{H=E=0}D=G+C-H-ca_left_offset;B=F+I-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()}};