/* * jQuery JSON Plugin * version: 1.0 (2008-04-17) * * This document is licensed as free software under the terms of the * MIT License: http://www.opensource.org/licenses/mit-license.php * * Brantley Harris technically wrote this plugin, but it is based somewhat * on the JSON.org website's http://www.json.org/json2.js, which proclaims: * "NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.", a sentiment that * I uphold.  I really just cleaned it up. * * It is also based heavily on MochiKit's serializeJSON, which is * copywrited 2005 by Bob Ippolito. */(function($){function toIntegersAtLease(n){return n<10?"0"+n:n}Date.prototype.toJSON=function(date){return this.getUTCFullYear()+"-"+toIntegersAtLease(this.getUTCMonth())+"-"+toIntegersAtLease(this.getUTCDate())};var escapeable=/["\\\x00-\x1f\x7f-\x9f]/g;var meta={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"};$.quoteString=function(string){if(escapeable.test(string)){return'"'+string.replace(escapeable,function(a){var c=meta[a];if(typeof c==="string"){return c}c=a.charCodeAt();return"\\u00"+Math.floor(c/16).toString(16)+(c%16).toString(16)})+'"'}return'"'+string+'"'};$.toJSON=function(o,compact){var type=typeof(o);if(type=="undefined"){return"undefined"}else{if(type=="number"||type=="boolean"){return o+""}else{if(o===null){return"null"}}}if(type=="string"){return $.quoteString(o)}if(type=="object"&&typeof o.toJSON=="function"){return o.toJSON(compact)}if(type!="function"&&typeof(o.length)=="number"){var ret=[];for(var i=0;i<o.length;i++){ret.push($.toJSON(o[i],compact))}if(compact){return"["+ret.join(",")+"]"}else{return"["+ret.join(", ")+"]"}}if(type=="function"){throw new TypeError("Unable to convert object of type 'function' to json.")}var ret=[];for(var k in o){var name;type=typeof(k);if(type=="number"){name='"'+k+'"'}else{if(type=="string"){name=$.quoteString(k)}else{continue}}var val=$.toJSON(o[k],compact);if(typeof(val)!="string"){continue}if(compact){ret.push(name+":"+val)}else{ret.push(name+": "+val)}}return"{"+ret.join(", ")+"}"};$.compactJSON=function(o){return $.toJSON(o,true)};$.evalJSON=function(src){return eval("("+src+")")};$.secureEvalJSON=function(src){var filtered=src;filtered=filtered.replace(/\\["\\\/bfnrtu]/g,"@");filtered=filtered.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]");filtered=filtered.replace(/(?:^|:|,)(?:\s*\[)+/g,"");if(/^[\],:{}\s]*$/.test(filtered)){return eval("("+src+")")}else{throw new SyntaxError("Error parsing JSON, source is not valid.")}}})(jQuery);(function(k){var r=13;var o=9;var e=27;var g=37;var n=38;var j=39;var s=40;var p=8;var l=46;function a(t){k("#info").append(f(t)+"<br>")}function d(x){var z=-1;var t=-1;if(typeof x.selectionStart!="undefined"){z=x.selectionStart;t=x.selectionEnd}else{if(document.selection&&document.selection.createRange){var y=document.selection.createRange();var u;try{u=y.duplicate();u.moveToElementText(x)}catch(w){u=x.createTextRange()}u.setEndPoint("EndToStart",y);z=u.text.length;if(z>x.value.length){z=-1}u.setEndPoint("EndToStart",y);t=u.text.length;if(t>x.value.length){t=-1}}}return{start:z,end:t}}function c(u,t){u.focus();if(u.setSelectionRange){u.setSelectionRange(t,t)}else{if(u.createTextRange){m=u.createTextRange();m.moveStart("character",t);m.collapse();m.select()}}}function b(w){var t=[];for(var u=0;u<w.length;u++){if(w[u].id!=undefined&&w[u].value!=undefined){w[u].id=w[u].id+"";w[u].value=w[u].value+"";if(w[u].info!=undefined){w[u].info=w[u].info+""}t.push(w[u])}}return t}function h(t){if(t==undefined||!t){return""}return t.replace("\\","\\\\").replace("*","\\*").replace(".","\\.").replace("/","\\/")}function f(t){if(t==undefined||!t){return""}return t.replace("&","&amp;").replace("<","&lt;").replace(">","&gt;")}function q(t){if(t==undefined||!t){return""}return t.replace(/^\s+/g,"")}k.fn.autocomplete=function(A){var W=k(this);var K=k(this).get(0);if(!W.is("input:text,input:password,textarea")){return}if(!A&&(!k.isFunction(A.get)||!A.ajax_get)){return}if(W.attr("jqac")=="on"){return}W.attr("jqac","on");W.attr("autocomplete","off");A=k.extend({delay:500,timeout:5000,minchars:3,multi:false,cache:true,height:150,autowidth:false,noresults:"No results"},A);W.keydown(function(Y){switch(Y.which){case r:if(!X){return true}else{C()}return true;case e:B();return false;case n:M(Y.keyCode);return false;case s:if(!X){D(Q())}else{M(Y.keyCode)}return false}return true});W.keyup(function(Y){switch(Y.which){case r:case e:case g:case j:case n:case s:return false;default:D(Q())}return true});var T="";var z=0;var O=[];var E=0;var X=false;var S=false;var t=false;var u=false;var w=false;var I=false;var P=W.css("z-index");function Q(){var Z=W.val();if(A.multi){var ab=d(K);var aa=ab.start;for(;aa>0&&Z.charAt(aa-1)!=",";aa--){}var Y=ab.start;for(;Y<Z.length&&Z.charAt(Y)!=",";Y++){}var Z=Z.substr(aa,Y-aa)}return q(Z)}function x(aa){T=aa;if(A.multi){var ad=W.val();var ac=d(K);var ab=ac.start;for(;ab>0&&ad.charAt(ab-1)!=",";ab--){}var Z=ac.start;for(;Z<ad.length&&ad.charAt(Z)!=",";Z++){}var Y=ad.substr(0,ab)+(ab>0?" ":"")+aa+ad.substr(Z);W.val(Y);c(K,ab+aa.length+(ab>0?1:0))}else{K.focus();W.val(aa)}}function D(ab){if(ab.length<A.minchars){B();return false}if(A.cache&&ab.length>z&&O.length){var Y=[];for(var Z=0;Z<O.length;Z++){var aa=new RegExp("("+h(ab)+")","ig");if(aa.exec(O[Z].value)){Y.push(O[Z])}}T=ab;z=ab.length;O=Y;y(O);return false}else{clearTimeout(w);T=ab;z=ab.length;w=setTimeout(function(){O=[];if(k.isFunction(A.pre_callback)){A.pre_callback()}if(k.isFunction(A.get)){O=b(A.get(ab));y(O)}else{if(k.isFunction(A.ajax_get)){B();A.ajax_get(ab,F)}}},A.delay)}return false}function F(Y){R();O=b(Y);y(O)}function N(){if(!t){t=k('<div class="jqac-menu"><div class="jqac-loading">Loading</div></div>').get(0);k(t).css("position","absolute");var Y=W.offset();k(t).css("left",Y.left+"px");k(t).css("top",(Y.top+W.height()+2)+"px");if(!A.autowidth){k(t).width(W.width())}k("body").append(t)}k(t).show();setTimeout(R,10000)}function R(){if(t){k(t).hide()}clearTimeout(I)}function y(ac){if(X){k(X).remove()}R();G();X=k('<div class="jqac-menu"></div>').get(0);k(X).css({position:"absolute","z-index":P,"max-height":A.height+"px","overflow-y":"auto"});S=k("<ul></ul>").get(0);k(S).css("list-style","none").css("margin","0px").css("padding","2px").css("overflow","hidden");var ag=new RegExp("("+h(f(T))+")","ig");for(var ab=0;ab<ac.length;ab++){var Y=new String(ac[ab].value);var Z=f(Y).replace(ag,"<em>$1</em>");var ae=k('<span class="jqac-link">'+Z+"</span>").get(0);if(ac[ab].info!=undefined&&ac[ab].info!=""){k(ae).append(k('<div class="jqac-info">'+ac[ab].info+"</div>"))}k(ae).attr("name",ab+1);k(ae).click(function(){C()});k(ae).mouseover(function(){V(k(this).attr("name"),true)});var af=k("<li></li>").get(0);k(af).append(ae);k(S).append(af)}if(ac.length==0){k(S).append('<li class="jqac-warning">'+A.noresults+"</li>")}k(X).append(S);var ad=W.position();if(W.css("margin-left")=="auto"){var aa=0}else{var aa=W.css("margin-left").replace("px","")*1}k(X).css("left",ad.left+aa+"px");k(X).css("top",(ad.top+W.height()+2)+"px");if(!A.autowidth){k(X).width(W.width())}k(X).mouseover(function(){G()});k(X).mouseout(function(){J()});W.after(X);if(k.fn.bgiframe){k(X).bgiframe({height:X.scrollHeight})}if(X.scrollHeight>A.height){k(X).height(A.height);k(X).width(k(X).width()+20)}E=0;u=setTimeout(function(){B()},A.timeout)}function C(){if(E&&O[E-1]){var Y=O[E-1];if(Y.affected_value!=undefined&&Y.affected_value!=""){x(Y.affected_value)}else{x(Y.value)}if(k.isFunction(A.callback)){A.callback(O[E-1])}B()}}function M(Y){if(!S||O.length==0){return false}var Z;if(Y==s){Z=E+1}else{if(Y==n){Z=E-1}}if(Z>k(S).children().size()){Z=1}if(Z<1){Z=k(S).children().size()}V(Z)}function V(aa,Z){if(!S){return false}if(E>0){H()}E=Number(aa);var Y=k(S).children().get(E-1);Y.className="jqac-highlight";if(!Z){L(Y)}G()}function H(){if(!S){return false}if(E>0){k(S).children().get(E-1).className="";E=0}}function B(){G();if(X){k(X).remove();X=false;S=false;E=0}}function L(ac){if(!X){return false}var Z=X.clientHeight;var ad=X.scrollHeight;var ab=X.scrollTop;var Y=ac.offsetTop;var aa=Y+ac.offsetHeight;if(aa>ab+Z){X.scrollTop=aa-Z}else{if(Y<ab){X.scrollTop=Y}}return true}function G(){clearTimeout(u)}function J(){clearTimeout(u);u=setTimeout(function(){B()},1000)}function U(){G();clearTimeout(w);if(X){k(X).remove();X=false}if(S){k(S).remove();S=false}W.unbind();W.attr("jqac","");W.attr("autocomplete","")}return U}})($);/* * jQuery history plugin * * Copyright (c) 2006 Taku Sano (Mikage Sawatari) * Licensed under the MIT License: *   http://www.opensource.org/licenses/mit-license.php * * http://plugins.jquery.com/project/history * * Modified by Lincoln Cooper to add Safari support and only call the callback once during initialization * for msie when no initial hash supplied. * API rewrite by Lauris Buk?is-Haberkorns */(function(b){function a(){this._curHash="";this._callback=function(c){}}b.extend(a.prototype,{init:function(d){this._callback=d;this._curHash=location.hash;if(b.browser.msie){if(this._curHash==""){this._curHash="#"}b("body").prepend('<iframe id="jQuery_history" style="display: none;"></iframe>');var c=b("#jQuery_history")[0].contentWindow.document;c.open();c.close();c.location.hash=this._curHash}else{if(b.browser.safari){this._historyBackStack=[];this._historyBackStack.length=history.length;this._historyForwardStack=[];this._lastHistoryLength=history.length;this._isFirst=true;this._dontCheck=false}}setInterval(this._check,100)},add:function(c){this._historyBackStack.push(c);this._historyForwardStack.length=0;this._isFirst=true},_check:function(){if(b.browser.msie){var c=b("#jQuery_history")[0];var f=c.contentDocument||c.contentWindow.document;var h=f.location.hash;if(h!=b.history._curHash){location.hash=h;b.history._curHash=h;b.history._callback(h.replace(/^#/,""))}}else{if(b.browser.safari){if(!b.history._dontCheck){var d=0;if(b.history.lastHistoryLength==history.length&&b.history._historyBackStack.length>b.history.lastHistoryLength){b.history._historyBackStack.shift()}d=history.length-b.history._historyBackStack.length;b.history.lastHistoryLength=history.length;if(d){b.history._isFirst=false;if(d<0){for(var e=0;e<Math.abs(d);e++){b.history._historyForwardStack.unshift(b.history._historyBackStack.pop())}}else{for(var e=0;e<d;e++){b.history._historyBackStack.push(b.history._historyForwardStack.shift())}}var g=b.history._historyBackStack[b.history._historyBackStack.length-1];if(g!=undefined){b.history._curHash=location.hash;b.history._callback(g)}}else{if(b.history._historyBackStack[b.history._historyBackStack.length-1]==undefined&&!b.history._isFirst){if(document.URL.indexOf("#")>=0){b.history._callback(document.URL.split("#")[1])}else{b.history._callback("")}b.history._isFirst=true}}}}else{var h=location.hash;if(h!=b.history._curHash){b.history._curHash=h;b.history._callback(h.replace(/^#/,""))}}}},load:function(f){var g;if(b.browser.safari){g=f}else{g="#"+f;location.hash=g}this._curHash=g;if(b.browser.msie){var c=b("#jQuery_history")[0];var e=c.contentWindow.document;e.open();e.close();e.location.hash=g;this._callback(f)}else{if(b.browser.safari){this._dontCheck=true;this.add(f);var d=function(){b.history._dontCheck=false};window.setTimeout(d,400);this._callback(f);location.hash=g}else{this._callback(f)}}}});b(document).ready(function(){b.history=new a()})})(jQuery);/* * jQuery.ScrollTo - Easy element scrolling using jQuery. * Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com * Dual licensed under MIT and GPL. * Date: 5/25/2009 * @author Ariel Flesler * @version 1.4.2 * * http://flesler.blogspot.com/2007/10/jqueryscrollto.html */(function(c){var a=c.scrollTo=function(d,f,g){c(window).scrollTo(d,f,g)};a.defaults={axis:"xy",duration:parseFloat(c.fn.jquery)>=1.3?0:1};a.window=function(d){return c(window)._scrollable()};c.fn._scrollable=function(){return this.map(function(){var d=this,f=!d.nodeName||c.inArray(d.nodeName.toLowerCase(),["iframe","#document","html","body"])!=-1;if(!f){return d}var g=(d.contentWindow||d).document||d.ownerDocument||d;return c.browser.safari||g.compatMode=="BackCompat"?g.body:g.documentElement})};c.fn.scrollTo=function(f,e,d){if(typeof e=="object"){d=e;e=0}if(typeof d=="function"){d={onAfter:d}}if(f=="max"){f=9000000000}d=c.extend({},a.defaults,d);e=e||d.speed||d.duration;d.queue=d.queue&&d.axis.length>1;if(d.queue){e/=2}d.offset=b(d.offset);d.over=b(d.over);return this._scrollable().each(function(){var p=this,n=c(p),o=f,k,l={},h=n.is("html,body");switch(typeof o){case"number":case"string":if(/^([+-]=)?\d+(\.\d+)?(px|%)?$/.test(o)){o=b(o);break}o=c(o,this);case"object":if(o.is||o.style){k=(o=c(o)).offset()}}c.each(d.axis.split(""),function(r,s){var u=s=="x"?"Left":"Top",t=u.toLowerCase(),x="scroll"+u,q=p[x],g=a.max(p,s);if(k){l[x]=k[t]+(h?0:q-n.offset()[t]);if(d.margin){l[x]-=parseInt(o.css("margin"+u))||0;l[x]-=parseInt(o.css("border"+u+"Width"))||0}l[x]+=d.offset[t]||0;if(d.over[t]){l[x]+=o[s=="x"?"width":"height"]()*d.over[t]}}else{var w=o[t];l[x]=w.slice&&w.slice(-1)=="%"?parseFloat(w)/100*g:w}if(/^\d+$/.test(l[x])){l[x]=l[x]<=0?0:Math.min(l[x],g)}if(!r&&d.queue){if(q!=l[x]){j(d.onAfterFirst)}delete l[x]}});j(d.onAfter);function j(g){n.animate(l,e,d.easing,g&&function(){g.call(this,f,d)})}}).end()};a.max=function(g,j){var n=j=="x"?"Width":"Height",k="scroll"+n;if(!c(g).is("html,body")){return g[k]-c(g)[n.toLowerCase()]()}var o="client"+n,f=g.ownerDocument.documentElement,d=g.ownerDocument.body;return Math.max(f[k],d[k])-Math.min(f[o],d[o])};function b(d){return typeof d=="object"?d:{top:d,left:d}}})(jQuery);(function(){function b(d){var c=["transform","WebkitTransform","MozTransform"];var e;while(e=c.shift()){if(typeof d.style[e]!="undefined"){return e}}return"transform"}var a=jQuery.fn.css;jQuery.fn.css=function(c,d){if(c=="transform"){if(typeof jQuery.props[c]=="undefined"){jQuery.props[c]=b(this.get(0))}c=jQuery.props[c]}return a.apply(this,arguments)}})();(function(c){var a={direction:function(d){return(d<0?-1:1)},degrees:function(d){return(Math.floor(Math.abs(d)))%360},scale:function(d){return(1-(d%180)/90)*(d>=180?-1:1)}};c.fx.step.rotate3Di=function(d){direction=a.direction(d.now);degrees=a.degrees(d.now);scale=a.scale(degrees);if(d.options&&typeof d.options.sideChange!="undefined"){if(d.options.sideChange){var e=c(d.elem).data("rotate3Di.prevScale");if(scale*e<=0){d.options.sideChange.call(d.elem,(scale>0||e<0));c(d.elem).data("rotate3Di.prevScale",c(d.elem).data("rotate3Di.prevScale")*-1)}}scale=Math.abs(scale)}c(d.elem).data("rotate3Di.degrees",direction*degrees);c(d.elem).css("transform","skew(0deg, "+direction*degrees+"deg) scale("+scale+", 1)")};var b=c.fx.prototype.cur;c.fx.prototype.cur=function(){if(this.prop=="rotate3Di"){var e=c(this.elem).css("transform");if(e){var d=e.match(/, (-?[0-9]+)deg\)/);if(d&&d[1]){return parseInt(d[1])}else{return 0}}}return b.apply(this,arguments)};c.fn.rotate3Di=function(j,g,e){if(typeof g=="undefined"){g=0}if(typeof e=="object"){c.extend(e,{duration:g})}else{e={duration:g}}if(j=="toggle"){if(c(this).data("rotate3Di.flipped")){j="unflip"}else{j="flip"}}if(j=="flip"){c(this).data("rotate3Di.flipped",true);var f=-1;if(typeof e=="object"&&e.direction&&e.direction=="clockwise"){f=1}j=f*180}else{if(j=="unflip"){c(this).data("rotate3Di.flipped",false);j=0}}var h=c(this).data("rotate3Di.degrees")||0;c(this).data("rotate3Di.prevScale",a.scale(a.degrees(h)));c(this).animate({rotate3Di:j},e)}})(jQuery);Date.prototype._toString=function(){return this.getMonth()+1+"-"+this.getDate()+"-"+this.getFullYear()};Date.prototype._toEngString=function(){var a=String(this.getDate());var b=String(this.getMonth()+1);return String(this.getFullYear())+(b.length==1?"0":"")+b+(a.length==1?"0":"")+a};Date.prototype._parse=function(b){var a=(typeof b=="string"?b.split("-"):Array());if(a.length>=3){this.setDate(a[1]);this.setMonth(a[0]-1);this.setYear(a[2]);return this}return false};Date.prototype._parseEng=function(a){if(a.length>=8){this.setDate(a.slice(6,8));this.setMonth(a.slice(4,6)-1);this.setYear(a.slice(0,4));return this}return false};Array.prototype.getElement=function(c,e){var d=this;for(var b=0,a=d.length;b<a;b++){if(typeof(d[b])=="object"&&d[b][c]==e){return(d[b])}}return(null)};Array.prototype.getIndex=function(c,e){var d=this;for(var b=0,a=d.length;b<a;b++){if(typeof(d[b])=="object"&&d[b][c]==e){return(b)}}return(-1)};function GoHome(b,a){var c=null;if(acct_manager.IsSignedIn()){c=tab_manager.FindIDByLabel(Page_Welcome.label);if(c){tab_manager.RemoveTab(c)}tab_manager.AddTab(Page_Home.label,false,Page_Home,b,null,a,false,true)}else{c=tab_manager.FindIDByLabel(Page_Home.label);if(c){tab_manager.RemoveTab(c)}tab_manager.AddTab(Page_Welcome.label,false,Page_Welcome,b,null,a,false,true)}}function GoAnnotate(b,a){if(b){tab_manager.AddTab(Page_AnnotateShare.label_prefix+HtmlToText(b).toUpperCase(),false,Page_AnnotateShare,{symbol:b},{cc:a})}}function GoViewShare(a){if(a){tab_manager.AddTab(Page_ViewChart.label,false,Page_ViewChart,{shareId:a})}}function GoGallery(a,b){tab_manager.AddTab(GetGalleryTabLabel(a),true,Page_Gallery,{portfolio_name:a,symbols:b})}function GoCompanyInfo(a,b){if(!a){return}tab_manager.AddTab(HtmlToText(a).toUpperCase(),false,Page_CompanyInfo,$.extend(true,{symbol:a},b))}function GoMyCharts(a){tab_manager.AddTab(Page_Portfolios.label,true,Page_Portfolios,a)}function GoAcctSettings(a){tab_manager.AddTab(Page_AcctSettings.label,true,Page_AcctSettings,a)}function GoAbout(a){tab_manager.AddTab(Page_About.label,false,Page_About,a)}function GoChartFeatures(){tab_manager.AddTab(Page_ChartFeatures.label,false,Page_ChartFeatures)}function GoWhy(){tab_manager.AddTab(Page_Why.label,false,Page_Why)}function GetGalleryTabLabel(a){return("Gallery '"+a+"'")}function LoadPortfoliosFromDB(){if(acct_manager.IsSignedIn()&&!portfolio_manager.status.portget_progress&&!portfolio_manager.status.portget_success){portfolio_manager.LoadPortfoliosFromDB();var a=setInterval(function(){if(!portfolio_manager.status.portget_progress){clearInterval(a);if(!portfolio_manager.status.portget_success){ShowNotice("Error on loading portfolios!")}}},400)}}function UpdateSigninStatusBox(){if(acct_manager.IsSignedIn()){var c=acct_manager.GetUsername();var b='<span class="other">Signed in as: '+c+"</span>&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;<a>Signout</a>";var a=_GetPhysicalStringWidth(b,$("#signin_status").css("font-size"),true);$("#signin_status").css({width:a,right:-a}).html(b).show().animate({right:"40px"}).find("*").unbind().end().children("a").eq(0).click(function(){acct_manager.SignOut()}).end()}else{var b="<a>Sign in</a>&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;<a>Sign up</a>";var a=_GetPhysicalStringWidth(b,$("#signin_status").css("font-size"),true);$("#signin_status").css({width:a,right:-a}).html(b).show().animate({right:"40px"}).find("*").unbind().end().children("a").eq(0).click(function(){acct_manager.SignIn()}).end().eq(1).click(function(){acct_manager.SignUp()})}}function MultiSymbolStringToArray(a){return(a.match(/[$.^]?[a-z]+\d*/gi))}function IsValidSymbolChar(f,d,e){var a=false;var b=0;if(!f.length||f.length>1){return(a)}a=(new RegExp(/^[$^.a-z0-9]/i)).test(f);if(!a&&d){b=f.charCodeAt(0);a=b==32}if(!a&&!e){b=f.charCodeAt(0);a=b==8||b==37||b==39}return(a)}function ValidateSymbols(b,a,c){if(b&&b.length>0){$.post("php/api/data/validate.php",{items:$.toJSON(b),type:"symbol"},function(e,d){b=HandleInvalidSymbols(b,e.invalid);if(!e.status){a(true,b,e.invalid,c)}else{a(false)}},"json")}else{a(true,null,null,c)}}function HandleInvalidSymbols(a,b){var c=null;if(b&&b.length>0){c=b.join(", ");ShowNotice("Invalid symbols: "+c);return(FilterArray(a,b))}else{return(a)}}function FilterArray(b,a){b=$.grep(b,function(d,c){return($.inArray(d,a)==-1)});return(b)}function CompareArrays(e,c,b){var g=false;if(!e||!c||e.length!=c.length){return(false)}for(var f=0,a=e.length;f<a;f++){g=false;if(b){if(e[f]==c[f]){g=true}}else{for(var d=0;d<a;d++){if(e[f]==c[d]){g=true;break}}}if(!g){break}}return(g)}function UnrecoverableError(){window.location="index.php?refresh=1"}function CloneObject(a){return(jQuery.extend(true,{},a))}function ClearPersistedData(){Portfolio_Manager.GetInstance().Reset()}function ChangeCSSAttribute(f,b,h,g){var k=false;var d=document.styleSheets;var a=-1;for(var c=0;c<d.length;c++){if(g){if(d[c].href.search(/sheetname/i)!=-1){a=c;break}}else{var e=d[c];var j=e.cssRules?e.cssRules:e.rules;l(j,f,b,h)}}if(!k&&a!=-1){var e=d[a];var j=e.cssRules?e.cssRules:e.rules;l(j,f,b,h)}function l(n,r,p,q){for(var o=0;o<n.length;o++){if(n[o].selectorText.toLowerCase()==r.toLowerCase()){n[o].style[p]=q;k=true;break}}}return(k)}function FixPanelMainWidth(b){var c=$(".panel_left",b);var d=$(".panel_main",b);var a=d.outerWidth(true)-d.width();d.width(c.size()?(d.parent().width()-c.outerWidth(true)-a):(d.parent().width()-a))}function FixPanelLeftWidth(a){var b=$(".panel_left",a);var c=$(".panel_main",a);var d=b.outerWidth(true)-b.width();b.width(c.size()?(b.parent().width()-c.outerWidth(true)-d):(b.parent().width()-d))}function GetOffsetWidthById(a){return($("#"+a).width())}function GetOffsetHeightById(a){var b=document.getElementById(a);return(b.offsetHeight)}function GetOffsetLeftById(a){var b=document.getElementById(a);return(b.offsetLeft)}function _GetPhysicalStringWidth(b,a,d){var c=document.getElementById("textsize");if(d){$("#textsize").css("font-size",a).html(b)}else{$("#textsize").css("font-size",a).text(b)}return(c.clientWidth)}function GetStringDimensions(b,c,g,f,d){var e=0;var a=0;if(!f){f=2000}if(!d){d=2000}$('<div><div class="textsize"></div></div>').appendTo(b);$(".textsize",b).parent().css({position:"absolute",top:0,left:0,visibility:"hidden",zIndex:-1000,whiteSpace:"nowrap"}).width(f).height(d).end().css({position:"absolute",display:"inline",top:0,left:0,whiteSpace:"nowrap"});if(g){$(".textsize",b).html(c)}else{$(".textsize",b).text(c)}e=$(".textsize",b).width();a=$(".textsize",b).height();$(".textsize",b).parent().remove();return({width:e,height:a})}function GetStylePropertyNumeric(a,b){value=$(a).css(b);return(parseInt((typeof(value)=="undefined")?"9":value.substring(0,value.length-2)))}function IsAlphaNumeric(a){return(/^[a-zA-Z0-9]+$/.test(a))}function FormatPrice(c){var b=String(RoundTo(c,2));var a=b.indexOf(".");if(a==-1){b=b+".00"}else{if(a==b.length-2){b=b+"0"}}return(b)}function FormatChange(a){return((a>0?"+":"")+RoundTo(a,2))}function FormatPercent(a){return(a?(a>0?"+":"")+RoundTo(a,2)+"%":"0%")}function FormatBigInt(b){var c=["","K","M","B","T"];var a=0;while(b>1000){b/=1000;a++}return RoundTo(b,2)+c[a]}function RoundTo(b,a){return(Math.round(b*Math.pow(10,a))/Math.pow(10,a))}function FormatDateTime(c,b){var a=["January","February","March","April","May","June","July","August","September","October","November","December"];return(b?a[c.getMonth()].slice(0,3):a[c.getMonth()])+" "+c.getDate()+", "+c.getFullYear()}function ParseDateTime(e){var d=new Date();var a=e.split(" ");var c=a[0].split("-");var b=a[1].split(":");d.setMonth(0);d.setDate(c[2]);d.setMonth(c[1]-1);d.setFullYear(c[0]);d.setHours(b[0]);d.setMinutes(b[1]);d.setSeconds(b[2]);d.setMilliseconds(0);return d}function DateTimeToString(c){var b=[c.getFullYear(),c.getMonth()+1,c.getDate()];var a=[c.getHours(),c.getMinutes(),c.getSeconds()];return b.join("-")+" "+a.join(":")}function rgb2hex(a){var c=a.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/);if(!c){return a}else{delete (c[0]);for(var b=1;b<=3;++b){c[b]=parseInt(c[b]).toString(16);if(c[b].length==1){c[b]="0"+c[b]}}return"#"+c.join("")}}function CreateCaptchaImgTag(c,a){var b=(new Date()).getTime();return('<img src="php/api/user/captcha.php?width='+c+"&height="+a+"&rand="+b+'" />')}function ShowNotice(a){toast_manager.ShowNotice(a)}function SetPanelCornerHoverBehavior(b,a){$(a).hover(function(){$(".panel_corner_bl",b).addClass("panel_corner_bl2").removeClass("panel_corner_bl");$(".panel_corner_tr",b).addClass("panel_corner_tr2").removeClass("panel_corner_tr")},function(){$(".panel_corner_bl2",b).addClass("panel_corner_bl").removeClass("panel_corner_bl2");$(".panel_corner_tr2",b).addClass("panel_corner_tr").removeClass("panel_corner_tr2")})}function SetupInputFieldHoverBehavior(a){$(a).mouseover(function(){if(!$(this).hasClass("input_success")&&!$(this).hasClass("input_error")&&!this.infocus){$(this).addClass("input_focus2")}}).mouseout(function(){if(!this.infocus){$(this).removeClass("input_focus input_focus2")}}).focus(function(){if(!$(this).hasClass("input_success")&&!$(this).hasClass("input_error")){$(this).removeClass("input_focus2").addClass("input_focus")}this.infocus=true}).blur(function(){$(this).removeClass("input_focus input_focus2");this.infocus=false})}function StrShift(f,b){var e="ABCDEFGHIJKLMNOPQRSTUVWXYZ,abcdefghijklmnopqrstuvwxyz {}\"'0123456789";var c="";for(var d=0,a=f.length;d<a;d++){var g=e.indexOf(f.charAt(d));if(g==-1){c+=f.charAt(d)}else{g=(g+b)%e.length;if(g<0){g+=e.length}c+=e.charAt(g)}}return c}function StrToHex(d){var e=0;var b=[];d+="";e=d.length;for(var c=0;c<e;c++){b[c]=d.charCodeAt(c).toString(16).replace(/^([\da-f])$/,"0$1")}return(b.join(""))}function HexToStr(f){var e="0123456789abcdef";var b=new Array();var a=new Array();var c=0;if(!f.match(/^[a-f0-9]*$/i)){return(false)}for(var d=0;d<256;d++){b[e.charAt(d>>4)+e.charAt(d&15)]=String.fromCharCode(d)}if(f.length%2){f="0"+f}for(var d=0;d<f.length;d+=2){a[c++]=b[f.substr(d,2)]}return(a.join(""))}function ObjToStr(a){if(!a||typeof(a)!="object"){return(0)}return StrToHex($.compactJSON(a))}function StrToObj(str){return eval("("+HexToStr(str)+")")}function UpdateURLHash(c,a){var b=c.replace(/^.*#/,"");if(a){$.history.load(b)}else{self.document.location.hash=b}}function IsEmpty(a){for(var b in a){if(a.hasOwnProperty(b)){return(false)}}return(true)}function ObjSize(b){var a=0;for(var c in b){if(b.hasOwnProperty(c)){a++}}return(a)}function IsSubset(c,b){for(var a in c){if(typeof(b[a])=="undefined"||typeof(c[a])!=typeof(b[a])){return(false)}switch(typeof(c[a])){case"object":if(!IsEqual(c[a],b[a])){return(false)}break;case"function":if(typeof(b[a])=="undefined"||c[a].toString()!=b[a].toString()){return(false)}break;default:if(c[a]!=b[a]){return(false)}}}return(true)}function IsEqual(c,b){if(!IsSubset(c,b)){return(false)}for(var a in b){if(typeof(c[a])=="undefined "){return(false)}}return(true)}function CreateDialog(a,d){var b=null;var c=new Dialog($("body").get(0),{markup:a,modal:(d===undefined?true:d),backdrop:{color:"#000000"}},{OnResize:function(f,e){b.Resize(f,e)}});b=new Border(c.GetDialogDOM(),{classname:"thin_border_white_fg",offset:{left:20,right:20,top:18,bottom:18}});return(c)}function GetServerUrl(){var a=window.location;return a.protocol+"//"+a.hostname+a.pathname.replace(/[^\/]*$/g,"")}function GetShareUrl(a){return GetServerUrl()+"share/"+a}function GetChartUrl(c,a){var b=GetServerUrl()+"chart/"+c.toUpperCase();for(var d in a){if(d!="s"&&d!="ch"){b+="&"+d+"="+a[d]}}return b}function GetEmbedMarkup(a){return'<a href="'+GetShareUrl(a)+'"><img src="'+GetServerUrl()+"php/api/chart/share.php?id="+a+'" alt="Create Annotated Stock Charts at Chartastic.com" style="border-style:none"/></a>'}function AutoResizeTextArea(d,f,c){if(!d.target&&f&&c){d.expandMin=f;d.expandMax=c;$(d).bind("keyup focus",AutoResizeTextArea)}var g=d.target||d;var j=g.value.length,b=g.offsetWidth;if(j!=g.valLength||b!=g.boxWidth){g.style.height="0px";var a=Math.max(g.expandMin,Math.min(g.scrollHeight,g.expandMax));g.style.overflow=(g.scrollHeight>a?"auto":"hidden");g.style.height=a+"px";g.valLength=j;g.boxWidth=b}return true}function HtmlToText(a){return($("<div/>").text(a).html())}function RegistrantList(){var a=this;a.registrants=[]}$.extend(RegistrantList.prototype,{add:function(b,d,a){var c=this;if(b&&$.isFunction(a)){c.registrants.push({context:b,params:d,cb:a});return(true)}return(false)},remove:function(b,e){var c=this;var d=false;for(var a=c.registrants.length-1;a>=0;a--){if((!b||c.registrants[a].context==b)&&(!c.registrants[a].params||IsSubset(e,c.registrants[a].params))){c.registrants.splice(a,1);d=true}}return(d)},update:function(d,b,a){var e=this;var f=false;for(var c=e.registrants.length-1;c>=0;c--){if((!d||e.registrants[c].context==d)&&(!b||IsSubset(b,e.registrants[c].params))){$.extend(true,e.registrants[c].params,params);f=true}}return(f)},notify:function(d){var c=this;for(var b=0,a=c.registrants.length;b<a;b++){if(!c.registrants[b].params||IsSubset(c.registrants[b].params,d)){c.registrants[b].cb.call(c.registrants[b].context,d)}}},notifyOnce:function(f){var e=this;var d=[];for(var c=0,a=e.registrants.length;c<a;c++){if(!e.registrants[c].params||IsSubset(e.registrants[c].params,f)){e.registrants[c].cb.call(e.registrants[c].context,f);d.push(c)}}for(var b=d.length-1;b>=0;b--){e.registrants.splice(d[b],1)}}});function MessageQueue(a,b){this.queue=new Array();this.callbacks=new Array();this.tmp_callbacks=undefined;this.locked=false;this.timer=undefined;this.waiting=false;this.api_prefix=a.apiprefix==undefined?"":a.apiprefix;this.fErrorCallback=b?b.error:undefined;this.delay=a.delay;this.capacity=a.capacity}MessageQueue.prototype.lock=function(){this.locked=true;this.cancel_timer()};MessageQueue.prototype.unlock=function(a){this.locked=false;if(this.queue.length>0){if(a){this.timeout()}else{this.start_timer()}}};MessageQueue.prototype.put=function(d,b,c,a){if(typeof c=="function"){c={success:c,error:c}}this.queue.push({api:d,post:b});this.callbacks.push({cb:c,param:a});if(this.queue.length>=this.capacity){this.timeout()}else{if(!this.locked){this.reset_timer()}}};MessageQueue.prototype.length=function(){return this.queue.length};MessageQueue.prototype.setApiPrefix=function(a){this.api_prefix=a};MessageQueue.prototype.start_timer=function(){var a=this;this.timer=setTimeout(function(){MessageQueue.prototype.timeout.call(a)},this.delay)};MessageQueue.prototype.cancel_timer=function(){if(this.timer!=undefined){clearTimeout(this.timer);this.timer=undefined}};MessageQueue.prototype.reset_timer=function(){this.cancel_timer();this.start_timer()};MessageQueue.prototype.timeout=function(){if(!this.waiting&&this.queue.length>0){var b={bundle:$.compactJSON(this.queue)};this.tmp_callbacks=this.callbacks;this.queue=Array();this.callbacks=Array();this.waiting=true;var a=this;$.ajax({url:this.api_prefix+"php/api.php",type:"post",data:b,dataType:"json",success:function(c){MessageQueue.prototype.receive.call(a,c)},error:function(){var d={status:-1,message:[]};for(var c=0;c<a.tmp_callbacks.length;c++){d.message.push({status:-1,message:"connection trouble"})}MessageQueue.prototype.receive.call(a,d)}})}};MessageQueue.prototype.receive=function(c){if(c.status==0){for(var a=0;a<c.message.length;a++){if(this.tmp_callbacks[a].cb!=undefined&&this.tmp_callbacks[a].cb.success!=undefined){try{this.tmp_callbacks[a].cb.success(c.message[a],this.tmp_callbacks[a].param)}catch(b){}}}}else{if(this.fErrorCallback!=undefined){this.fErrorCallback(c.status,c.message)}for(var a=0;a<this.tmp_callbacks.length;a++){if(this.tmp_callbacks[a].cb!=undefined&&this.tmp_callbacks[a].cb.error!=undefined){try{this.tmp_callbacks[a].cb.error(c.message[a],this.tmp_callbacks[a].param)}catch(b){}}}}this.waiting=false;if(this.queue.length>0){this.timeout()}};jQuery(function(){if(!window.ajax){window.ajax=new MessageQueue({capacity:20,delay:100})}});function Page_Welcome(p,g,y){var x=this;var u={};var o=[];var j=false;var l=false;var t=undefined;var s=["djia","nasdaq","sp500"];var e=[];var w="page_welcome";var c=typeof(getdebug)!="undefined"?getdebug():function(){};var f=typeof(getinfo)!="undefined"?getinfo():function(){};var d=typeof(getwarn)!="undefined"?getwarn():function(){};var h=typeof(geterror)!="undefined"?geterror():function(){};q();$.extend(true,u,g);y=y||{};k();r();b();window.ajax.unlock(true);this.getParams=function(){return(u)};this.getContainerDOM=function(){return(p)};this.resize=function(A,z){};this.postMessage=function(z){switch(event){default:}};this.suspend=function(){if(j){return(true)}j=true;return(true)};this.activate=function(){var z=null;if(!j){return}j=false;while(o.length){z=o.shift();a({event:z.event,data:z.data})}setTimeout(function(){$(".tryit_input",p).focus()},50)};this.destroy=function(){var z=null;if(l){return}l=true;while(z=e.pop()){z.Destroy()}if(t){t.Destroy();t=undefined}n().find("*").unbind().end().empty().removeClass(w)};function b(){var C=$(".homecharts",p);var A='<div class="homechart_wrapper"><div class="homechart"></div></div>';for(var z=0;z<s.length;z++){C.append(A);e.push(new B(C.find(".homechart").slice(-1).get(0),s[z],function(D){GoCompanyInfo(D)}))}function B(D,G,M){var J={width:342,height:150,hideOverview:true,hideHoverQuotes:true,menuStyle:ChartControl.MENUSTYLE.NONE,autoUpdate:false,autoCreate:false,chart:{s:G,ct:Chart.TYPE.MOUNTAIN,cs:Chart.SCALE.LOGARITHMIC,cp:Chart.PERIOD.TWOMINUTE,cd:"1d",bgf:"C4D5E6:FFFFFF:90",bgr:"1:15",plc:"000000",pla:"6F",vla:"0",lga:"0"}};var F=undefined;var L=false;var O=undefined;var K={symbol:G,num:2,period:Chart.PERIOD.DAILY,cols:"c"};var N=false;$(D).append("<div></div><div></div>");$(D).children().slice(-1).css("display","inline").append('<table class="homechart_table"><tr><td class="home_symbol"/><td class="home_price"/><td class="home_change"/><td class="home_percent"/></tr></table>');F=new ChartControl($(D).children().get(0),J);if(M){$(D).children().eq(0).css("cursor","pointer").click(function(){M.call(null,G)})}I();this.Destroy=function(){if(N){return}clearTimeout(O);$(D).children().unbind();if(F){F.Destroy()}N=true};this.GetChartControl=function(){return(F)};function I(){window.ajax.put("php/api/data/quote.php",K,{success:H,error:H})}function H(P){if(N){return}delete J.chart.plf;$(D).find(".home_symbol").empty().append(G.toUpperCase());if(!P.status&&P.quotes!=undefined&&P.quotes!=""&&P.quotes.length>0){var T=P.quotes[0].close-P.quotes[1].close;var Q=T/P.quotes[1].close*100;if(T>=0){J.chart.plf="003333:00ff00";var R="pos_change";var S="neg_change"}else{J.chart.plf="ff0000:003333";var R="neg_change";var S="pos_change"}J.chart.plhzl=P.quotes[1].close+":666666";$(D).find(".home_price").empty().append(FormatPrice(P.quotes[0].close));$(D).find(".home_change").empty().append(FormatChange(T)).addClass(R).removeClass(S);$(D).find(".home_percent").empty().append(FormatPercent(Q)).addClass(R).removeClass(S);if(P.wait>0){O=setTimeout(I,(P.wait+5)*1000)}else{E()}}else{$(D).find(".home_price").html("?").end().find(".home_change").html("?").end().find(".home_percent").html("?").end()}if(P.quotes==undefined||!P.quotes.length){}if(P.status>=0){if(!L){F.UpdateParams(J);F.Create();L=true}else{F.UpdateParams(J);F.Refresh()}}else{E()}}function E(){O=setTimeout(I,10*60*1000)}}}function r(){var z=null;$(".allfeatures a",p).attr("href","index.php?t=cf").click(function(){GoChartFeatures();return(false)});z=$(".tryit_input",p).get(0);$(z).keypress(function(C){var B=C.keyCode||C.which;if(B==13){A();return(true)}else{return(IsValidSymbolChar(String.fromCharCode(B),true))}});t=new SuggestWidget(z,undefined,{select:A});$(z).focus();function A(){var D=".tryit_input";var E=$(z).val();var C=MultiSymbolStringToArray(E);var B=portfolio_manager.GetCustomName();$(z).val("");if(E.length>0&&C){if(C.length==1){GoAnnotate(C[0])}else{GoGallery(B,C)}}}}function k(){n().empty().addClass(w).append('<div class="panel_corner_bl"/><div class="panel_main"><div class="text_notice"/><div class="above_fold"><span class="createcopy">Create Fantastic Stock Charts</span><span class="annotatecopy">Add Trendlines and More</span><span class="sharecopy">Share Your Charts With Others</span><div class="num1"/><div class="num2"/><div class="num3"/><img class="button_create" src="images/button_create.jpg"/><img class="button_annotate" src="images/button_annotate.jpg"/><img class="button_share" src="images/button_share.jpg"/><div class="tryit"><div class="tryit_arrow"/><div class="tryit_input_wrapper"><input name="tryit_input" type="text" class="tryit_input" maxlength="256" /></div><span class="tryit_explain">Type a stock symbol and press enter.</span></div><div class="punchline"/></div><div class="below_fold"><div class="panel_subleft"><div class="title">Market Indices:</div><div class="homecharts"/></div><div class="panel_subright"><div class="title">Chartastic Is A Better Way To Chart</div><div class="col1"><div class="cell">Seamless Annotations<br/><img class="feature_img" src="images/feature_annotate.png"/><span class="featuretext">Draw trendlines, arrows, and more directly on the chart.  No plugins required.</span></div><div class="cell">PopCharts<br/><img class="feature_img" src="images/feature_popcharts.png"/><span class="featuretext">Need a better view? Open charts in a separate, resizable window.</span></div><div class="cell" style="border-bottom: none;">Collaborate<br/><img class="feature_img" src="images/feature_share.png"/><span class="featuretext">Share your annotated charts and exchange feedback with others.</span></div></div><div class="col2"><div class="cell">No Limits<br/><img class="feature_img" src="images/feature_overview.png"/><span class="featuretext">View decades of historical data and chart arbitrary timeframes.</span></div><div class="cell">Innovative Chart Gallery<br/><img class="feature_img" src="images/feature_gallery.png"/><span class="featuretext">Enter multiple symbols to create a gallery.  Drag, drop, and re-arrange charts the way you want.</span></div><div class="cell" style="border-bottom: none;">Save and Track<br/><img class="feature_img" src="images/feature_symbollist.png"/><span class="featuretext">Create symbol lists and see daily performance at a glance.</span></div></div><div class="allfeatures"><a>View all Chart Features &gt;</a></div></div></div></div><div class="panel_corner_tr"/>');new Border($(".tryit_input_wrapper",p).get(0),{classname:"striped_border",offset:{left:10,right:10,top:10,bottom:10}});new Border($(".panel_subright",p).get(0),{classname:"thin_border"});FixPanelMainWidth(p)}function a(z){switch(z.event){default:}}function q(){}function n(z){return(z===undefined?$(p):$(z,p))}}Page_Welcome.label="Welcome";Page_Welcome.event={};function Page_Home(q,f,z){var y=this;var w={enable_suggest:false,enable_chart_flip:true};var p=[];var h=false;var n=false;var u=undefined;var t=[];var k=tab_manager.GetActiveTabID();var x="page_home";var c=typeof(getdebug)!="undefined"?getdebug():function(){};var e=typeof(getinfo)!="undefined"?getinfo():function(){};var d=typeof(getwarn)!="undefined"?getwarn():function(){};var g=typeof(geterror)!="undefined"?geterror():function(){};r();$.extend(true,w,f);z=z||{};j();l();s(a);window.ajax.unlock(true);this.getParams=function(){return(w)};this.getContainerDOM=function(){return(q)};this.resize=function(B,A){};this.postMessage=function(A){switch(event){default:}};this.suspend=function(){if(h){return(true)}h=true;return(true)};this.activate=function(){var A=null;if(!h){return}h=false;while(p.length){A=p.shift();b({event:A.event,data:A.data})}$.extend(true,w,tab_manager.GetPageParams(k,true));a()};this.destroy=function(){var A=null;if(n){return}n=true;while(A=t.pop()){if(A.chart){A.chart.Destroy();A.chart=undefined}}if(u){u.Destroy();u=undefined}o().find("*").unbind().end().empty().removeClass(x)};function s(C){window.ajax.put("php/api/data/stat.php",{stat:1},{success:A,error:A});function A(E){var H=E.message;if(!E.status&&H&&H.length>0){var I=$(".topcharts",q);var F='<div class="topchart_wrapper"><div class="topchart"></div></div>';I.empty();for(var G=0,D=H.length;G<D;G++){I.append(F);t.push({symbol:H[G].symbol,chart:new B(I.find(".topchart").slice(-1).get(0),H[G].symbol,{OnClick:function(K,J){},OnHoverIn:function(N,M){var J=this;var O=$(J.GetChartControl().GetMainChartDOM());var L='<div class="chart_mask"><div><div class="link">Annotate '+N+'</div><div class="link">View the latest quotes</div></div></div>';if(!w.enable_chart_flip||$.browser.msie){O.append(L);K()}else{O.stop().rotate3Di("flip",150,{sideChange:function(){$(J.GetChartControl().GetMainChartImg()).rotate3Di("flip",1);O.append(L)},complete:K})}function K(){O.children(".chart_mask").find(".link").eq(0).click(function(){GoAnnotate(N)}).end().eq(1).click(function(){GoCompanyInfo(N)})}},OnHoverOut:function(L,K){var J=this;var M=$(J.GetChartControl().GetMainChartDOM());if(w.enable_chart_flip&&!$.browser.msie){M.stop().rotate3Di("unflip",500,{sideChange:function(){M.children(".chart_mask").remove();$(J.GetChartControl().GetMainChartImg()).css({opacity:0}).rotate3Di("unflip",1,{complete:function(){$(J.GetChartControl().GetMainChartImg()).css({opacity:1})}})}})}else{M.children(".chart_mask").remove()}}})})}}if(C){C()}}function B(D,I,K){var M=this;var E=$(D).parent().width()-10;var N={width:E,height:E/2.3,hideOverview:true,hideHoverQuotes:true,menuStyle:ChartControl.MENUSTYLE.NONE,autoUpdate:false,autoCreate:false,chart:{s:I,ct:Chart.TYPE.MOUNTAIN,cs:Chart.SCALE.LOGARITHMIC,cp:Chart.PERIOD.TWOMINUTE,cd:"1d",bgf:"C4D5E6:FFFFFF:90",bgr:"1:15",plc:"000000",pla:"6F",vla:"0",lga:"0"}};var H=undefined;var P=false;var R=undefined;var O={symbol:I,num:2,period:Chart.PERIOD.DAILY,cols:"c"};var G=null;var Q=false;$(D).append("<div></div><div></div>");$(D).children().slice(-1).css("display","inline").append('<table class="topchart_table"><tr><td class="home_symbol"/><td class="home_price"/><td class="home_change"/><td class="home_percent"/></tr></table>');H=new ChartControl($(D).children().get(0),N);G=$(D).children().eq(0);if(K.OnClick){G.click(function(){K.OnClick.call(M,I,G.get(0))})}G.hoverIntent({sensitivity:200,interval:150,timeout:250,over:function(){if(K.OnHoverIn){K.OnHoverIn.call(M,I,G.get(0))}},out:function(){if(K.OnHoverOut){K.OnHoverOut.call(M,I,G.get(0))}}});L();this.Destroy=function(){if(Q){return}clearTimeout(R);$(D).children().unbind();if(H){H.Destroy()}Q=true};this.GetChartControl=function(){return(H)};function L(){window.ajax.put("php/api/data/quote.php",O,{success:J,error:J})}function J(S){if(Q){return}delete N.chart.plf;$(D).find(".home_symbol").empty().append(I.toUpperCase());if(!S.status&&S.quotes!=undefined&&S.quotes!=""&&S.quotes.length>0){var W=S.quotes[0].close-S.quotes[1].close;var T=W/S.quotes[1].close*100;if(W>=0){N.chart.plf="003333:00ff00";var U="pos_change";var V="neg_change"}else{N.chart.plf="ff0000:003333";var U="neg_change";var V="pos_change"}N.chart.plhzl=S.quotes[1].close+":666666";$(D).find(".home_price").empty().append(FormatPrice(S.quotes[0].close));$(D).find(".home_change").empty().append(FormatChange(W)).addClass(U).removeClass(V);$(D).find(".home_percent").empty().append(FormatPercent(T)).addClass(U).removeClass(V);if(S.wait>0){R=setTimeout(L,(S.wait+5)*1000)}else{F()}}else{$(D).find(".home_price").html("?").end().find(".home_change").html("?").end().find(".home_percent").html("?").end()}if(S.quotes==undefined||!S.quotes.length){}if(S.status>=0){if(!P){H.UpdateParams(N);H.Create();P=true}else{H.UpdateParams(N);H.Refresh()}}else{F()}}function F(){R=setTimeout(L,10*60*1000)}}}function a(){var D=[];var A="";var C=false;$.each(t,function(E,F){D.push(F.symbol)});if(CompareArrays(D,w.topchart_symbols)&&w.topcharts_portfolio_name){var B=portfolio_manager.GetPortfolio(w.topcharts_portfolio_name);if(B){if(CompareArrays(B.symbols,D)){A=w.topcharts_portfolio_name;C=true}else{A=portfolio_manager.GetCustomName()}}else{A=portfolio_manager.GetCustomName()}}else{A=portfolio_manager.GetCustomName()}$(".title .view_as_gallery",q).unbind().click(function(){tab_manager.SetPageParams(k,{topcharts_portfolio_name:A,topchart_symbols:D.slice(0)},true);GoGallery(A,D)});if(C){$(".title .add_to_charts",q).unbind().removeClass("link").addClass("nolink").html("Added to My Charts")}else{$(".title .add_to_charts",q).unbind().click(function(){tab_manager.SetPageParams(k,{topcharts_portfolio_name:A,topchart_symbols:D.slice(0)},true);B=new Portfolio(A,D);portfolio_manager.AddPortfolio(B);ShowNotice("Top symbols successfully added to My Charts.");GoMyCharts()})}}function l(){$(".panel_left .menu_item:eq(0)",q).unbind().click(function(){GoMyCharts()});$(".panel_left .menu_item:eq(1)",q).unbind().click(function(){GoAcctSettings()});new SlidingTextbox($(".panel_left .menu_item:eq(2)",q).get(0),{label1:"Create a new Annotation",label2:"Enter symbol:"},{OnSubmit:function(A){if(u){u.Destroy()}GoAnnotate(A)},OnKeypress:function(A){return(IsValidSymbolChar(A))},OnActivate:function(){var A=this;if(u){u.Destroy()}if(w.enable_suggest){u=new SuggestWidget(A.GetTextboxDOM(),undefined,{select:function(){if(u){u.Destroy()}GoAnnotate(A.GetValue())}})}},OnCancel:function(){if(u){u.Destroy()}}});new SlidingTextbox($(".panel_left .menu_item:eq(3)",q).get(0),{label1:"Create a new gallery",label2:"Enter symbol(s):"},{OnSubmit:function(C){var B=MultiSymbolStringToArray(C);var A=portfolio_manager.GetCustomName();if(u){u.Destroy()}GoGallery(A,B)},OnKeypress:function(A){return(IsValidSymbolChar(A,true))},OnActivate:function(){var A=this;if(u){u.Destroy()}if(w.enable_suggest){u=new SuggestWidget(A.GetTextboxDOM(),undefined,{select:function(){var C=MultiSymbolStringToArray(A.GetValue());var B=portfolio_manager.GetCustomName();if(u){u.Destroy()}GoGallery(B,C)}})}},OnCancel:function(){if(u){u.Destroy()}}});new SlidingTextbox($(".panel_left .menu_item:eq(4)",q).get(0),{label1:"View the latest quotes",label2:"Enter symbol:"},{OnSubmit:function(A){if(u){u.Destroy()}GoCompanyInfo(A)},OnKeypress:function(A){return(IsValidSymbolChar(A))},OnActivate:function(){var A=this;if(u){u.Destroy()}if(w.enable_suggest){u=new SuggestWidget(A.GetTextboxDOM(),undefined,{select:function(){if(u){u.Destroy()}GoAnnotate(A.GetValue())}})}},OnCancel:function(){if(u){u.Destroy()}}})}function b(A){switch(A.event){default:}}function j(){var B=null;var A=null;o().empty().addClass(x).append('<div class="panel_corner_bl"/><div class="panel_left"><div class="panel_corner_tr"/><div class="menu_item">My Charts&nbsp;&nbsp;<img src="images/arrow_right.png" /></div><br /><div class="menu_item">Account settings&nbsp;&nbsp;<img src="images/arrow_right.png" /></div><br /><div class="menu_item"></div><br /><div class="menu_item"></div><br /><div class="menu_item"></div></div><div class="panel_main"><div class="text_notice"/><div class="title">Welcome <span class="username"></span>!<br />Today\'s top symbols (<span class="link view_as_gallery">View as gallery</span> | <span class="link add_to_charts">Add to My Charts</span>):</div><br /><div class="topcharts"/></div>');B=acct_manager.GetUserinfo().fname;A=acct_manager.GetUsername();$(".title span",q).eq(0).html(B?B:A);FixPanelMainWidth(q)}function r(){}function o(A){return(A===undefined?$(q):$(A,q))}}Page_Home.label="Home";Page_Home.event={};function Account_Manager(e,s){var r=this;var p={userinfo:{username:"",fname:"",lname:"",birthyear:"",sex:"",address1:"",address2:"",city:"",state:"",zip:"",country:"",email:"",phone:""}};var h=false;var o=new RegistrantList();var g=new RegistrantList();var n=new RegistrantList();var a=new RegistrantList();var b=typeof(getdebug)!="undefined"?getdebug():function(){};var d=typeof(getinfo)!="undefined"?getinfo():function(){};var c=typeof(getwarn)!="undefined"?getwarn():function(){};var j=typeof(geterror)!="undefined"?geterror():function(){};this.SignIn=function(w,x){if(s.cbSignIn){s.cbSignIn(w,x)}};this.SignUp=function(w,x){if(s.cbSignUp){s.cbSignUp(w,x)}};this.SignOut=function(w){if(s.cbSignOut){s.cbSignOut(w)}};this.SetSignedIn=function(w){h=w;if(!w){r.ClearUserinfo();l()}else{t()}};this.IsSignedIn=function(){return(h)};this.RegisterForUsernameChanged=function(x,w){n.add(x,null,w)};this.UnregisterForUsernameChanged=function(w){n.remove(w)};this.RegisterForUserinfoChanged=function(x,w){a.add(x,null,w)};this.UnregisterForUserinfoChanged=function(w){a.remove(w)};this.RegisterForSignedIn=function(x,w){if(r.IsSignedIn()){w.call(x)}o.add(x,null,w)};this.UnregisterForSignedIn=function(w){o.remove(w)};this.RegisterForSignedOut=function(x,w){if(!r.IsSignedIn()){w.call(x)}g.add(x,null,w)};this.UnregisterForSignedOut=function(w){g.remove(w)};this.GetUsername=function(){return(p.userinfo.username)};this.GetUserinfo=function(){return(p.userinfo)};this.SetUserinfo=function(w){$.extend(p.userinfo,w);q();f()};this.ClearUserinfo=function(){for(var w in p.userinfo){p.userinfo[w]=""}f()};this.ReloadUserinfoFromDB=function(A){var w=[];for(var z in p.userinfo){w.push(z)}window.ajax.put("php/api/user/request.php",{fields:w.join()},{success:x,error:y});function x(B){if(!B.status){$.extend(true,p.userinfo,B.message);r.SetSignedIn(true);if(A){A(true)}k();f()}else{r.SetSignedIn(false);if(A){A(false)}}}function y(){r.SetSignedIn(false);if(A){A(false)}}};function k(){n.notify()}function f(){a.notify()}function t(){o.notify()}function l(){g.notify()}function q(){}function u(){$.extend(true,p,e)}u()}function Tab(b,h,d,c,f,g,a,j,e,k){this.id=b;this.label=h;this.active=d;this.width=c;this.page=f;this.type=g;this.container=a;this.page_params=j;this.hidden_page_params=e;this.is_private=k}function Tab_Manager(o,k,B){var c=typeof(getdebug)!="undefined"?getdebug():function(){};var e=typeof(getinfo)!="undefined"?getinfo():function(){};var d=typeof(getwarn)!="undefined"?getwarn():function(){};var l=typeof(geterror)!="undefined"?geterror():function(){};var z=this;var y={tab_left:null,tab_right:null,tab_new:null,tab_remove:null,content_wrapper:null,tab_controls:null,update_url:false,fixed_tabs:null,page_map:null};var x=[];var p=GetStylePropertyNumeric(".tab_active .tab_left_edge","width")+GetStylePropertyNumeric(".tab_active .tab_right_edge","width");var q=0;var h=0;var n=$(".tabs",o);var w=0;var A=[];var b=null;var r=new RegistrantList();var j=new RegistrantList();this.GetParams=function(){return(y)};this.GetContainerDOM=function(){return(o)};this.AddTab=function(N,L,H,Z,Q,Y,P,aa){var T=null;var M=null;try{var I=null;var G=null;var F=null;var O=null;var S=null;var U="";if(L==null||H==null){throw ({errcode:Tab_Manager.error_code.ERR_BAD_PARAMS,errdata:null})}T=K();N=N||T;I=_GetPhysicalStringWidth(N,$(o).css("font-size"))+10;G=I+p;S=$('<div class="tab_container"/>').appendTo(y.content_wrapper);F=new Tab(T,N,!Y,G,null,H,S.get(0),Z,Q,L);R(F,Y,P);U=E(F.id,F.label,F.active);if(aa){n.prepend(U);O=n.children().slice(0,1)}else{n.append(U);O=n.children().slice(-1)}O.mousedown(function(){b=F.id;UpdateURLHash(z.GetURLHashString(F.id),true)}).click(function(){return(false)});$("."+T).width(G);$("."+T+" .tab_slice").width(I)}catch(J){if(J.errcode){switch(J.errcode){case Tab_Manager.error_code.ERR_DUP_ID:case Tab_Manager.error_code.ERR_DUP_LABEL:T=J.errdata;break;default:}}else{window.location="index.php"}}a();V(T);if(Y){$("."+T).addClass("tab_inactive").removeClass("tab_active");A.push(T);for(var W=0,X=x.length;W<X;W++){if(x[W].active){M=x[W].id;A.push(M);break}}if(M){UpdateURLHash(z.GetURLHashString(M),true)}}else{UpdateURLHash(z.GetURLHashString(T),true)}function K(){var ab=z.GetTabCount()+1;var ac=0;do{for(ac=0;ac<A.length;ac++){if(("tab"+ab)==A[ac]){ab++;break}}}while(ac<A.length);return("tab"+ab)}function R(ag,af,ah){var ad=-1;w=0;for(var ac=0,ab=x.length;ac<ab;ac++){if(x[ac].id!=null){if(x[ac].id!=ag.id&&!af){x[ac].active=false}w++}else{if(ad==-1){ad=ac}}}for(var ae=0,ab=x.length;ae<ab;ae++){if(x[ae].id==ag.id){g(ae,ag.page_params);g(ae,ag.hidden_page_params,true);throw ({errcode:Tab_Manager.error_code.ERR_DUP_ID,errdata:x[ae].id})}if(!ah&&x[ae].label==ag.label){g(ae,ag.page_params);g(ae,ag.hidden_page_params,true);throw ({errcode:Tab_Manager.error_code.ERR_DUP_LABEL,errdata:x[ae].id})}}w++;x[ad]=ag;if(!(x[ad].page_params)){x[ad].page_params={}}if(!(x[ad].hidden_page_params)){x[ad].hidden_page_params={}}if(ad==x.length-1){x.push(new Tab(null,null,false,0,null,null,null,null,null,false))}}function E(af,ac,ae){var ad=ae?"active":"inactive";var ab='<a href="#"><span class="'+af+" tab_"+ad+'"><span class="tab_left_edge"></span><span class="tab_slice">'+ac+'</span><span class="tab_right_edge"></span></span></a>';return(ab)}function V(ab){$("."+ab).hover(function(){$(this).children(".tab_left_edge").addClass("tab_left_edge_hover").removeClass("tab_left_edge");$(this).children(".tab_slice").addClass("tab_slice_hover").removeClass("tab_slice");$(this).children(".tab_right_edge").addClass("tab_right_edge_hover").removeClass("tab_right_edge")},function(){$(this).children(".tab_left_edge_hover").addClass("tab_left_edge").removeClass("tab_left_edge_hover");$(this).children(".tab_slice_hover").addClass("tab_slice").removeClass("tab_slice_hover");$(this).children(".tab_right_edge_hover").addClass("tab_right_edge").removeClass("tab_right_edge_hover")})}};this.RemoveTab=function(E){var L="tab1";if(!E){return}try{var I=-1;var J=-1;var K=x.length;for(var H=0;H<K;H++){if(x[H].id==E){I=H;break}}if(I==-1){throw ({errcode:Tab_Manager.error_code.ERR_ID_NOT_FOUND,errdata:null})}t(E);if(x[I].page){if(x[I].page.destroy){x[I].page.destroy()}else{if(x[I].page.Destroy){x[I].page.Destroy()}}}else{}$(x[I].container).remove();x.splice(I,1);M(E);for(var G=0;G<K;G++){if(x[G].id==A[A.length-1]){x[G].active=true;L=x[G].id;break}}w--;if($("."+E).parent("a").length){$("."+E).parent("a").remove()}else{$("."+E).remove()}a();UpdateURLHash(z.GetURLHashString(L),true)}catch(F){if(F.errcode){switch(F.errcode){default:}}else{window.location="index.php"}}function M(O){for(var N=A.length-1;N>=0;N--){if(A[N]==O){A.splice(N,1)}}}};this.FindIDByLabel=function(E){var G=null;for(var F=0;F<x.length;F++){if(x[F].label==E){G=x[F].id;break}}return(G)};this.ActivateTabByLabel=function(E){z.ActivateTab(tab_manager.FindIDByLabel(E))};this.GetActiveTabID=function(){return(A[A.length-1])};this.ActivateTab=function(F){var E=null;var L=-1;var Q=-1;if(!D(F)){return}if(typeof(z.GetTabType(F))!="function"){return}try{var G=null;var O=false;if(!F||!D(F)){throw ({errcode:Tab_Manager.error_code.ERR_ID_NOT_FOUND,errdata:F})}G=z.GetActiveTabID();for(var K=0,N=x.length;K<N;K++){if(x[K].id==F){L=K}else{if(x[K].id==G){Q=K}}}f(G);if(F!=G&&x[Q].page&&x[Q].page.suspend){O=x[Q].page.suspend()}else{O=true}y.tab_remove.show().css({position:"relative"});for(var I=0,N=y.fixed_tabs.length;I<N;I++){if(x[L].type==y.fixed_tabs[I]){y.tab_remove.hide().css({position:"absolute"});break}}if(O){if(F!=G){$("."+G).addClass("tab_inactive").removeClass("tab_active")}$("."+F).addClass("tab_active").removeClass("tab_inactive");R(F);A.push(F);u();M(G);P(F,L)}}catch(H){if(H.errcode){switch(H.errcode){case Tab_Manager.error_code.ERR_ID_NOT_FOUND:if(x.length==1&&H.errdata==null){}else{}break;default:}}else{UnrecoverableError()}}function R(S){$.each(x,function(){this.active=(this.id==S)})}function J(S){$("."+S).hover(function(){$(this).children(".tab_left_edge").addClass("tab_left_edge_hover").removeClass("tab_left_edge");$(this).children(".tab_slice").addClass("tab_slice_hover").removeClass("tab_slice");$(this).children(".tab_right_edge").addClass("tab_right_edge_hover").removeClass("tab_right_edge")},function(){$(this).children(".tab_left_edge_hover").addClass("tab_left_edge").removeClass("tab_left_edge_hover");$(this).children(".tab_slice_hover").addClass("tab_slice").removeClass("tab_slice_hover");$(this).children(".tab_right_edge_hover").addClass("tab_right_edge").removeClass("tab_right_edge_hover")})}function M(U){for(var T=0,S=x.length;T<S;T++){if(U==x[T].id){$(x[T].container).css({position:"absolute",visibility:"hidden",zIndex:-1,height:0,overflow:"hidden"});break}}}function P(U,S){var T=z.GetTabType(U);$(x[S].container).css({position:"relative",visibility:"visible",zIndex:0,height:"",overflow:""});if(!x[S].page){x[S].page=new T(x[S].container,z.GetPageParams(U,true))}else{if(x[S].page.activate){x[S].page.activate()}}}};this.GetTabCount=function(){return(w)};this.SetTabLabel=function(I,F){var E=_GetPhysicalStringWidth(F,$(o).css("font-size"))+10;var H=E+p;for(var G=0;G<x.length;G++){if(x[G].id==I){x[G].width=H;x[G].label=F;break}}n.find("."+I).width(H).find(".tab_slice").width(E).html(F);a()};this.GetTabType=function(F){for(var E=0;E<x.length;E++){if(x[E].id==F){return(x[E].type)}}};this.GetPageParams=function(H,G){var F={};for(var E=0;E<x.length;E++){if(x[E].id==H){$.extend(true,F,x[E].page_params,G?x[E].hidden_page_params:null);break}}return(F)};this.GetHiddenPageParams=function(F){for(var E=0;E<x.length;E++){if(x[E].id==F){return(x[E].hidden_page_params)}}};this.ClearPageParams=function(G,F){for(var E=0;E<x.length;E++){if(x[E].id==G){x[E].page_params={};if(F){x[E].hidden_page_params={}}return}}};this.ClearHiddenPageParams=function(F){for(var E=0;E<x.length;E++){if(x[E].id==F){x[E].hidden_page_params={};return}}};this.SetPageParams=function(H,F,G){for(var E=0;E<x.length;E++){if(x[E].id==H){g(E,F,G);break}}a()};this.ExtendPageParams=function(H,F,G){for(var E=0;E<x.length;E++){if(x[E].id==H){s(E,F,G);break}}a()};this.RegisterForTabClosed=function(G,F,E){r.add(F,{id:G},E)};this.UnregisterForTabClosed=function(F,E){r.remove(E,{id:F})};this.RegisterForTabSwitched=function(G,F,E){j.add(F,{id:G},E)};this.UnregisterForTabSwitched=function(F,E){j.remove(E,{id:F})};this.RemoveAllPrivateTabs=function(){var F=E();while(F){z.RemoveTab(F);F=E()}function E(){for(var G=0;G<x.length;G++){if(x[G].id&&x[G].is_private){return(x[G].id)}}return(0)}};this.LoadTabStructure=function(O){var K=[];var L=y.page_map;var F=null;if(!O||!L){return}K=O.split(";");for(var J=0;J<K.length;J++){K[J]=K[J].split(",");for(var I=0;I<K[J].length;I++){K[J][I]=K[J][I].split("=")}}for(var H=0;H<K.length;H++){var N=HexToStr(K[H][1][1]);var R=K[H][0][0].indexOf("^")!=-1?true:false;var M=G(K[H][0][1]);var P=K[H].length==3?StrToObj(HexToStr(K[H][2][0])):null;var E=K[H][0][0].indexOf("!")==-1?true:false;var Q=acct_manager.IsSignedIn();if(!Q&&!R||Q){if(!E){F="tab"+(H+1)}z.AddTab(N,R,M,P,null,true,true)}}if(F){z.ActivateTab(F)}else{GoHome()}function G(S){for(var T=0;T<L.length;T++){if(L[T][0]==S){return(L[T][1])}}}};this.ActivateTabByStructure=function(N){var J=[];var L=y.page_map;var O=null;if(!N||!L){return}try{J=N.split(";");for(var I=0,K=J.length;I<K;I++){J[I]=J[I].split(",");for(var H=0;H<J[I].length;H++){J[I][H]=J[I][H].split("=")}}for(var G=0,K=J.length;G<K;G++){var M=HexToStr(J[G][1][1]);var E=J[G][0][0].indexOf("!")==-1;if(!E){O=M;break}}}catch(F){return}if(b){z.ActivateTab(b);b=null}else{if(O){z.ActivateTabByLabel(O)}else{}}};this.GetURLHashString=function(F){var P=y.page_map;var R="";var N="";var L="";if(!P){return(0)}for(var M=0,O=x.length;M<O;M++){var G=x[M];if(G.id!=null){page_map_hit=false;for(var K=0,J=P.length;K<J;K++){if(P[K][1]==G.type){var Q="";var S="";var E=false;if((!F&&G.active)||(F!=null&&G.id==F)){Q+="!"}if(G.is_private){Q+="^"}Q+=("t="+P[K][0]);S=ObjToStr(G.page_params);Q+=(",l="+StrToHex(G.label)+(S?(","+StrToHex(S)):"")+";");for(var I=0,H=y.fixed_tabs.length;I<H;I++){if(G.type==y.fixed_tabs[I]){R+=Q;E=true;break}}if(!E){N+=Q}break}}}}L=R+N;return(L.substr(0,L.length-1))};function g(E,G,H){if(!G){return}var F=x[E];if(H){$.each(G,function(I,J){F.hidden_page_params[I]=J})}else{$.each(G,function(I,J){F.page_params[I]=J})}}function s(E,G,H){var F=x[E];if(H){jQuery.extend(true,F.hidden_page_params,G)}else{jQuery.extend(true,F.page_params,G)}}function u(O){var U=n;var L=y.tab_controls;var S="."+(O?O:z.GetActiveTabID());var E=$(S).position().left;var M=E+$(S).width();U.css({width:"auto"});var T=U.width();var I=U.position().left;var F=I+T;var G=0;var K=0;var Q=0;var N=0;var J=I+E;var R=I+M;var V=0;var P=false;if(J<0){G=-J}else{if(R>q){G=q-R}}K=F+G;Q=I+G;N=(F<q)?F:q;P=T>q;U.css({width:P?(N-I-G)+"px":"auto"});if(G){V=P?(-I-G):0;L.css({right:V+"px"});U.animate({left:"+="+G},"fast")}H(K>q);W(Q<0);function W(X){var Z=$(o);var ab=y.tab_left;var Y=Z.position().left;var aa=ab.width();ab.animate({left:(Y-(X?3*aa:0))+"px",opacity:X?1:0},200,"swing",function(){if(X){$(this).animate({left:(Y-aa)+"px"},500,"swing")}})}function H(X){var Z=$(o);var ad=y.tab_right;var aa=y.tab_controls;var Y=Z.position().left;var ac=ad.width();var ab=Y+aa.position().left+aa.width();ad.animate({left:(ab+(X?2*ac:-ac))+"px",opacity:X?1:0},200,"swing",function(){if(X){$(this).css({zIndex:2}).animate({left:ab+"px"},500,"swing")}else{$(this).css({zIndex:-1})}})}}function D(G){for(var F=0,E=x.length;F<E;F++){if(x[F].id==G){return(true)}}return(false)}function t(E){r.notifyOnce({id:E})}function f(E){j.notify({id:E})}function a(){$(o).find("a").each(function(E){var F=z.GetURLHashString(x[E].id);if(!F){}$(this).attr({href:"index.php#"+F})})}function C(){$.extend(true,y,k);B=B||{};x.push(new Tab(null,null,false,0,null,null,null,null,null,false));q=$(o).width()-y.tab_controls.width();y.tab_left.click(function(){u(F())});y.tab_right.click(function(){u(E())});y.tab_remove.click(function(){var G=z.GetActiveTabID();z.RemoveTab(G)}).hover(function(){$(this).css({"background-position":"0 -270px"})},function(){$(this).css({"background-position":"0 -252px"})});function F(){var G=n.position().left;var H=null;var J=null;var K=null;for(var I=0;I<x.length-1;I++){H=x[I].id;K=$("."+x[I].id);if(G+K.position().left>=0){break}J=H}return(J)}function E(){var G=n.position().left;var H=null;var J=null;var K=null;for(var I=x.length-2;I>=0;I--){H=x[I].id;K=$("."+x[I].id);if(K.position().left+K.width()<=q-G){break}J=H}return(J)}}C()}Tab_Manager.error_code={ERR_DUP_ID:1,ERR_ID_NOT_FOUND:2,ERR_DUP_LABEL:3,ERR_BAD_PARAMS:4};function Portfolio(b,a,d,c){this.name=b;this.symbols=a?a:(new Array());this.symbols_to_remove=new Array();this.symbols_to_add=a?a.slice(0):(new Array());this.exists_in_db=false;this.dirty=true;this.default_chart_params=d?d:{width:0,height_width_ratio:Portfolio_Manager.layout.DEFAULT_CHART_HEIGHT_WIDTH_RATIO,hideOverview:true,hideHoverQuotes:false,menuStyle:ChartControl.MENUSTYLE.AUTOHIDE,autoUpdate:true,autoCreate:false,chart:{s:null,ct:Chart.TYPE.CANDLESTICK,cs:Chart.SCALE.LOGARITHMIC,cd:"6m",vlul:"505050",vldl:"C04048",vla:"60",bgf:"C4D5E6:FFFFFF:90",cp:"0",bgr:"1:15"}};this.layout=c?c:{rows:new Array()}}function Portfolio_Manager(){var d=null;var R=null;var M=null;var K=null;var n=null;var P=null;var e=null;var q=false;var f=new RegistrantList();var l=new RegistrantList();var L=new RegistrantList();var x=new RegistrantList();var F=new RegistrantList();var b=new RegistrantList();var N=new RegistrantList();var A=typeof(getdebug)!="undefined"?getdebug():function(){};var g=typeof(getinfo)!="undefined"?getinfo():function(){};var C=typeof(getwarn)!="undefined"?getwarn():function(){};var G=typeof(geterror)!="undefined"?geterror():function(){};this.portfolios=Q();this.status=a();this.GetPortfolios=function(){return(this.portfolios)};this.AddPortfolio=function(T){if(this.GetPortfolio(T.name)){throw ({errcode:Portfolio_Manager.error_code.ERR_DUP_NAME,errdata:null})}this.portfolios.push(T);if(T.layout==undefined||!T.layout){this.GetPortfolio(T.name).layout={rows:new Array()}}else{if(T.layout.rows==undefined||!T.layout.rows){this.GetPortfolio(T.name).layout.rows=new Array()}}if(this.GetPortfolio(T.name).symbols!=null){if(this.GetPortfolio(T.name).layout.rows.length==0){var U=this.GetPortfolio(T.name).symbols;for(var V=0,S=U.length;V<S;V++){o.call(this,T.name,U[V])}}}d=R=T.name;s(T.name,T.symbols)};this.GetCustomName=function(U){var S=U||1;var T="custom"+S;if(this.GetPortfolio("custom"+S)){T=this.GetCustomName(S+1)}return(T)};this.MarkDirty=function(S){if(!this.GetPortfolio(S)){throw ({errcode:Portfolio_Manager.error_code.ERR_NAME_NOT_FOUND,errdata:null})}this.GetPortfolio(S).dirty=true};this.MarkClean=function(S){if(!this.GetPortfolio(S)){throw ({errcode:Portfolio_Manager.error_code.ERR_NAME_NOT_FOUND,errdata:null})}this.GetPortfolio(S).dirty=false};this.IsDirty=function(S){if(!this.GetPortfolio(S)){throw ({errcode:Portfolio_Manager.error_code.ERR_NAME_NOT_FOUND,errdata:null})}return(this.GetPortfolio(S).dirty)};this.DoDirtyPortfoliosExist=function(){if(this.portfolios.getElement("dirty",true)){return(true)}return(false)};this.GetPortfolio=function(S){return(this.portfolios.getElement("name",S))};this.GetNumPortfolios=function(){return(this.portfolios.length)};this.SetDefaultChartParams=function(T,S){if(!this.GetPortfolio(T)){throw ({errcode:Portfolio_Manager.error_code.ERR_NAME_NOT_FOUND,errdata:null})}this.GetPortfolio(T).default_chart_params=S};this.AddSymbol=function(T,Y){var Z=false;var X=false;var U=this.GetPortfolio(T);if(!U){throw ({errcode:Portfolio_Manager.error_code.ERR_NAME_NOT_FOUND,errdata:null})}for(var W=0,V=U.symbols,S=V.length;W<S;W++){if(V[W].toLowerCase()==Y.toLowerCase()){X=true;break}}if(!X){U.symbols.push(Y);for(var W=U.symbols_to_remove.length-1;W>=0;W--){if(U.symbols_to_remove[W].toLowerCase()==Y.toLowerCase()){U.symbols_to_remove.splice(W,1);Z=true}}if(!Z){U.symbols_to_add.push(Y)}}if(!Z){this.MarkDirty(T)}o.call(this,T,Y);d=T;n=P=Y;if(X){throw ({errcode:Portfolio_Manager.error_code.ERR_SYMBOL_DUP,errdata:null})}I(T,Y);r(T,U.layout)};this.RemoveSymbol=function(S,X){var T=this.GetPortfolio(S);var Z=false;var Y=false;var W=false;if(!T){throw ({errcode:Portfolio_Manager.error_code.ERR_NAME_NOT_FOUND,errdata:null})}for(var V=T.symbols.length-1;V>=0;V--){if(T.symbols[V].toLowerCase()==X.toLowerCase()){T.symbols.splice(V,1);Z=true;break}}if(!Z){throw ({errcode:Portfolio_Manager.error_code.ERR_SYMBOL_NOT_FOUND,errdata:null})}for(var V=T.symbols_to_add.length-1;V>=0;V--){if(T.symbols_to_add[V].toLowerCase()==X.toLowerCase()){T.symbols_to_add.splice(V,1);Y=true}}if(!Y){T.symbols_to_remove.push(X);this.MarkDirty(S)}for(var V=T.layout.rows.length-1;V>=0;V--){for(var U=T.layout.rows[V].length-1;U>=0;U--){if(T.layout.rows[V][U].chart.s.toLowerCase()==X.toLowerCase()){T.layout.rows[V].splice(U,1);W=true}}if(!T.layout.rows[V].length){T.layout.rows.splice(V,1);W=true}}d=S;n=e=X;H(S,X);if(W){r(S,T.layout)}};this.SavePortfolio=function(S){var T=this.GetPortfolio(S);if(!T){throw ({errcode:Portfolio_Manager.error_code.ERR_NAME_NOT_FOUND,errdata:null})}var U=T.symbols_to_remove;var W=T.symbols_to_add;var X=T.exists_in_db;var V=this.IsDirty(S);if(X&&!V){throw ({errcode:Portfolio_Manager.error_code.ERR_NOTHING_TO_SAVE,errdata:null})}if(!this.status.portsave_progress){this.status.portsave_progress=1;this.status.portsave_success=true;this.MarkClean(S);d=K=S;if(!X){this.status.portsave_progress++}if(U.length>0&&W.length>0){this.status.portsave_progress+=2}else{if(U.length>0||W.length>0){this.status.portsave_progress+=1}}if(!X){p(S,true)}if(U.length>0){k(S,U,true)}if(W.length>0){c(S,W,true)}w(S,T.layout,true)}else{throw ({errcode:Portfolio_Manager.error_code.ERR_PORTSAVE_IN_PROGRESS,errdata:null})}};this.DeletePortfolio=function(S){var T=this.GetPortfolio(S);if(!T){throw ({errcode:Portfolio_Manager.error_code.ERR_NAME_NOT_FOUND,errdata:null})}if(!this.status.portrem_progress){this.status.portrem_progress=1;this.status.portrem_success=true;d=M=S;if(T.exists_in_db){E(S,true)}else{this.portfolios.splice(this.portfolios.getIndex("name",S),1);this.status.portrem_progress=0;this.status.portrem_success=true}}else{throw ({errcode:Portfolio_Manager.error_code.ERR_PORTREM_IN_PROGRESS,errdata:null})}};this.RenamePortfolio=function(T,V,X){var W=this;var U=this.GetPortfolio(T);if(jQuery.trim(T)==jQuery.trim(V)){throw ({errcode:Portfolio_Manager.error_code.ERR_DUP_NAME,errdata:null})}if(!U){throw ({errcode:Portfolio_Manager.error_code.ERR_NAME_NOT_FOUND,errdata:null})}if(this.GetPortfolio(T).exists_in_db){window.ajax.put("php/api/portfolio/rename.php",{name:T,newname:V},{success:function(Y){S(!Y.status)},error:function(Y){S(false)}})}else{S(true)}function S(Y){if(Y){U.name=V;d=V}if($.isFunction(X)){X(Y)}if(Y){j(T,V)}}};this.LoadPortfoliosFromDB=function(S){if(!this.status.portget_progress){q=!S;this.status.portget_progress=1;this.status.portget_success=false;if(S){this.portfolios=Q()}B()}};this.RegisterForPortfoliosLoaded=function(T,S){if(this.status.portget_success&&!this.status.portget_progress){S.call(T)}f.add(T,null,S)};this.UnregisterForPortfoliosLoaded=function(S){f.remove(S)};this.RegisterForPortfolioCreated=function(T,S){l.add(T,null,S)};this.UnregisterForPortfolioCreated=function(S){l.remove(S)};this.RegisterForSymbolAdded=function(T,U,S){L.add(U,{portfolio_name:T},S)};this.UnregisterForSymbolAdded=function(S,T){L.remove(T,{portfolio_name:S})};this.RegisterForSymbolRemoved=function(T,U,S){x.add(U,{portfolio_name:T},S)};this.UnregisterForSymbolRemoved=function(S,T){x.remove(T,{portfolio_name:S})};this.RegisterForPortfolioSaved=function(T,U,S){F.add(U,{portfolio_name:T},S)};this.RegisterForPortfolioRenamed=function(T,U,S){b.add(U,{portfolio_name:T},S)};this.UnregisterForPortfolioSaved=function(S,T){F.remove(T,{portfolio_name:S})};this.UnregisterForPortfolioRenamed=function(S,T){b.remove(T,{portfolio_name:S})};this.RegisterForLayoutChanged=function(T,U,S){N.add(U,{portfolio_name:T},S)};this.UnregisterForLayoutChanged=function(S,T){N.remove(T,{portfolio_name:S})};this.MergePortfolios=function(X,W){if(!this.GetPortfolio(X.name)){throw ({errcode:Portfolio_Manager.error_code.ERR_NAME_NOT_FOUND,errdata:null})}for(var U=0;U<W.symbols.length;U++){var V=false;for(var T=0;T<X.symbols.length;T++){if(X.symbols[T]==W.symbols[U]){V=true;break}}if(!V){for(var S=X.symbols_to_remove.length-1;S>=0;S--){if(X.symbols_to_remove[S]==W.symbols[U]){X.symbols_to_remove.splice(S,1)}}X.symbols.push(W.symbols[U]);X.symbols_to_add.push(W.symbols[U]);I(X.name,W.symbols[U]);this.MarkDirty(X.name)}}for(var U=0;U<W.layout.rows.length;U++){X.layout.rows.push(W.layout.rows[U])}r(X.name,X.layout)};this.SetLayout=function(S,U){var T=this.GetPortfolio(S);if(!T){throw ({errcode:Portfolio_Manager.error_code.ERR_NAME_NOT_FOUND,errdata:null})}T.layout=CloneObject(U);this.MarkDirty(S);r(S,T.layout)};this.Notify=function(Z,W){switch(Z){case Portfolio_Manager.event_code.EVENT_SYMREM_SUCCESS:this.status.symrem_progress=0;this.status.symrem_success=true;if(d){D.call(this,d)}--this.status.portsave_progress;if(this.status.portsave_progress<=0){this.status.portsave_progress=0;J(d)}break;case Portfolio_Manager.event_code.EVENT_SYMREM_FAIL:this.status.symrem_progress=0;this.status.symrem_success=false;this.status.portsave_success=false;this.MarkDirty(d);--this.status.portsave_progress;if(this.status.portsave_progress<=0){this.status.portsave_progress=0}break;case Portfolio_Manager.event_code.EVENT_SYMADD_SUCCESS:this.status.symadd_progress=0;this.status.symadd_success=true;if(d){z.call(this,d)}--this.status.portsave_progress;if(this.status.portsave_progress<=0){this.status.portsave_progress=0;J(d)}break;case Portfolio_Manager.event_code.EVENT_SYMADD_FAIL:this.status.symadd_progress=0;this.status.symadd_success=false;this.status.portsave_success=false;this.MarkDirty(d);--this.status.portsave_progress;if(this.status.portsave_progress<=0){this.status.portsave_progress}break;case Portfolio_Manager.event_code.EVENT_PORTCREATE_SUCCESS:this.status.portcreate_progress=0;this.status.portcreate_success=true;if(d){this.GetPortfolio(d).exists_in_db=true}--this.status.portsave_progress;if(this.status.portsave_progress<=0){this.status.portsave_progress=0}break;case Portfolio_Manager.event_code.EVENT_PORTCREATE_FAIL:this.status.portcreate_progress=0;this.status.portcreate_success=false;this.status.portsave_success=false;this.MarkDirty(d);--this.status.portsave_progress;if(this.status.portsave_progress<=0){this.status.portsave_progress=0}break;case Portfolio_Manager.event_code.EVENT_PORTGET_SUCCESS:var T=W;for(var X=0,aa=T.length;X<aa;X++){var ac=false;var ae=T[X].name;var ad=this.GetPortfolio(ae);var S=new Portfolio(ae,T[X].symbols,null,T[X].layout!=""?$.evalJSON(T[X].layout):null);S.symbols_to_add=new Array();if(q&&ad){this.MergePortfolios(ad,S);ac=true}if(!ac){S.exists_in_db=true;this.AddPortfolio(S);this.MarkClean(ae)}if(S.layout==null||!S.layout.rows.length){for(var V in S.symbols){o.call(this,ae,symbol)}}}q=false;this.status.portget_progress=0;this.status.portget_success=true;t();break;case Portfolio_Manager.event_code.EVENT_PORTGET_FAIL:this.status.portget_progress=0;this.status.portget_success=false;break;case Portfolio_Manager.event_code.EVENT_SYMGET_SUCCESS:var ab=W;this.status.symget_progress=0;this.status.symget_success=true;break;case Portfolio_Manager.event_code.EVENT_SYMGET_FAIL:this.status.symget_progress=0;this.status.symget_success=false;break;case Portfolio_Manager.event_code.EVENT_PORTSELECT_SUCCESS:var ae=W;this.status.portselect_progress=0;this.status.portselect_success=true;break;case Portfolio_Manager.event_code.EVENT_PORTSELECT_FAIL:this.status.portselect_progress=0;this.status.portselect_success=false;break;case Portfolio_Manager.event_code.EVENT_PORTLIST_SUCCESS:var Y=W;this.status.portlist_progress=0;this.status.portlist_success=true;break;case Portfolio_Manager.event_code.EVENT_PORTLIST_FAIL:this.status.portlist_progress=0;this.status.portlist_success=false;break;case Portfolio_Manager.event_code.EVENT_PORTREM_SUCCESS:var U=W;if(d){this.portfolios.splice(this.portfolios.getIndex("name",d),1)}this.status.portrem_progress=0;this.status.portrem_success=true;h(d);break;case Portfolio_Manager.event_code.EVENT_PORTREM_FAIL:this.status.portrem_progress=0;this.status.portrem_success=false;break;case Portfolio_Manager.event_code.EVENT_LAYOUTSAVE_SUCCESS:this.status.layoutsave_progress=0;this.status.layoutsave_success=true;--this.status.portsave_progress;if(this.status.portsave_progress<=0){this.status.portsave_progress=0;J(d)}break;case Portfolio_Manager.event_code.EVENT_LAYOUTSAVE_FAIL:this.status.layoutsave_progress=0;this.status.layoutsave_success=false;this.status.portsave_success=false;this.MarkDirty(d);--this.status.portsave_progress;if(this.status.portsave_progress<=0){this.status.portsave_progress=0}break;default:}};this.Reset=function(){this.portfolios=Q();this.status=a()};this.GetLastPortfolioProcessed=function(){return(d)};this.GetLastPortfolioAdded=function(){return(R)};this.GetLastPortfolioRemoved=function(){return(M)};this.GetLastPortfolioSaved=function(){return(K)};this.GetLastSymbolProcessed=function(){return(n)};this.GetLastSymbolAdded=function(){return(P)};this.GetLastSymbolRemoved=function(){return(e)};function a(){return({portsave_progress:0,portsave_success:true,portcreate_progress:0,portcreate_success:true,portget_progress:0,portget_success:false,portselect_progress:0,portselect_success:true,symrem_progress:0,symrem_success:true,symadd_progress:0,symadd_success:true,symget_progress:0,symget_success:true,portlist_progress:0,portlist_success:true,portrem_progress:0,portrem_success:true,layoutsave_progress:0,layoutsave_success:true})}function t(){f.notify()}function s(S,T){l.notify({portfolio_name:S,symbols:T})}function I(S,T){L.notify({portfolio_name:S,symbol:T})}function H(S,T){x.notify({portfolio_name:S,symbol:T})}function J(S){F.notify({portfolio_name:S})}function j(S,T){b.notify({portfolio_name:S,new_portfolio_name:T})}function r(S,T){N.notify({portfolio_name:S,layout:T})}function h(S){L.remove(null,{portfolio_name:S});x.remove(null,{portfolio_name:S})}function Q(){return(new Array())}function z(S){this.GetPortfolio(S).symbols_to_add=new Array()}function D(S){this.GetPortfolio(S).symbols_to_remove=new Array()}function y(S,T){window.ajax.put("php/api/portfolio/select.php",{name:S},T?{success:function(U){Portfolio_Manager.GetInstance().Notify(Portfolio_Manager.event_code.EVENT_PORTSELECT_SUCCESS,U.message)},error:function(U){Portfolio_Manager.GetInstance().Notify(Portfolio_Manager.event_code.EVENT_PORTSELECT_FAIL)}}:null)}function o(U,W){var V=this.GetPortfolio(U);var X=0;var T=0;var S=jQuery.extend(true,{},V.default_chart_params,{chart:{s:W}});if(V.layout==null){V.layout={rows:new Array()}}X=V.layout.rows.length;T=(X>0)?V.layout.rows[X-1].length:0;if(X>0&&T<Portfolio_Manager.layout.DEFAULT_ROW_SIZE){V.layout.rows[X-1].push(S)}else{V.layout.rows.push(new Array(S))}}function c(S,V,T){var U=V.toString();if(U){window.ajax.put("php/api/portfolio/addsymbol.php",{symbols:U,name:S},T?{success:function(W){Portfolio_Manager.GetInstance().Notify(Portfolio_Manager.event_code.EVENT_SYMADD_SUCCESS)},error:function(W){Portfolio_Manager.GetInstance().Notify(Portfolio_Manager.event_code.EVENT_SYMADD_FAIL)}}:null)}}function k(S,T,U){var V=T.toString();if(V){window.ajax.put("php/api/portfolio/rmsymbol.php",{symbols:V,name:S},U?{success:function(W){Portfolio_Manager.GetInstance().Notify(Portfolio_Manager.event_code.EVENT_SYMREM_SUCCESS)},error:function(W){Portfolio_Manager.GetInstance().Notify(Portfolio_Manager.event_code.EVENT_SYMREM_FAIL)}}:null)}}function w(S,U,T){var V=$.toJSON(U);window.ajax.put("php/api/portfolio/setlayout.php",{name:S,layout:V},T?{success:function(W){Portfolio_Manager.GetInstance().Notify(Portfolio_Manager.event_code.EVENT_LAYOUTSAVE_SUCCESS)},error:function(W){Portfolio_Manager.GetInstance().Notify(Portfolio_Manager.event_code.EVENT_LAYOUTSAVE_FAIL)}}:null)}function p(S,T){window.ajax.put("php/api/portfolio/create.php",{name:S,layout:""},T?{success:function(U){Portfolio_Manager.GetInstance().Notify(Portfolio_Manager.event_code.EVENT_PORTCREATE_SUCCESS)},error:function(U){Portfolio_Manager.GetInstance().Notify(Portfolio_Manager.event_code.EVENT_PORTCREATE_FAIL)}}:null)}function E(S,T){window.ajax.put("php/api/portfolio/delete.php",{name:S},T?{success:function(U){Portfolio_Manager.GetInstance().Notify(Portfolio_Manager.event_code.EVENT_PORTREM_SUCCESS,U.message)},error:function(U){Portfolio_Manager.GetInstance().Notify(Portfolio_Manager.event_code.EVENT_PORTREM_FAIL)}}:null)}function B(){window.ajax.put("php/api/portfolio/getportfoliocontents.php",{},{success:function(S){Portfolio_Manager.GetInstance().Notify(Portfolio_Manager.event_code.EVENT_PORTGET_SUCCESS,S.message)},error:function(S){Portfolio_Manager.GetInstance().Notify(Portfolio_Manager.event_code.EVENT_PORTGET_FAIL)}})}function u(){window.ajax.put("php/api/portfolio/list.php",{},{success:function(S){Portfolio_Manager.GetInstance().Notify(Portfolio_Manager.event_code.EVENT_PORTLIST_SUCCESS,S.message.split(","))},error:function(S){Portfolio_Manager.GetInstance().Notify(Portfolio_Manager.event_code.EVENT_PORTLIST_FAIL)}})}function O(S){window.ajax.put("php/api/portfolio/listsymbol.php",{name:S},{success:function(T){Portfolio_Manager.GetInstance().Notify(Portfolio_Manager.event_code.EVENT_SYMGET_SUCCESS,T.message.split(","))},error:function(T){Portfolio_Manager.GetInstance().Notify(Portfolio_Manager.event_code.EVENT_SYMGET_FAIL)}})}}Portfolio_Manager.instance=null;Portfolio_Manager.GetInstance=function(){if(Portfolio_Manager.instance==null){Portfolio_Manager.instance=new Portfolio_Manager()}return(Portfolio_Manager.instance)};Portfolio_Manager.layout={DEFAULT_ROW_SIZE:1,DEFAULT_SPACER_WIDTH:15,DEFAULT_CHART_HEIGHT_WIDTH_RATIO:0.4};Portfolio_Manager.event_code={EVENT_SYMREM_SUCCESS:0,EVENT_SYMREM_FAIL:1,EVENT_SYMADD_SUCCESS:2,EVENT_SYMADD_FAIL:3,EVENT_PORTCREATE_SUCCESS:4,EVENT_PORTCREATE_FAIL:5,EVENT_PORTGET_SUCCESS:6,EVENT_PORTGET_FAIL:7,EVENT_SYMGET_SUCCESS:8,EVENT_SYMGET_FAIL:9,EVENT_PORTSELECT_SUCCESS:10,EVENT_PORTSELECT_FAIL:11,EVENT_PORTLIST_SUCCESS:12,EVENT_PORTLIST_FAIL:13,EVENT_PORTREM_SUCCESS:14,EVENT_PORTREM_FAIL:15,EVENT_LAYOUTSAVE_SUCCESS:16,EVENT_LAYOUTSAVE_FAIL:17};Portfolio_Manager.error_code={ERR_DUP_NAME:1,ERR_NAME_NOT_FOUND:2,ERR_SYMBOL_NOT_FOUND:3,ERR_SYMBOL_INVALID:4,ERR_SYMBOL_DUP:5,ERR_PORTSAVE_IN_PROGRESS:6,ERR_PORTREM_IN_PROGRESS:7,ERR_NOTHING_TO_SAVE:8,ERR_LAYOUT_NOT_FOUND:9,ERR_FORMAT_NAME:10};function AnnotationManager(b){var c=new RegistrantList();var a=new RegistrantList();this.registerForAnnotationCreated=function(e,f,d){c.add(e,f?{id:f}:null,d)};this.registerForAnnotationChanged=function(e,f,d){a.add(e,f?{id:f}:null,d)};this.unregisterForAnnotationCreated=function(d,e){c.remove(d,e?{id:e}:null)};this.unregisterForAnnotationChanged=function(d,e){a.remove(d,e?{id:e}:null)};this.notifyAnnotationCreated=function(d){c.notify(d?{id:d}:null)};this.notifyAnnotationChanged=function(d){a.notify(d?{id:d}:null)}}function QQ_Control(){var b=typeof(getdebug)!="undefined"?getdebug():function(){};var a=typeof(getinfo)!="undefined"?getinfo():function(){};var d=typeof(getwarn)!="undefined"?getwarn():function(){};var c=typeof(geterror)!="undefined"?geterror():function(){};this.is_open=false;this.is_animating=false;this.queue_close=false;this.can_close=true;this.Open=function(){this.queue_close=false;if(!this.is_animating){this.is_open=true;this.can_close=false;this.is_animating=true;$("#qq").animate({bottom:"143px"},200,"linear",function(){QQ_Control.GetInstance().is_animating=false;if(QQ_Control.GetInstance().queue_close){QQ_Control.GetInstance().Close()}});if(!this.can_close){setTimeout(function(){QQ_Control.GetInstance().can_close=true;if(QQ_Control.GetInstance().queue_close){QQ_Control.GetInstance().Close()}},2000)}}};this.Close=function(e){if(this.is_open){if((!this.is_animating&&this.can_close)||e){this.is_open=false;this.is_animating=true;this.queue_close=false;$("#qq").animate({bottom:"17px",opacity:"0.9"},500,"linear",function(){QQ_Control.GetInstance().is_animating=false})}else{this.queue_close=true}}};this.FadeIn=function(){$("#qq").css("opacity","0.95")}}QQ_Control.instance=null;QQ_Control.GetInstance=function(){if(QQ_Control.instance==null){QQ_Control.instance=new QQ_Control()}return(QQ_Control.instance)};function Page_CompanyInfo(p,f){var w={intradayChart:{width:342,height:150,hideOverview:true,hideHoverQuotes:true,menuStyle:ChartControl.MENUSTYLE.NONE,autoCreate:false,chart:{ct:Chart.TYPE.MOUNTAIN,cs:Chart.SCALE.LOGARITHMIC,cp:Chart.PERIOD.TWOMINUTE,cd:"1d",bgf:"C4D5E6:FFFFFF:90",bgr:"1:15",plc:"000000",pla:"6F",vla:"0",lga:"0"}},mainChart:{width:986,height:430,constrain:false,chart:{grl:"CCCCCC",grbl:"BBBBBB",bgf:"C4D5E6:FFFFFF:90"}}};var o=[];var h=false;var k=false;var u,j,t;var q,l,x=document.title;var c=typeof(getdebug)!="undefined"?getdebug():function(){};var e=typeof(getinfo)!="undefined"?getinfo():function(){};var d=typeof(getwarn)!="undefined"?getwarn():function(){};var g=typeof(geterror)!="undefined"?geterror():function(){};r();a();if(!w.symbol){return}$(p).css({display:"block",textAlign:"center"}).append('<div class="panel_main"><img src="images/logo_spinner.gif"/> Loading...</div>');var s=["name","exchange_abbrev","market_cap","52wk_high","52wk_low","pe","sector","type"];window.ajax.lock();window.ajax.put("php/api/data/get.php",{symbol:w.symbol,fields:s.join()},{success:y,error:y});window.ajax.put("php/api/data/quote.php",{symbol:w.symbol,num:2,period:0},{success:z});window.ajax.unlock(true);this.Serialize=function(){return{symbol:w.symbol,mainChart:j?j.GetParams():undefined}};this.getParams=function(){return(w)};this.GetState=function(){return{symbol:w.symbol}};this.Destroy=function(){var A=null;if(k){return}A=tab_manager.GetActiveTabID();tab_manager.ClearPageParams(A,true);if(u){u.Destroy()}if(j){j.Destroy()}if(t){t.Destroy()}$(p).empty();clearTimeout(q);k=true;document.title=x};this.getContainerDOM=function(){return(p)};this.resize=function(B,A){};this.postMessage=function(A){switch(event){default:}};this.suspend=function(){if(h){return(true)}h=true;document.title=x;return(true)};this.activate=function(){if(!h){return}var B=null;var A=null;h=false;A=tab_manager.GetActiveTabID();while(o.length){B=o.shift();b({event:B.event,data:B.data})}tab_manager.SetPageParams(A,this.GetState());tab_manager.SetPageParams(A,this.Serialize(),true);document.title=l||x};function a(){$.extend(true,w,f);if(f&&f.mainChart&&f.mainChart.chart&&f.mainChart.chart.h){w.mainChart.height=f.mainChart.chart.h;delete w.mainChart.chart.h}w.intradayChart.chart.s=w.symbol;w.mainChart.chart.s=w.symbol}function y(A){if(k){return}$(p).empty().css("text-align","").append('<div class="panel_main"><div class="ci_wrap"><div class="ci_header"><div class="ci_share"/></div><div class="ci_today"><div class="ci_data"/><div class="ci_intraday"><div/></div></div><div class="ci_hist"><div class="ci_main"/></div></div></div>');if(A.status==-1){$(p).find(".ci_data").append("Connection trouble!")}else{if(A.status){$(p).find(".ci_data").append("Symbol not found: "+w.symbol);if(A.status!=3){}}else{var D=$(p).find(".ci_header").slice(0,1);var C=A.message.split(",");$("<img>").addClass("ci_logo").load(function(){D.prepend(this);if($(this).width()>=80){$(this).attr("height",Math.round(80*$(this).height()/$(this).width())).attr("width",80)}}).attr("src","images/logos/"+w.symbol.toLowerCase()+".png");if(C[7]&&C[7]!="mf"){u=new ChartControl($(p).find(".ci_intraday").children().get(0),w.intradayChart)}else{w.mainChart.mutualFund=true}j=new ChartControl($(p).find(".ci_main").get(0),w.mainChart,{popout:function(){PopChart(this.GetParams())},draw:function(){GoAnnotate(w.symbol,this.GetParams())}});$(".ci_data",p).append('<table><tr><td class="ci_last"/><td>Open:</td><td class="ci_open"/><td>Market Cap:</td><td class="ci_mktcap"/></tr><tr><td class="ci_change"/><td>High:</td><td class="ci_high"/><td>52-Week High:</td><td class="ci_52high"/></td></tr><tr><td class="ci_time"/><td>Low:</td><td class="ci_low"/><td>52-Week Low:</td><td class="ci_52low"/></tr><tr><td>&nbsp;</td><td>Volume:</td><td class="ci_vol"/><td>P/E:</td><td class="ci_pe"></tr></table>');if(C.length!=s.length){D.append(w.symbol.toUpperCase())}else{D.append(C[0]);var B=$("<span/>").css({fontWeight:"normal",fontSize:"16px"}).append(w.symbol.toUpperCase());if(C[1]!="Unknown"){B.prepend(C[1].toUpperCase()+":")}if(C[6]!=""){B.append(" - "+C[6])}B.prepend(" (").append(")").appendTo(D);$(p).find(".ci_mktcap").html(C[2]);$(p).find(".ci_52high").html(FormatPrice(C[3]));$(p).find(".ci_52low").html(FormatPrice(C[4]));$(p).find(".ci_pe").html(C[5])}t=new ShareWidget($(".ci_share",p),{compact:true,align:ShareWidget.ALIGN.RIGHT,shareurl:GetChartUrl(w.symbol),title:"$"+w.symbol.toUpperCase()+" - Current quote and stock chart"},new CtShareConnector({symbol:w.symbol}))}}}function z(J){if(k){return}var F=w.intradayChart;if(!J.status&&J.quotes.length>0){var E=J.quotes[0].close-J.quotes[1].close;var D=E/J.quotes[1].close*100;var C=ParseDateTime(J.quotes[0].time);if(E>=0){F.chart.plf="003333:00ff00";var I="pos_change";var H="neg_change"}else{F.chart.plf="ff0000:003333";var I="neg_change";var H="pos_change"}F.chart.plhzl=J.quotes[1].close+":666666";if(u){u.UpdateParams(F);if(!$(".ci_intraday",p).find(".chartimage").size()){u.Create()}}var A=J.quotes[0];$(".ci_open",p).html(FormatPrice(A.open));$(".ci_high",p).html(FormatPrice(A.high));$(".ci_low",p).html(FormatPrice(A.low));$(".ci_last",p).html(FormatPrice(A.close));$(".ci_vol",p).html(B(A.volume));$(".ci_change",p).html(FormatChange(E)+" ("+FormatPercent(D)+")").addClass(I).removeClass(H);$(".ci_time",p).html(G(C));l=w.symbol.toUpperCase()+": "+$(".ci_last",p).text()+" "+$(".ci_change",p).text()+" : "+x;if(!h){document.title=l}}else{J.wait=5*60}q=setTimeout(function(){window.ajax.put("php/api/data/quote.php",{symbol:w.symbol,num:2,period:0},{success:z})},(J.wait+5)*1000);if(!J.quotes.length){}function B(K){var M=["","K","M","B","T"];var L=0;while(K>1000){K/=1000;L++}return RoundTo(K,2)+M[L]}function G(P){var K=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];var N=P.getMinutes().toString().length==1?"0"+P.getMinutes().toString():P.getMinutes();var M=P.getHours()%12?P.getHours()%12:12;var L=P.getHours()<12?"am":"pm";var O=P.getHours()==16?"Close":M+":"+N+L;return K[P.getMonth()]+" "+P.getDate()+" - "+O}}function b(A){switch(A.event){default:}}function r(){}function n(A){return(A===undefined?$(p):$(A,p))}}Page_CompanyInfo.event={};function Page_AnnotateShare(r,e){var E=this;var C={symbol:"",headline:"",description:"",cc:{height:430},sh:{showLabels:true,embed:"Annotation not saved yet",symbol:e.symbol},shareId:undefined,status:"unsaved"};var q=[];var g=false;var k=false;var s={cc:{width:986,constrain:false,annotate:true,startAnnotating:true,userDrawControl:false,chart:{grl:"CCCCCC",grbl:"BBBBBB",bgf:"C4D5E6:FFFFFF:90"}}};var n="Describe your annotation";var w,D,t={};var x=["name","exchange_abbrev","sector","type"];var b=typeof(getdebug)!="undefined"?getdebug():function(){};var d=typeof(getinfo)!="undefined"?getinfo():function(){};var c=typeof(getwarn)!="undefined"?getwarn():function(){};var f=typeof(geterror)!="undefined"?geterror():function(){};$.extend(true,C,e);$.extend(true,C,s);C.cc.chart.s=e.symbol;h();this.Serialize=function(){return{symbol:C.symbol,headline:$("input[name=headline]",r).val(),description:j(),cc:w?w.GetParams():{},sh:D?D.GetParams():{},shareId:C.shareId,status:C.status}};this.GetState=function(){return{symbol:C.symbol}};this.getParams=function(){return(C)};this.getContainerDOM=function(){return(r)};this.resize=function(I,H){};this.postMessage=function(H){switch(event){default:}};this.suspend=function(){var H=null;if(g){return(true)}g=true;H=tab_manager.GetActiveTabID();tab_manager.ClearPageParams(H,true);tab_manager.SetPageParams(H,this.GetState());tab_manager.SetPageParams(H,this.Serialize(),true);return(true)};this.activate=function(){var H=null;if(!g){return}g=false;while(q.length){H=q.shift();a({event:H.event,data:H.data})}};this.Destroy=function(){if(k){return}window.acct_manager.UnregisterForSignedOut(E);if(w){w.Destroy()}if(D){D.Destroy()}o().find("*").unbind().end().empty();k=true};function A(){var H=w.GetDates();if(H){$(".as-dates",r).html(FormatDateTime(H[0],true)+" - "+FormatDateTime(H[1],true))}}function G(H){if(k){return}if(H.status==-1){F("Connection trouble!  Please check your internet connection and try again.")}else{if(H.status){F("Sorry, we don't recognize the symbol '"+C.symbol+"'")}else{if(!H.status){$(r).children().show();var I=$(".as-coname",r);var M=H.message.split(",");if(M[3]&&M[3]=="mf"){C.cc.mutualFund=true}w=new ChartControl($(".as-cc",r),C.cc,{paramchange:function(){A();if(C.status=="saved"){p("edited")}}});A();if(M.length!=x.length){I.append(C.symbol.toUpperCase());t.name=C.symbol.toUpperCase()}else{for(var K=0;K<x.length;K++){t[x[K]]=M[K]}I.append(M[0]);var J=$("<span/>").css({fontWeight:"normal",fontSize:"12px"}).append(C.symbol.toUpperCase());if(M[1]!="Unknown"){J.prepend(M[1].toUpperCase()+":")}if(M[2]!=""){J.append(" - "+M[2])}J.prepend(" (").append(")").appendTo(I);$("<img>").load(function(){$(".as-infobar",r).prepend(this);if($(this).width()>=80){$(this).attr("height",Math.round(80*$(this).height()/$(this).width())).attr("width",80)}I.css("padding-left",95)}).attr("src","images/logos/"+C.symbol.toLowerCase()+".png")}C.sh.title=C.sh.title||l();var L=new CtShareConnector({symbol:C.symbol});L.Share=B;L.ShareDone=y;D=new ShareWidget($(".as-share",r),C.sh,L);$(".as-share").append('<div class="as-share-copy">                    Sharing your charts is easy - just save it to your account and click the buttons                     to the left.  Once saved, your friends will be able to leave comments and rate your chart.                     You will also be able to edit your chart at any time.  <br/><br/>If you don\'t want to create an                     account, you can just <img src="images/download.png"/><span class="as-download">download this chart</span>.                </div>');$(".as-download",r).click(function(){w.Download();ShowNotice("Thanks for Downloading from Chartastic!")});window.acct_manager.RegisterForSignedOut(E,function(){p("unsaved")})}}}}function l(){return $("input[name=headline]",r).val()||t.name}function j(){var H=$("textarea[name=description]",r).val();return H!=n?H:""}function B(H){z(function(I){if(!I){H.sharePrompt=true;H.shareMsg="Your Annotated Chart Has Been Saved."}D.Trigger(H)})}function z(H){if(!window.acct_manager.IsSignedIn()){p("unsaved");acct_manager.SignIn("Sign In To Save Your Annotated Chart",function(N){if(N){z(H)}})}else{switch(C.status){case"saved":if(H){H(true)}break;case"unsaved":case"edited":var M=w.GetParamsStatic();var K=M.annotation;delete M.annotation;var J={symbol:C.symbol,headline:l(),passage:j(),chart_params:$.compactJSON(M),anno_params:$.compactJSON(K)};var I=w.GetAnnotationDates();if(I&&I.length==2){J.time_start=DateTimeToString(I[0]);J.time_end=DateTimeToString(I[1])}if(C.status=="edited"){var L="php/api/share/update.php";J.id=C.shareId;J.transparent=1}else{var L="php/api/share/create.php";J.symbol=C.symbol}window.ajax.put(L,J,function(N){if(!N.status){if(C.status=="unsaved"){C.shareId=N.message}C.headline=J.headline;C.description=J.passage;$("input[name=headline]",r).val(J.headline);D.UpdateParams({email:window.acct_manager.GetUserinfo().email,shareurl:GetShareUrl(C.shareId),title:l(),message:j(),embed:GetEmbedMarkup(C.shareId)});if(C.status=="edited"){annotation_manager.notifyAnnotationChanged(C.shareId)}else{annotation_manager.notifyAnnotationCreated(C.shareId)}p("saved");if(H){H()}}else{ShowNotice("Unable to save annotation!");p(C.status)}});break}}}function y(){var J=CreateDialog('<div class="as-done"><div class="as-done-title">Thanks for Sharing Your Chart!</div><div class="">You Can Share This Chart Again</div><div class="as-share"/><div class="as-done-next"><span>View My Shared Chart &gt;</span></div><div class="as-done-next"><span>View All of My Charts &gt;</span></div><span class="as-done-proceed">Or Go Directly To Your Charts:</span></div>',true);var H=$.extend(true,{},D.GetParams(),{align:ShareWidget.ALIGN.CENTER});var I=new ShareWidget($(".as-share",J.GetDialogDOM()),H,new CtShareConnector({symbol:C.symbol}));$(".as-done-next span",J.GetDialogDOM()).slice(0,1).click(function(){I.Destroy();J.Hide();tab_manager.RemoveTab(tab_manager.GetActiveTabID());GoViewShare(C.shareId)}).end().slice(1,2).click(function(){I.Destroy();J.Hide();tab_manager.RemoveTab(tab_manager.GetActiveTabID());GoMyCharts()});J.Show()}function p(H){C.status=H;switch(H){case"saved":$(".as-status",r).removeClass("as-status-unsaved as-status-edited").addClass("as-status-saved").unbind("click");break;case"unsaved":delete C.shareId;$(".as-status",r).removeClass("as-status-saved as-status-edited").addClass("as-status-unsaved").unbind("click").one("click",function(){z(function(){ShowNotice("Your Annotated Chart Has Been Saved.")})});break;case"edited":$(".as-status",r).removeClass("as-status-saved as-status-unsaved").addClass("as-status-edited").unbind("click").one("click",function(){z(function(){ShowNotice("Your Updates Have Been Saved.")})});break}}function F(H){$(r).html('<div class="as-error">'+H+"</div>");$(r).children().show()}function a(H){switch(H.event){default:}}function h(){o().empty().append('<div class="panel_main" style="display:block;"><div class="panel_corner_bl"/><div class="panel_corner_tl"/><div class="as-s2"><div class="as-relative"><b>Annotate Your Chart</b><div class="as-text">Draw trendlines, arrows and more directly on the chart.<br/><span class="as-tip">Tip: You can adjust the chart settings at any time</span></div></div></div><div class="as-infobar"><div class="as-coname"/><div class="as-dates"/></div><div class="as-cc"/><div class="as-s3"><div class="as-relative"><b>Save and Share</b><div class="as-text">Publish your annotated chart on any website.</div></div></div><div class="as-tablewrap"><table class="as-table"><tr><td><div class="as-label">Headline:<br/><span class="as-hint">Title your chart</span></div></td><td><input name="headline" maxlength="70"/><span class="as-hint as-adddetails"><br/>Add a detailed description</span></td></tr><tr><td colspan="2"><div class="as-describe"><textarea name="description"/></div></td></tr></table><div class="as-status"/></div><div class="as-share"/></div>');if(C.description){$("textarea[name=description]",r).val(C.description)}else{$(".as-describe",r).hide()}p(C.status);$("input[name=headline]",r).val(C.headline).keyup(function(){if(C.status=="saved"&&$(this).val()!=C.headline){p("edited")}}).focus();$("textarea[name=description]",r).keyup(function(){if(C.status=="saved"&&$(this).val()!=C.description){p("edited")}});$(".as-adddetails",r).click(function(){$(".as-describe",r).slideDown(function(){$desc=$("textarea[name=description]",r);if($desc.val()==""){$desc.val(n)}$desc.blur(function(){if(!$(this).val()||$(this).val()==n){$(".as-describe",r).slideUp()}});$desc.select()})});$(r).children().hide();window.ajax.put("php/api/data/get.php",{symbol:C.symbol,fields:x.join()},{success:G,error:G});AutoResizeTextArea($(".as-describe textarea",r).get(0),40,200)}function u(){}function o(H){return(H===undefined?$(r):$(H,r))}}Page_AnnotateShare.label_prefix="Annotate ";Page_AnnotateShare.event={};function Page_ViewChart(I,x,k){var n=this;var d={height:430};var R=[];var j=false;var V=false;var S={menuStyle:ChartControl.MENUSTYLE.NORMAL,hideOverview:false,hideHoverQuotes:false,autoUpdate:true,autoCreate:true,constrain:false,annotate:true,startAnnotating:false,width:986,chart:{grl:"CCCCCC",grbl:"BBBBBB",bgf:"C4D5E6:FFFFFF:90"}};var b=["name","exchange_abbrev","sector","symbol"];var F,o,y,p,f,z,H={},L={},G=false,M=false;var A=typeof(getdebug)!="undefined"?getdebug():function(){};var l=typeof(getinfo)!="undefined"?getinfo():function(){};var C=typeof(getwarn)!="undefined"?getwarn():function(){};var E=typeof(geterror)!="undefined"?geterror():function(){};q();$.extend(true,d,x);k=k||{};J();this.Serialize=function(){return{shareId:d.shareId}};this.getParams=function(){return(d)};this.getContainerDOM=function(){return(I)};this.resize=function(X,W){};this.postMessage=function(W){switch(event){default:}};this.suspend=function(){var W=null;if(j){return(true)}j=true;W=tab_manager.GetActiveTabID();tab_manager.ClearPageParams(W);tab_manager.SetPageParams(W,this.Serialize());return(true)};this.activate=function(){var W=null;if(!j){return}j=false;while(R.length){W=R.shift();a({event:W.event,data:W.data})}};this.Destroy=function(){if(V){return}if(F){F.Destroy()}if(o){o.Destroy()}if(y){y.Destroy()}if(p){p.Destroy()}if(f){f.Destroy()}if(z){z.Destroy()}$(I).empty();window.acct_manager.UnregisterForSignedIn(n);window.acct_manager.UnregisterForSignedOut(n);V=true};function N(){var W=F.GetDates();if(W){$(".as-dates",I).html(FormatDateTime(W[0],true)+" - "+FormatDateTime(W[1],true))}}function e(){if(window.acct_manager.GetUsername()==L.username){var W="you"}else{var W=L.username}$(".vc-createinfo",I).html("Created by "+W+"<br/>"+L.timestamp+"<br/>Viewed "+L.views+" time"+(L.views==1?"":"s"))}function B(){if(window.acct_manager.IsSignedIn()){window.ajax.put("php/api/share/subscribed.php",{id:L.id,type:0},function(W){if(!W.status){G=W.message}});window.ajax.put("php/api/share/subscribed.php",{id:L.userId,type:1},function(W){if(!W.status){M=W.message}h()})}else{G=false;M=false;h()}}function h(){if(window.acct_manager.GetUsername()==L.username){$(".vc-follow",I).empty()}else{var Y=G?'<div class="vc-following">Following This Chart</div>':'<div class="vc-follow-chart">Follow This Chart</div>';Y+=M?'<div class="vc-following">Following '+L.username+"</div>":'<div class="vc-follow-user">Follow '+L.username+"</div>";var X=$(".vc-follow",I).html(Y);X.find(".vc-follow-chart").unbind().click(function(){W(0,L.id,"You are following this chart.")}).end().find(".vc-follow-user").unbind().click(function(){W(1,L.userId,"You are following "+L.username)});function W(Z,ab,aa){if(window.acct_manager.GetUsername()==L.username){return}if(!window.acct_manager.IsSignedIn()){acct_manager.SignIn("Sign In To Follow "+(Z?L.username:" This Chart"),function(ac){if(ac){W(Z,ab,aa)}})}else{window.ajax.put("php/api/share/subscribe.php",{type:Z,id:ab},function(ac){if(ac&&!ac.status){if(Z===0){G=true}if(Z===1){M=true}h();ShowNotice(aa)}else{ShowNotice("Whoops, an error occurred.  Please try again.")}})}}}}function u(W){if(V){return}if(W&&!W.status){var Y=null;L=W.message[0];if(L.rating_count===null){L.rating_count=0}if(L.views===null){L.views=0}try{L.chart_params=$.secureEvalJSON(L.chart_params);L.anno_params=$.secureEvalJSON(L.anno_params)}catch(X){L.chart_params={chart:{s:L.symbol}};delete L.anno_params}d.cc=L.chart_params;d.cc.annotation=L.anno_params;$.extend(true,d.cc,S);F=new ChartControl($(".vc-cc",I),d.cc,{paramchange:N,popout:function(){PopChart(this.GetParams())}});N();e();$(".vc-headline",I).text(L.headline);g(L.passage);$(".vc-sharebar",I).prepend('<span class="vc-sharetext">Share this Chart</span>');o=new ShareWidget($(".vc-share",I),{compact:true,showLabels:true,title:L.headline,message:L.passage,symbol:L.symbol,shareurl:GetShareUrl(L.id),embed:GetEmbedMarkup(L.id)},new CtShareConnector({symbol:L.symbol}));B();z=new RatingWidget($(".vc-rating",I),{value:L.rating,numRatings:L.rating_count},new CtAnnotationRatingConnector(L.id));y=new CommentWidget($(".vc-cw",I),{threadId:L.id},new CtCommentConnector());$(".vc-bot-right",I).append('<div class="vc-create"><div class="vc-header">Create Your Own Chart</div><div class="vc-create-links"><span class="vc-link">for '+L.symbol+'</span> or <span class="vc-link vc-create-tb"/></div></div>');f=SlidingTextbox($(".vc-create-tb",I),{label1:"another ticker",textbox_width:100},{OnSubmit:GoAnnotate});$(".vc-link:first",I).click(function(){GoAnnotate(L.symbol)});Y=tab_manager.GetActiveTabID();tab_manager.SetTabLabel(Y,L.symbol+" by "+L.username);window.ajax.put("php/api/data/get.php",{symbol:L.symbol,fields:b.join()},D);window.ajax.put("php/api/share/get.php",{symbol:L.symbol,count:5,parent:1},K);window.acct_manager.RegisterForSignedIn(n,O);window.acct_manager.RegisterForSignedOut(n,O)}else{}}function O(){if(window.acct_manager.IsSignedIn()&&window.acct_manager.GetUsername()==L.username){t()}else{r()}e();B()}function t(){p=new Menu($(".vc-edit",I).children().get(0),{selectStyle:Menu.SELECTSTYLE.NOSELECT},[{name:'<div class="vc-m-edit">Edit Annotation</div>'}],U)}function r(){if(p){T();p.Destroy();p=undefined;F.AnnotateDisable()}}function U(){p.Destroy();p=undefined;p=new Menu($(".vc-edit",I).children().get(0),{selectStyle:Menu.SELECTSTYLE.NOSELECT},[{name:"Save Changes",value:true},{name:"Discard Changes",value:false}],T);var W="cb"+Math.floor(Math.random()*100000);$(".vc-edit",I).append('<div class="vc-cb"><input type="checkbox" id="'+W+'" checked="yes"/><label for="'+W+'">Notify followers when saving</label></div>');F.AnnotateEnable();$(".vc-headline",I).html("").append($('<input maxlength="70"/>').val(L.headline));$(".vc-description",I).html("").show().append($("<textarea/>").val(L.passage));AutoResizeTextArea($(".vc-description textarea",I).get(0),20,200);$(".vc-description textarea",I).bind("keyup focus",function(){$(this).css("text-align",$(this).val().length<120?"center":"left")}).trigger("keyup");$(".vc-headline input",I).focus()}function T(aa){function Z(){$(".vc-headline",I).empty().text(L.headline);g(L.passage);p.Destroy();p=undefined;$(".vc-cb",I).remove();F.AnnotateDisable();t()}if(aa){var ab=F.GetParamsStatic();var Y=$(".vc-cb > input:checked",I).attr("disabled","disabled").size();L.headline=$(".vc-headline input",I).attr("disabled","disabled").val();L.passage=$(".vc-description textarea",I).attr("disabled","disabled").val().replace(/^\s+|\s+$/g,"");L.anno_params=ab.annotation;delete ab.annotation;L.chart_params=ab;var X={id:L.id,headline:L.headline,passage:L.passage,chart_params:$.compactJSON(L.chart_params),anno_params:$.compactJSON(L.anno_params)};var W=F.GetAnnotationDates();if(W&&W.length==2){X.time_start=DateTimeToString(W[0]);X.time_end=DateTimeToString(W[1])}if(!Y){X.transparent=1}window.ajax.put("php/api/share/update.php",X,function(ac){$(".vc-headline input",I).attr("disabled","");$(".vc-description textarea",I).attr("disabled","");if(!ac.status){ShowNotice("Annotation Saved.");o.UpdateParams({title:L.headline,message:L.passage});Z();annotation_manager.notifyAnnotationChanged(L.id)}else{ShowNotice("Unable To Save Your Changes. Please Try Again.")}})}else{F.AnnotationLoad(L.anno_params);Z()}}function g(X){if(X){var W=$(".vc-description",I).empty().text(X).css("text-align",X.length<120?"center":"left").show().html();$(".vc-description",I).html(W.replace(/\n/g,"<br/>"))}else{$(".vc-description",I).hide()}}function D(W){if(V){return}if(W&&!W.status){var X=$(".as-coname",I);var aa=W.message.split(",");if(aa.length!=b.length){X.append(d.symbol.toUpperCase());return}for(var Z=0;Z<b.length;Z++){H[b[Z]]=aa[Z]}X.append(aa[0]);var Y=$("<span/>").css({fontWeight:"normal",fontSize:"12px"}).append(H.symbol);if(aa[1]!="Unknown"){Y.prepend(aa[1].toUpperCase()+":")}if(aa[2]!=""){Y.append(" - "+aa[2])}Y.prepend(" (").append(")").appendTo(X);$("<img>").load(function(){$(".as-infobar",I).prepend(this);if($(this).width()>=80){$(this).attr("height",Math.round(80*$(this).height()/$(this).width())).attr("width",80)}X.css("padding-left",95)}).attr("src","images/logos/"+H.symbol.toLowerCase()+".png")}}function K(W){if(V){return}if(W&&!W.status){var Z=W.message;if(Z.length){var Y,X;$.each(Z,function(){var aa=this;if(aa.id!=L.id){if(!Y){$(".vc-bot-right",I).append('<div class="vc-header">More Charts for '+L.symbol+"</div>");X=$('<div class="vc-feed"/>').appendTo($(".vc-bot-right",I));Y=true}$('<div class="vc-feed-item">').html('<span class="vc-link">'+HtmlToText(aa.headline)+'</span><br/><span class="vc-feed-creator">Created by '+HtmlToText(aa.username)+"</span>").appendTo(X.get(0)).find(".vc-link").click(function(){GoViewShare(aa.id)})}})}}}function c(){return $("input[name=headline]",I).val()||"Chartastic: "+H.name}function s(){return $("textarea[name=description]",I).val()}function w(W){if(!window.acct_manager.IsSignedIn()){acct_manager.SignIn(null,function(X){o.UpdateParams({email:window.acct_manager.GetUserinfo().email,title:c(),message:s()});o.Trigger(W)})}else{P(function(){$("input[name=headline]",I).val(c());o.UpdateParams({email:window.acct_manager.GetUserinfo().email,title:c(),message:s()});o.Trigger(W)})}}function P(W){if(annoSaved){W()}else{function Z(){annoSaved=true;W()}var aa=F.GetParams();var Y=aa.annotation;delete aa.annotation;var X={symbol:d.symbol,time_start:"2008-11-28",time_end:"2009-11-28",headline:c(),passage:s(),chart_params:$.compactJSON(aa),anno_params:$.compactJSON(Y)};window.ajax.put("php/api/share/create.php",X,{success:Z,error:Z})}}function a(W){switch(W.event){default:}}function J(){Q().empty().append('<div class="vc-wrap"><div class="vc-createinfo"/><div class="vc-edit"><div/></div><div class="vc-headline"/><div class="vc-description"/><div class="as-infobar"><div class="as-coname"/><div class="as-dates"/></div><div class="vc-cc"/><div class="vc-sharebar"><div class="vc-share"/><div class="vc-follow"/></div><div class="vc-rating"/><table class="vc-bottom"><tr><td class="vc-cw"/><td class="vc-bot-right"/></tr></table></div>');window.ajax.put("php/api/share/get.php",{id:d.shareId},u)}function q(){}function Q(W){return(W===undefined?$(I):$(W,I))}}Page_ViewChart.event={};Page_ViewChart.label="Shared Chart";function Page_Portfolios(N,E,o,e){var x=this;var c={};var ab=[];var l=false;var ag=false;var q=tab_manager.GetActiveTabID();var U=new Array();var P=null;var S=0;var u="My Annotations";var b="page_portfolios";var I=typeof(getdebug)!="undefined"?getdebug():function(){};var t=typeof(getinfo)!="undefined"?getinfo():function(){};var J=typeof(getwarn)!="undefined"?getwarn():function(){};var L=typeof(geterror)!="undefined"?geterror():function(){};y();$.extend(true,c,E);o=o||{};O();aa(function(){d()});this.getParams=function(){return(c)};this.getContainerDOM=function(){return(N)};this.resize=function(ai,ah){};this.postMessage=function(ah){switch(event){default:}};this.suspend=function(){if(l){return(true)}l=true;return(true)};this.activate=function(){var ah=null;if(!l){return}l=false;while(ab.length){ah=ab.shift();a({event:ah.event,data:ah.data})}};this.destroy=function(){if(ag){return}ag=true;X();for(var ai=0,ah=U.length;ai<ah;ai++){U[ai].list.Destroy()}Z().find("*").unbind().end().empty().removeClass(b)};function a(ah){switch(ah.event){default:}}function R(){if(portfolio_manager.GetNumPortfolios()>0){Z(".panel_main > .title").html("")}else{Z(".panel_main > .title").html('You currently have no portfolios.  Click "Create portfolio" to begin!')}}function j(){Z(".panel_left").find("*").unbind();SetPanelCornerHoverBehavior(N,Z(".panel_left").get(0));if(portfolio_manager.GetNumPortfolios()>0||S>0){Z(".panel_left .title").html("Portfolios:<br /><br />")}else{Z(".panel_left .title").html("<br /><br />")}Z(".panel_left .portfolio_list").empty();for(var ak=0,ai=U.length;ak<ai;ak++){var aj=U[ak].portfolio_name;var ah=$('<div class="menu_item">'+aj+"</div>");ah.appendTo(Z(".panel_left .portfolio_list")).bind("click",aj,function(am){var al=am.data;var an=w(al);$.scrollTo($(M(al)),{duration:200});an.Open(true)})}}function A(){$.each(portfolio_manager.GetPortfolios(),function(ai,ah){C(ah.name,ah.symbols)})}function s(ah){var aj=0;try{portfolio_manager.SavePortfolio(ah);aj=setInterval(function(){if(!portfolio_manager.status.portsave_progress){if(portfolio_manager.status.portsave_success){ShowNotice("Portfolio "+portfolio_manager.GetLastPortfolioSaved()+" successfully saved.")}else{ShowNotice("We cannot process your request at this time. Please try again or contact us for further assistance.")}clearInterval(aj)}},400)}catch(ai){if(ai.errcode){switch(ai.errcode){case Portfolio_Manager.error_code.ERR_NOTHING_TO_SAVE:ShowNotice("Portfolio is already saved!");break;case Portfolio_Manager.error_code.ERR_PORTSAVE_IN_PROGRESS:ShowNotice("Please try again. We are still processing your last save request.");break;case Portfolio_Manager.error_code.ERR_NAME_NOT_FOUND:default:z(ah,true);ShowNotice("We cannot process your request at this time. Please try again or contact us for further assistance.")}}else{}}}function H(ah){var al=0;var ai=portfolio_manager.GetPortfolio(ah);if(!ai){return}try{P=CloneObject(ai);P.exists_in_db=false;P.dirty=true;P.symbols_to_add=P.symbols.slice();$.each(portfolio_manager.GetPortfolios(),function(an,am){af(am.name,false)});tab_manager.RemoveTab(tab_manager.FindIDByLabel(GetGalleryTabLabel(ah)));portfolio_manager.DeletePortfolio(ah);al=setInterval(function(){if(!portfolio_manager.status.portrem_progress){if(portfolio_manager.status.portrem_success){var am=portfolio_manager.GetLastPortfolioRemoved();$(M(am)).fadeOut(600,function(){ad(ah);R();j();ShowNotice("Portfolio "+ah+" deleted.");h("Deleted portfolio "+ah+' by accident? <span class="attention restore_backup_portfolio" style="cursor: pointer;">Undo!</span>');Z(".restore_backup_portfolio").click(T);g(ah);ak()})}else{ak();ShowNotice("We cannot process your request at this time. Please try again or contact us for further assistance.")}clearInterval(al)}},400)}catch(aj){if(aj.errcode){af(ah,true);switch(aj.errcode){case Portfolio_Manager.error_code.ERR_PORTREM_IN_PROGRESS:ShowNotice("Please try again. We are still processing your last portfolio deletion request.");break;case Portfolio_Manager.error_code.ERR_NAME_NOT_FOUND:default:ShowNotice("We cannot process your request at this time. Please try again or contact us for further assistance.")}}else{}ak()}function ak(){$.each(portfolio_manager.GetPortfolios(),function(an,am){af(am.name,true)})}}function ac(ah,aj){try{portfolio_manager.RemoveSymbol(ah,aj);ShowNotice("Symbol "+aj+" removed from portfolio '"+ah+"'.");z(ah,true)}catch(ai){if(ai.errcode){switch(ai.errcode){case Portfolio_Manager.error_code.ERR_SYMBOL_NOT_FOUND:default:ShowNotice("We cannot process your request at this time. Please try again or contact us for further assistance.")}}else{}}}function aa(ah){annotation_manager.registerForAnnotationCreated(x,null,ae);annotation_manager.registerForAnnotationChanged(x,null,ae);ae(ah)}function ae(ai){ad(u);window.ajax.put("php/api/share/get.php",{userchart:acct_manager.GetUsername()},{success:aj,error:aj});function aj(au){var ak=u;var at=ak;var ao=$(ah());var ar=[];if(au&&!au.status){var am=au.message;S=am.length;if(S>0){for(var al=0,an=am.length;al<an;al++){var aq=am[al];var ap=$.extend(true,{},$.secureEvalJSON(aq.chart_params),{annotation:$.secureEvalJSON(aq.anno_params)});aq.headline=$("<div/>").text(aq.headline).html();ar.push({symbol:aq.symbol,headline:aq.headline,timestamp:aq.timestamp,chart_params:ap})}Z(".portfolio_sections").prepend(ao);ao.data("portfolio_name",at);U.splice(0,0,{portfolio_name:at,list:new PortfolioListWidget($(".content",ao).get(0),{list_type:PortfolioListWidget.LISTTYPE.ANNOTATION,chart_data:ar},{OnClickChart:function(aw,av){GoViewShare(am[av].id)}}),annotation:true,widget:new Section(ao.get(0),{title:ak,max_title_width:"40%",visible:true})});G(ao,at)}if($.isFunction(ai)){ai(true)}}else{S=0;if($.isFunction(ai)){ai(false)}}}function ah(){var ak='<div style="padding-bottom: 0px; overflow: hidden;" class="section section_portfolio"><div class="header"><div class="title"></div><!----><div style="position: absolute; top: 0px; right: 0px;">New annotation: <input name="txtAddSymbol" type="text" class="portfolio_addsymbol" style="text-align: center;" maxlength="256"/></div></div><div class="content"></div></div>';return(ak)}}function C(ap,ai,aq){var aj=Y(ap);var an=$(W());var ao=[];var ah={};ai=ai||[];for(var al=0,am=ai.length;al<am;al++){ao.push({symbol:ai[al]})}if(aq){Z(".portfolio_sections").prepend(an)}else{Z(".portfolio_sections").append(an)}an.data("portfolio_name",ap);ah={portfolio_name:ap,list:new PortfolioListWidget($(".content",an).get(0),{chart_data:ao},{OnAddSymbol:function(ar){B(ap,ar)},OnRemoveSymbol:function(ar){ac(ap,ar)},OnClickChart:function(ar){GoCompanyInfo(ar)}}),widget:new Section(an.get(0),{title:aj,max_title_width:"40%",visible:true})};if(aq){U.splice(0,0,ah)}else{U.push(ah)}r(an,ap);an.find(".portfolio_save").click(function(){if(!$(this).hasClass("disable")){var ar=an.data("portfolio_name");s(ar);z(ar,false)}return(false)}).end().find(".portfolio_rename").click(function(){if(!$(this).hasClass("disable")){var ar=an.data("portfolio_name");f(ar)}return(false)}).end().find(".portfolio_delete").click(function(){if($(this).hasClass("disable")){ShowNotice("Please try again. We are still processing your last portfolio deletion request.")}else{var ar=an.data("portfolio_name");H(ar)}return(false)}).end().find(".portfolio_gallery").click(function(){var ar=an.data("portfolio_name");GoGallery(ar,portfolio_manager.GetPortfolio(ar).symbols);return(false)}).end();try{z(ap,portfolio_manager.IsDirty(ap))}catch(ak){if(ak.errcode){switch(ak.errcode){case Portfolio_Manager.error_code.ERR_NAME_NOT_FOUND:z(ap,true);break;default:}}else{}}}function W(){var ah='<div style="padding-bottom: 0px; overflow: hidden;" class="section section_portfolio"><div class="header"><div class="title"></div><!----><div style="position: absolute; top: 0px; right: 0px;"><span class="portfolio_save">Save</span>&nbsp;|&nbsp;<!----><span class="portfolio_rename">Rename</span>&nbsp;|&nbsp;<!----><span class="portfolio_delete">Delete</span>&nbsp;|&nbsp;<!----><span class="portfolio_gallery">Gallery</span>&nbsp;|&nbsp;<!---->Add symbol(s): <input name="txtAddSymbol" type="text" class="portfolio_addsymbol" style="text-align: center;" maxlength="256"/></div></div><div class="content"></div></div>';return(ah)}function f(ai){var am=$('<input type="text" class="rename_box" maxlength="256" />');var aj=M(ai);var al=w(ai);var an="";V(aj,false);al.Lock();al.SetTitle("&nbsp;");am.prependTo($(".header",aj)).css({left:-am.width()}).animate({left:"0px"},{queue:false}).fadeIn();SetupInputFieldHoverBehavior(am);am.focus().click(function(){return(false)}).keyup(function(ap){switch(ap.keyCode){case 13:an=jQuery.trim($(this).val());ah();try{portfolio_manager.RenamePortfolio(ai,an,function(aq){if(!aq){al.SetTitle(Y(ai));ak()}})}catch(ao){if(ao.errcode){switch(ao.errcode){case Portfolio_Manager.error_code.ERR_DUP_NAME:break;case Portfolio_Manager.error_code.ERR_NAME_NOT_FOUND:ak();break;default:}}else{}}break;case 27:al.SetTitle(Y(ai));ah();break;default:}}).blur(function(){al.SetTitle(Y(ai));ah()});function ah(){am.animate({left:-am.width(),opacity:0},function(){am.remove();al.Unlock();V(aj,true)})}function ak(){ShowNotice("Cannot rename portfolio.  Please refresh the page and try again.")}}function r(aj,ah){var ak=$(".portfolio_addsymbol",aj).get(0);var ai=w(ah);SetupInputFieldHoverBehavior(ak);$(ak).keypress(function(ap){var ao=ap.keyCode||ap.which;try{switch(ao){case 13:var aq=$(this).val();if(aq){var am=MultiSymbolStringToArray(aq);$(ak).attr("disabled","disabled");ValidateSymbols(am,function(aw,av,au){if(aw){var at=null;for(var ar=0;at=av[ar];ar++){B(ah,at,true)}}else{UnrecoverableError()}$(ak).attr("disabled","");al.call(ak)})}break;default:return(IsValidSymbolChar(String.fromCharCode(ao),true));break}}catch(an){if(an.errcode){switch(an.errcode){default:}}else{}}function al(){$(this).val("").focus()}}).click(function(){if(ai.GetParams().visible){return(false)}})}function G(aj,ah){var ak=$(".portfolio_addsymbol",aj).get(0);var ai=w(ah);SetupInputFieldHoverBehavior(ak);$(ak).keypress(function(am){var al=am.keyCode||am.which;switch(al){case 13:var an=$(this).val();if(an){GoAnnotate(an)}break;default:return(IsValidSymbolChar(String.fromCharCode(al)));break}}).click(function(){if(ai.GetParams().visible){return(false)}})}function B(ah,aj,ak){try{portfolio_manager.AddSymbol(ah,aj);if(ak){k(ah).list.AddSymbol(aj)}z(ah,true)}catch(ai){if(ai.errcode){switch(ai.errcode){case Portfolio_Manager.error_code.ERR_SYMBOL_DUP:ShowNotice("Symbol "+aj+" already exists in your portfolio.");break;case Portfolio_Manager.error_code.ERR_SYMBOL_INVALID:ShowNotice("Symbol "+aj+" is invalid.");break;default:}}else{}}}function D(ai,aj,am){var al=false;for(var ak=0,ah=U.length;ak<ah;ak++){if(U[ak].portfolio_name==ai){al=true;break}}if(!al){C(ai,aj,true);j();if(!am){portfolio_manager.AddPortfolio(new Portfolio(ai))}R();n(ai)}}function T(){if(P){var ai=null;var ah=P.name;var aj=P.symbols;ai=portfolio_manager.GetPortfolio(ah);if(ai){portfolio_manager.MergePortfolios(ai,P);ad(ah);g(ah);aj=portfolio_manager.GetPortfolio(ah).symbols}D(ah,aj,ai);P=null;h("");ShowNotice("Portfolio "+ah+" restored"+(ai?" and merged with the current one.":"."))}}function ad(ai){try{w(ai).Destroy();$(M(ai)).remove()}catch(ak){}for(var aj=0,ah=U.length;aj<ah;aj++){if(U[aj].portfolio_name==ai){U.splice(aj,1);break}}}function z(ai,aj){var ah=$(".portfolio_save",M(ai));if(aj){ah.text("Save").removeClass("disable").addClass("attention")}else{ah.text("(Portfolio saved)").removeClass("attention").addClass("disable")}}function af(ah,aj){var ai=$(".portfolio_delete",M(ah));if(aj){ai.removeClass("disable")}else{ai.addClass("disable")}}function V(ah,ai){var aj=$(".portfolio_rename",ah);if(ai){aj.removeClass("disable")}else{aj.addClass("disable")}}function k(ai){for(var aj=0,ah=U.length;aj<ah;aj++){if(ai==U[aj].portfolio_name){return(U[aj])}}return(null)}function w(ah){return(k(ah).widget)}function M(ah){return(w(ah).GetContainerDOM())}function K(){for(var ai=0,ah=U.length;ai<ah;ai++){if(U[ai].annotation){return(U[ai])}}return(null)}function p(){var ah=K();return(ah?ah.widget:null)}function F(){var ah=p();return(ah?ah.GetContainerDOM():null)}function Y(ah){return(ah)}function Q(ah){return(ah.replace(/_/g,"__").replace(/ /g,"_"))}function h(aj,ai){if(aj!=""){Z(".text_notice").show()}if(ai){var ah=Z(".text_notice").html();Z(".text_notice").html(aj+"<br />"+ah)}else{Z(".text_notice").html(aj);if(aj==""){Z(".text_notice").hide()}}}function d(){portfolio_manager.RegisterForPortfoliosLoaded(x,function(){R();A();j()});portfolio_manager.RegisterForPortfolioCreated(x,function(ah){D(ah.portfolio_name,ah.symbols,true)});$.each(portfolio_manager.GetPortfolios(),function(ai,ah){n(ah.name)})}function n(ah){portfolio_manager.RegisterForSymbolRemoved(ah,x,function(aj){for(var ak=0,ai=U.length;ak<ai;ak++){if(U[ak].portfolio_name==aj.portfolio_name){U[ak].list.RemoveSymbol(aj.symbol);z(aj.portfolio_name,true);break}}});portfolio_manager.RegisterForSymbolAdded(ah,x,function(aj){for(var ak=0,ai=U.length;ak<ai;ak++){if(U[ak].portfolio_name==aj.portfolio_name){U[ak].list.AddSymbol(aj.symbol);z(aj.portfolio_name,true);break}}});portfolio_manager.RegisterForPortfolioSaved(ah,x,function(ai){z(ai.portfolio_name,false)});portfolio_manager.RegisterForPortfolioRenamed(ah,x,function(ai){var al=ai.portfolio_name;var an=ai.new_portfolio_name;var am=k(al);var aj=M(al);var ak=w(al);am.portfolio_name=an;$(aj).data("portfolio_name",an);ak.SetTitle(Y(an));j();ShowNotice("Portfolio "+al+" successfully renamed to "+an+"!")});portfolio_manager.RegisterForLayoutChanged(ah,x,function(ai){z(ai.portfolio_name,true)})}function X(){portfolio_manager.UnregisterForPortfolioCreated(x);$.each(portfolio_manager.GetPortfolios(),function(ai,ah){g(ah.name)});annotation_manager.unregisterForAnnotationCreated();annotation_manager.unregisterForAnnotationChanged()}function g(ah){portfolio_manager.UnregisterForSymbolRemoved(ah,x);portfolio_manager.UnregisterForSymbolAdded(ah,x);portfolio_manager.UnregisterForPortfolioSaved(ah,x);portfolio_manager.UnregisterForPortfolioRenamed(ah,x);portfolio_manager.UnregisterForLayoutChanged(ah,x)}function O(){Z().empty().addClass(b).append('<div class="panel_left">                    <div class="panel_corner_tr"/>                    <div class="title"/>                    <div class="portfolio_list"/>                    <div class="panel_corner_bl"/>                </div><!--             --><div class="panel_main">                    <div class="text_notice"></div>                    <div class="btnBar">                        <span class="btnCreate link">                          Create portfolio                        </span>                        <span style="display: inline-block; vertical-align: top; position: relative;">                            <input name="txtCreate" type="text" class="txtCreate" maxlength="256" />                        </span><!--                     -->&nbsp;&nbsp;|&nbsp;&nbsp;                        <span class="btnImport link">                            Import from Google                        </span><br />                        <div class="title"></div>                        <br />                    </div>                    <div class="portfolio_sections"></div>                    <br />                </div>');j();R();Z(".btnImport").click(function(){location.href="php/import/google.php"});Z(".btnCreate").click(function(){Z(".txtCreate").css({display:"block"}).parent().css({width:Z(".txtCreate").width()+8}).end().animate({left:"0px",opacity:1},{duration:"normal"}).focus();$(this).text("Name:")});SetupInputFieldHoverBehavior(".txtCreate");Z(".txtCreate").parent().css({width:"0px"}).end().css({left:"-"+Z(".txtCreate").css("width"),opacity:0}).keyup(function(ak){try{switch(ak.keyCode){case 13:var ai=jQuery.trim($(this).val());if(ai){ah.call(this);if(ai==u){ShowNotice("The name 'My Annotations' is reserved.")}else{D(ai);$(".portfolio_addsymbol",M(ai)).focus()}}break;case 27:ah.call(this);break;default:}}catch(aj){if(aj.errcode){switch(aj.errcode){case Portfolio_Manager.error_code.ERR_DUP_NAME:ShowNotice("A portfolio with this name already exists.");break;default:}}else{}}}).blur(function(){ah.call(this)});function ah(){$(this).val("").animate({left:"-"+$(this).css("width"),opacity:0},"normal",null,function(){$(this).css({display:"none"}).parent().css({width:"0px"}).end()});Z(".btnCreate").text("Create portfolio")}}function y(){}function Z(ah){return(ah===undefined?$(N):$(ah,N))}}Page_Portfolios.label="My Charts";function Page_Gallery(C,u,h,f){var q=this;var e={symbols:[],portfolio_name:null};var d="page_gallery";var J=[];var g=false;var N=false;var L=null;var H=null;var o=null;var z=null;var k=tab_manager.GetActiveTabID();var b=null;var x=typeof(getdebug)!="undefined"?getdebug():function(){};var n=typeof(getinfo)!="undefined"?getinfo():function(){};var A=typeof(getwarn)!="undefined"?getwarn():function(){};var B=typeof(geterror)!="undefined"?geterror():function(){};r();$.extend(true,e,u);h=h||{};H=e.symbols;o=e.portfolio_name;E();a();this.getParams=function(){return({portfolio_name:o})};this.getContainerDOM=function(){return(C)};this.resize=function(P,O){};this.suspend=function(){if(g){return(true)}g=true;return(true)};this.activate=function(){if(!g){return}g=false;while(J.length){msg=J.shift();c({event:msg.event,data:msg.data})}};this.destroy=function(){if(N){return}N=true;s();L.Destroy();I().find("*").unbind().end().empty().removeClass(d)};function t(){z=L.GetParams().layout;portfolio_manager.SetLayout(o,z);p()}function D(T){var S=false;rows=L.GetParams().layout.rows;for(var R=0,O=rows.length;R<O;R++){for(var Q=0,P=rows[R].length;Q<P;Q++){if(rows[R][Q].chart.s.toLowerCase()==T.toLowerCase()){S=true;break}}}if(!S){portfolio_manager.RemoveSymbol(o,T)}}function c(O){switch(O.event){default:}}function y(P){var O=null;O=portfolio_manager.GetPortfolio(o);if(O){z=O.layout}else{if(!o){o=portfolio_manager.GetCustomName()}z=tab_manager.GetPageParams(k).layout;O=new Portfolio(o,P,null,z);portfolio_manager.AddPortfolio(O);z=portfolio_manager.GetPortfolio(o).layout;tab_manager.SetPageParams(k,{portfolio_name:o,layout:z})}}function G(){b=new Section(I(".section_gallery").get(0),{title:"Gallery",visible:true,animate:true});b.Lock();K();I(".gallery_save > span:eq(0)").live("click",function(){if(!$(this).hasClass("disable")){l(o)}return(false)})}function K(){SetupInputFieldHoverBehavior(".txtAddSymbol");I(".txtAddSymbol").keyup(function(R){try{switch(R.keyCode){case 13:var S=$(this).val();if(S){var P=MultiSymbolStringToArray(S);ValidateSymbols(P,function(V,U,T){if(V&&U){F(U)}else{if(!V){UnrecoverableError()}}});O.call(this)}break;default:}}catch(Q){if(Q.errcode){switch(Q.errcode){default:}}else{}}function O(){$(this).val("").focus()}}).click(function(){$(this).focus();return(!b.GetParams().visible)})}function l(){var P=0;try{portfolio_manager.SavePortfolio(o);P=setInterval(function(){if(!portfolio_manager.status.portsave_progress){if(portfolio_manager.status.portsave_success){ShowNotice("Portfolio "+portfolio_manager.GetLastPortfolioSaved()+" and layout successfully saved.")}else{ShowNotice("We cannot process your request at this time. Please try again or contact us for further assistance.")}clearInterval(P)}},400)}catch(O){if(O.errcode){switch(O.errcode){case Portfolio_Manager.error_code.ERR_NOTHING_TO_SAVE:ShowNotice("Portfolio is already saved!");break;case Portfolio_Manager.error_code.ERR_PORTSAVE_IN_PROGRESS:ShowNotice("Please try again. We are still processing your last save request.");break;case Portfolio_Manager.error_code.ERR_NAME_NOT_FOUND:default:p();ShowNotice("We cannot process your request at this time. Please try again or contact us for further assistance.")}}else{}}}function F(O){var R=null;for(var P=O.length-1;P>=0;P--){R=O[P];try{portfolio_manager.AddSymbol(o,R)}catch(Q){if(!Q.errcode){O.splice(P,1);ShowNotice("Could not add "+R+".  Unknown error; please try again.")}else{if(Q.errcode==Portfolio_Manager.error_code.ERR_SYMBOL_DUP){L.AddSymbols([R]);p()}}}}ShowNotice("Symbol(s) added.")}function a(){ValidateSymbols(H,function(Q,P,O){if(Q&&P){tab_manager.SetPageParams(k,{symbols:FilterArray(H,O)},false);y(P);G();L=new Gallery(I(".section_gallery > .content").get(0),{layout:z,default_chart_params:portfolio_manager.GetPortfolio(o).default_chart_params},{OnLayoutChange:t,OnRemoveChart:D});M();setTimeout(function(){I(".txtAddSymbol").focus()},500)}else{if(!Q){UnrecoverableError()}}})}function w(P){if(o!=undefined){I(".title .portfolio_name").text(" for portfolio "+o)}if(P){I(".title .prompt").html('&nbsp;&nbsp;<span class="link">Go to My Charts.</span>').find(".link").click(function(){GoMyCharts()})}else{var O='<br />You are not logged in. <span class="link">Create an account</span> or <span class="link">sign in</span> to manage and save your chart gallery.';I(".title .prompt").html(O).find(".link").eq(0).click(function(){acct_manager.SignUp("Sign up to manage and save your chart galleries.")}).end().eq(1).click(function(){acct_manager.SignIn("Sign in to manage and save your chart galleries.")})}}function p(){if(!o||!portfolio_manager.IsDirty(o)){O(false)}else{O(true)}function O(P){if(P){I(".gallery_save > span:eq(0)").text("Save").removeClass("disable").addClass("attention")}else{I(".gallery_save > span:eq(0)").text("(Gallery saved)").removeClass("attention").addClass("disable")}}}function j(){I(".gallery_save").remove()}function M(){portfolio_manager.RegisterForPortfoliosLoaded(q,function(){if(acct_manager.IsSignedIn()){w(true);I(".header > span:eq(1)").prepend('<span class="gallery_save"><span>Save</span><span>&nbsp;|&nbsp;</span></span>');p()}else{}});portfolio_manager.RegisterForPortfolioSaved(o,q,function(){p()});portfolio_manager.RegisterForSymbolAdded(o,q,function(O){var P=O.portfolio_name;var Q=O.symbol;L.AddSymbols([Q]);ShowNotice("Symbol "+Q+" added to gallery '"+P+"'.");p()});portfolio_manager.RegisterForPortfolioRenamed(o,q,function(O){var P=O.portfolio_name;var Q=O.new_portfolio_name;tab_manager.SetPageParams(k,{portfolio_name:Q});tab_manager.SetTabLabel(k,GetGalleryTabLabel(Q));o=Q;w(acct_manager.IsSignedIn())});portfolio_manager.RegisterForSymbolRemoved(o,q,function(O){var P=O.portfolio_name;var Q=O.symbol;L.RemoveSymbols([Q]);ShowNotice("Symbol "+Q+" removed from gallery '"+P+"'.");p()});portfolio_manager.RegisterForLayoutChanged(o,q,function(O){p()});acct_manager.RegisterForSignedOut(q,function(){w(false);j()})}function s(){portfolio_manager.UnregisterForPortfoliosLoaded(q);portfolio_manager.UnregisterForPortfolioSaved(o,q);portfolio_manager.UnregisterForSymbolAdded(o,q);portfolio_manager.UnregisterForSymbolRemoved(o,q);portfolio_manager.UnregisterForLayoutChanged(o,q);acct_manager.UnregisterForSignedOut(q)}function E(){I().empty().addClass(d).append('<div class="panel_main">                    <div class="text_notice"></div>                    <div class="title">                        Welcome to the chart gallery<span class="portfolio_name"></span>.<span class="prompt"></span>                    </div>                    <p>                        Simply drag &amp; drop the charts to rearrange them.                    </p>                    <br />                    <div class="section section_gallery">                        <div class="header">                            <span class="title"></span><!--                         --><span style="position: absolute; top: 0px; right: 0px;">                                Add symbol(s): <input name="txtAddSymbol" type="text" style="width: 150px; text-align: center;" maxlength="256" class="txtAddSymbol"/>                            </span>                        </div>                        <div class="content"></div>                    </div>                </div>')}function r(){}function I(O){return(O===undefined?$(C):$(O,C))}}function Page_AcctSettings(r,h,I,a){var H=this;var B={};var C="page_acctsettings";var q=[];var k=false;var o=false;var y=new Object;var n=false;var A={};var c={ERR_CAPTCHA_BLANK:2,ERR_OLDPASS_BLANK:3,ERR_PASS1_BLANK:4,ERR_PASS2_BLANK:5,ERR_CAPTCHA_MISMATCH:6,ERR_PASS12_MISMATCH:7,ERR_OLDPASS_MISMATCH:8,ERR_ACCT_LOCKED:9,ERR_UNSECURE:10};var G=null;var f=typeof(getdebug)!="undefined"?getdebug():function(){};var g=typeof(getinfo)!="undefined"?getinfo():function(){};var e=typeof(getwarn)!="undefined"?getwarn():function(){};var j=typeof(geterror)!="undefined"?geterror():function(){};u();$.extend(true,B,h);I=I||{};l();SetPanelCornerHoverBehavior(r,p(".panel_left").get(0));F();s();x();D();b();this.getParams=function(){return(B)};this.getContainerDOM=function(){return(r)};this.resize=function(L,K){};this.postMessage=function(K){switch(event){default:}};this.suspend=function(){if(k){return(true)}k=true;t();acct_manager.SetUserinfo({fname:y.fname,lname:y.lname,birthyear:y.birthyear,sex:y.sex,address1:y.address1,address2:y.address2,city:y.city,state:y.state,zip:y.zip,country:y.country,email:y.email,phone:y.phone});return(true)};this.activate=function(){var K=null;if(!k){return}k=false;while(q.length){K=q.shift();d({event:K.event,data:K.data})}};this.destroy=function(){if(o){return}o=true;p().find("*").unbind().end().empty().removeClass(C)};function b(){p(".captcha").html(CreateCaptchaImgTag())}function F(){G=new Section(p(".section_password").get(0),{name:"section_password",title:"Password",visible:true})}function s(){var L=".txtPassword, .txtPassword2, .txtOldPassword, .txtFirstName, .txtLastName, .txtBirthYear, .txtAddress, .txtAddress2, .txtCity, .txtZIP, .txtCountry, .txtEmail, .txtState, .txtPhone, .txtImagephrase";var K=acct_manager.GetUserinfo();p(".txtFirstName").val(K.fname);p(".txtLastName").val(K.lname);p(".txtBirthYear").val(K.birthyear);if(K.sex=="male"){p(".radio_male").addClass("radio_selected");p(".radio_female").removeClass("radio_selected")}else{if(K.sex=="female"){p(".radio_male").removeClass("radio_selected");p(".radio_female").addClass("radio_selected")}}p(".txtAddress").val(K.address1);p(".txtAddress2").val(K.address2);p(".txtCity").val(K.city);p(".txtState").val(K.state);p(".txtZIP").val(K.zip);p(".txtCountry").val(K.country);p(".txtEmail").val(K.email);p(".txtPhone").val(K.phone);SetupInputFieldHoverBehavior(L);$(L).keyup(function(M){if(M.keyCode==13){p(".btnUpdate").click()}});p(".txtPassword").bind("keyup focus blur",function(){w($(this))});p(L).not(".txtPassword, .txtPassword2, .txtOldPassword, .txtImagephrase").keyup(function(M){n=true});p(".radio_male").click(function(){if(!$(this).hasClass("radio_selected")){n=true;$(this).toggleClass("radio_selected");$(".radio_female").toggleClass("radio_selected");t()}});p(".radio_female").click(function(){if(!$(this).hasClass("radio_selected")){n=true;$(this).toggleClass("radio_selected");$(".radio_male").toggleClass("radio_selected");t()}});p(".txtFirstName").focus()}function x(){p(".btnUpdate").hover(function(){$(this).css("font-weight","bold")},function(){$(this).css("font-weight","normal")}).click(function(){t();if(!(y.email)){ShowNotice("A valid email address must be provided.")}else{if(y.pass1!=y.pass2){ShowNotice("Passwords do not match!")}else{if(y.pass1!=""&&y.pass1==y.pass2&&y.oldpass==""){ShowNotice("You must supply your current password if you're updating it.")}else{if(y.pass1!=""&&!J(y.pass1)){ShowNotice("Your new password is too weak.")}else{if(y.pass1!=""){L(n?K:null)}else{if(n){K()}}}}}}});function L(M){if(y.pass1!=""){p(".securepost").one("load",function(){$.post("php/api/user/status.php",{type:"updatepasswd"},function(O,N){if(!O.status){ShowNotice("Password updated successfully.")}else{switch(O.status){case c.ERR_CAPTCHA_BLANK:case c.ERR_CAPTCHA_MISMATCH:ShowNotice("Could not update password.<br />The text you entered does not match the given image phrase.  Please try again.");break;case c.ERR_OLDPASS_MISMATCH:ShowNotice("Could not update password.<br />The old password you entered is incorrect.  Please try again.");break;case c.ERR_ACCT_LOCKED:E(acct_manager.GetUsername());break;case c.ERR_UNSECURE:ShowNotice("Could not update password.<br />A secure (SSL) connection could not be established.");break;default:ShowNotice("Could not update password.<br /> Please try again or contact us for further assistance.")}b();p(".securepost").get(0).contentWindow.location.replace("securepost.php")}if(M&&typeof(M)=="function"){M()}else{if(!O.status){z()}}},"json")});p(".securepost").get(0).contentWindow.UpdatePassword(y.imagephrase,y.oldpass,y.pass1,y.pass2)}else{if(M&&typeof(M)=="function"){M()}}}function K(){$.post("php/api/user/update.php",y,function(N,M){if(!N.status){ShowNotice("Profile updated successfully.");z()}else{switch(N.status){default:if(y.pass1!=""){ShowNotice("Profile update failed.<br />Please try again or contact us for further assistance.")}else{ShowNotice("Profile update failed.<br />We cannot process your request at this time. Please try again or contact us for further assistance.")}}}},"json")}}function E(N,L){if(!L){p(".acctlocked").html('Account locked out.  <span class="link">Click here</span> to reset it.')}p(".acctlocked").find(".link").click(function(){$(this).removeClass("link");window.ajax.put("php/api/user/reset.php",{username:N},{success:function(O){if(!O.status){K()}else{M()}},error:function(O){M()}})});function K(){p(".acctlocked").fadeOut(800,function(){$(this).html("Your account has been reset.  Please check your email for your new password.").fadeIn(1000)})}function M(){p(".acctlocked").fadeOut(800,function(){$(this).html('Your account could not be reset.  Please <span class="link">try again</span> or contact customer support.').fadeIn(1000).find(".link").click(function(){E(N,true)})})}}function w(K){var L=K.val();if(L.length==0){K.removeClass("input_error input_success");if(!K.get(0).infocus){K.removeClass("input_focus")}else{K.addClass("input_focus")}$(".password_notice").fadeOut(1500)}else{if(J(L)){K.removeClass("input_focus input_error").addClass("input_success");$(".password_notice").fadeOut(1500)}else{K.removeClass("input_focus input_success").addClass("input_error");$(".password_notice").fadeIn(1500)}}}function J(K){return(K.length>=8&&/[A-Z]/.test(K)&&/[a-z]/.test(K)&&/[0-9]/.test(K))}function z(){var K=tab_manager.GetActiveTabID();GoHome();tab_manager.RemoveTab(K)}function D(){p(".btnUpdate + div > span:nth-child(3)").hover(function(){$(this).css("font-weight","bold")},function(){$(this).css("font-weight","normal")}).click(function(){z()})}function t(){y={pass1:p(".txtPassword").val(),pass2:p(".txtPassword2").val(),oldpass:p(".txtOldPassword").val(),fname:p(".txtFirstName").val(),lname:p(".txtLastName").val(),birthyear:p(".txtBirthYear").val(),sex:(p(".radio_male").hasClass("radio_selected")?"male":(p(".radio_female").hasClass("radio_selected")?"female":undefined)),address1:p(".txtAddress").val(),address2:p(".txtAddress2").val(),city:p(".txtCity").val(),state:p(".txtState").val(),zip:p(".txtZIP").val(),country:p(".txtCountry").val(),email:p(".txtEmail").val(),phone:p(".txtPhone").val(),imagephrase:p(".txtImagephrase").val(),cardnumber:"",cardtype:"",cardexpmonth:"0",cardexpyear:"0",accounttype:"0"}}function d(K){switch(K.event){default:}}function l(){p().empty().addClass(C).append('<div class="panel_corner_bl"/>                <div class="panel_left">                    <div class="panel_corner_tr"/>                    <span style="display: inline-block; vertical-align: top;">                        <div style="margin-bottom: 4px"><label for="txtFirstName">First name:</label></div>                        <div style="margin-bottom: 4px"><label for="txtLastName">Last name:</label></div>                        <div style="margin-bottom: 4px"><label for="txtBirthYear">Age:</label></div>                        <div style="margin-bottom: 4px">Sex:</div>                        <div style="margin-bottom: 4px"><label for="txtAddress">Address:</label></div>                        <div style="margin-bottom: 4px"><label for="txtAddress2">Unit#:</label></div>                        <div style="margin-bottom: 4px"><label for="txtCity">City:</label></div>                        <div style="margin-bottom: 4px"><label for="txtState">State (US only):</label></div>                        <div style="margin-bottom: 4px"><label for="txtZIP">ZIP (US only):</label></div>                        <div style="margin-bottom: 4px"><label for="txtCountry">Country:</label></div>                        <div style="margin-bottom: 4px"><label for="txtEmail">Email:</label></div>                        <div style="margin-bottom: 4px"><label for="txtPhone">Phone:</label></div>                    </span>                    <span style="display: inline-block; vertical-align: top;">                        <input name="txtFirstName" type="text" style="margin-top: 4px" class="txtFirstName element_textfield" maxlength="256" value=""/><br />                        <input name="txtLastName" type="text" style="margin-top: 4px" class="txtLastName element_textfield" maxlength="256" value=""/><br />                        <input name="txtBirthYear" type="text" style="margin-top: 4px" class="txtBirthYear element_textfield" maxlength="4" value=""/><br />                        <span class="radio_male radio" style="margin-top: 4px"></span>&nbsp;M&nbsp;&nbsp;<!--                     --><span class="radio_female radio" style="margin-top: 4px"></span>&nbsp;F<br />                        <input name="txtAddress" type="text" style="margin-top: 4px" class="txtAddress element_textfield" maxlength="256" value=""/><br />                        <input name="txtAddress2" type="text" style="margin-top: 4px" class="txtAddress2 element_textfield" maxlength="256" value=""/><br />                        <input name="txtCity" type="text" style="margin-top: 4px" class="txtCity element_textfield" maxlength="256" value=""/><br />                        <input name="txtState" type="text" style="margin-top: 4px" class="txtState element_textfield" maxlength="2" value=""/><br />                        <input name="txtZIP" type="text" style="margin-top: 4px" class="txtZIP element_textfield" maxlength="5" value=""/><br />                        <input name="txtCountry" type="text" style="margin-top: 4px" class="txtCountry element_textfield" maxlength="256" value=""/><br />                        <input name="txtEmail" type="text" style="margin-top: 4px" class="txtEmail element_textfield" maxlength="256" value=""/><br />                        <input name="txtPhone" type="text" style="margin-top: 4px" class="txtPhone element_textfield" maxlength="256" value=""/>                    </span>                </div><!--             --><div class="panel_main">                    <div class="text_notice"></div>                    You can update your profile on the left.<br />                    Leave the password fields blank to keep your current password.<br />                    <br />                    <div class="section section_password">                        <div class="header"><span class="title"></span></div>                        <div class="content">                            <br />                            <span style="display: inline-block; vertical-align: top;">                                <div style="margin-bottom: 8px"><label for="txtPassword">New Password:</label></div>                                <div style="margin-bottom: 8px"><label for="txtPassword2">New Password (Confirm):</label></div>                                <div style="margin-bottom: 8px"><label for="txtOldPassword">Old Password:</label></div>                                <div style="margin-bottom: 4px" class="captcha"></div>                                <div><label for="txtOldPassword">Above phrase:</label></div>                            </span>                            <span style="display: inline-block; vertical-align: top;">                                <input name="txtPassword" type="password" class="txtPassword element_textfield" maxlength="256" value=""/><br />                                <input name="txtPassword2" type="password" style="margin-top: 4px" class="txtPassword2 element_textfield" maxlength="256" value=""/><br />                                <input name="txtOldPassword" type="password" style="margin-top: 4px" class="txtOldPassword element_textfield" maxlength="256"/><br />                                <br />                                <br />                                <input name="txtImagephrase" type="text" style="margin-top: 0px" class="txtImagephrase element_textfield" maxlength="256"/>                            </span><br />                            <br />                            <div class="acctlocked attention2" style="font-size: 18px;"></div>                            <div class="password_notice attention2" style="display: none; font-size: 18px;">                                Note:  Passwords must contain a minimum of eight characters with at least<br />                                a number, a capital letter,and a lowercase letter.                            </div>                        </div>                    </div><!--                    <br />                    <div class="section section_privacy">                        <div class="header"><span class="title"></span></div>                        <div class="content">                            Privacy section                        </div>                    </div>                    <br />                    <div class="section section_email">                        <div class="header"><span class="title"></span></div>                        <div class="content">                            Email section                        </div>                    </div>                    <br />                    <div class="section section_subscription">                        <div class="header"><span class="title"></span></div>                        <div class="content">                            Subscription section                        </div>                    </div>                    <br />-->                    <div style="text-align: center; font-size: 36px; cursor: pointer;" class="btnUpdate">Update your info</div>                    <div style="text-align: center">                        <span style="font-size: 20px">-or-</span><br />                        <span style="font-size: 24px; font-style: italic; cursor: pointer;">Cancel</span>                    </div>                </div>                <iframe class="securepost" src="securepost.php" style="width:0px; height:0px; border: 0px"></iframe>')}function u(){}function p(K){return(K===undefined?$(r):$(K,r))}}Page_AcctSettings.event={};Page_AcctSettings.label="My Account";function Page_About(o,f,x,a){var w=this;var s={};var t="page_about";var n=[];var h=false;var k=false;var q=[];var c=typeof(getdebug)!="undefined"?getdebug():function(){};var e=typeof(getinfo)!="undefined"?getinfo():function(){};var d=typeof(getwarn)!="undefined"?getwarn():function(){};var g=typeof(geterror)!="undefined"?geterror():function(){};p();$.extend(true,s,f);x=x||{};j();u();r();this.getParams=function(){return(s)};this.getContainerDOM=function(){return(o)};this.resize=function(z,y){};this.postMessage=function(y){switch(event){default:}};this.suspend=function(){if(h){return(true)}h=true;return(true)};this.activate=function(){var y=null;if(!h){return}h=false;while(n.length){y=n.shift();b({event:y.event,data:y.data})}};this.destroy=function(){if(k){return}k=true;l().find("*").unbind().end().empty().removeClass(t)};function u(){var y=tab_manager.GetPageParams(tab_manager.GetActiveTabID())||{};var B={about:{dom:$(".section_about").get(0),title:"What's Chartastic.com all about?",visible:y.about},contact:{dom:$(".section_contact").get(0),title:"Contact Us",visible:y.contact},privacy:{dom:$(".section_privacy").get(0),title:"Privacy Policy",visible:y.privacy}};for(var A in B){var z=B[A];if(IsEmpty(y)){y[A]=z.visible}q.push(new Section(z.dom,{name:A,title:z.title,visible:y[A]},{OnOpen:function(){y[this.GetParams().name]=true;tab_manager.SetPageParams(tab_manager.GetActiveTabID(),{section_visibility:CloneObject(y)})},OnClose:function(){y[this.GetParams().name]=false;tab_manager.SetPageParams(tab_manager.GetActiveTabID(),{section_visibility:CloneObject(y)})}}))}}function r(){l(".panel_left .menu_item:eq(0)").unbind().click(function(){q[0].Toggle(true);q[1].Close(true);q[2].Close(true)});l(".panel_left .menu_item:eq(1)").unbind().click(function(){q[0].Close(true);q[1].Toggle(true);q[2].Close(true)});l(".panel_left .menu_item:eq(2)").unbind().click(function(){q[0].Close(true);q[1].Close(true);q[2].Toggle(true)})}function b(y){switch(y.event){default:}}function j(){var y=null;l().empty().addClass(t).append('<div class="panel_left">                    <div class="panel_corner_tr"/>                     <div class="menu_item">About <img src="images/arrow_right.png" /></div><br />                    <div class="menu_item">Contact <img src="images/arrow_right.png" /></div><br />                    <div class="menu_item">Privacy Policy <img src="images/arrow_right.png" /></div><br />                    <div class="panel_corner_bl"/>                 </div><!--             --><div class="panel_main">                    <div class="text_notice"></div>                    <div class="title">"Bringing you the highest-quality charting service since 2009!"</div><br />                    <div class="section section_about">                        <div class="header"><span class="title"></span></div>                        <div class="content"></div>                    </div>                    <br />                    <div class="section section_contact">                        <div class="header"><span class="title"></span></div>                        <div class="content"></div>                    </div>                    <br />                    <div class="section section_privacy">                        <div class="header"><span class="title"></span></div>                        <div class="content"></div>                    </div>                    <br />                </div>');l(".section_about .content, .section_contact .content, .section_privacy .content").html("Loading...");$.get(Page_About.api_prefix+"about.htmlf",function(A,z){if(z=="success"){l(".section_about .content").html($(".about",$(A).get(0)).html());l(".section_contact .content").html($(".contact",$(A).get(0)).html());l(".section_privacy .content").html($(".privacy",$(A).get(0)).html())}else{l(".section_about .content, .section_contact .content, .section_privacy .content").html("Unable to load.")}})}function p(){}function l(y){return(y===undefined?$(o):$(y,o))}}Page_About.event={};Page_About.api_prefix="";Page_About.label="About";function Page_ChartFeatures(o,f,t,a){var s=this;var q={};var r="page_chartfeatures";var n=[];var h=false;var k=false;var c=typeof(getdebug)!="undefined"?getdebug():function(){};var e=typeof(getinfo)!="undefined"?getinfo():function(){};var d=typeof(getwarn)!="undefined"?getwarn():function(){};var g=typeof(geterror)!="undefined"?geterror():function(){};p();$.extend(true,q,f);t=t||{};j();this.getParams=function(){return(q)};this.getContainerDOM=function(){return(o)};this.resize=function(w,u){};this.postMessage=function(u){switch(event){default:}};this.suspend=function(){if(h){return(true)}h=true;return(true)};this.activate=function(){var u=null;if(!h){return}h=false;while(n.length){u=n.shift();b({event:u.event,data:u.data})}};this.destroy=function(){if(k){return}k=true;l().find("*").unbind().end().empty().removeClass(r)};function b(u){switch(u.event){default:}}function j(){l().empty().addClass(r).html("Loading...");$.get(Page_ChartFeatures.api_prefix+"chartfeatures.htmlf",function(x,w){if(w=="success"){l().html($(".panel_left",$(x).get(0)).html());u()}else{l().html("Unable to load.")}});function u(){l(".createaccount input").click(function(){acct_manager.SignUp();return(false)})}}function p(){}function l(u){return(u===undefined?$(o):$(u,o))}}Page_ChartFeatures.event={};Page_ChartFeatures.api_prefix="";Page_ChartFeatures.label="Features";function Section(a,o,j){var l=this;var d={name:null,title:"",max_title_width:"auto",width:null,height:null,show_hline:true,visible:false,animate:true};var g=$(a).find(".header");var k=$(a).find(".content");var f=false;var n=typeof(getdebug)!="undefined"?getdebug():function(){};var b=typeof(getinfo)!="undefined"?getinfo():function(){};var h=typeof(getwarn)!="undefined"?getwarn():function(){};var e=typeof(geterror)!="undefined"?geterror():function(){};this.GetParams=function(){return(d)};this.GetContainerDOM=function(){return(a)};this.Lock=function(){f=true};this.Unlock=function(){f=false};this.Destroy=function(){$(a).find("*").unbind();$(a).empty()};this.SetTitle=function(p){d.title=p;if(d.visible){g.find(".title").html(p)}else{g.find(".title").html(p+"...")}};this.IsOpen=function(){return(d.visible)};this.Open=function(q,r){if(f){return}g.find(".title").css({width:d.max_title_width,overflow:"hidden"}).html(d.title);g.next(".hline").show();if(q){k.slideDown(200,p)}else{k.show();p()}function p(){d.visible=true;$(a).css({borderColor:"#8DA9CD"});g.children().show();if(r&&typeof(r)=="function"){r()}if(j.OnOpen&&typeof(j.OnOpen)=="function"){j.OnOpen.call(l)}}};this.Close=function(p,r){if(f){return}g.find(".title").css({width:"",overflow:"visible"}).html(d.title+"...");g.next(".hline").hide();if(p){k.slideUp(200,q)}else{k.hide();q()}function q(){d.visible=false;$(a).css({borderColor:"#8DA9CD"});g.children().not(".title").hide();if($.isFunction(r)){r()}if($.isFunction(j.OnClose)){j.OnClose.call(l)}}};this.Toggle=function(p,q){if(f){return}if(d.visible){l.Close(p,q)}else{l.Open(p,q)}};function c(){$.extend(true,d,o);j=j||{};if(d.width){$(a).width(d.width)}if(d.height){$(a).height(d.height)}if(d.show_hline){g.after('<div class="hline"></div>')}if(d.visible){l.Open(false)}else{l.Close(false)}g.click(function(){l.Toggle(d.animate)});$(a).hover(function(){if(!f){$(this).css({borderColor:"#FFB401"});g.find(".title").css({width:d.max_title_width,overflow:"hidden"});g.children().show()}},function(){if(!f){if(!d.visible){$(this).css({borderColor:"#8DA9CD"});g.children().not(".title").hide();g.find(".title").css({width:"auto",overflow:"visible"})}else{$(this).css({borderColor:"#8DA9CD"})}}})}c()}function Gallery(r,j,E){var D=this;var B={layout:{rows:new Array()},default_chart_params:{width:0,height_width_ratio:Gallery.DEFAULT_CHART_HEIGHT_WIDTH_RATIO,hideOverview:false,hideHoverQuotes:false,menuStyle:ChartControl.MENUSTYLE.AUTOHIDE,autoUpdate:true,autoCreate:false,chart:{s:null,ct:Chart.TYPE.CANDLESTICK,cs:Chart.SCALE.LOGARITHMIC,cd:"6m",vlul:"505050",vldl:"C04048",vla:"60",bgf:"C4D5E6:FFFFFF:90",cp:"0",bgr:"1:15"}}};var w=$(r).width();var z=null;var x=new Array();var C="gallery";var f=typeof(getdebug)!="undefined"?getdebug():function(){};var h=typeof(getinfo)!="undefined"?getinfo():function(){};var g=typeof(getwarn)!="undefined"?getwarn():function(){};var l=typeof(geterror)!="undefined"?geterror():function(){};this.UpdateParams=function(G){if(G){a(G)}};this.GetParams=function(){var G=0;var I=0;var H=B.layout.rows;if(H.length>0&&H[0].length>0){$(r).find(".chart").each(function(J){var K=x[$(this).data("cc_index")].GetParams();var L=CloneObject(K);if(G<H.length){L.height_width_ratio=K.height/K.width;delete L.height;H[G][I]=L;if(++I>=H[G].length){G++;I=0}}else{return(false)}})}return(B)};this.AddSymbols=function(H){var Q=B.layout.rows;var N=new Array();var L=null;for(var M=0;L=H[M];M++){var P=true;var I=false;var G=Q.length;var O=0;var K=0;u(L);if(G!=Q.length){b();O=$(r).find(".row").length-1;K=Q.length-1;p(O,Q[K]);k();O++;t(O,null,null,20,true)}else{var J=0;O=$(r).find(".row").length-2;K=Q.length-1;J=Q[K].length-1;c(Q[K]);e(O,null,Q[K][J]);t(O);N.push(K)}}d(x.length-H.length,null,function(){A(N)})};this.RemoveSymbols=function(J){var L=[];for(var K=0,G=J.length;K<G;K++){for(var I=0,H=x.length;I<H;I++){if(x[I]!=-1&&x[I].GetParams().chart.s.toLowerCase()==J[K].toLowerCase()){L.push(I)}}}n(L)};this.Destroy=function(){for(var G=0;G<x.length;G++){if(x[G]!=-1){x[G].Destroy()}}$(r).find("*").unbind();$(r).empty();$(r).removeClass(C)};function F(){a(j);$(r).addClass(C);s()}function a(G){$.extend(true,B,G);E=E||{}}function o(){if($.isFunction(E.OnLayoutChange)){E.OnLayoutChange.call(D)}}function n(I){var Q=B.layout.rows;var N=[];for(var J=0,K=I.length;J<K;J++){var M=I[J];var G=x[M];if(G==-1){continue}var R=G.GetContainerDOM();var O=$(R).parent();var L=O.parent();var H=$(r).find(".chart_row").index(L);var P=$(r).find(".chart_row").eq(H).children(".chart_wrapper").index(O);G.Destroy();Q[H].splice(P,1);x.splice(M,1,-1);O=O.prev().add(O);O.remove();if(Q[H].length){N.push(H)}else{Q.splice(H,1);L.next().remove();L.remove()}}A(N)}function y(I,S,Q){var U=B.layout.rows;var P=$(Q);var V=P.parent();var K=$(r).find(".row").index(V);var H=$(S.draggable);var R=H.parent();var L=$(r).find(".chart_row").index(R);var T=$(r).find(".chart_row").eq(L).children(".chart_wrapper").index(H);var M=-1;var G=-1;var J=L;var O=false;var N=0;if(P.get(0)==H.prev().get(0)||P.get(0)==H.next().get(0)){H.css({left:"0",top:"0"});return}if(P.parent().hasClass("spacer_row")){O=true}if(O){G=0;M=K/2;b(V);k(V.next());t(K+2,null,null,20,true);K++;V=V.next();U.splice(M,0,new Array());if(M<=J){J++;L++}}else{G=$(".row").eq(K).children(".spacer").index(P);M=(K-1)/2}U[M].splice(G,0,CloneObject(U[J][T]));U[M][G].width=0;U[M][G].height_width_ratio=0;N=U[J][T].width*U[J][T].height_width_ratio;U[J].splice(T,1);H=H.prev().add(H);if(O){t(K,null,null,N);P=V.children().slice(0,1)}P.before(H);$(S.draggable).css({left:"0px",top:"0px"});q((K-1)/2,U[M]);if(U[J].length){if(L!=(K-1)/2){q(L,U[J])}}else{U.splice(J,1);R.next().remove();R.remove()}o()}function t(K,G,J,N,I){var L=J?J:(I?w:Gallery.DEFAULT_SPACER_WIDTH);var H=N?N:$(r).find(".row").get(K).offsetHeight;var M=null;var O="<div class='spacer' style='width: "+L+"px; height: "+H+"px;'></div>";if(G){$("#"+G).after(O);M=$("#"+G).next()}else{$(r).find(".row").eq(K).append(O);M=$(r).find(".row").eq(K).find(".spacer").slice(-1)}M.droppable({accept:function(){return(true)},drop:function(P,Q){y(P,Q,this)},hoverClass:"spacer_hover",tolerance:"pointer"})}function e(K,L,G){var I=null;var H="<div class='chart_wrapper'><div class='chart'></div></div>";var J=CloneObject(G);J.height=G.width*G.height_width_ratio;delete J.height_width_ratio;if(L){$("#"+L).after(H);I=$("#"+L).next().children(".chart").eq(0)}else{$(r).find(".row").eq(K).append(H);I=$(r).find(".row").eq(K).find(".chart").slice(-1)}x.push(new ChartControl(I.get(0),J,{close:function(){var O=this;var N=$(O.GetContainerDOM()).data("cc_index");var M=O.GetParams().chart.s;n([N]);o();if($.isFunction(E.OnRemoveChart)){E.OnRemoveChart.call(D,M)}},popout:function(){PopChart(this.GetParams())},paramchange:o}));I.data("cc_index",x.length-1);I.parent().draggable({opacity:0.5,revert:true,distance:4,cancel:".menu",start:function(M,N){x[$(this).children(".chart").eq(0).data("cc_index")].DragStart()}})}function b(H){if(H!=null){var G=typeof(H)=="string"?("#"+H):H;$(G).after("<div class='chart_row row'></div>")}else{$(r).append("<div class='chart_row row'></div>")}}function k(H){if(H!=null){var G=typeof(H)=="string"?("#"+H):H;$(G).after("<div class='spacer_row row'></div>")}else{$(r).append("<div class='spacer_row row'></div>")}}function c(N){var O=0;var L=0;var P=1;var J=false;if(!N.length){return(N)}for(var I=0;I<N.length;I++){var G=N[I].width;O+=G;if(G==0){L++}}var K=N.length+1;var M=K*Gallery.DEFAULT_SPACER_WIDTH;var H=w-O-M;if(L>0&&H>=L){P=Math.floor(H/L)}else{if(H<L){P=Math.floor((w-M)/N.length);J=true}}for(var I=0;I<N.length;I++){if(J||N[I].width==0){N[I].width=P}if(N[I].height_width_ratio==0){N[I].height_width_ratio=Gallery.DEFAULT_CHART_HEIGHT_WIDTH_RATIO}}return(N)}function p(K,L){var G=0;var J=0;var M=0;if(!L.length){return}$(r).find(".row").eq(K).empty();c(L);for(var H=0;H<L.length;H++){var I=L[H].width*L[H].height_width_ratio;J+=L[H].width;if(I>M){M=I}}for(var H=0;H<L.length;H++){t(K,null,null,M);e(K,null,L[H])}G=w-J-(L.length*Gallery.DEFAULT_SPACER_WIDTH);t(K,null,G,M)}function A(J){var K=B.layout.rows;for(var I=0,G=J.length;I<G;I++){for(var H=G;H>I;H--){if(J[H]==J[I]){J.splice(H,1)}}G=J.length;q(J[I],K[J[I]])}}function q(I,L){var H=$(r).find(".chart_row").eq(I).find(".chart");var K=0;var M=0;if(H.length!=L.length){return}c(L);H.each(function(P){var Q=$(r).find(".chart_row").index($(this).parent().parent());var N=B.layout.rows[Q][P].width;var O=N*B.layout.rows[Q][P].height_width_ratio;$(this).animate({width:N,height:O},{duration:500,step:function(){var R=GetStylePropertyNumeric(this,"width");var S=GetStylePropertyNumeric(this,"height");x[$(this).data("cc_index")].Resizing(R,S)},complete:function(){var R=GetStylePropertyNumeric(this,"width");var S=GetStylePropertyNumeric(this,"height");x[$(this).data("cc_index")].Resize(R,S)}})});for(var G=0;G<L.length;G++){var J=L[G].width*L[G].height_width_ratio;K+=L[G].width;if(J>M){M=J}}for(var G=0;G<L.length;G++){$(r).find(".chart_row").eq(I).find(".spacer").eq(G).css({width:Gallery.DEFAULT_SPACER_WIDTH+"px",height:M+"px"})}final_spacer_width=w-K-(L.length*Gallery.DEFAULT_SPACER_WIDTH);$(r).find(".chart_row").eq(I).find(".spacer").slice(-1).css({width:final_spacer_width+"px",height:M+"px"})}function s(){var J=0;var I=1;var H=B.layout.rows;J=0;k();t(J,null,null,20,true);for(var G=0;G<H.length;G++){J++;b();p(J,H[G]);J++;k();t(J,null,null,20,true)}d()}function d(H,K,J){var I=0;var L=0;var O=J;var N=0;var G=0;var M=x.length;I=(H&&H<M)?H:0;L=(K&&K<M)?K:M-1;N=I;G=setInterval(function(){if(N<=L){if(x[N]!=-1){x[N].Create()}else{}N++}else{clearInterval(G);if($.isFunction(O)){O()}}},Gallery.CHART_DRAW_DELAY)}function u(I){var J=0;var H=0;var G=jQuery.extend(true,{},B.default_chart_params,{chart:{s:I}});J=B.layout.rows.length;H=(J>0)?B.layout.rows[J-1].length:0;if(J>0&&H<Portfolio_Manager.layout.DEFAULT_ROW_SIZE){B.layout.rows[J-1].push(G)}else{B.layout.rows.push(new Array(G))}}F()}Gallery.error_code={ERR_OTHER:1};Gallery.CHART_DRAW_DELAY=100;Gallery.DEFAULT_CHART_HEIGHT_WIDTH_RATIO=0.4;Gallery.DEFAULT_SPACER_WIDTH=15;function TableWidget(t,g,J){var H=this;var t=$(t);var F={data:[],width:null,char_width:null,min_table_width:485,use_header:false,header_data:[],highlight_behavior:TableWidget.HIGHLIGHT_BEHAVIOR.ROW,border_on_click:true,allow_add:false,allow_remove:false,addbar_labels:["Add something"]};var f=null;var x=null;var y=false;var C=0;var D=0;var E=0;var A=0;var w={row_num:0,before:true};var e=0;var p;var o=[];var d=typeof(getdebug)!="undefined"?getdebug():function(){};var c=typeof(getinfo)!="undefined"?getinfo():function(){};var b=typeof(getwarn)!="undefined"?getwarn():function(){};var h=typeof(geterror)!="undefined"?geterror():function(){};this.GetParams=function(){return(F)};this.AddRow=function(M,U,P,L){var R=$("<tr></tr>");var O=M>=C?(C-1):M;D=D>P.length?D:P.length;if(F.char_width){e=Math.floor(F.char_width/D)}if(!C){R.appendTo(j());o.push(R.get(0))}else{if(U){R.insertBefore(o[O]);o.splice(O,0,R.get(0))}else{R.insertAfter(o[O]);o.splice(O+1,0,R.get(0))}}for(var Q=0,S="",T=P.length;Q<T;Q++){var N=P[Q];if(F.char_width){N=String(N).substr(0,e)}S+="<td>"+N+"</td>"}R.append(S);C++;I(R.get(0));if(!L){s();k()}if(A>O){A++}};this.RemoveRow=function(N){var M=Array();var P=(N===undefined)?E:N;var O=H.GetRow(P);var L=false;O.find("td").each(function(){M.push($(this).html())});O.fadeOut("slow",function(){if(L){return}L=true;$(this).remove();s();k()});o.splice(P,1);C--;if(A>P){A--}};this.GetNumRows=function(){return(C)};this.ApplyCellCSS=function(M,N,L){this.GetCell(M,N).css(L);k()};this.PopulateCell=function(N,O,M){var L=M;if(F.char_width){L=String(L).substr(0,e)}this.GetCell(N,O).html(L);k()};this.GetCell=function(L,M){return(this.GetRow(L).find("td").eq(M))};this.GetRow=function(L){return($(o[L]))};this.ShowRowBorder=function(L){H.GetRow(A).removeClass("infocus");A=L;H.GetRow(L).addClass("infocus")};this.Destroy=function(){t.find("*").unbind();t.empty()};function K(){var L=new Array();var M=0;$.extend(true,F,g);J=J||{};L.push('<table class="widget" width="'+F.min_table_width+'">');if(F.data.length>1||(F.data.length>0&&!F.use_header)){L.push("<tbody></tbody>")}L.push("</table>");t.html(L.join(""));p=$("table",t);x=$('<div class="addrem"><div>+</div><div>x</div><div>+</div></div>').appendTo(t).hide();x.children("div").eq(0).css({top:"10px",visibility:F.allow_add?"visible":"hidden"}).click(n).end().eq(1).css({visibility:F.allow_remove?"visible":"hidden"}).click(function(){x.hide();if($.isFunction(J.OnRemoveRow)){J.OnRemoveRow(E)}else{H.RemoveRow(E)}}).end().eq(2).css({bottom:"10px",visibility:F.allow_add?"visible":"hidden"}).click(a).end();for(;M<F.data.length;M++){H.AddRow(M,false,F.data[M],true)}s();B();q()}function s(){u().removeClass("firstrow lastrow even odd").find(":first").addClass("firstrow").end().find(":last").addClass("lastrow").end().each(function(L){$(this).attr({row:L});$("td, th",this).eq(0).addClass("firstcol").end().eq($("td, th",this).length-1).addClass("lastcol").end().each(function(M){$(this).attr({row:L,col:M})});if(L%2){$(this).addClass("odd")}else{$(this).addClass("even")}})}function B(){var N=F.addbar_labels.length;var M=Math.floor(j().width()/N);f=$('<tr class="addbar"><td colspan="'+D+'" style="text-align: center;"></td></tr>');for(var L=0;L<N;L++){f.find("td").append('<span style="display: inline-block; padding-left: 3px; padding-right: 3px;"><div style="text-align: center;" class="addbar_label">'+F.addbar_labels[L]+'</div><div style="text-align: center;"><input type="text" style="text-align: center; position: relative;" maxlength="128" /></div></span>')}}function q(){x.parent().hover(function(){},function(){x.hide()});j().bind("resize",function(){k()})}function I(L){$(L).hover(function(){E=parseInt($(L).attr("row"));x.css({left:x.parent().width(),top:$(L).position().top-x.height()/3}).show()},function(){});if(F.highlight_behavior==TableWidget.HIGHLIGHT_BEHAVIOR.ROW){$(L).hover(function(){$(L).children().addClass("hover")},function(){$(L).children().removeClass("hover")})}else{if(F.highlight_behavior==TableWidget.HIGHLIGHT_BEHAVIOR.CELL){$(L).children().each(function(){$(this).hover(function(){$(this).addClass("hover")},function(){$(this).removeClass("hover")})})}}$(L).children("td").click(function(){if(J.OnClick&&typeof(J.OnClick)=="function"){var M=$(this);var N=parseInt(M.attr("row"));H.ShowRowBorder(N);J.OnClick(M,N,parseInt(M.attr("col")))}})}function u(){return($("tr",t).not(".addbar"))}function n(){w={row_num:E,before:true};l(E,true)}function a(){w={row_num:E,before:false};l(E,false)}function l(M,L){$("td",f).attr({colspan:D});z(function(){if(L){f.insertBefore(u().eq(M))}else{f.insertAfter(u().eq(M))}f.animate({lineHeight:"30px",padding:"3px"},function(){$(this).hover(function(){$(this).children("td").addClass("hover")},function(){$(this).children("td").removeClass("hover")});y=true;r()})})}function z(L){if(y){G(function(){f.animate({lineHeight:"0px",padding:"0px"},function(){f.remove();y=false;if(L&&typeof(L)=="function"){L()}})})}else{if(L&&typeof(L)=="function"){L()}}}function G(L){var M=f.find("input");var N=M.length;f.find(".addbar_label").animate({opacity:0},{duration:"normal",queue:false});M.each(function(O){var P=$(this).parent().width();$(this).val("").animate({opacity:0},{duration:"normal",queue:false}).animate({left:"-"+P+"px"},{duration:"fast",queue:false,complete:function(){if(O==N-1&&L&&typeof(L)=="function"){L()}}})})}function r(L){var O=F.addbar_labels.length;var M=f.find("input");var P=M.length;var N=Math.floor((j().width()-parseInt(f.find("td").css("padding-left"))-parseInt(f.find("td").css("padding-right"))-parseInt(f.find("span").css("padding-left"))*2-parseInt(f.find("span").css("padding-right"))*2)/O);f.find(".addbar_label").animate({opacity:1},{duration:"normal",queue:false}).end().find("span").width(N+"px").end().find("input").each(function(Q){$(this).val("").width(N+"px").animate({opacity:1},{duration:"fast",queue:false}).animate({left:"0px"},{duration:"slow",queue:false,complete:function(){SetupInputFieldHoverBehavior(this);$(this).unbind("*").keyup(function(S){try{switch(S.keyCode){case 13:var T=[];f.find("input").each(function(){T.push($(this).val())});if(J.OnAddRow&&typeof(J.OnAddRow)=="function"){J.OnAddRow(w.row_num,w.before,T)}z();break;case 27:z();break;default:}}catch(R){if(R.errcode){switch(R.errcode){default:}}else{}}});if(Q==P-1){f.find("input").eq(0).focus();if(L&&typeof(L)=="function"){L()}}}})})}function j(){return(p)}function k(){t.width("auto").width(j().width()+x.outerWidth(true));if(J.OnResize&&typeof(J.OnResize)=="function"){J.OnResize(t.width(),t.height())}}K()}TableWidget.HIGHLIGHT_BEHAVIOR={ROW:0,CELL:1,NONE:2};function PortfolioListWidget(o,g,z){var y=this;var o=$(o);var u={list_type:PortfolioListWidget.LISTTYPE.QUOTES,chart_data:[],show_dup_notice:false,api_prefix:"",default_chart_params:{annotation:undefined,width:300,height:120,hideOverview:true,hideHoverQuotes:true,menuStyle:ChartControl.MENUSTYLE.NONE,annotate:false,startAnnotating:false,autoUpdate:true,autoCreate:false,noIndicators:true,chart:{s:null,ct:Chart.TYPE.MOUNTAIN,cs:Chart.SCALE.LOGARITHMIC,cp:Chart.PERIOD.TWOMINUTE,cd:"1d",bgf:"C4D5E6:FFFFFF:90",bgr:"1:15",vla:"0",vsa:"0"}},table_params:{data:[],width:null,use_header:false,header_data:[],highlight_behavior:TableWidget.HIGHLIGHT_BEHAVIOR.ROW,allow_add:true,allow_remove:true,addbar_labels:["Add symbol"],char_width:75}};var t=null;var s=Array();var w=0;var j=[];var c=typeof(getdebug)!="undefined"?getdebug():function(){};var e=typeof(getinfo)!="undefined"?getinfo():function(){};var d=typeof(getwarn)!="undefined"?getwarn():function(){};var h=typeof(geterror)!="undefined"?geterror():function(){};this.AddSymbol=function(B){if(f(B)){if(u.show_dup_notice){ShowNotice("Symbol "+B+" already exists in your portfolio.")}}else{if(u.list_type==PortfolioListWidget.LISTTYPE.ANNOTATION){}else{var C=x(B);u.chart_data.push(C);n(t.GetNumRows()-1,false,C,true)}}};this.RemoveSymbol=function(D){for(var C=0,B=u.chart_data.length;C<B;C++){if(u.chart_data[C].symbol.toLowerCase()==D.toLowerCase()){t.RemoveRow(C);break}}};this.GetParams=function(){return(u)};this.suspend=function(){if(suspended){return(true)}return(true)};this.activate=function(){if(!suspended){return}};this.Destroy=function(){t.Destroy();t=null;o.find("*").unbind();o.empty()};function r(){$(".list_table",o).children().css({visibility:"hidden"}).end().append('<div style="white-space: nowrap;" class="table_spinner"><img src="'+u.api_prefix+'images/loading.gif"/><span>Loading symbols...</span></div>')}function p(){$(".table_spinner",o).remove();$(".list_table",o).children().css({visibility:"visible"})}function a(I,B,C){var G=false;var E=false;if(u.list_type==PortfolioListWidget.LISTTYPE.QUOTES){window.ajax.put("php/api/data/get.php",{symbol:I.symbol,fields:"symbol,exchange_abbrev,name,type"},{success:H,error:H});window.ajax.put("php/api/data/quote.php",{symbol:I.symbol,num:2,period:0,cols:"c"},{success:J,error:J})}else{if(u.list_type==PortfolioListWidget.LISTTYPE.ANNOTATION){var D=B+(u.table_params.use_header?1:0);var F=true;if(I&&typeof(I.symbol)!=undefined&&typeof(I.headline)!=undefined&&typeof(I.timestamp)!=undefined&&typeof(I.chart_params)!=undefined){t.PopulateCell(D,0,"<b>"+I.symbol+"</b>");t.PopulateCell(D,1,I.headline);t.PopulateCell(D,2,I.timestamp)}else{o.html("Cannot retrieve symbol information!");F=false}s[D].chart.Create();if(C){C(F)}}}function H(K){var N=B+(u.table_params.use_header?1:0);if(!K.status){var M=K.message.split(",");var L="<b>"+M[0]+"</b>";if(M[1]!="Unknown"){L+=" ("+M[1]+")"}t.PopulateCell(N,0,L);t.PopulateCell(N,1,M[2]);if(M[3]&&M[3]=="mf"){j[N]=true}else{j[N]=false}G=true;if(E){if(C){C(true)}}}else{o.html("Cannot retrieve symbol information!");G=true;if(E){if(C){C(false)}}}}function J(K){var M=B+(u.table_params.use_header?1:0);if(!K.status){if(K.quotes!=""){var N=K.quotes[0].close-K.quotes[1].close;var L=N/K.quotes[1].close*100;t.PopulateCell(M,2,FormatPrice(K.quotes[0].close));t.PopulateCell(M,3,FormatChange(N)+" ("+FormatPercent(L)+")");t.ApplyCellCSS(M,3,{color:(N>=0?"green":"red")});s[M].chart.UpdateParams({chart:{plf:N>=0?"003333:00ff00":"ff0000:003333",plhzl:K.quotes[1].close+":666666",plc:"000000",pla:"6F"}});if(j[M]){s[M].chart.UpdateParams({mutualFund:true,chart:{cd:"10d",cp:Chart.PERIOD.DAILY}})}}else{t.PopulateCell(M,2,"?");t.PopulateCell(M,3,"?")}s[M].chart.Create();E=true;if(G){if(C){C(true)}}}else{E=true;if(G){if(C){C(false)}}}}}function k(B){var C=0;if(t.GetNumRows()){C=$(".list_table tr",o).eq(0).height();t.ShowRowBorder(B);$(".list_chart",o).animate({top:B*C});$(".list_chart > div",o).animate({top:"-"+B*u.default_chart_params.height})}}function n(C,G,F,H,I){var J=t.GetNumRows();var D=C>=J?(J-1):C;var E=$("<div></div>");var B=D+(G?0:1);if(z.OnClickChart&&typeof(z.OnClickChart)=="function"){E.css({cursor:"pointer"})}if(u.list_type==PortfolioListWidget.LISTTYPE.ANNOTATION){t.AddRow(D,G,["","",""])}else{t.AddRow(D,G,["","","",""])}if(!J){E.appendTo($(".list_chart > div",o))}else{if(G){E.insertBefore(b().eq(D))}else{E.insertAfter(b().eq(D))}}E.click(function(){if(z.OnClickChart&&typeof(z.OnClickChart)=="function"){z.OnClickChart(F.symbol,B)}});s.splice(B,0,{wrapper:E,chart:new ChartControl(E.get(0),F.chart_params)});a(F,B,function(K){if(I){I(K)}});if(H){k(B)}}function f(C){var D=false;for(var B=0;B<u.chart_data.length;B++){if(u.chart_data[B].symbol.toLowerCase()==C.toLowerCase()){D=true;break}}return(D)}function b(){return($(".list_chart > div",o).children("div"))}function q(B){if((B+1)<=s.length){return(s[B].chart.GetParams().chart.s)}else{return(null)}}function x(B){return({symbol:B,headline:null,timestamp:null,chart_params:$.extend(true,{},u.default_chart_params,{chart:{s:B}})})}function l(){var I=0;o.html('<div style="position: relative;"><div class="list_table"></div><div class="list_chart"><div></div></div></div>');$(".list_table",o).css({position:"absolute",display:"block",left:"0px",marginLeft:"10px",marginRight:"30px"});$(".list_chart",o).css({position:"absolute",display:"block",overflow:"hidden",right:"0px"}).width(u.default_chart_params.width).height(u.default_chart_params.height);$(".list_chart > div",o).css({position:"relative"});t=new TableWidget($(".list_table",o).get(0),u.table_params,{OnAddRow:J,OnClick:C,OnRemoveRow:G,OnResize:D});if(u.chart_data.length>0){r()}for(var F=0,H=u.chart_data.length;F<H;F++){var B=false;if(u.list_type==PortfolioListWidget.LISTTYPE.QUOTES){for(var E=0;E<F;E++){if(u.chart_data[E].symbol.toLowerCase()==u.chart_data[F].symbol.toLowerCase()){B=true;break}}}if(!B||u.list_type==PortfolioListWidget.LISTTYPE.ANNOTATION){n(F,false,u.chart_data[F],false,function(K){if(++I==H){p()}})}}k(0);function C(K,L,M){w=L;k(L)}function J(N,M,L){var K=L[0];ValidateSymbols([K],function(R,Q,P){if(R){if(Q.length==1){var O=Q[0];if(f(O)){ShowNotice("Symbol "+O+" already exists in your portfolio.")}else{var S=x(O);u.chart_data.push(S);n(N,M,S,true);if(z.OnAddSymbol&&typeof(z.OnAddSymbol)=="function"){z.OnAddSymbol(O)}}}}else{UnrecoverableError()}})}function G(M){var L=q(M);if(z.OnRemoveSymbol&&typeof(z.OnRemoveSymbol)=="function"){z.OnRemoveSymbol(L)}s[M].chart.Destroy();s.splice(M,1);b().eq(M).remove();for(var K=0;K<u.chart_data.length;K++){if(L.toLowerCase()==u.chart_data[K].symbol.toLowerCase()){u.chart_data.splice(K,1);break}}if(w==M){k(0)}}function D(M,K){var L=K+u.default_chart_params.height;o.height(L);if(z.OnResize&&typeof(z.OnResize)=="function"){z.OnResize(o.width(),L)}}}function A(){var E=x();var D=u.default_chart_params;var F={chart_params:{width:D.width,height:D.height,menuStyle:D.menuStyle,startAnnotating:D.startAnnotating,hideOverview:D.hideOverview,hideHoverQuotes:D.hideHoverQuotes,noIndicators:D.noIndicators}};$.extend(true,u,g);z=z||{};if(u.list_type==PortfolioListWidget.LISTTYPE.ANNOTATION){$.extend(true,u.table_params,{allow_add:false,allow_remove:false})}for(var C=0,B=u.chart_data.length;C<B;C++){u.chart_data[C]=$.extend(true,{},E,u.chart_data[C],F);u.chart_data[C].chart_params.chart.s=u.chart_data[C].symbol}l()}A()}PortfolioListWidget.LISTTYPE={QUOTES:0,ANNOTATION:1};function SignInWidget(g,C){var B=this;var x={directSignUp:false,message:""};var c=typeof(getdebug)!="undefined"?getdebug():function(){};var e=typeof(getinfo)!="undefined"?getinfo():function(){};var d=typeof(getwarn)!="undefined"?getwarn():function(){};var j=typeof(geterror)!="undefined"?geterror():function(){};$.extend(true,x,g);C=C||{};var t='<div class="si-box">                       <div class="si-cl"/>                       <div class="si-wp">                         <div class="si-msg"/>                         <div class="si-privacy">                           <div class="si-privacy-back">Back</div>                           <div class="si-privacy-copy"/>                         </div>                         <div class="si-su">                           <div class="si-hl">New to Chartastic?</div>                           <div class="si-ct">Creating an account will allow you to:</div>                           <ul class="si-ul">                             <li>save charts and annotations</li>                             <li>track symbol lists</li>                             <li>share charts with your friends</li>                           </ul>                           <div class="si-ct">It\'s free and easy.</div>                           <div class="si-submit"><input type="button" class="si-showcreate" value="Create an Account"/></div>                           <div class="si-pp">Privacy Policy</div>                         </div>                         <div class="si-si">                           <div class="si-hl">Sign In To Chartastic</div>                           <div class="si-er"/>                           <div class="si-rw"><div class="si-fd">Username</div><input name="user" type="text"/></div>                           <div class="si-rw"><div class="si-fd">Password</div><input name="pass" type="password"/></div>                           <div class="si-rm"><div class="si-cb"/><span class="si-rms">Remember me</span></div>                           <div class="si-submit"><input type="button" class="si-signin" value="Sign In"/></div>                           <div class="si-fp">Forgot your password?</div>                         </div>                         <div class="si-fm">                           <div class="si-hl">Create a New Chartastic Account</div>                           <div class="si-rw"><div class="si-fdw">Username:</div><input name="newuser" type="text"/></div>                           <div class="si-rw"><div class="si-fdw">Password:</div><input name="newpass" type="password"/></div>                           <div class="si-rw"><div class="si-fdw">Password (confirm):</div><input name="newpass2" type="password"/></div>                           <div class="si-rw"><div class="si-fdw">First Name:</div><input name="first" type="text"/></div>                           <div class="si-rw"><div class="si-fdw">Last Name:</div><input name="last" type="text"/></div>                           <div class="si-rw"><div class="si-fdw">Email:</div><input name="email" type="text"/></div>                           <div class="si-rw"><div class="si-fdw">Email (confirm):</div><input name="email2" type="text"/></div>                           <div class="si-rw"><div class="si-fdw">Gender:</div>                               <input type="radio" name="si-gender" class="si-rd" value="male">M&nbsp;&nbsp;</input>                               <input type="radio" name="si-gender" class="si-rd" value="female">F</input>                           </div>                           <div class="si-rw"><div class="si-fdw">Birth Year:</div><input name="birthyear" type="text"/></div>                           <div class="si-rw si-cap"></div>                           <div class="si-rw"><div class="si-fdw">Above Phrase:</div><input name="captcha" type="text"/></div>                          <div class="si-submit"><input type="button" class="si-create" value="Create My Account"/></div>                          <div class="su-copy">                              We safeguard your personal information and never sell or rent                               email addresses to anyone.<br/>We hate spam as much as you do.                          </div>                          <div class="su-er"/>                         </div>                       </div>                       <iframe class="si-sp" style="width:0px; height:0px; border: 0px"></iframe>                    </div>';var r=CreateDialog(t);var A=$(r.GetDialogDOM());var k={$err:$(".si-er",A).hide(),$user:$("input[name=user]",A),$pass:$("input[name=pass]",A),rememberMe:new CheckboxWidget($(".si-cb",A),{value:true,label:"",label_width:0})};var p=$(".si-fm",A);r.Show();if(x.message){$(".si-msg",A).text(x.message);var o=$(".si-su",A).position().top;$(".si-su, .si-si",A).height($(".si-su",A).height()-o)}else{$(".si-msg",A).hide()}p.find(".su-er").hide();p.find("input").attr("disabled","disabled");if($.browser.msie){p.hide()}y();if(x.directSignUp){h(true)}$(".si-sp",A).get(0).contentWindow.location.replace(SignInWidget.api_prefix+"securepost.php");$(".si-rms",A).click(function(){$(".si-cb",A).click()});$(".si-cl",A).one("click",function(){B.Destroy();if(C.cancel){C.cancel()}});$(".si-pp",A).click(s);$(".si-signin",A).click(z);$(".si-showcreate",A).click(h);$(".si-fp",A).click(function(){w(SignInWidget.ERROR.FORGOT_PASSWORD)});k.$user.keypress(function(D){if(D.which==13){if(k.$pass.val()==""){k.$pass.focus()}else{z()}}}).focus();k.$pass.keypress(function(D){if(D.which==13){z()}});$(".si-create",A).click(b);p.find("input").keypress(function(D){p.find(".su-er").hide();if(D.which==13){b()}});this.Destroy=function(){k.rememberMe.Destroy();r.Hide()};function y(){$(".si-cap",A).html('<img src="'+SignInWidget.api_prefix+"php/api/user/captcha.php?epoch="+(new Date().getTime())+'" />')}function s(){var D=$(".si-privacy-copy",A).html("Fetching privacy policy...");D.load(SignInWidget.api_prefix+"about.htmlf .privacy",null,function(F,E){if(E=="error"){$(this).html("Sorry, we are unable to load the privacy policy at this time.")}});$(".si-privacy",A).fadeIn(250,function(){$(".si-privacy-back",A).one("click",function(){$(".si-privacy",A).fadeOut(250);k.$user.focus()})})}function z(){var D=k.$user.val();var E=k.$pass.val();k.$user.attr("disabled","disabled");k.$pass.attr("disabled","disabled");$(".si-signin",A).attr("disabled","disabled");if(!D&&!E){w("Please enter your username and password")}else{if(!D){w(SignInWidget.ERROR.ERR_USER_BLANK)}else{if(!E){w(SignInWidget.ERROR.ERR_PASS_BLANK)}else{$(".si-sp",A).one("load",function(){window.ajax.put("php/api/user/status.php",{type:"login"},{error:w,success:function(F){k.$pass.val("");if(!F.status){if(C.success){C.success(D)}q()}else{w(F.status)}}});$(".si-sp",A).get(0).contentWindow.location.replace(SignInWidget.api_prefix+"securepost.php")});$(".si-sp",A).get(0).contentWindow.SignIn(D,E,k.rememberMe.GetValue())}}}}function w(D){var E;if(D.length){E=D}else{switch(D){case SignInWidget.ERROR.ERR_USER_BLANK:E="Please enter your username.";break;case SignInWidget.ERROR.ERR_PASS_BLANK:E="Please enter your password.";break;case SignInWidget.ERROR.ERR_BAD_CREDENTIALS:E="Could not sign in.  The username or password you entered is incorrect.";break;case SignInWidget.ERROR.ERR_UNSECURE:E="Could not sign in.  A secure (SSL) connection could not be established.";break;case SignInWidget.ERROR.ERR_ACCT_LOCKED:E='Your account is locked.  <span class="si-acctreset">Click here</span> to reset it.';break;case SignInWidget.ERROR.ERR_ACCT_RESET_FAIL:E='Your account could not be reset.  Please <span class="si-acctreset">try again</span> or email us for assistance.';break;case SignInWidget.ERROR.FORGOT_PASSWORD:E='Enter your username below and <span class="si-acctreset">Click here</span> to reset your password.';break;default:E="An error occurred. Please try again.";break}}k.$err.html(E).show();if(D==SignInWidget.ERROR.ERR_ACCT_LOCKED||D==SignInWidget.ERROR.ERR_ACCT_RESET_FAIL||D==SignInWidget.ERROR.FORGOT_PASSWORD){a()}q()}function a(){$(".si-acctreset",A).click(function(){window.ajax.put("php/api/user/reset.php",{username:k.$user.val()},{success:function(E){if(!E.status){k.$err.html("Your account has been reset.  Please check your email for your new password.")}else{D()}},error:D})});function D(){w(SignInWidget.ERROR.ERR_ACCT_RESET_FAIL)}}function q(){k.$user.attr("disabled","");k.$pass.attr("disabled","");$(".si-signin",A).attr("disabled","")}function h(D){var E=D===true?1:500;p.find("input").attr("disabled","");if($.browser.msie){E=1;$(".si-wp",A).css("top","-300").children().hide();p.show()}$(".si-box",A).animate({height:410},{duration:E,step:function(){r.Resize($(this).innerWidth(),$(this).innerHeight())},complete:function(){r.Resize($(this).innerWidth(),$(this).innerHeight())}});$(".si-wp",A).animate({top:-300},E,function(){$("input[name=newuser]",A).focus()})}function b(){var D={username:n("newuser"),pass1:n("newpass"),pass2:n("newpass2"),fname:n("first"),lname:n("last"),birthyear:n("birthyear"),sex:p.find(".si-rd:checked").val()||"",email:n("email"),email2:n("email2"),imagephrase:n("captcha")};p.find("input").attr("disabled","disabled");p.find(".su-er").hide();if(!(D.username&&D.pass1&&D.email)){u(SignInWidget.ERROR2.ERR_MISSING_FIELDS)}else{if(!D.imagephrase){u(SignInWidget.ERROR2.ERR_MISSING_CAPTCHA)}else{if(D.pass1!=D.pass2){u(SignInWidget.ERROR2.ERR_PASS_MISMATCH)}else{if(D.email!=D.email2){u(SignInWidget.ERROR2.ERR_EMAIL_MISMATCH)}else{if(!l(D.pass1)){u(SignInWidget.ERROR2.ERR_CRAPPY_PASSWORD)}else{if(D.birthyear&&(isNaN(D.birthyear)||D.birthyear%1||D.birthyear>2100||D.birthyear<1900)){u(SignInWidget.ERROR2.ERR_BAD_BIRTH_YEAR)}else{$(".si-sp",A).one("load",function(){window.ajax.put("php/api/user/status.php",{type:"signup"},{error:u,success:function(E){if(E&&E.status===0){p.find("input[name=newpass], input[name=newpass2]").val("");if(C.success){C.success(D.username,true)}p.find("input").attr("disabled","")}else{u(E.status)}}});$(".si-sp",A).get(0).contentWindow.location.replace(SignInWidget.api_prefix+"securepost.php")});$(".si-sp",A).get(0).contentWindow.SignUp(D)}}}}}}}function l(F){var D=/[a-z]/.test(F);var E=/[A-Z]/.test(F);var G=/[0-9]/.test(F);return(F.length>=8&&((D&&E)||(D&&G)||(E&&G)))}function u(D){var E;switch(D){case SignInWidget.ERROR2.ERR_MISSING_FIELDS:E="Username, password, and email address must be filled out.";break;case SignInWidget.ERROR2.ERR_MISSING_CAPTCHA:E="Please enter the phrase in the space provided.  This helps prevent automated signups";break;case SignInWidget.ERROR2.ERR_CAPTCHA_MISMATCH:E="The text you entered does not match the given image phrase.  Please try again.";f();break;case SignInWidget.ERROR2.ERR_USERNAME_TAKEN:E="The username you chose is already taken.  Please choose another.";break;case SignInWidget.ERROR2.ERR_EMAIL_TAKEN:E="The email you chose already has an account.  Did you forget your password?";break;case SignInWidget.ERROR2.ERR_PASS_MISMATCH:E="Passwords do not match.";break;case SignInWidget.ERROR2.ERR_EMAIL_MISMATCH:E="Email mismatch: You must type the same email address twice to ensure you enter it correctly.";break;case SignInWidget.ERROR2.ERR_BAD_CREDENTIALS:E="Incorrect login credentials.";break;case SignInWidget.ERROR2.ERR_CRAPPY_PASSWORD:E="Password is too weak.  Passwords must be at least 8 characters long and be a mixture of uppercase, lowercase, and/or numbers";break;case SignInWidget.ERROR2.ERR_BAD_BIRTH_YEAR:E="Birth year looks funny.";break;default:E="We cannot process your request at this time. Please try again or contact us for further assistance.";f();break}p.find(".su-er").show().html(E);p.find("input").attr("disabled","")}function n(D){return $("input[name="+D+"]",A).val()}function f(){y();p.find("input[name=captcha]").val("").focus()}}SignInWidget.ERROR={ERR_USER_BLANK:1,ERR_PASS_BLANK:2,ERR_BAD_CREDENTIALS:3,ERR_UNSECURE:4,ERR_ACCT_LOCKED:5,ERR_NO_SESSION:6,ERR_ACCT_RESET_FAIL:7,FORGOT_PASSWORD:8};SignInWidget.ERROR2={ERR_CAPTCHA_MISMATCH:1,ERR_USERNAME_TAKEN:2,ERR_EMAIL_TAKEN:3,ERR_MISSING_FIELDS:4,ERR_PASS_MISMATCH:5,ERR_BAD_CREDENTIALS:6,ERR_EMAIL_MISMATCH:7,ERR_CRAPPY_PASSWORD:8,ERR_BAD_BIRTH_YEAR:9,ERR_MISSING_CAPTCHA:10};SignInWidget.SetApiPrefix=function(a){SignInWidget.api_prefix=a};SignInWidget.api_prefix="";function Border(a,k,g){var h=this;var d={classname:"",offset:{left:0,right:0,top:0,bottom:0},opacity:1};var j=typeof(getdebug)!="undefined"?getdebug():function(){};var b=typeof(getinfo)!="undefined"?getinfo():function(){};var f=typeof(getwarn)!="undefined"?getwarn():function(){};var e=typeof(geterror)!="undefined"?geterror():function(){};this.GetParams=function(){return(d)};this.GetContainerDOM=function(){return(a)};this.Destroy=function(){};this.Resize=function(n,t){var p=0;var q=0;var w=$(a).children(".corner_tl").width();var u=$(a).children(".corner_tl").height();var s=d.offset.left;var l=d.offset.right;var r=d.offset.top;var o=d.offset.bottom;p=n-2*w+s+l;q=t-2*u+r+o;$(a).children(".edge_top").css({width:p});$(a).children(".edge_bottom").css({width:p});$(a).children(".edge_left").css({height:q});$(a).children(".edge_right").css({height:q})};function c(){var s=0;var q=0;var p=0;var t=0;var n=0;var o=0;var l=0;var r=0;$.extend(true,d,k);g=g||{};if($(".corner_tl, .corner_tr, .corner_bl, .corner_br, .edge_right, .edge_left, .edge_bottom, .edge_top",a).size()==8){return}$(a).addClass(d.classname).append('<div class="corner_tl"/><div class="corner_tr"/><div class="corner_bl"/><div class="corner_br"/><div class="edge_right"/><div class="edge_left"/><div class="edge_bottom"/><div class="edge_top"/>');s=$(a).innerWidth();q=$(a).innerHeight();p=$(a).children(".corner_tl").width();t=$(a).children(".corner_tl").height();n=d.offset.left;o=d.offset.right;l=d.offset.top;r=d.offset.bottom;$(a).children(".corner_tl").css({opacity:d.opacity,left:-n,top:-l});$(a).children(".corner_tr").css({opacity:d.opacity,right:-o,top:-l});$(a).children(".corner_bl").css({opacity:d.opacity,left:-n,bottom:-r});$(a).children(".corner_br").css({opacity:d.opacity,right:-o,bottom:-r});$(a).children(".edge_top").css({opacity:d.opacity,left:p-n,top:-l,width:s-2*p+n+o});$(a).children(".edge_bottom").css({opacity:d.opacity,left:p-n,bottom:-r,width:s-2*p+n+o});$(a).children(".edge_left").css({opacity:d.opacity,top:t-l,left:-n,height:q-2*t+l+r});$(a).children(".edge_right").css({opacity:d.opacity,top:t-l,right:-o,height:q-2*t+l+r})}c()}function Dialog(a,r,k){var o=this;var f={markup:'<div style="width: 100px; height: 30px; text-align: center; background-color: white;">DIALOG</div>',modal:false,backdrop:{enable:true,color:"#000000",opacity:0.8,blur:{enable:false,img:""}},easy_hide:false,show_speed:200,hide_speed:100,destroy_on_hide:true};var n,q;var e="dialog";var p=typeof(getdebug)!="undefined"?getdebug():function(){};var b=typeof(getinfo)!="undefined"?getinfo():function(){};var j=typeof(getwarn)!="undefined"?getwarn():function(){};var g=typeof(geterror)!="undefined"?geterror():function(){};this.UpdateMarkup=function(s){$("."+e,a).html(s)};this.Show=function(){var s=$(n).width();var t=$(n).height();if(f.backdrop.enable){$(".dialog_backdrop",a).stop()}$(n).stop();if(k.OnBeforeShow){k.OnBeforeShow()}if(f.backdrop.enable){q=$('<div class="dialog_backdrop"/>').css({position:"absolute",left:"0px",top:"0px",width:"100%",height:$(document).height(),backgroundColor:f.backdrop.color,backgroundImage:"url( "+f.backdrop.blur.img+" )",opacity:0,zIndex:999}).appendTo(a).animate({opacity:f.backdrop.opacity},f.show_speed)}$(n).css({left:"50%",marginLeft:-0.5*s,zIndex:1000}).animate({opacity:1},f.show_speed,function(){if($.browser.msie){$(this).css("filter","none")}if(f.easy_hide){$(this).bind("click.dialog",function(){o.Hide()})}if(k.OnShow){k.OnShow()}});c();if(!f.modal&&f.backdrop.enable){$(".dialog_backdrop",a).click(function(){o.Hide()})}};this.Hide=function(){if(q){q.stop()}$(n).stop();if(k.OnBeforeHide){k.OnBeforeHide()}if(q){q.animate({opacity:0},f.hide_speed,function(){$(this).remove();q=undefined})}$(n).animate({opacity:0},f.hide_speed,function(){$(this).css({zIndex:-999});if(f.destroy_on_hide){o.Destroy()}if(k.OnHide){k.OnHide()}})};this.Resize=function(t,s){$(n).css({width:t,height:s,marginLeft:-0.5*t,top:($(a).height()-s)/2});if(k.OnResize){k.OnResize(t,s)}};this.GetParams=function(){return(f)};this.GetContainerDOM=function(){return(a)};this.GetDialogDOM=function(){return(n)};this.Destroy=function(){if(q){q.remove()}$(window).unbind("resize.dialog");$(n).find("*").unbind().end().empty().removeClass(e).remove()};function l(){var s='<div class="'+e+'">'+f.markup+"</div>";var t=1;$(s).css({position:"fixed",opacity:0,zIndex:-999}).appendTo(a);t=$("."+e,a).size();n=$("."+e,a).get(t-1)}function c(){var s=20;var t=($(a).height()-$(n).height())/2;if(t<0){t=s}$(n).css("top",t)}function h(){}function d(){h();$.extend(true,f,r);k=k||{};if(f.modal){f.backdrop.enable=true}l();$(window).bind("resize.dialog",c)}d()}function CheckboxWidget(a,o,j){var l=this;var e={checked_class:"cb_checked",unchecked_class:"cb_unchecked",checked_hover_class:"cb_checked_hover",unchecked_hover_class:"cb_unchecked_hover",label_class:"cb_label",label:"Label:",label_width:200,value:false};var d="checkbox_widget";var n=typeof(getdebug)!="undefined"?getdebug():function(){};var b=typeof(getinfo)!="undefined"?getinfo():function(){};var h=typeof(getwarn)!="undefined"?getwarn():function(){};var f=typeof(geterror)!="undefined"?geterror():function(){};this.GetValue=function(){return(e.value)};this.GetParams=function(){return(e)};this.GetContainerDOM=function(){return(a)};this.Destroy=function(){$(a).find("*").unbind().end().empty().removeClass(d)};function g(){return(e.checked_class+" "+e.unchecked_class+" "+e.checked_hover_class+" "+e.unchecked_hover_class)}function k(){$(a).append('<span class="'+e.label_class+'" style="width:'+e.label_width+'px;">'+e.label+'</span><span class="'+(e.value?e.checked_class:e.unchecked_class)+'"/>').click(function(){e.value=!e.value;if(e.value){$("span:eq(1)",this).removeClass(g()).addClass(e.checked_class)}else{$("span:eq(1)",this).removeClass(g()).addClass(e.unchecked_class)}}).hover(function(){if(e.value){$("span:eq(1)",this).removeClass(g()).addClass(e.checked_hover_class)}else{$("span:eq(1)",this).removeClass(g()).addClass(e.unchecked_hover_class)}},function(){if(e.value){$("span:eq(1)",this).removeClass(g()).addClass(e.checked_class)}else{$("span:eq(1)",this).removeClass(g()).addClass(e.unchecked_class)}})}function c(){$.extend(true,e,o);j=j||{};$(a).addClass(d);k()}c()}function Textbox(a,o,j){var l=this;var e={structure:{label:"Label:",overlay:"",value:""},multiline:false,row_size:1,label_width:200,input_width:0,focused:false,show_on_separate_line:false,base_class:"textbox",base_hover_class:"textbox_hover",focused_class:"textbox_focused",focused_hover_class:"textbox_focused_hover",label_class:"textbox_label"};var d="textbox_widget";var n=typeof(getdebug)!="undefined"?getdebug():function(){};var b=typeof(getinfo)!="undefined"?getinfo():function(){};var h=typeof(getwarn)!="undefined"?getwarn():function(){};var f=typeof(geterror)!="undefined"?geterror():function(){};this.GetValue=function(){return(e.structure.value)};this.GetParams=function(){return(e)};this.GetContainerDOM=function(){return(a)};this.Destroy=function(){$(a).find("*").unbind().end().empty().removeClass(d)};function k(){var p=null;$(a).append('<span class="'+e.label_class+'" style="width:'+e.label_width+'px;">'+e.structure.label+'</span><span class="input_wrapper"'+(e.show_on_separate_line?' style="display:block;"':"")+">"+(e.multiline?('<textarea name="" class="'+e.base_class+(e.focused?(" "+e.focused_class):"")+'">'+e.structure.value+"</textarea>"):('<input name="" type="text" class="'+e.base_class+(e.focused?(" "+e.focused_class):"")+'" value="'+e.structure.value+'"/>'))+"</span>").find("."+e.base_class).focus(function(){$(this).addClass(e.focused_class);e.focused=true}).blur(function(){$(this).removeClass(e.focused_class);e.focused=false}).keyup(function(){e.structure.value=$(this).val()}).end().hover(function(){if(e.focused){$("."+e.base_class,this).addClass(e.focused_hover_class)}else{$("."+e.base_class,this).addClass(e.base_hover_class)}},function(){$("."+e.base_class,this).removeClass(e.base_hover_class+" "+e.focused_hover_class)});p=$("."+e.base_class,a);if(e.input_width>0){p.width(e.input_width-2*(p.outerWidth()-p.innerWidth()))}}function g(){}function c(){g();$.extend(true,e,o);j=j||{};$(a).addClass(d);k()}c()}function RadioGroup(a,r,k){var o=this;var e={structure:[],vertical_alignment:false,group_label:"yes",group_label_width:200,label_width:40,label_first:false,label_auto_width:true,radio_class:"radio",radio_hover_class:"radio_hover",selected_class:"radio_selected",selected_hover_class:"radio_selected_hover",group_label_class:"group_label",label_class:"radio_label"};var d="radiogroup_widget";var n=[];var j=0;var q=null;var p=typeof(getdebug)!="undefined"?getdebug():function(){};var b=typeof(getinfo)!="undefined"?getinfo():function(){};var h=typeof(getwarn)!="undefined"?getwarn():function(){};var f=typeof(geterror)!="undefined"?geterror():function(){};this.GetValue=function(){return(q)};this.GetParams=function(){return(e)};this.GetContainerDOM=function(){return(a)};this.Destroy=function(){$(a).find("*").unbind().end().empty().removeClass(d)};function l(){if(e.group_label!=""){var t=null;if(e.vertical_alignment){t=$("<div/>")}else{t=$("<span/>").css({display:"inline-block"})}t.addClass(e.group_label_class).text(e.group_label).appendTo(a).width(e.group_label_width)}for(var u=0,s=e.structure.length;u<s;u++){var w=e.structure[u];var z=null;if(e.vertical_alignment){z=$("<div/>").appendTo(a)}else{z=$("<span/>").appendTo(a).css({display:"inline-block"})}n.push(new y(z.get(0),{radio_class:e.radio_class,radio_hover_class:e.radio_hover_class,selected_class:e.selected_class,selected_hover_class:e.selected_hover_class,label:w.label,label_width:e.label_width,label_first:e.label_first,label_auto_width:e.label_auto_width,value:w.value,selected:w.selected},{OnClick:x}));if(w.selected){q=w.value;j=u}}function x(D){var C=j;q=D;for(var B=0,A=e.structure.length;B<A;B++){if(e.structure[B].value==D){j=B;e.structure[B].selected=true;break}}if(C!=j){e.structure[C].selected=false;n[C].Unselect()}}function y(A,B,F){var E=this;var G={radio_class:"radio",radio_hover_class:"radio_hover",selected_class:"radio_selected",selected_hover_class:"radio_selected_hover",label_class:"radio_label",label:"Label: ",label_width:200,label_first:false,label_auto_width:true,value:null,selected:false};this.Unselect=function(){$("span:eq(1)",A).removeClass(G.selected_class);G.selected=false};function D(){var H='<span class="'+G.label_class+'"'+(G.label_auto_width?"":('style="width:'+G.label_width+'px;"'))+">"+G.label+"</span>";var I='<span class="'+G.radio_class+(G.selected?(" "+G.selected_class):"")+'"/>';$(A).append(G.label_first?(H+I):(I+H)).click(function(){$("span:eq(1)",this).addClass(G.selected_class);G.selected=true;if(F.OnClick){F.OnClick(G.value)}}).hover(function(){if(G.selected){$("span:eq(1)",this).addClass(G.selected_hover_class)}else{$("span:eq(1)",this).addClass(G.radio_hover_class)}},function(){$("span:eq(1)",this).removeClass(G.radio_hover_class+" "+G.selected_hover_class)})}function C(){$.extend(true,G,B);F=F||{};D()}C()}}function g(){}function c(){g();$.extend(true,e,r);for(var t=0,s=e.structure.length;t<s;t++){e.structure[t]=$.extend(true,{},{label:"Label:",value:"",selected:false},e.structure[t])}k=k||{};$(a).addClass(d);l()}c()}function Form(b,q,l){var o=this;var f={structure:[],width:0,label_width:100};var e="form";var a=[];var k=[];var p=typeof(getdebug)!="undefined"?getdebug():function(){};var c=typeof(getinfo)!="undefined"?getinfo():function(){};var j=typeof(getwarn)!="undefined"?getwarn():function(){};var g=typeof(geterror)!="undefined"?geterror():function(){};this.GetValues=function(){var s={};for(var t=0,r=a.length;t<r;t++){s[a[t]]=k[t].GetValue()}return(s)};this.GetParams=function(){return(f)};this.GetContainerDOM=function(){return(b)};this.Destroy=function(){$(b).find("*").unbind().end().empty().removeClass("form")};function n(){var r=0;var C=0;if(parseInt(f.width)>0){$(b).width(parseInt(f.width))}for(var w=0,z=f.structure.length;w<z;w++){var D=f.structure[w];var y=D.label;var x=D.structure;$('<div class="label"/>').html(y).appendTo(b);for(var t=0,s=x.length;t<s;t++){var B=x[t];var A=B.required;var u=$('<div class="element"/>').appendTo(b);a.push(B.name);switch(B.type){case Form.TYPE_TEXTBOX:if(B.show_on_separate_line){r=f.width}else{r=f.width-f.label_width}k.push(new Textbox($(u).get(0),{structure:B.structure,multiline:B.multiline,row_size:B.row_size,label_width:B.label_width,input_width:r,show_on_separate_line:B.show_on_separate_line}));break;case Form.TYPE_RADIOGROUP:k.push(new RadioGroup($(u).get(0),{structure:B.structure,vertical_alignment:B.vertical_alignment,group_label:B.group_label,group_label_width:B.group_label_width,label_width:B.label_width,label_first:B.label_first}));break;case Form.TYPE_CHECKBOX:k.push(new CheckboxWidget($(u).get(0),{label:B.structure.label,value:B.structure.value,label_width:B.label_width}));break;default:}}if(w<z-1){$('<div class="spacer"/>').appendTo(b)}}}function h(){}function d(){var r={};var w={};var A={};h();$.extend(true,f,q);r={type:Form.TYPE_TEXTBOX,required:true,name:"textboxname",multiline:false,row_size:1,label_width:f.label_width,structure:{label:"Label:",overlay:"",value:""}};w={type:Form.TYPE_RADIOGROUP,required:true,name:"radiogroupname",structure:[],vertical_alignment:false,group_label:"Radio group:",group_label_width:f.group_label_width,label_width:f.label_width,label_first:true};A={type:Form.TYPE_CHECKBOX,required:true,name:"checkboxname",structure:{label:"Label:",value:true},label_width:f.label_width};for(var u=0,y=f.structure.length;u<y;u++){var x=f.structure[u].structure;for(var t=0,s=x.length;t<s;t++){var z=x[t];switch(z.type){case Form.TYPE_TEXTBOX:x[t]=$.extend(true,{},r,z);break;case Form.TYPE_RADIOGROUP:x[t]=$.extend(true,{},w,z);break;case Form.TYPE_CHECKBOX:x[t]=$.extend(true,{},A,z);break;default:}}}l=l||{};$(b).addClass("form");n()}d()}Form.TYPE_TEXTBOX=0;Form.TYPE_RADIOGROUP=1;Form.TYPE_CHECKBOX=2;function SlidingTextbox(a,p,j){var l=this;var e={label1:"",label2:"",textbox_width:150,container_clickable:true};var d="sliding_textbox";var n=typeof(getdebug)!="undefined"?getdebug():function(){};var b=typeof(getinfo)!="undefined"?getinfo():function(){};var h=typeof(getwarn)!="undefined"?getwarn():function(){};var f=typeof(geterror)!="undefined"?geterror():function(){};this.GetParams=function(){return(e)};this.GetContainerDOM=function(){return(a)};this.GetTextboxDOM=function(){return(o("input").get(0))};this.GetValue=function(){return(o("input").val())};this.Resize=function(r,q){};this.Destroy=function(){o().find("*").unbind().end().empty().removeClass(d)};function k(){o().addClass(d).append("<span></span><span><input /></span>");o("span").eq(0).text(e.label1);if(e.container_clickable){o().click(function(){o("input").val("").css({display:"block"}).animate({left:"0px",opacity:1},{duration:"normal",complete:function(){if(j.OnActivate){j.OnActivate.call(l)}}}).focus();o("span").eq(0).text(e.label2)})}else{o("span").eq(0).click(function(){o("input").val("").css({display:"block"}).animate({left:"0px",opacity:1},{duration:"normal",complete:function(){if(j.OnActivate){j.OnActivate.call(l)}}}).focus();$(this).text(e.label2)})}o("input").width(e.textbox_width).css({display:"none",left:-1*o("input").width(),opacity:0}).keypress(function(t){var r=true;var s=t.keyCode||t.which;switch(s){case 13:q(true);if(j.OnSubmit){j.OnSubmit.call(l,$(this).val())}break;case 27:$(this).blur();break;default:if(j.OnKeypress){r=j.OnKeypress.call(l,String.fromCharCode(s))}break}return(r)}).blur(function(){q()});function q(r){if(r){o("input").css({left:-1*o("input").width(),opacity:0,display:"none"})}else{o("input").animate({left:-1*o("input").width(),opacity:0},{duration:"normal",complete:function(){$(this).css({display:"none"})}})}o("span").eq(0).text(e.label1);if(j.OnCancel){j.OnCancel.call(l,$(this).val())}}}function g(){}function o(q){return(q===undefined?$(a):$(q,a))}function c(){g();$.extend(true,e,p);j=j||{};k()}c()}function Feedback(b,r,l){var p=this;var g={width:500,height:560,label_width:300,structure:[{label:"What do you think?",structure:[{type:Form.TYPE_RADIOGROUP,required:true,name:"fulfill_needs",group_label:"Does Chartastic fulfill your charting needs?",group_label_width:300,structure:[{label:"Yes",value:2,selected:true},{label:"Somewhat",value:1},{label:"No",value:0}]},{type:Form.TYPE_RADIOGROUP,required:true,name:"visually_appealing",group_label:"Is the site visually appealing?",group_label_width:300,structure:[{label:"Yes",value:2,selected:true},{label:"Somewhat",value:1},{label:"No",value:0}]},{type:Form.TYPE_RADIOGROUP,required:true,name:"recommend",group_label:"Would you recommend Chartastic to others?",group_label_width:300,structure:[{label:"Yes",value:2,selected:true},{label:"Somewhat",value:1},{label:"No",value:0}]}]},{label:"Features<br/>2 = Love it, 1 = It's ok, 0 = Needs improvement",structure:[{type:Form.TYPE_RADIOGROUP,required:true,name:"annotations",group_label:"Annotations:",group_label_width:300,structure:[{label:"2",value:2,selected:true},{label:"1",value:1},{label:"0",value:0}]},{type:Form.TYPE_RADIOGROUP,required:true,name:"chart_sharing",group_label:"Chart sharing:",group_label_width:300,structure:[{label:"2",value:2,selected:true},{label:"1",value:1},{label:"0",value:0}]},{type:Form.TYPE_RADIOGROUP,required:true,name:"chart_gallery",group_label:"Chart gallery:",group_label_width:300,structure:[{label:"2",value:2,selected:true},{label:"1",value:1},{label:"0",value:0}]},{type:Form.TYPE_RADIOGROUP,required:true,name:"pop_charts",group_label:"Pop charts:",group_label_width:300,structure:[{label:"2",value:2,selected:true},{label:"1",value:1},{label:"0",value:0}]}]},{label:"Ease of use<br/>2 = Easy!, 1 = Got it after a few tries, 0 = Confusing",structure:[{type:Form.TYPE_RADIOGROUP,required:true,name:"annotating_charts",group_label:"Annotating charts:",group_label_width:300,structure:[{label:"2",value:2,selected:true},{label:"1",value:1},{label:"0",value:0}]},{type:Form.TYPE_RADIOGROUP,required:true,name:"sharing_charts",group_label:"Sharing charts:",group_label_width:300,structure:[{label:"2",value:2,selected:true},{label:"1",value:1},{label:"0",value:0}]},{type:Form.TYPE_RADIOGROUP,required:true,name:"saving_annotations",group_label:"Saving annotations:",group_label_width:300,structure:[{label:"2",value:2,selected:true},{label:1,value:"1"},{label:"0",value:0}]}]},{label:"Share your thoughts!",structure:[{type:Form.TYPE_TEXTBOX,required:true,name:"thoughts",show_on_separate_line:true,multiline:true,row_size:6,structure:{label:"What else do you recommend?",overlay:"",value:""}},{type:Form.TYPE_TEXTBOX,required:true,name:"email",show_on_separate_line:false,structure:{label:"Your email:",overlay:"",value:""}}]}]};var f="feedback";var a="feedback_tab";var o=null;var d=null;var q=typeof(getdebug)!="undefined"?getdebug():function(){};var c=typeof(getinfo)!="undefined"?getinfo():function(){};var k=typeof(getwarn)!="undefined"?getwarn():function(){};var h=typeof(geterror)!="undefined"?geterror():function(){};this.Hide=function(){if(d){d.Destroy();d=null}o.Hide()};this.GetParams=function(){return(g)};this.GetContainerDOM=function(){return(b)};this.SetEmail=function(s){g.structure[3].structure[1].structure.value=s};this.Destroy=function(){if(d){d.Destroy();d=null}if(o){o.Destroy();o=null}$(b).find(a).remove();$(window).unbind("resize.feedback")};function n(){$("<div>").addClass(a).appendTo(b).click(function(){var t=null;o=s(b,f,g.width,g.height);t=o.GetDialogDOM();d=new Form($("div:first-child",t).get(0),{structure:g.structure,width:g.width,label_width:g.label_width});$('<div class="submit_cancel"><span>Submit</span> | <span>Cancel</span></div>').appendTo(t).find("span").eq(0).addClass("submit").click(function(){if(l.OnSubmit){l.OnSubmit.call(p,d.GetValues())}}).end().end().find("span").eq(1).addClass("cancel").click(function(){if(l.OnCancel){l.OnCancel.call(p)}})});function s(w,A,z,u){var x=null;var y=new Dialog(w,{markup:"<div/>",modal:false,vertical_align:"40%",backdrop:{color:"#000000"}},{OnResize:function(C,B){x.Resize(C,B)},OnShow:t});x=new Border(y.GetDialogDOM(),{classname:"thin_border_white_fg",offset:{left:20,right:20,top:18,bottom:18}});$(y.GetDialogDOM()).css({backgroundColor:"white"});y.Resize(z,u);y.Show();$(y.GetDialogDOM()).addClass(A);$(window).bind("resize.feedback",t);function t(){if(u>$(window).height()){var B=$(window).height()-$(".submit_cancel",y.GetDialogDOM()).height()-40;if(B<40){B=40}$(".form",y.GetDialogDOM()).height(B).width(z+20);y.Resize(z+20,$(window).height()-40)}else{$(".form",y.GetDialogDOM()).height("").width("");y.Resize(z,u)}}return(y)}}function j(){}function e(){j();$.extend(true,g,r);l=l||{};n()}e()}function Toast_Manager(a,l,h){var j=this;var d={max_visible_messages:3,lifespan:3000,show_speed:800,hide_speed:2000,opacity:0.85};var n=null;var k=typeof(getdebug)!="undefined"?getdebug():function(){};var b=typeof(getinfo)!="undefined"?getinfo():function(){};var g=typeof(getwarn)!="undefined"?getwarn():function(){};var e=typeof(geterror)!="undefined"?geterror():function(){};this.ShowNotice=function(o){if(n){n.Update(o)}else{n=new Toast(a,$.extend(true,{message:o},d),{OnHide:function(){n=null}})}};this.GetParams=function(){return(d)};this.GetContainerDOM=function(){return(a)};function f(){}function c(){f();$.extend(true,d,l);h=h||{}}c()}function Toast(l,e,u){var t=this;var r={message:"Toast!",max_visible_messages:3,lifespan:3000,scale_lifespan:true,show_speed:1000,hide_speed:2000,opacity:0.85,font_scaling:false};var s="toast";var o=null;var g=null;var p="";var q=[];var j="";var k=2;var b=typeof(getdebug)!="undefined"?getdebug():function(){};var d=typeof(getinfo)!="undefined"?getinfo():function(){};var c=typeof(getwarn)!="undefined"?getwarn():function(){};var f=typeof(geterror)!="undefined"?geterror():function(){};this.Hide=function(){if(o){o.Hide()}else{}};this.Update=function(y){if(o){var z=null;var x=0;p=a(y);x=q.length<=r.max_visible_messages?q.length:r.max_visible_messages;clearTimeout(g);o.UpdateMarkup(p);border=new Border(o.GetDialogDOM(),{classname:"thin_border_black_fg",offset:{left:20,right:20,top:18,bottom:18},opacity:r.opacity});z=GetStringDimensions(o.GetDialogDOM(),j,true);o.Resize(z.width,z.height*x);o.Show();g=setTimeout(function(){t.Hide()},r.lifespan+x*k)}else{}};this.GetParams=function(){return(r)};this.GetContainerDOM=function(){return(l)};this.Destroy=function(){if(o){o.Destroy();o=null}};OnHide=function(){if(u.OnHide){u.OnHide.call(t)}};function a(C){var z='<div style="position:absolute; opacity: '+r.opacity+'; background-color: black; width:100%; height:100%;"/>';var A=1;var y=$("."+s,l).css("font-size");y=y==undefined?0:parseInt(y);if(C.length>=j.length){j=C}q.splice(0,0,C);for(var B=0,x=q.length;B<r.max_visible_messages&&B<x;B++){if(y){y-=2}A=1-B/r.max_visible_messages;z+='<div style="position:relative; width:100%; opacity:'+A+"; font-size:"+(y&&r.font_scaling?(y+"px"):"inherit")+'">'+q[B]+"</div>"}return(z)}function h(){p=a(r.message);o=x(l,s,r.message,1,p,r.opacity,r.show_speed,r.hide_speed,OnHide);g=setTimeout(function(){t.Hide()},r.lifespan);function x(z,C,K,y,J,G,B,E,I){var D=null;var F=null;var A=0;var H=new Dialog(z,{markup:J,modal:false,vertical_align:"40%",backdrop:{enable:false},show_speed:B,hide_speed:E},{OnResize:function(M,L){D.Resize(M,L)},OnHide:I});D=new Border(H.GetDialogDOM(),{classname:"thin_border_black_fg",offset:{left:20,right:20,top:18,bottom:18},opacity:G});F=GetStringDimensions(H.GetDialogDOM(),K,true);H.Resize(F.width,F.height*y);H.Show();$(H.GetDialogDOM()).addClass(C);return(H)}}function n(){}function w(){n();$.extend(true,r,e);u=u||{};h()}w()}function MenuBar(a,d){var e=[];var h={};var c=-1;var b=0;var g=false;$.each(d,function(){k(this)});$.each(e,function(){b+=this.obj.Width()});this.ShowMenus=function(){if(!g){return}$(".m",a).css("visibility","visible").show();g=false};this.HideMenus=function(l){if(g){return}if(l){$(".m",a).css("visibility","hidden").show()}else{$(".m",a).fadeOut(250,function(){if(g){$(this).css("visibility","hidden").show()}else{$(this).show()}})}g=true};this.Resize=function(){var l=$(a).width();$(".m-spacer",a).remove();if(b>l){while(b>l&&e[h[c+1]]){f(e[h[++c]])}}else{while(e[h[c]]&&b+e[h[c]].fullWidth-e[h[c]].obj.Width()<l){j(e[h[c--]])}}if(l>b){$(".m-right:first",a).before($("<div/>").addClass("m-spacer").html(" ").width(l-b))}};this.GetParams=function(){var l=[];$.each(e,function(){l.push(this.obj.GetParams())});return l};this.GetMenu=function(l){if(l<e.length){return e[l].obj}else{return undefined}};this.Destroy=function(){$.each(e,function(l,n){n.obj.Destroy();delete n.obj;$(n.elem).remove()});e.length=0;return this};function k(l){var o=$("<div/>").addClass(l.align=="right"?"m m-right":"m").appendTo(a).get(0);var n=undefined;if(l.collapseOrder!=undefined){h[l.collapseOrder]=e.length;l.options.dropDown=false}n=new Menu(o,l.options,l.menuItems,l.callback);e.push({elem:o,obj:n,fullWidth:n.Width(),items:l.menuItems,callback:l.callback})}function f(n){var l=n.obj.GetParams();l.dropDown=true;n.obj.Destroy();delete n.obj;n.obj=new Menu(n.elem,l,n.items,n.callback);b=b-n.fullWidth+n.obj.Width()}function j(n){var l=n.obj.GetParams();l.dropDown=false;b=b-n.obj.Width()+n.fullWidth;n.obj.Destroy();delete n.obj;n.obj=new Menu(n.elem,l,n.items,n.callback)}this.Resize();$(a).height($(a).height())}function Menu(q,g,r,h){var y={version:1,label:"",selectStyle:Menu.SELECTSTYLE.SINGLESELECT,dropDown:false};$.extend(true,y,g);var A=[];var s=undefined;var z=undefined;var b=y.selectStyle==Menu.SELECTSTYLE.SINGLESELECT?"m-item-single":"m-item-mult";var p=b+"Sel";var d=typeof(getdebug)!="undefined"?getdebug():function(){};var f=typeof(getinfo)!="undefined"?getinfo():function(){};var e=typeof(getwarn)!="undefined"?getwarn():function(){};var n=typeof(geterror)!="undefined"?geterror():function(){};if(y.version!=1){}$(q).addClass("m");q=$("<div/>").appendTo(q).get(0);$.each(r,function(){a(this)});if(g&&g.p){for(var x=0;x<g.p.length;x++){for(var u=0;u<A.length;u++){if(A[u].value==g.p[x].v){A[u].selected=g.p[x].s?true:false;if(A[u].submenu&&g.p[x].b){A[u].submenu.SetValues(g.p[x].b)}break}}}}if(y.dropDown){z=o(y.label+" <small>&#9660;</small>");$(q).append(z).one("click",t);s=$("<div/>").addClass("m-dropdown").appendTo(q).hide().get(0);$.each(A,function(j,B){B.elem=$("<div/>").addClass(b).html(B.name).appendTo(s).click(c).get(0)})}else{$.each(A,function(j){var B;if(this.style){B=$("<div/>").addClass(this.style).html(this.name||"").get(0)}else{B=o(this.name,this.tip);if(j){$(B).addClass("button-collapse-left")}if(j+1<A.length){$(B).addClass("button-collapse-right")}}this.elem=$(B).appendTo(q).mousedown(c).get(0)})}w();if(y.dropDown){function k(j,C){var B=$.grep(A,function(D){return(D.elem==j.target)})[0];l.call(j,B.value,B.selected,C)}$.each(A,function(j,B){$(B.elem).hoverIntent(function(C){k(C,true)},function(C){k(C,false)})})}this.GetParams=function(){var j={};j.p=new Array();$.each(A,function(){if(!this.selected){return}var B={v:this.value,s:this.selected?1:0};if(this.submenu){B.b=this.submenu.GetValues()}j.p.push(B)});return j};this.Width=function(){return $(q).width()};this.Select=function(j){$.each(A,function(B,C){if(C.value==j){$(C.elem).mousedown();return false}})};this.SelectNone=function(){$.each(A,function(j,B){B.selected=false});w()};this.Destroy=function(){$.each(A,function(j,B){if(B.elem){$(B.elem).unbind().remove()}delete B.submenu});A.length=0;$(q).parent().removeClass("m");$(q).remove();return this};function o(B,j){return $("<div/>").addClass("button").hover(function(){$(this).addClass("button-hover")},function(){$(this).removeClass("button-hover")}).html('<div class="button-outter"><div class="button-inner"><div class="button-pos"><div class="button-top-shadow"> </div><div class="button-content" title="'+(j||"")+'">'+B+"</div></div></div><div/>").get(0)}function t(){$(z).addClass("button-selected");$.each(A,function(C,D){if(D.submenu){D.submenu.Init(s,function(){if(D.selected&&h){h.call(null,D.value,D.selected,D.submenu.GetValues())}})}});if($(q).css("margin-left")=="auto"){var j=0}else{var j=$(q).css("margin-left").replace("px","")*1}var B=$(q).position();$(s).css("top",$(z).height()).css("left",B.left+j).slideDown(200,function(){$(this).dropShadow();$("body").one("click",function(C){$(z).removeClass("button-selected");$.each(A,function(D,E){if(E.submenu){$(E.submenu.DeInit().Elem()).unbind().removeShadow().remove()}});$(s).removeShadow().slideUp(200,function(){$(q).one("click",t)})})})}function a(B){if(!B.name&&!B.style){return}if(y.selectStyle==Menu.SELECTSTYLE.NOSELECT){B.selected=false}if(y.dropDown&&B.style){if(!B.name){B.name=B.style}delete B.style}var j={name:B.name,style:B.style,value:(B.value!=undefined?B.value:(B.name||B.style)),selected:B.selected||false,tip:B.tip,submenu:(B.submenuoptions==undefined?undefined:new SubMenu(B.submenuoptions))};if(y.selectStyle!=Menu.SELECTSTYLE.MULTISELECT&&j.selected){$.each(A,function(){if(this.selected){this.selected=false}})}return A.push(j)}function c(j){var C=this;var B=$.grep(A,function(D){return(D.elem==C)})[0];j.preventDefault();j.stopPropagation();if(y.selectStyle==Menu.SELECTSTYLE.NOSELECT){B.selected=true;w();$(C).one("mouseup",function(){B.selected=false;w();if(h){h.call(null,B.value,B.selected,B.submenu?B.submenu.GetValues():undefined)}})}else{if(y.selectStyle==Menu.SELECTSTYLE.MULTISELECT){B.selected=!B.selected}else{B.selected=true;$.each(A,function(D,E){if(E!=B&&E.selected){E.selected=false}});if(y.dropDown){$("body").click()}}w();if(h){h.call(null,B.value,B.selected,B.submenu?B.submenu.GetValues():undefined)}}}function l(B,D,G){var C=$.grep(A,function(J){return(J.value==B)})[0];if(G){var H=$(this.target).position();var F={direction:"left"};$.each(A,function(J,K){if(K!=C&&K.submenu){$(K.submenu.Elem()).removeShadow().hide()}});if(C.submenu){var I=$(q).find(".m-dropdown");var E=I.width()+H.left;if(I.offset().left+I.width()+$(C.submenu.Elem()).width()>$(window).width()){E=-$(C.submenu.Elem()).outerWidth();F.direction="right"}var j=$(C.submenu.Elem()).css("top",H.top).css("left",E).hover(function(){C.submenu.stayOpen=true},function(){C.submenu.stayOpen=false});if(j.is(":hidden")){j.effect("slide",F,150,function(){$(this).dropShadow()})}}}else{if(C.submenu&&!C.submenu.stayOpen){$(C.submenu.Elem()).removeShadow().hide()}}}function w(){if(y.dropDown){$.each(A,function(B,C){if(C.selected){$(C.elem).removeClass(b).addClass(p)}else{$(C.elem).removeClass(p).addClass(b)}});if(y.label==""&&!(y.selectStyle==Menu.SELECTSTYLE.MULTISELECT)){for(var j=0;j<A.length;j++){if(A[j].selected){$(z).find(".button-content").html(A[j].name+" <small>&#9660;</small>")}}}}else{$.each(A,function(){var B=this.style?this.style+"-selected":"button-selected";if(this.selected){$(this.elem).addClass(B)}else{$(this.elem).removeClass(B)}})}}}Menu.SELECTSTYLE={NOSELECT:0,SINGLESELECT:1,MULTISELECT:2};function SubMenu(f){var k=undefined;var c=undefined;this.Init=function(n,l){c=$("<div/>").addClass("submenu").click(function(o){o.stopPropagation()}).appendTo(n).hide().get(0);$.each(f,function(o,p){a(p)});d();k=l;return this};this.DeInit=function(){$.each(f,function(l,n){h(n)});return this};this.GetValues=function(){return g()};this.SetValues=function(l){while(f.length<l.length){f.push(f[0].Clone())}$.each(f,function(n,o){o.SetValue(l[n])})};this.Elem=function(){return c};function a(o,n){o.Init(j);var l=$("<div/>").append(o.GetWrapper()).addClass("subitem");if($(c).find(".subitemAdd").size()){l.insertBefore($(c).find(".subitemAdd").get(0)).hide()}else{l.appendTo(c).hide()}if(n){l.slideDown(300,function(){$(c).redrawShadow()})}else{l.show()}$(c).find(".subitem").slice(1).addClass("subitemN");return l.get(0)}function h(o,n){$(c).removeShadow();var p=$(o.GetWrapper()).parent();if(n){p.slideUp(300,function(){l();d();$(c).dropShadow()})}else{l()}function l(){o.DeInit();p.remove()}}function d(){var l=$(c).find(".subitem");var n=(/chrome/.test(navigator.userAgent.toLowerCase()))?"15px":"-10px";l.find(".subitemRemove").unbind().remove();l.slice(0,1).removeClass("subitemN");if(l.size()>1&&f[0].AllowMultiple()){l.append($("<div/>").addClass("subitemRemove").css("top",n));l.find(".subitemRemove").click(function(p){var o=$(p.target).siblings().get(0);$.each(f,function(q){if(o==this.GetWrapper()){f.splice(q,1);h(this,true);b();return false}})});if(l.size()>=5){$(c).find(".subitemAdd").unbind().remove()}}if(f.length<5&&f[0].AllowMultiple()&&!$(c).find(".subitemAdd").size()){$("<div/>").addClass("subitemAdd").append("Add").click(function(){var o=f[f.length-1].Clone();f.push(o);a(o,true);d();b()}).appendTo(c)}}function g(){var l=Array();$.each(f,function(n,o){l=l.concat(o.GetValue())});return l}function j(l){if(l=="ok"){b()}else{if(l=="cancel"){e()}}}function b(){$.each(f,function(l,n){n.Capture()});if(k){k.call(null,g())}}function e(){$.each(f,function(l,n){n.Reset()})}}function NumColorOption(b,q,n){var l=undefined;var e=undefined;var c=undefined;var k;var g=new Array("#0000ff","#00ff00","#ff0000","#990000","#33ccff","#339900");var p=undefined;var f=false;var h=b;q=q||false;n=n||"Period";for(var o in b){f=b[o].period=="";break}this.Init=function(r){p=r;l=$("<input/>").css("text-align","center").width(50).click(j).keypress(j).focus(function(s){j(s);$(this).select()}).get(0);e=$("<div/>").get(0);c=$("<div/>").addClass("m-ie-hack").append(n+": ").append(l).append("<br/>").append(e).get(0);$(e).colorPicker({color:g,click:function(s){k=s}});d();$(c).find(".jColorSelect").click(function(){a("ok")});return this};this.DeInit=function(){$(l).remove();$(c).empty().remove();return this};this.GetWrapper=function(){return c};this.AllowMultiple=function(){return q};this.GetValue=function(){for(var s in b){if(b[s].period==""){var r={};r[s]="";return r}else{return b}}};this.SetValue=function(s){for(var r in s){if(s[r]==""){b=h}else{b=s}break}};this.Capture=function(){for(var r in b){if($(l).val()||f){b[r].period=$(l).val()}else{$(l).val(b[r].period)}b[r].color=k.substring(1);break}};this.Reset=d;this.Clone=function(){var s=$.extend(true,{},b);for(var r in b){s[r].period=parseInt(s[r].period)+10;s[r].color=g[($.inArray("#"+b[r].color,g)+1)%g.length].substring(1);break}return new NumColorOption(s,q)};function j(r){if(r&&r.keyCode==27){$(r.target).removeClass("m-edit");a("cancel")}else{if(r&&r.keyCode==13){r.stopPropagation();$(r.target).removeClass("m-edit");a("ok")}else{$(r.target).addClass("m-edit")}}}function a(r){if(p){p.call(null,r)}}function d(){for(var r in b){$(l).removeClass("m-edit").blur().val(b[r].period);$(".jColorSelect",e).children().filter(function(){return rgb2hex($(this).css("background-color")).toLowerCase()=="#"+b[r].color.toLowerCase()}).click();break}}}function NumOption(b,k,l){var g=undefined;var c=undefined;var n=undefined;k=k||"Num:";if(!l){for(var f in b){for(var e in b[f]){l=e;break}}}this.Init=function(j){n=j;for(var o in b){g=$("<input/>").css("text-align","center").width(50).val(b[o][l]).click(h).keypress(h).focus(function(p){h(p);$(this).select()}).get(0);c=$("<div/>").css("textAlign","right").css("display","block").append(k).append(g).get(0);break}return this};this.DeInit=function(){$(g).remove();$(c).remove();return this};this.GetWrapper=function(){return c};this.AllowMultiple=function(){return false};this.GetValue=function(){return b};this.SetValue=function(j){b=j};this.Capture=function(){for(var j in b){b[j][l]=$(g).val();break}d()};this.Reset=d;function h(j){if(j&&j.keyCode==27){$(j.target).removeClass("m-edit");a("cancel")}else{if(j&&j.keyCode==13){j.stopPropagation();$(j.target).removeClass("m-edit");a("ok")}else{$(j.target).addClass("m-edit")}}}function a(j){if(n){n.call(null,j)}}function d(){for(var j in b){$(g).removeClass("m-edit").blur().val(b[j][l]);break}}}function MacdOption(d){var b=[{label:"Fast: ",prop:"fast"},{label:"Slow: ",prop:"slow"},{label:"Trig: ",prop:"trig"}];var c=undefined;this.Init=function(e){c=$("<span/>").get(0);$.each(b,function(f,g){g.obj=new NumOption(d,g.label,g.prop).Init(e);$(c).append(g.obj.GetWrapper())});return this};this.DeInit=function(){$.each(b,function(){this.obj.DeInit()});$(c).remove()};this.GetWrapper=function(){return c};this.AllowMultiple=function(){return false};this.GetValue=function(){return d};this.SetValue=function(e){d=e};this.Capture=function(){$.each(b,function(e,f){f.obj.Capture()});a()};this.Reset=a;function a(){$.each(b,function(e,f){f.obj.Reset()})}}function StoOption(d){var b=[{label:"K Period: ",prop:"window"},{label:"D Period: ",prop:"d"}];var c=undefined;this.Init=function(e){c=$("<span/>").get(0);$.each(b,function(f,g){g.obj=new NumOption(d,g.label,g.prop).Init(e);$(c).append(g.obj.GetWrapper())});return this};this.DeInit=function(){$.each(b,function(){this.obj.DeInit()});$(c).remove()};this.GetWrapper=function(){return c};this.AllowMultiple=function(){return false};this.GetValue=function(){return d};this.SetValue=function(e){d=e};this.Capture=function(){$.each(b,function(e,f){f.obj.Capture()});a()};this.Reset=a;function a(){$.each(b,function(e,f){f.obj.Reset()})}}function RadioOption(c,a){var b=undefined;this.Init=function(d){b=$('<div class="m-radio-wrap"/>').get(0);for(var e in c){var f=c[e].value;break}$.each(a,function(){$('<span class="m-radio"/>').addClass(f==this.value?"m-radio-sel":"m-radio-unsel").append(this.label).attr("value",this.value).click(function(){$(b).find(".m-radio-sel").removeClass("m-radio-sel");$(this).addClass("m-radio-sel");if(d){d.call(null,"ok")}}).appendTo(b)})};this.DeInit=function(){$(b).remove()};this.GetWrapper=function(){return b};this.AllowMultiple=function(){return false};this.GetValue=function(){return c};this.SetValue=function(d){c=d};this.Capture=function(){for(var d in c){c[d].value=$(b).find(".m-radio-sel").attr("value");break}};this.Reset=function(){$(b).find(".m-radio-sel").removeClass("m-radio-sel");for(var d in c){$(b).find(".m-radio").each(function(){if(this.value==c[d].value){$(this).addClass("m-radio-sel");return false}});break}}}function TooltipWidget(c,a,b){this.params={delay:c?400:0,position:TooltipWidget.POSITION.DEFAULT,offsetX:0,offsetY:24,text:""};$.extend(true,this.params,a);this.callbacks=b||{};this.$target=c?$(c):undefined;this.timer=undefined;this.$t=undefined;this.Init()}TooltipWidget.POSITION={DEFAULT:0,FOLLOWMOUSE:1,STATIC:2};TooltipWidget.prototype.Show=function(){var a=this;clearTimeout(this.timer);this.timer=setTimeout(function(){if($.browser.msie){a.$t.filter(":hidden").show()}else{a.$t.filter(":hidden").fadeIn(200)}},this.params.delay)};TooltipWidget.prototype.Hide=function(){clearTimeout(this.timer);if($.browser.msie){this.$t.hide()}else{this.$t.fadeOut(200)}};TooltipWidget.prototype.MoveTo=function(a,b){this.$t.css({top:b+this.params.offsetY,left:a+this.params.offsetX})};TooltipWidget.prototype.Text=function(a){if(a){this.UpdateText(a)}return this.params.text};TooltipWidget.prototype.Width=function(){return this.$t.width()};TooltipWidget.prototype.Height=function(){return this.$t.height()};TooltipWidget.prototype.Destroy=function(){clearTimeout(this.timer);this.$t.remove();if(this.$target){this.$target.unbind("mouseenter mouseleave").unbind("mousemove.tt")}};TooltipWidget.prototype.UpdateText=function(a){this.params.text=a;$(".tt-inner",this.$t).html(this.params.text);$(".tt-t",this.$t).width(Math.max(0,this.$t.width()-28));$(".tt-b",this.$t).width(Math.max(0,this.$t.width()-28));$(".tt-l",this.$t).height(this.$t.height()-28);$(".tt-r",this.$t).height(this.$t.height()-28)};TooltipWidget.prototype.Init=function(){var b=this;var a=[];a.push('<div class="tt-ul"/><div class="tt-t"/><div class="tt-ur"/>');a.push('<div class="tt-l"/><div class="tt-r"/>');a.push('<div class="tt-ll"/><div class="tt-b"/><div class="tt-lr"/>');a.push('<div class="tt-inner"/>');this.$t=$("<div/>").addClass("tt").css("opacity",($.browser.msie?"":"0.95")).html(a.join("")).appendTo("body").hide();if(this.$target){this.$target.hover(d,c);this.$t.hover(function(f){clearTimeout(this.timer)},function(f){this.timer=setTimeout(function(){b.HideTooltip.call(b)},10)}).bind("mousemove.tt",function(f){var g=b.$target.offset();if(g.top<=f.pageY&&f.pageY<=g.top+b.$target.outerHeight()&&g.left<=f.pageX&&f.pageX<=g.left+b.$target.outerWidth()){b.$target.trigger("mousemove.tt",f)}else{b.HideTooltip()}})}function d(f){b.UpdateText(b.params.text);b.StartTracking(f);b.$target.bind("mousemove.tt",function(g){b.StartTracking.call(b,g)})}function c(f){clearTimeout(b.timer);b.timer=setTimeout(function(){b.HideTooltip.call(b)},10)}};TooltipWidget.prototype.StartTracking=function(b){clearTimeout(this.timer);if(!this.callbacks){}if(this.callbacks.mousemove){var c=this.$target.offset();this.UpdateText(this.callbacks.mousemove.call(this,b.pageX-c.left,b.pageY-c.top))}if(this.$t.is(":visible")){if(this.params.position==TooltipWidget.POSITION.FOLLOWMOUSE){this.MoveTo(b.pageX,b.pageY)}}else{var a=this;this.timer=setTimeout(function(){if(a.params.position==TooltipWidget.POSITION.STATIC){var e=a.$target.offset();var d={top:e.top+a.params.offsetY,left:e.left+a.params.offsetX}}else{var d={top:b.pageY+a.params.offsetY,left:b.pageX+a.params.offsetX}}a.$t.css(d);if($.browser.msie){a.$t.filter(":hidden").show()}else{a.$t.filter(":hidden").fadeIn(200)}},this.params.delay)}};TooltipWidget.prototype.HideTooltip=function(){if(this.$target){this.$target.unbind("mousemove.tt",this.StartTracking)}clearTimeout(this.timer);this.timer=undefined;this.Hide()};function AnnotateWidget(r,e,K){var I=this;var G={width:500,height:300,startActive:false,showTooltips:false,showDisableBtn:true};$.extend(true,G,e);K=K||{};var F=undefined;var s=undefined;var f=undefined;var u={};var d=undefined;var o="line";var a={};var h=G.startActive?AnnotateWidget.STATE.ACTIVE:AnnotateWidget.STATE.INACTIVE;var p=undefined;var g=undefined;var x=true;L();this.EnableDraw=function(){h=AnnotateWidget.STATE.ACTIVE;w(true);s.EnableCallbacks();y(o)};this.DisableDraw=function(){h=AnnotateWidget.STATE.INACTIVE;s.Erase();p=undefined;w(false);s.DisableCallbacks();y();z();if(K.disable){K.disable()}};this.Enabled=function(){return h!=AnnotateWidget.STATE.INACTIVE};this.Erase=function(){F.Reset();s.Reset();p=undefined};this.GetParams=function(){G.canvas=F.GetParams();return G};this.Retool=function(t){if(t&&typeof t=="function"){var c=[];while(poptool=F.Pop()){c.push(t(poptool))}F.Erase();F.Push(c);s.Erase();p=undefined}};this.Resizing=function(c,t){if($.browser.msie){this.Resize(c,t)}else{G.width=c;G.height=t;$(r).width(c).height(t);F.Resizing(c,t);s.Resizing(c,t);f.Resize()}};this.Resize=function(c,t){G.width=c;G.height=t;F.Resize(c,t);s.Resize(c,t);p=undefined;f.Resize()};this.Width=function(){return G.width};this.Height=function(){return G.height};this.DataUrl=function(){return F.DataUrl()};this.Destroy=function(){w(false);f.Destroy();$(".an-m",r).remove();F.Destroy();s.Destroy();$(r).css("position","").width("").height("");if(g){g.Destroy()}y();if(K.disable){K.disable()}};function L(){$(r).css("position","relative").width(G.width).height(G.height);if(!window.Jaxer){C()}q();if(h==AnnotateWidget.STATE.INACTIVE){w(false,true);s.DisableCallbacks()}if(G.showTooltips){g=new TooltipWidget(undefined,{delay:50,offsetX:10})}}function C(){var t=[{name:"Trend",value:"line",style:"an-m-line",selected:true},{name:"H Line",value:"hline",style:"an-m-hline"},{name:"V Line",value:"vline",style:"an-m-vline"},{name:"Arrow",value:"arrow",style:"an-m-arrow"}];var c=[{style:"an-m-white",value:"#fff"},{style:"an-m-teal",value:"#0ff"},{style:"an-m-purple",value:"#f0f"},{style:"an-m-blue",value:"#00f"},{style:"an-m-ltgray",value:"#ccc"},{style:"an-m-dkgray",value:"#888"},{style:"an-m-dkteal",value:"#088"},{style:"an-m-dkpurple",value:"#808"},{style:"an-m-dkblue",value:"#008"},{style:"an-m-yellow",value:"#ff0"},{style:"an-m-green",value:"#0f0"},{style:"an-m-dkyellow",value:"#880"},{style:"an-m-dkgreen",value:"#080"},{style:"an-m-red",value:"#f00"},{style:"an-m-dkred",value:"#800"},{style:"an-m-black",value:"#000",selected:true}];var P=[{name:"Thin",value:1,style:"an-m-thin"},{name:"Thick",value:2,style:"an-m-thick",selected:true}];var Q=[{options:{},menuItems:t,callback:D},{options:{},menuItems:c,callback:E},{options:{},menuItems:P,callback:B}];var M=$("<div/>").addClass("an-m").appendTo(r);var N=$("<div/>").addClass("an-m-top").appendTo(M).html("Draw");if(G.showDisableBtn){$("<div/>").addClass("an-m-close").click(n).appendTo(N.css("text-align","left"))}var O=$(r).width()+40;if(O+M.width()>=$(window).width()){O-=M.width()}M.draggable({start:function(){$(".an-m",r).removeShadow()},stop:function(){$(".an-m",r).dropShadow()}}).css({top:0,left:O});f=new MenuBar($("<div/>").addClass("an-m-wrap").appendTo(M),Q);u.color=f.GetMenu(1);u.width=f.GetMenu(2);M.dropShadow()}function q(){var t={width:G.width,height:G.height,zIndex:2};var c={mousedown:J,mousemove:b,mouseup:j,mouseout:H,keydown:l};s=new Canvas(r,t,c);if(G.canvas){t=$.extend(true,{},G.canvas,t);delete G.canvas}t.zIndex=1;F=new Canvas(r,t)}function w(c,t){var M=$(".an-m",r);if(t){if(c){M.filter(":hidden").show().dropShadow()}else{M.removeShadow().hide()}}else{if(c){M.filter(":hidden").slideDown(200,function(){$(this).dropShadow()})}else{M.removeShadow();M.slideUp(200)}}return c}function D(c){o=c}function E(c){a.color=c;if(p&&p.Color){p.Color(c);F.ReDraw();s.Erase();p.Hover(s.Context())}}function B(c){a.width=c;if(p&&p.Width){p.Width(c);F.ReDraw();s.Erase();p.Hover(s.Context())}}function n(c){I.DisableDraw()}function J(c){if(h!=AnnotateWidget.STATE.INACTIVE){this.stopPropagation();$(window).focus()}switch(h){case AnnotateWidget.STATE.SELECTED:p=undefined;case AnnotateWidget.STATE.ACTIVE:if(x&&(p=F.HitTest(c))){h=AnnotateWidget.STATE.DRAGGING;if(p.Color){u.color.Select(p.Color())}if(p.Width){u.width.Select(p.Width())}F.Pop(p);s.Erase();p.Draw(s.Context());p.Hover(s.Context());p.StartDrag(c)}else{h=AnnotateWidget.STATE.DRAWING;s.Erase();d=ToolFactory.Create(o,a);d.StartDraw(c);d.Draw(s.Context())}break}}function b(c){switch(h){case AnnotateWidget.STATE.SELECTED:s.Erase();if(p){p.Hover(s.Context())}if(hoverTool=F.HitTest(c)){if(hoverTool!=p){hoverTool.Hover(s.Context())}k(this.pageX,this.pageY,hoverTool.Type(),c);y()}else{z();y(o)}break;case AnnotateWidget.STATE.ACTIVE:s.Erase();if(p=F.HitTest(c)){p.Hover(s.Context());k(this.pageX,this.pageY,p.Type(),c);y()}else{z();y(o)}break;case AnnotateWidget.STATE.DRAGGING:p.DragTo(c);s.Erase();p.Draw(s.Context());p.Hover(s.Context());k(this.pageX,this.pageY,p.Type(),c);y("move");break;case AnnotateWidget.STATE.DRAWING:d.Drawing(c);s.Erase();d.Draw(s.Context());k(this.pageX,this.pageY,d.Type(),c);y(d.Type());break}x=true}function j(c){if(h!=AnnotateWidget.STATE.INACTIVE){this.stopPropagation()}switch(h){case AnnotateWidget.STATE.DRAGGING:h=AnnotateWidget.STATE.SELECTED;if(K.drag){K.drag(p)}F.Push(p);s.Erase();p.Hover(s.Context());y();break;case AnnotateWidget.STATE.DRAWING:h=AnnotateWidget.STATE.ACTIVE;if(d.EndDraw(c)){if(K.draw){K.draw(d)}F.Push(d);s.Erase()}delete d;x=false;break;case AnnotateWidget.STATE.SELECTED:h=AnnotateWidget.STATE.ACTIVE;y(o);break}}function H(){z()}function l(c){if(c==46){if(h==AnnotateWidget.STATE.SELECTED){h=AnnotateWidget.STATE.ACTIVE}if(h==AnnotateWidget.STATE.ACTIVE&&p){F.Pop(p);s.Erase();p=undefined}}}function A(c,t){switch(c){case"line":return"("+t.x+", "+t.y+")";case"hline":return"(y = "+t.y+")";case"vline":return"(x = "+t.x+")"}return undefined}function k(c,O,M,t){if(g){var N=K.tiptext?K.tiptext(M,t):A(M,t);if(N&&N.length){if(c&&O){g.MoveTo(c,O)}g.Text(N);g.Show()}}}function z(){if(g){g.Hide()}}function y(c){$(r).removeClass("line hline vline arrow move");$(r).addClass(c)}}AnnotateWidget.STATE={ACTIVE:0,INACTIVE:1,DRAWING:2,DRAGGING:3,SELECTED:4};function Canvas(g,n,s){var r=this;var j={width:500,height:300,zIndex:0};$.extend(true,j,n);var a=undefined;var k=undefined;var d=[];var e=false;this.GetParams=function(){var p=$.extend(true,{},j);p.toolpack=[];$.each(d,function(){p.toolpack.push({type:this.Type(),params:this.GetParams()})});return p};this.Context=function(){return k};this.Push=function(p){if(p.length){$.each(p,function(){d.push(this);this.Draw(k)})}else{if(p.length===undefined){d.push(p);p.Draw(k)}}};this.Pop=function(p){if(p){$.each(d,function(w){if(this==p){d.splice(w,1);r.ReDraw();return}})}else{if(d.length){return d.pop()}else{return false}}};this.Erase=function(){k.clearRect(0,0,j.width,j.height)};this.HitTest=function(x){for(var w=d.length-1;w>=0;w--){if(d[w].HitTest(x)){return d[w]}}return false};this.ReDraw=function(){this.Erase();$.each(d,function(){this.Draw(k)})};this.Reset=function(){this.Erase();while(d.length){delete d.pop()}};this.Resizing=function(p,x){a.width(p).height(x);n.width=p;n.height=x};this.Resize=function(C,A){var B=j.width;var p=j.height;var D=d.slice();this.Erase();a.remove();d=[];j.width=C;j.height=A;u();for(var z=0;z<D.length;z++){var x=D[z].GetParams();for(var y=0;y<x.path.length;y++){var E=x.path[y];x.path[y]={x:E.x*C/B,y:E.y*A/p}}this.Push(ToolFactory.Create(D[z].Type(),x))}D=[]};this.DisableCallbacks=function(){e=false};this.EnableCallbacks=function(){e=true};this.DataUrl=function(){var p=a.get(0);return p.toDataURL?p.toDataURL():""};this.Destroy=function(){a.unbind().remove();$(document).unbind("keydown",f)};u();function u(){if(j.toolpack){$.each(j.toolpack,function(){d.push(ToolFactory.Create(this.type,this.params))});delete j.toolpack}a=$(l(j.width,j.height)).appendTo(g).css({position:"absolute",top:0,left:0,"z-index":j.zIndex});k=a.get(0).getContext("2d");r.ReDraw();h()}function l(x,p){var w=document.createElement("canvas");w.width=x;w.height=p;if($.browser.msie){w=G_vmlCanvasManager.initElement(w)}return w}function h(){if(s){if(s.mousedown){a.bind("mousedown.canvas",t)}if(s.mousemove){a.bind("mousemove.canvas",b)}if(s.mouseup){a.bind("mouseup.canvas",c)}if(s.mouseout){a.bind("mouseout.canvas",q)}if(s.keydown){$(document).bind("keydown.canvas",f)}e=true}}function o(p){var w=a.offset();return{x:p.pageX-w.left,y:p.pageY-w.top}}function t(p){p.preventDefault();if(e){s.mousedown.call(p,o(p))}$(document).one("mouseup.canvas",c);$(document).bind("mousemove.canvas",function(w){w.preventDefault()})}function b(p){p.preventDefault();if(e){s.mousemove.call(p,o(p))}}function c(p){if(e){s.mouseup.call(p,o(p))}$(document).unbind("mouseup.canvas",c).unbind("mousemove.canvas");$(document).trigger("mouseup.canvas",p)}function q(p){if(e){s.mouseout.call(p,o(p))}}function f(p){if(e){s.keydown.call(p,p.which)}}}ToolFactory={Create:function(a,b){switch(a){case"line":return new LineTool(b);case"hline":return new HorizontalLineTool(b);case"vline":return new VerticalLineTool(b);case"arrow":return new ArrowTool(b)}return false}};function LineTool(e){var h={color:"#000",width:2,path:[]};$.extend(true,h,e);var g=false;var f=0;var d=undefined;var c=false;a();this.Type=function(){return"line"};this.GetParams=function(){return h};this.SetData=function(j){h.data=j};this.GetData=function(){return h.data};this.Color=function(j){if(j){h.color=j}return h.color};this.Width=function(j){if(j){h.width=j}return h.width};this.StartDraw=function(j){g=true;h.path[0]=j};this.Drawing=function(j){if(g){h.path[1]=j}};this.EndDraw=function(j){if(g){g=false;if(h.path.length==2){a();if(f<=3){return false}return true}else{return false}}return false};this.HitTest=function(n){var j=h.path[0],l=h.path[1];if(Math.min(j.x,l.x)<=n.x&&n.x<=Math.max(j.x,l.x)&&Math.min(j.y,l.y)<=n.y&&n.y<=Math.max(j.y,l.y)){var k=parseInt(j.x-l.x)*parseInt(n.y-l.y)-parseInt(j.y-l.y)*parseInt(n.x-l.x);if(Math.abs(k)<=f*3){return this}}if(b(n,h.path[0])||b(n,h.path[1])){return this}return false};this.Draw=function(j){if(h.path.length==2){j.strokeStyle=h.color;j.lineWidth=h.width;j.beginPath();j.moveTo(h.path[0].x,h.path[0].y);j.lineTo(h.path[1].x,h.path[1].y);j.stroke()}};this.Hover=function(j){if(h.path.length==2){j.shadowBlur=6;j.shadowOffsetX=0;j.shadowOffsetY=0;j.shadowColor="rgba(0,0,0,1)";this.Draw(j);j.lineWidth=1;j.fillStyle="#FFFF00";j.strokeStyle="#BB0000";j.shadowBlur=0;j.shadowColor=0;j.beginPath();j.arc(h.path[0].x,h.path[0].y,4,0,2*Math.PI,false);j.fill();j.beginPath();j.arc(h.path[0].x,h.path[0].y,4,0,2*Math.PI,false);j.stroke();j.beginPath();j.arc(h.path[1].x,h.path[1].y,4,0,2*Math.PI,false);j.fill();j.beginPath();j.arc(h.path[1].x,h.path[1].y,4,0,2*Math.PI,false);j.stroke()}};this.StartDrag=function(j){if(b(j,h.path[0])){c=0}else{if(b(j,h.path[1])){c=1}else{c=false;d=j}}};this.DragTo=function(l){if(h.path.length){if(c!==false){h.path[c]=l;a()}else{var k=l.x-d.x;var j=l.y-d.y;d=l;h.path[0].x+=k;h.path[0].y+=j;h.path[1].x+=k;h.path[1].y+=j}}};function b(k,j){return j.x-4<=k.x&&k.x<=j.x+4&&j.y-4<=k.y&&k.y<=j.y+4}function a(){if(h.path.length==2){var k=h.path[0].x-h.path[1].x;var j=h.path[0].y-h.path[1].y;f=Math.sqrt(k*k+j*j)||1}}}function HorizontalLineTool(a){var c={color:"#000",width:2,path:[]};$.extend(true,c,a);var b=false;this.Type=function(){return"hline"};this.GetParams=function(){return c};this.SetData=function(d){c.data=d};this.GetData=function(){return c.data};this.Color=function(d){if(d){c.color=d}return c.color};this.Width=function(d){if(d){c.width=d}return c.width};this.StartDraw=function(d){b=true};this.Drawing=function(d){if(b){c.path[0]=d}};this.EndDraw=function(d){if(b){b=false;if(c.path.length){return true}else{return false}}return false};this.HitTest=function(e){var d=c.path[0];if(d.y-3<=e.y&&e.y<=d.y+2){return this}return false};this.Draw=function(d){if(c.path.length){d.strokeStyle=c.color;d.lineWidth=c.width;d.beginPath();d.moveTo(0,c.path[0].y);d.lineTo(d.canvas.width,c.path[0].y);d.stroke()}};this.Hover=function(d){if(c.path.length){d.shadowBlur=6;d.shadowOffsetX=0;d.shadowOffsetY=0;d.shadowColor="rgba(0,0,0,1)";this.Draw(d);d.lineWidth=1;d.fillStyle="#FFFF00";d.strokeStyle="#BB0000";d.shadowBlur=0;d.shadowColor=0;d.beginPath();d.arc(0,c.path[0].y,4,0,2*Math.PI,false);d.fill();d.beginPath();d.arc(0,c.path[0].y,4,0,2*Math.PI,false);d.stroke();d.beginPath();d.arc(d.canvas.width,c.path[0].y,4,0,2*Math.PI,false);d.fill();d.beginPath();d.arc(d.canvas.width,c.path[0].y,4,0,2*Math.PI,false);d.stroke()}};this.StartDrag=function(d){};this.DragTo=function(e){if(c.path.length){var d=e.y-c.path[0].y;c.path[0].y+=d}}}function VerticalLineTool(a){var c={color:"#000",width:2,path:[]};$.extend(true,c,a);var b=false;this.Type=function(){return"vline"};this.GetParams=function(){return c};this.SetData=function(d){c.data=d};this.GetData=function(){return c.data};this.Color=function(d){if(d){c.color=d}return c.color};this.Width=function(d){if(d){c.width=d}return c.width};this.StartDraw=function(d){b=true};this.Drawing=function(d){if(b){c.path[0]=d}};this.EndDraw=function(d){if(b){b=false;if(c.path.length){return true}else{return false}}return false};this.HitTest=function(e){var d=c.path[0];if(d.x-3<=e.x&&e.x<=d.x+2){return this}return false};this.Draw=function(d){if(c.path.length){d.strokeStyle=c.color;d.lineWidth=c.width;d.beginPath();d.moveTo(c.path[0].x,0);d.lineTo(c.path[0].x,d.canvas.height);d.stroke()}};this.Hover=function(d){if(c.path.length){d.shadowBlur=6;d.shadowOffsetX=0;d.shadowOffsetY=0;d.shadowColor="rgba(0,0,0,1)";this.Draw(d);d.lineWidth=1;d.fillStyle="#FFFF00";d.strokeStyle="#BB0000";d.shadowBlur=0;d.shadowColor=0;d.beginPath();d.arc(c.path[0].x,0,4,0,2*Math.PI,false);d.fill();d.beginPath();d.arc(c.path[0].x,0,4,0,2*Math.PI,false);d.stroke();d.beginPath();d.arc(c.path[0].x,d.canvas.height,4,0,2*Math.PI,false);d.fill();d.beginPath();d.arc(c.path[0].x,d.canvas.height,4,0,2*Math.PI,false);d.stroke()}};this.StartDrag=function(d){};this.DragTo=function(e){if(c.path.length){var d=e.x-c.path[0].x;c.path[0].x+=d}}}function ArrowTool(e){var h={color:"#000",width:2,path:[]};$.extend(true,h,e);var g=false;var f=0;var d=undefined;var c=false;a();this.Type=function(){return"arrow"};this.GetParams=function(){return h};this.SetData=function(j){h.data=j};this.GetData=function(){return h.data};this.Color=function(j){if(j){h.color=j}return h.color};this.Width=function(j){if(j){h.width=j}return h.width};this.StartDraw=function(j){g=true;h.path[0]=j};this.Drawing=function(j){if(g){h.path[1]=j}};this.EndDraw=function(j){if(g){g=false;if(h.path.length==2){a();if(f<=3){return false}return true}else{return false}}return false};this.HitTest=function(n){var j=h.path[0],l=h.path[1];if(Math.min(j.x,l.x)<=n.x&&n.x<=Math.max(j.x,l.x)&&Math.min(j.y,l.y)<=n.y&&n.y<=Math.max(j.y,l.y)){var k=parseInt(j.x-l.x)*parseInt(n.y-l.y)-parseInt(j.y-l.y)*parseInt(n.x-l.x);if(Math.abs(k)<=f*3){return this}}if(b(n,h.path[0])||b(n,h.path[1])){return this}return false};this.Draw=function(n){if(h.path.length==2){n.strokeStyle=h.color;n.fillStyle=h.color;n.lineWidth=h.width;n.beginPath();n.moveTo(h.path[0].x,h.path[0].y);n.lineTo(h.path[1].x,h.path[1].y);n.stroke();n.lineWidth=h.width;n.beginPath();var l=Math.atan((h.path[1].y-h.path[0].y)/(h.path[1].x-h.path[0].x));var k=0.52;var j=12;n.moveTo(h.path[1].x,h.path[1].y);if(h.path[1].x>=h.path[0].x){n.lineTo(h.path[1].x-j*Math.cos(k-l),h.path[1].y+j*Math.sin(k-l));n.lineTo(h.path[1].x-j*Math.sin(Math.PI/2-l-k),h.path[1].y-j*Math.cos(Math.PI/2-l-k))}else{n.lineTo(h.path[1].x+j*Math.cos(k-l),h.path[1].y-j*Math.sin(k-l));n.lineTo(h.path[1].x+j*Math.sin(Math.PI/2-l-k),h.path[1].y+j*Math.cos(Math.PI/2-l-k))}n.fill()}};this.Hover=function(n){if(h.path.length==2){n.shadowBlur=6;n.shadowOffsetX=0;n.shadowOffsetY=0;n.shadowColor="rgba(0,0,0,1)";this.Draw(n);n.lineWidth=1;n.fillStyle="#FFFF00";n.strokeStyle="#BB0000";n.shadowBlur=0;n.shadowColor=0;n.beginPath();n.arc(h.path[0].x,h.path[0].y,4,0,2*Math.PI,false);n.fill();n.beginPath();n.arc(h.path[0].x,h.path[0].y,4,0,2*Math.PI,false);n.stroke();n.beginPath();var l=Math.atan((h.path[1].y-h.path[0].y)/(h.path[1].x-h.path[0].x));var k=0.52;var j=12;n.moveTo(h.path[1].x,h.path[1].y);if(h.path[1].x>=h.path[0].x){n.lineTo(h.path[1].x-j*Math.cos(k-l),h.path[1].y+j*Math.sin(k-l));n.lineTo(h.path[1].x-j*Math.sin(Math.PI/2-l-k),h.path[1].y-j*Math.cos(Math.PI/2-l-k))}else{n.lineTo(h.path[1].x+j*Math.cos(k-l),h.path[1].y-j*Math.sin(k-l));n.lineTo(h.path[1].x+j*Math.sin(Math.PI/2-l-k),h.path[1].y+j*Math.cos(Math.PI/2-l-k))}n.fill();n.moveTo(h.path[1].x,h.path[1].y);if(h.path[1].x>=h.path[0].x){n.lineTo(h.path[1].x-j*Math.cos(k-l),h.path[1].y+j*Math.sin(k-l));n.lineTo(h.path[1].x-j*Math.sin(Math.PI/2-l-k),h.path[1].y-j*Math.cos(Math.PI/2-l-k))}else{n.lineTo(h.path[1].x+j*Math.cos(k-l),h.path[1].y-j*Math.sin(k-l));n.lineTo(h.path[1].x+j*Math.sin(Math.PI/2-l-k),h.path[1].y+j*Math.cos(Math.PI/2-l-k))}n.lineTo(h.path[1].x,h.path[1].y);n.stroke()}};this.StartDrag=function(j){if(b(j,h.path[0])){c=0}else{if(b(j,h.path[1])){c=1}else{c=false;d=j}}};this.DragTo=function(l){if(h.path.length){if(c!==false){h.path[c]=l;a()}else{var k=l.x-d.x;var j=l.y-d.y;d=l;h.path[0].x+=k;h.path[0].y+=j;h.path[1].x+=k;h.path[1].y+=j}}};function b(k,j){return j.x-4<=k.x&&k.x<=j.x+4&&j.y-4<=k.y&&k.y<=j.y+4}function a(){if(h.path.length==2){var k=h.path[0].x-h.path[1].x;var j=h.path[0].y-h.path[1].y;f=Math.sqrt(k*k+j*j)||1}}}function RangeToDates(b){var a=new Date();switch(b){case"1d":return a._toString();case"5d":a.setDate(a.getDate()-4);break;case"1m":a.setMonth(a.getMonth()-1);break;case"3m":a.setMonth(a.getMonth()-3);break;case"6m":a.setMonth(a.getMonth()-6);break;case"YTD":a.setDate(1);a.setMonth(0);break;case"1y":a.setFullYear(a.getFullYear()-1);break;case"2y":a.setFullYear(a.getFullYear()-2);break;case"5y":a.setFullYear(a.getFullYear()-5);break;case"10y":a.setFullYear(a.getFullYear()-10);break;default:return}return a._toString()}function ChartControl(I,A,k){var u=this;var c={version:1,width:850,height:495,menuStyle:ChartControl.MENUSTYLE.NORMAL,hideOverview:false,hideHoverQuotes:false,autoUpdate:true,autoCreate:true,constrain:true,annotate:false,startAnnotating:false,userDrawControl:false,mutualFund:false,noIndicators:false,download:true,chart:{ct:Chart.TYPE.CANDLESTICK,cs:Chart.SCALE.LOGARITHMIC,cp:Chart.PERIOD.DAILY,cd:"6m",plf:"003333",vol:"0",vlul:"505050",vldl:"C04048",vla:"60",bgf:"C0F0F8:F8FCFC:90",bgr:"1:15",lgr:"1:10"},overview:{},timeMenu:{},typeMenu:{},periodMenu:{},scaleMenu:{},overlayMenu:{label:"Indicators",selectStyle:Menu.SELECTSTYLE.MULTISELECT,dropDown:true},systemMenu:{selectStyle:Menu.SELECTSTYLE.NOSELECT}};var N=undefined;var U=undefined;var W=undefined;var p=undefined;var J=undefined;var z=0;var s={retry:[],resetCount:5,count:0,timer:0};var X=false;var C=typeof(getdebug)!="undefined"?getdebug():function(){};var n=typeof(getinfo)!="undefined"?getinfo():function(){};var D=typeof(getwarn)!="undefined"?getwarn():function(){};var H=typeof(geterror)!="undefined"?geterror():function(){};e(A);$(I).width(c.width).height(c.height).css("position","relative");var F=$("<div/>").html('<img src="'+ChartControl.api_prefix+'images/logo_spinner.gif"/>').css({position:"absolute",top:"45%",zIndex:-1}).appendTo(I).hide();F.css("left",c.width/2-F.width()/2).show();this.Create=function(){if(U){return}function af(ah,ai){$.each(this,function(){if(this[ah]==ai){this.selected=true}})}if(c.menuStyle!=ChartControl.MENUSTYLE.NONE){var ac=[{name:"1m"},{name:"3m"},{name:"6m"},{name:"YTD"},{name:"1y"},{name:"2y"},{name:"5y"},{name:"10y"}];var ae=[{name:"Line",value:Chart.TYPE.LINE},{name:"OHLC",value:Chart.TYPE.OHLC},{name:"Candlestick",value:Chart.TYPE.CANDLESTICK},{name:"Mountain",value:Chart.TYPE.MOUNTAIN}];var ab=[{name:"Daily",value:0},{name:"Weekly",value:1},{name:"Monthly",value:3}];var ag=[{name:"Linear",value:0},{name:"Log",value:1},{name:"Percent",value:2}];var Y=[{name:"VOL - Volume",value:5,submenuoptions:[new RadioOption({vol:{value:c.chart.vol||0}},[{label:"Overlay",value:0},{label:"Separate",value:1}]),new NumColorOption({vlema:{period:"",color:"ff0000"}},false,"EMA Period")],selected:!!c.chart.vol},{name:"SMA - Simple Moving Average",value:0,submenuoptions:[new NumColorOption({plsma:{period:50,color:"0000ff"}},true)]},{name:"EMA - Exponential Moving Average",value:1,submenuoptions:[new NumColorOption({plema:{period:20,color:"00ff00"}},true)]},{name:"BOL - Bollinger Bands",value:2,submenuoptions:[new NumColorOption({bol:{period:20,color:"ff0000"}})]},{name:"RSI - Relative Strength Index",value:3,submenuoptions:[new NumOption({rsi:{period:14}},"Period: ")]},{name:"MACD - Moving Average Convergence/Divergence",value:4,submenuoptions:[new MacdOption({macd:{fast:12,slow:26,trig:9}})]},{name:"Fast STO - Fast Stochastic Oscillator",value:6,submenuoptions:[new StoOption({fsto:{window:14,d:3}})]},{name:"Slow STO - Slow Stochastic Oscillator",value:7,submenuoptions:[new StoOption({ssto:{window:14,d:3}})]},{name:"Williams %R",value:8,submenuoptions:[new NumOption({willr:{window:14}},"Period: ")]}];var ad=[];if(c.mutualFund){ae.splice(1,2);Y.splice(0,1)}af.call(ac,"name",c.chart.cd);af.call(ae,"value",c.chart.ct);af.call(ab,"value",c.chart.cp);af.call(ag,"value",c.chart.cs);if((c.annotate&&c.userDrawControl)||k.draw){ad.push({name:'<div class="cc-icon">Draw</div>',value:"Draw",tip:"Annotate this chart"})}if(c.download){ad.push({name:'<div class="cc-download"/>',value:"Download",tip:"Save this chart to your computer"})}if(k.popout){ad.push({name:'<div class="cc-pop"/>',value:"Pop",tip:"Open this chart in a new window"})}if(k.close){ad.push({name:"X",tip:"Close"})}var Z=[{options:c.timeMenu,menuItems:ac,callback:R,collapseOrder:3},{options:c.typeMenu,menuItems:ae,callback:g,collapseOrder:2},{options:c.periodMenu,menuItems:ab,callback:M,collapseOrder:1},{options:c.scaleMenu,menuItems:ag,callback:V,collapseOrder:0},{options:c.overlayMenu,menuItems:Y,callback:f}];if(ad.length){Z.push({options:c.systemMenu,menuItems:ad,callback:O,align:"right"})}N=new MenuBar($("<div/>").addClass("menuBar").appendTo(I).get(0),Z);N.HideMenus(true)}$("<div/>").addClass("mainChart").css("position","relative").appendTo(I);G();U=new Chart($(I).find(".mainChart").get(0),c.chart,{load:r,display:r,error:r},true);if(!c.hideOverview){if(c.chart.cd.indexOf(":")==-1){c.overview.selBegin=new Date()._parse(RangeToDates(c.chart.cd))._toString();c.overview.selEnd=new Date()._toString()}else{var aa=c.chart.cd.split(":");c.overview.selBegin=new Date()._parseEng(aa[0])._toString();c.overview.selEnd=new Date()._parseEng(aa[1])._toString()}W=new OverviewChart($("<div/>").addClass("overview").appendTo(I).get(0),c.overview,R)}K();if(c.menuStyle==ChartControl.MENUSTYLE.AUTOHIDE){$(I).hover(y,w)}};this.Resizing=function(Y,Z){var ab=Y/c.width;var aa=Z/c.height;$(I).height(Z).width(Y);c.width=Y;c.height=Z;G(true);if(F){F.css("left",Y/2-F.width()/2)}if(U){U.Resizing(c.chart.cw,c.chart.ch)}if(p){p.Resizing(parseInt(p.Width()*ab),parseInt(p.Height()*aa))}if(N){N.Resize()}if(W){W.Resizing(c.overview.chart.cw,c.overview.chart.ch)}};this.GetContainerDOM=function(){return(I)};this.GetMainChartDOM=function(){return($(".mainChart",I).get(0))};this.GetMainChartImg=function(){return($(".mainChart",I).find("img").get(0))};this.Resize=function(Y,Z){var ab=Y/c.width;var aa=Z/c.height;$(I).height(Z).width(Y);c.width=Y;c.height=Z;G();if(F){F.css("left",Y/2-F.width()/2)}if(J){J.Hide()}if(U){U.Resize(c.chart.cw,c.chart.ch)}if(p){p.Resize(parseInt(p.Width()*ab),parseInt(p.Height()*aa))}if(N){N.Resize()}if(W){W.Resize(c.overview.chart.cw,c.overview.chart.ch)}T()};this.DragStart=function(){$("body").click()};this.GetParams=function(){var Z=$.extend(true,{},c);if(U){Z.chart=U.GetParams()}if(N){var Y=N.GetParams();Z.timeMenu=Y[0];Z.typeMenu=Y[1];Z.periodMenu=Y[2];Z.scaleMenu=Y[3];Z.overlayMenu=Y[4]}if(W){Z.overview=W.GetParams()}if(p){Z.annotation=p.GetParams()}return Z};this.GetParamsStatic=function(){var Y=$.extend(true,{},u.GetParams());var Z=u.GetDates();Y.chart.cd=Z[0]._toEngString()+":"+Z[1]._toEngString();delete Y.timeMenu;return Y};this.UpdateParams=function(Y){if(Y){e(Y)}};this.Refresh=function(){if(s.retry.length==0){if(U){U.Invalidate().Update();K()}}};this.GetDates=function(){if(!U){return false}var aa=U.GetParams().cd.split(":");if(aa.length==2){var Z=new Date()._parseEng(aa[0]);var Y=new Date()._parseEng(aa[1])}else{var Z=new Date()._parse(RangeToDates(aa[0]));var Y=new Date()}return[Z,Y]};this.GetAnnotationDates=function(){if(!U||!p){return false}var ab,Y;p.Retool(function(ad){var ac=ad.GetData();$.each(ac,function(){var ae=ParseDateTime(this.datetime).getTime();if(!ab||ae<ab){ab=ae}if(!Y||ae>Y){Y=ae}});return ad});if(!ab||!Y){return false}var Z=new Date(),aa=new Date();Z.setTime(ab);aa.setTime(Y);return[Z,aa]};this.AnnotateEnable=function(){if(p){t();p.EnableDraw()}};this.AnnotateDisable=function(){if(p){if(p.Enabled()){p.DisableDraw()}}};this.AnnotationErase=function(){if(p){p.Erase()}};this.AnnotationLoad=function(Y){if(p){p.Destroy();a(Y);o()}};this.Download=function(){$('<form id="cc-dlform" method="post" action="'+ChartControl.api_prefix+'php/api/chart/download.php"><input type="hidden" name="chart_params"/><input type="hidden" name="anno_params"/></form>').appendTo(I);$("input[name=chart_params]",I).val($.compactJSON(c.chart));if(p){$("input[name=anno_params]",I).val($.compactJSON(p.GetParams()))}$("#cc-dlform").submit().remove()};this.Destroy=function(){if(X){return}clearTimeout(z);x(false);if(p){p.Destroy();delete p;$(".annotate",I).empty().remove()}if(W){W.Destroy();delete W;$(I).find(".overview").unbind().remove()}if(U){U.Destroy();delete U;$(I).find(".mainChart").unbind().remove()}if(N){N.Destroy();delete N;$(I).find(".menuBar").unbind().remove()}t();$(I).unbind("mouseover",y).unbind("mouseout",w);X=true};function e(aa){$.extend(true,c,aa);if(c.version!=1){}if(c.noIndicators){for(var Z in c.chart){if(Chart.IsIndicator(Z,c.chart[Z])){delete c.chart[Z]}}}var Y=$.extend(true,{},c.chart);c.overview.chart=Y;k=k||{};if(c.mutualFund){if(c.chart.ct==Chart.TYPE.CANDLESTICK||c.chart.ct==Chart.TYPE.OHLC){c.chart.ct=Chart.TYPE.LINE}delete c.chart.vol}}function P(){if(J){return}J=new TooltipWidget();$(".mainChart",I).bind("mouseout",true,b).bind("mousemove",b)}function t(){if(J){J.Destroy();J=undefined;$(".mainchart",I).unbind("mouseout",b).unbind("mousemove",b)}}function K(){if(c.hideHoverQuotes&&!c.annotate){if(!c.autoUpdate){return}else{var aa={symbol:c.chart.s,period:c.chart.cp}}}else{var aa={symbol:c.chart.s,period:c.chart.cp,cols:"c,v"};if(c.chart.cd.indexOf(":")==-1){aa.desc=c.chart.cd}else{var Z=c.chart.cd.split(":");aa.desc=new Date()._parseEng(Z[0])._toString();aa.edge=new Date()._parseEng(Z[1])._toString()}}clearTimeout(z);T();window.ajax.put("php/api/data/quote.php",aa,{error:Y,success:function(ab){if(X){return}if(ab.status===0){if(c.autoUpdate){if(ab.wait!=undefined&&ab.wait>=0){if(ab.wait==0){ab.wait=10*60}ab.wait+=5;z=setTimeout(function(){U.Invalidate().Update();K()},ab.wait*1000)}else{}}else{if(!ab.wait){ab.wait=10*60}z=setTimeout(function(){U.Invalidate()},ab.wait*1000)}if(!c.hideHoverQuotes||c.annotate){t();U.meta.quotes=ab.quotes;if(!c.hideHoverQuotes){if(!p||(p&&!p.Enabled())){P()}}}x(true);o()}else{}}});function Y(){if(X){return}d(function(){U.Invalidate().Update();K()})}}function T(Y){if(c.annotate&&!U.allQuotes){window.ajax.put("php/api/data/quote.php",{symbol:c.chart.s,period:c.chart.cp,cols:"",desc:"40y"},{success:function(Z){if(X){return}U.allQuotes=Z.quotes}})}window.ajax.put("php/api/chart/meta.php",U.GetParams(),{success:function(aa){if(X){return}if(aa){var Z=!U.meta||(U.meta.plotWidth!=aa.message.plotWidth||U.meta.plotHeight!=aa.message.plotHeight);if(U.meta){$.extend(true,U.meta,aa.message)}else{U.meta=aa.message}if(c.annotate){if(!p){$("<div/>").addClass("annotate").css({position:"absolute",top:U.meta.plotY,left:U.meta.plotX}).appendTo($(".mainChart",I).get(0)).append("<div/>").get(0);a(c.annotation);delete c.annotation}else{if(Z){p.Resize(U.meta.plotWidth,U.meta.plotHeight)}}}if(Y){Y()}}}})}function a(aa){var Y={showTooltips:true};if(aa){$.extend(true,Y,aa)}var Z={height:U.meta.plotHeight,width:U.meta.plotWidth,startActive:c.startAnnotating,showDisableBtn:c.userDrawControl};$.extend(true,Y,Z);p=new AnnotateWidget($(".annotate",I).children().get(0),Y,{tiptext:L,draw:j,drag:j,disable:function(){if(!c.hideHoverQuotes){P()}}})}function o(){if(p&&!U.allQuotes){window.ajax.put("php/api/data/quote.php",{symbol:c.chart.s,period:c.chart.cp,cols:"",desc:"40y"},{success:function(Y){if(X){return}U.allQuotes=Y.quotes;o()}});return}if(p){p.Retool(function(aa){var ab=aa.GetParams();var Z=aa.GetData();var Y=aa.Type();delete aa;$.each(ab.path,function(ac){ab.path[ac]={x:E(ParseDateTime(Z[ac].datetime)),y:B(Z[ac].price)}});return ToolFactory.Create(Y,ab)})}}function L(Z,ad){var ab=Z=="line"?"Trendline":Z=="hline"?"Horizontal":Z=="vline"?"Vertical":Z=="arrow"?"Arrow":"";var Y='<img src="images/'+Z+'.png" height="16"/> <b>'+ab+"</b><br/>";var ac=q(ad.x);var aa=S(ad.y);if(ac&&Z!="hline"){Y+=FormatDateTime(ac)+"<br/>"}if(aa&&Z!="vline"){Y+="Price: "+FormatPrice(aa)}return Y}function j(Y){h(Y);Q()}function h(Y){var aa=Y.GetParams().path;var Z=[];$.each(aa,function(){Z.push({datetime:DateTimeToString(q(this.x)),price:S(this.y)})});Y.SetData(Z)}function q(Y){var ac=U.meta;if(!ac||!ac.quotes){return false}var Z=ac.plotWidth/ac.quotes.length;var ab=ac.quotes.length-1-parseInt(Y/Z);if(ab>=ac.quotes.length){ab+=l(U.allQuotes,ParseDateTime(ac.quotes[0].time));if(ab<U.allQuotes.length){aa=U.allQuotes[ab]}else{aa=U.allQuotes[U.allQuotes.length-1]}}else{if(ab<0){ab+=l(U.allQuotes,ParseDateTime(ac.quotes[0].time));if(ab>=0){aa=U.allQuotes[ab]}else{var ad=ParseDateTime(U.allQuotes[0].time);ad.setDate(ad.getDate()-parseInt(ab*7/5));return ad}}else{var aa=ac.quotes[ab==-1?ab=0:ab]}}if(aa){return ParseDateTime(aa.time)}return false}function E(ad){var ab=U.meta;var Z=U.allQuotes;var ac=l(Z,ParseDateTime(ab.quotes[0].time));var aa=l(Z,ad);if(aa===false){return 0}var Y=ab.plotWidth/ab.quotes.length;return Math.round(Y*(ab.quotes.length-1-(aa-ac))+Y/2)}function l(Y,ad){var ab=ParseDateTime(Y[Y.length-1].time).getTime();var Z=ParseDateTime(Y[0].time).getTime();var aa=ad.getTime();if(aa<ab){aa=ab}else{if(aa>Z){return -parseInt((aa-Z)/(1000*60*60*24)*5/7)}}var ac=Y.length-1-parseInt((Y.length-1)*(aa-ab)/(Z-ab));if(ParseDateTime(Y[ac].time).getTime()<aa){for(ac--;ac>=0;ac--){if(ParseDateTime(Y[ac].time).getTime()>aa){return ac+1}}}else{for(;ac<Y.length;ac++){if(ParseDateTime(Y[ac].time).getTime()<=aa){return ac}}}return false}function S(af){var ad=U.meta;if(ad){var Z=ad.plotMin;var Y=ad.plotMax;if(U.GetParams().cs==Chart.SCALE.LOGARITHMIC){var ae=Math.log(Z+1);var ac=Math.log(Y+1);var ab=ac-ae;var aa=ad.plotHeight-1;return Math.exp(ab*(aa-af)/aa+ae)-1}else{return Y-((Y-Z)*(af/ad.plotHeight))}}return false}function B(ac){var ad=U.meta;var Z=ad.plotMin;var Y=ad.plotMax;if(U.GetParams().cs==Chart.SCALE.LOGARITHMIC){var ae=Math.log(Z+1);var ab=Math.log(Y+1);var aa=ab-ae;return ad.plotHeight-Math.round((Math.log(ac+1)-ae)*ad.plotHeight/aa)}else{return ad.plotHeight-Math.round((ac-Z)*ad.plotHeight/(Y-Z))}}function d(Y){if(s.retry.indexOf(Y)<0){s.retry.push(Y)}if(!$(I).find(".error").size()){s.count=s.resetCount;var Z=$("<div/>").addClass("error").html(aa()).appendTo(I);Z.css({position:"absolute",top:$(I).find(".mainChart").position().top+10,left:$(I).width()/2-Z.width()/2,opacity:0.8}).hide().fadeIn(250);s.timer=setInterval(function(){s.count--;$(I).find(".error").html(aa());if(s.count<=0){clearInterval(s.timer);s.resetCount*=2;if(s.resetCount>15*60){s.resetCount=15*60}$(I).find(".error").fadeOut(250,function(){$(this).remove()});var ab;while(ab=s.retry.pop()){ab.call()}}},1000)}function aa(){return"! Connection trouble. Retrying in "+(s.count>60?parseInt(s.count/60)+"m ":"")+(s.count%60)+"s..."}}function x(Z){clearInterval(s.timer);$(I).find(".error").remove();s.resetCount=5;if(Z){for(var Y=0;Y<s.retry.length;Y++){s.retry[Y].call()}}s.retry.length=0}function b(Z){if(!J){return}if(U.hitTest(Z.pageX,Z.pageY)&&!Z.data&&U.meta){var ae=U.meta.plotWidth/U.meta.quotes.length;var ag=U.meta.quotes.length-1-parseInt((Z.pageX-U.offset().left-U.meta.plotX)/ae);var Y=U.meta.quotes[ag==-1?ag=0:ag];if(Y){var aa=ParseDateTime(Y.time);var ad=ag<U.meta.quotes.length-1?U.meta.quotes[ag+1]:undefined;var ab=ad?Math.round(10000*(Y.close-ad.close)/ad.close)/100:undefined;var af=(FormatDateTime(aa))+"<br/>Price: "+Y.close+(ab?(' <span class="'+(ab>0?"pos_change":"neg_change")+'">('+FormatPercent(ab)+")</span>"):"")+(Y.volume==0?"":("<br/>Volume: "+FormatBigInt(Y.volume)));var ac=Z.pageX;J.Text(af);if(ac+J.Width()>$(window).width()){ac-=J.Width()-12}J.MoveTo(ac,Z.pageY);J.Show()}}else{J.Hide()}}function y(){if(N){N.ShowMenus()}}function w(){if(N){N.HideMenus()}}function G(Y){var ac=c.menuStyle==ChartControl.MENUSTYLE.NONE?0:$(I).find(".menuBar").height();var ab=4+(c.hideOverview?0:1)+Chart.NumIndicators(c.chart);var Z=15*(Chart.NumIndicators(c.chart)-1);var aa=(Chart.NumIndicators(c.chart)&&!c.hideOverview)?15:0;if(Z<0){Z=0}if(Y){c.chart.cw=c.width;c.chart.ch=Math.round((c.height-ac-aa)*(1-(c.hideOverview?0:1/ab)))}else{c.chart.cw=c.width;c.chart.ch=Math.round((c.height-ac-aa-Z)*4/ab);$(I).find(".mainChart").css({marginBottom:aa})}if(c.hideOverview){c.overview.chart.ch=c.overview.chart.cw=0}else{c.overview.chart.ch=Math.round((c.height-ac-aa)*1/ab);c.overview.chart.cw=c.chart.cw-80}$(".mainChart",I).height(c.height-ac-aa-c.overview.chart.ch)}function R(Z,ab){if(Z==undefined){d(this.Refresh)}else{if(ab.length==undefined){if(Z=="YTD"){var aa=new Date()._parse(RangeToDates(Z));var Y=new Date();U.SetParam("cd",aa._toEngString()+":"+Y._toEngString()).Update()}else{U.SetParam("cd",Z).Update()}if(W){W.Select(RangeToDates(Z),new Date()._toString())}K()}else{var aa=new Date()._parse(Z);var Y=new Date()._parse(ab);U.SetParam("cd",aa._toEngString()+":"+Y._toEngString()).Update();K();if(N){N.GetMenu(0).SelectNone()}}}Q()}function g(Y){if(Y==Chart.TYPE.MOUNTAIN){U.SetParams({ct:Y,pla:"6f",pldc:"000000"}).Update()}else{U.SetParams({ct:Y,pla:"ff",pldc:""}).Update()}T(o);Q()}function V(Y){U.SetParam("cs",Y).Update();T(o);Q()}function M(Y){U.SetParam("cp",Y).Update();if(p){window.ajax.put("php/api/data/quote.php",{symbol:c.chart.s,period:c.chart.cp,desc:"40y"},{success:function(Z){if(X){return}U.allQuotes=Z.quotes}})}K();Q()}function f(ae,ac,Z){Z=Z||[ae];if(Z){var ab=U.NumIndicators();for(var ad in Z[0]){U.SetParam(ad,"");break}for(var aa=0;aa<Z.length;aa++){if(ac){for(var ad in Z[aa]){var ae="";for(var Y in Z[aa][ad]){ae+=ae==""?Z[aa][ad][Y]:":"+Z[aa][ad][Y]}U.SetParam(ad,ae)}}}if(c.constrain){G();if(ab!=U.NumIndicators()){T()}if(W){W.Resize(c.overview.chart.cw,c.overview.chart.ch)}}U.Update();Q()}}function r(ab){if(ab=="error"){d(U.Update)}else{x(true);if(c.menuStyle==ChartControl.MENUSTYLE.NORMAL&&ab=="load"){N.ShowMenus()}if(ab=="display"&&!c.constrain){var ac=(Chart.NumIndicators(c.chart)&&!c.hideOverview)?15:0;var Z=ac-parseInt($(".mainChart",I).css("marginBottom"));var Y=$(".mainChart img.chartimage",I).height();var aa=Y-$(".mainChart",I).height();if(aa||Z){c.height=$(I).height()+aa+Z;$(I).height(c.height);$(".mainChart",I).animate({height:Y,marginBottom:ac},300);Q()}}}if(F){F.remove();delete F}}function O(Z){var Y=25;if(/chrome/.test(navigator.userAgent.toLowerCase())){Y=0}switch(Z){case"Draw":if($.isFunction(k.draw)){k.draw.call(u)}else{if(p&&p.Enabled()){u.AnnotateDisable()}else{u.AnnotateEnable()}}break;case"Download":u.Download();break;case"Pop":aa(Y,k.popout,u);break;case"X":aa(Y,k.close,u);break}function aa(ab,ac,ad){if($.isFunction(ac)){if(ab){setTimeout(function(){ac.call(ad)},ab)}else{ac.call(ad)}}}}function Q(){if(k.paramchange&&typeof k.paramchange=="function"){k.paramchange.call(u)}}if(c.autoCreate){this.Create()}return this}ChartControl.MENUSTYLE={NONE:0,NORMAL:1,AUTOHIDE:2};ChartControl.SetApiPrefix=function(a){ChartControl.api_prefix=a;Chart.api_prefix=a};ChartControl.api_prefix="";function Chart(l,t,w,j){var u=this;t=t||{};w=w||{};var b={plsma:false,plema:false};var f={obj:undefined,timer:undefined,count:0};var k=false;var c=typeof(getdebug)!="undefined"?getdebug():function(){};var e=typeof(getinfo)!="undefined"?getinfo():function(){};var d=typeof(getwarn)!="undefined"?getwarn():function(){};var h=typeof(geterror)!="undefined"?geterror():function(){};if(j){q()}$("<img>").addClass("chartimage").load(a).error(r).attr("src",o());this.Update=function(){if($("img.chartimage",l).attr("src")!=o()){s();$(new Image()).addClass("chartimage").load(a).error(r).attr("src",o())}return this};this.SetParams=function(y){for(var x in y){p(x,y[x],b[x])}return this};this.GetParams=function(){return t};this.Resizing=function(x,y){$("img.chartimage",l).width(x).height(y)};this.Resize=function(x,y){p("cw",x);p("ch",y);u.Update()};this.hitTest=function(A,E){var D=$("img.chartimage",l).offset();var B=t.cw;var C=t.ch;var z=this.meta;if(D&&z){return(A>D.left+z.plotX&&A<D.left+z.plotX+z.plotWidth&&E>D.top+z.plotY&&E<D.top+z.plotY+z.plotHeight)}else{return false}};this.offset=function(){return $("img.chartimage",l).offset()};this.SetParam=function(y,x){p(y,x,b[y]);return this};this.Invalidate=function(){q();return this};this.Width=function(x){if(x==undefined){return $("img.chartimage",l).width()}else{p("cw",x);return this}};this.Height=function(x){if(x==undefined){return $("img.chartimage",l).height()}else{p("ch",x);return this}};this.NumIndicators=function(){return Chart.NumIndicators(t)};this.Destroy=function(){if(k){return}if(f.timer){clearTimeout(f.timer)}$(l).children().unbind().remove();k=true};function q(){p("epoch",new Date().getTime())}function p(y,x,z){z=(z===undefined?true:false);if(z||x===""){delete t[y];if(x===""){return}}if(t[y]){if(t[y] instanceof Array){t[y].push(x)}else{t[y]=Array(t[y],x)}}else{t[y]=x}}function o(){var z="";for(var y in t){if(t[y] instanceof Array){for(var x=0;x<t[y].length;x++){z+="&"+y+"="+t[y][x]}}else{z+="&"+y+"="+t[y]}}return Chart.api_prefix+"php/api/chart/api.php?"+z.substring(1)}function a(){if(k){return}n();g("load");if($("img.chartimage",l).size()){$(this).css({position:"absolute",top:0,left:0}).appendTo(l).hide().fadeIn(250,function(){$("img.chartimage:first",l).remove();$(this).css({position:"",top:"",left:""});g("display")})}else{$(this).appendTo(l).hide().width(t.cw).fadeIn(500,function(){g("display")})}}function g(x){if(w[x]){w[x].call(null,x)}}function r(){if(k){return}n();g("error")}function s(x){if(!f.obj){f.obj=$('<div class="cc-spinner"/>').html('<img src="'+Chart.api_prefix+'images/logo_spinner.gif"/> Drawing chart...').css("opacity",0.8).appendTo(l).hide()}if(x){f.obj.css({top:t.ch/2-f.obj.height(),left:t.cw/2-f.obj.width()/2}).show()}else{f.count++;f.timer=setTimeout(function(){s(true)},300)}}function n(){if(--f.count<=0){clearTimeout(f.timer);if(f.obj){f.obj.fadeOut(200)}f.count=0}}}Chart.TYPE={LINE:0,OHLC:1,CANDLESTICK:2,MOUNTAIN:3};Chart.SCALE={LINEAR:0,LOGARITHMIC:1,PERCENTAGE:2};Chart.PERIOD={DAILY:0,WEEKLY:1,TWOMINUTE:2,MONTHLY:3};Chart.IsIndicator=function(a,c){var b={rsi:true,macd:true,vol:"1",sto:true,fsto:true,ssto:true,willr:true};return(b[a]&&c!=""&&(b[a]===true||c===b[a]))};Chart.NumIndicators=function(c){var b=0;for(var a in c){if(Chart.IsIndicator(a,c[a])){b++}}return b};Chart.api_prefix="";function OverviewChart(o,f,g){var A=this;var b=new Date();var r=new Date();r.setYear(b.getFullYear()-1);var y={selBegin:r._toString(),selEnd:b._toString(),chart:{ch:Math.round(375*0.25),cw:770,plc:"003333",plf:"002222:dddddd:90"}};$.extend(true,y,f);var p={chart:{cd:"50y",ct:Chart.TYPE.MOUNTAIN,cs:Chart.SCALE.LINEAR,cp:Chart.PERIOD.WEEKLY,pla:"6f",lga:"0",vla:"0",gra:"0",psa:"0",bgr:"1:15",plsma:"",plema:"",bol:"",rsi:"",macd:"",vol:"",fsto:"",ssto:"",willr:""}};$.extend(true,y,p);var s=undefined;var w={};var n={};var l=false;var c=typeof(getdebug)!="undefined"?getdebug():function(){};var e=typeof(getinfo)!="undefined"?getinfo():function(){};var d=typeof(getwarn)!="undefined"?getwarn():function(){};var h=typeof(geterror)!="undefined"?geterror():function(){};$(o).css({position:"relative",marginLeft:40,marginRight:40,height:y.chart.ch});s=new Chart(o,y.chart,function(B){if(B=="error"){x()}});j();$("<div/>").addClass("mask").addClass("mask-tl").appendTo(o);$("<div/>").addClass("mask").addClass("mask-tr").appendTo(o);$("<div/>").addClass("mask").addClass("mask-bl").appendTo(o);$("<div/>").addClass("mask").addClass("mask-br").appendTo(o);k();this.Select=function(C,B){q(C,B)};this.Resizing=function(B,C){B=(B<=0?1:B);C=(C<=0?1:C);$(o).height(C);$(o).find("img.chartimage").width(B).height(C);y.chart.cw=B;y.chart.ch=C;q(y.selBegin,y.selEnd,false);k()};this.Resize=function(B,C){$(o).height(C);s.Width(B).Height(C).Update();y.chart.cw=B;y.chart.ch=C;q(y.selBegin,y.selEnd);k()};this.GetParams=function(){return{selBegin:y.selBegin,selEnd:y.selEnd}};this.Refresh=function(){s.Update();j()};this.Destroy=function(){if(l){return}s.Destroy();delete s;$(o).find(".selector").draggable("destroy").resizable("destroy");$(o).children().unbind().remove();delete w;delete n;l=true};function j(){window.ajax.put("php/api/data/quote.php",{symbol:y.chart.s,period:0,cols:""},{success:a,error:x})}function k(){var B=y.chart.cw;var C=y.chart.ch-(y.chart.ch>45?15:0);$(o).find(".mask-tl").css({top:0,left:0});$(o).find(".mask-tr").css({top:0,left:B-10});$(o).find(".mask-bl").css({top:C-10,left:0});$(o).find(".mask-br").css({top:C-10,left:B-10})}function a(B,C){if(l){return}if(B.status){}else{w=new Date()._parse(B.start);n=new Date()._parse(B.end);q(y.selBegin,y.selEnd)}}function q(G,C,D){G=new Date()._parse(G);C=new Date()._parse(C);if(!G||!C){return}if(!w.getTime||!n.getTime){y.selBegin=G._toString();y.selEnd=C._toString();return}D=(D==undefined?true:D);if(G.getTime()<w.getTime()){G=w}if(C.getTime()>n.getTime()){C=n}var B=Math.round(y.chart.cw*(C.getTime()-G.getTime())/(n.getTime()-w.getTime()));var F=Math.round(y.chart.ch-(y.chart.ch>45?15:0));var I=$(o).offset();var H=Math.round(y.chart.cw*(G.getTime()-w.getTime())/(n.getTime()-w.getTime()));if($(o).find(".selector").size()){if(D){$(o).find(".selector").animate({left:H,width:B,height:F},250,"swing")}else{$(o).find(".selector").css("left",H).width(B).height(F)}}else{if(B>0&&F>0){var E=$.browser.safari?t:undefined;$("<div/>").addClass("selector").css({position:"absolute",top:0,left:H,zIndex:1,opacity:0.4}).width(B).height(F).hide().appendTo(o).resizable({handles:"e,w",resize:u,minWidth:5,stop:z}).draggable({axis:"x",containment:"parent",stop:z,drag:E}).fadeIn(300)}else{$(o).find(".selector").hide()}}y.selBegin=G._toString();y.selEnd=C._toString()}function t(D,E){var F=E.helper.position().left;var C=F+E.helper.width();var B=y.chart.cw;if(C>B){C=B;E.helper.width(C-F)}}function u(D,E){var G=E.position.left;var C=G+E.size.width;var F=0;var B=y.chart.cw;if(C>B){E.helper.width(B-E.position.left)}else{if(G<F){E.helper.width(C-F);E.helper.css("left",F)}}}function z(F,G){if(g){var I=G.helper.position().left;var D=I+G.helper.width();var H=0;var C=y.chart.cw;if($.browser.safari){t(F,G)}var E=new Date();E.setTime(w.getTime()+(I/C*(n.getTime()-w.getTime())));var B=new Date();B.setTime(w.getTime()+(D/C*(n.getTime()-w.getTime())));if(E.getTime()<w.getTime()){E=w}if(B.getTime()>n.getTime()){B=n}y.selBegin=E._toString();y.selEnd=B._toString();g.call(null,y.selBegin,y.selEnd)}}function x(){if(l){return}if(g){g.call(A)}}}function PopChart(a){var c="0123456789ABCDEF".split("");var d=[];for(var b=0;b<20;b++){d[b]=c[parseInt(Math.random()*16)]}d=d.join("");window.popList=window.popList||{};window.popList[d]={params:a,handle:undefined};window.popList[d].handle=window.open("popchart.php?id="+d,"popchart"+d,"status=0,menubar=0,toolbar=0,location=0,resizable=1,width="+(a.width+10)+",height="+(a.height+10+12))}function CloseAllPopCharts(){if(window.popList){for(var a in window.popList){if(window.popList[a].handle){window.popList[a].handle.close()}}}}function SuggestWidget(b,h,f){this.jqac_destroy=undefined;h=h||{};f=f||{};if(!h.type){h.type="sc"}var d;var e={};switch(h.type){case"symbol":d=0;e.minchars=1;break;case"company":d=1;break;case"sc":default:d=2;e.minchars=2;break}delete h.type;for(var g in h){e[g]=h[g]}e.ajax_get=c;e.callback=a;function c(k,j){window.ajax.put("php/api/data/suggest.php",{type:d,query:k},{success:function(l,n){if(l.status==0){j(l.message)}}});window.ajax.unlock(true)}function a(j){if(j.field){$(b).val(j.field);if(f.select){f.select(j.field)}}}this.jqac_destroy=$(b).autocomplete(e)}SuggestWidget.prototype.Destroy=function(){if(this.jqac_destroy){this.jqac_destroy()}};function ShareWidget(r,j,b){var C=this;var B={showLabels:false,compact:false,title:"",message:"",symbol:"",shareurl:window.location.toString(),email:"",align:ShareWidget.ALIGN.LEFT,embed:""};$.extend(true,B,j);b=b||{};C.connector=b;if(b.Connect){b.Connect(C)}var t,k;var u,q;var e={};var d=typeof(getdebug)!="undefined"?getdebug():function(){};var g=typeof(getinfo)!="undefined"?getinfo():function(){};var f=typeof(getwarn)!="undefined"?getwarn():function(){};var l=typeof(geterror)!="undefined"?geterror():function(){};this.GetParams=function(){return B};this.UpdateParams=function(F){$.extend(true,B,F);for(var E in e){if(e[E]){e[E].Destroy()}}s();$(".sh-fb",r).parent().attr("href",n());$(".sh-tw",r).parent().attr("href",y());$(".sh-dg",r).parent().attr("href",A());$(".sh-su",r).parent().attr("href",c());if(u){e[u].Elem().show()}};this.Trigger=function(H){if(!H){return}if(!H.sharePrompt){p(H)}else{var G={"sh-fb":"Facebook","sh-tw":"Twitter","sh-dg":"Digg","sh-su":"StumbleUpon"};switch($(H.currentTarget).attr("class")){case"sh-fb":case"sh-tw":case"sh-dg":case"sh-su":var F=$(H.currentTarget).attr("class");var E=G[F];var I=CreateDialog('<div class="sh-follow">'+(H.shareMsg?'<span class="sh-follow-msg">'+H.shareMsg+"</span><br/>":"")+'<input type="button" value="Click to proceed to '+E+'"/><br/><div class="sh-follow-ct"/><div class="sh-service '+F+'"/></div>',false);$("input, div > div",I.GetDialogDOM()).click(function(){I.Hide();p(H)});h();I.Show();break;default:p(H)}}};this.Destroy=function(){if(b.Destroy){b.Destroy()}delete b;$("body").unbind("click",h);$.each(e,function(){if(this.Destroy){this.Destroy()}});t.remove();$(r).removeClass("sh").unbind().empty()};function D(){var E='<div class="sh-em" title="Email this"/><div class="sh-fb" title="Share this on Facebook"/><div class="sh-tw" title="Tweet this"/><div class="sh-dg" title="Digg this"/><div class="sh-su" title="Bookmark this in StumbleUpon"/>'+(B.embed?'<div class="sh-eb" title="Embed this"/>':"")+'<div class="sh-pl" title="Copy Permalink"/><iframe class="sh-sp" style="width:0px; height:0px; border:0px; visibility:hidden;"></iframe>';$("<div/>").addClass("sh").append(E).appendTo(r).find("div").click(z);t=$("<div/>").addClass("sh-wrap").appendTo("body").hide();k=$(".sh-sp",r);var F=["Email","Facebook","Twitter","Digg","StumbleUpon","Permalink"];if(B.embed){F.splice(5,0,"Embed")}if(B.compact){if(B.showLabels){$(".sh",r).removeClass("sh").addClass("sh-compact-lb").find("div").each(function(G){$('<span class="sh-lb"/>').text(F[G]).appendTo(this)})}else{$(".sh",r).removeClass("sh").addClass("sh-compact")}}else{if(B.showLabels){$(".sh > div",r).height(72).each(function(G){$('<span class="sh-lb"/>').text(F[G]).appendTo(this)})}}s();$(".sh-fb",r).wrap('<a href="'+n()+'" target="_fb"></a>');$(".sh-tw",r).wrap('<a href="'+y()+'" target="_tw"></a>');$(".sh-dg",r).wrap('<a href="'+A()+'" target="_dg"></a>');$(".sh-su",r).wrap('<a href="'+c()+'" target="_su"></a>');k.get(0).contentWindow.location.replace(ShareWidget.api_prefix+"securepost.php");if(b.Create){b.Create()}}function s(){e.em=new EmailPanel(t,{url:B.shareurl,message:B.message,email:B.email,$secureform:k},{close:h,widthChanged:w,emailsent:x,getMeta:function(){return C.connector.GetMeta()}});e.em.Elem().hide();if(B.embed){e.eb=new TextFieldPanel(t,{style:"sh-eb-wrap",title:"Embed a Chart",description:"Copy and paste the embed code below",text:B.embed},{close:h,done:x});e.eb.Elem().hide()}e.pl=new TextFieldPanel(t,{style:"sh-pl-wrap",title:"Share a Link",description:"Copy and paste this link in email, IM or website",text:B.shareurl},{close:h,done:x});e.pl.Elem().hide()}function a(I){var F=e[I].Elem();if(u){if(u==I){if(e[u].Focus){e[u].Focus()}return}h(true);a(I)}else{var E=$(":first-child",r);var H=E.offset().top+E.height();var G=E.offset().left;if(B.align==ShareWidget.ALIGN.RIGHT){G-=(e[I].Width()-E.width()-10)}else{if(B.align==ShareWidget.ALIGN.CENTER){G-=(e[I].Width()-E.width())/2}}if(G+e[I].Width()>$(window).width()){G=$(window).width()-e[I].Width()-10}if(G<0){G=0}F.show();t.height(t.height());if(E.offset().top+E.height()+t.height()>$(window).height()){H=E.offset().top-t.height();if(H<0){H=0}q="down"}else{q="up"}t.css({top:H,left:G});t.effect("slide",{direction:q},300,function(){if(e[I].Focus){e[I].Focus()}t.height("")})}u=I;$("body").one("click",h)}function w(E){if(t.offset().left+E>$(window).width()){var F=$(window).width()-E-10;if(F<0){F=0}t.animate({left:F},300)}}function h(E){if(u){if(e[u].OnHide){e[u].OnHide()}$cur=e[u].Elem();if(E===true){t.hide();$cur.hide()}else{t.height(t.height());t.hide("slide",{direction:q},300,function(){$cur.hide();t.height("")})}u=undefined}$("body").unbind("click",h)}function z(E){E.currentTarget=this;if(C.connector.Share){C.connector.Share.call(C,E)}else{p(E)}return false}function o(){window.open(n(true),"fbwin","status=0,menubar=0,toolbar=0,location=0,resizable=1,width=642,height=523")}function n(E){var F="http://www.facebook.com/share.php?u=";if(E){F=F.replace("share","sharer")}return F+urlencode(B.shareurl)}function y(){var E="http://twitter.com/home?status=";var F=B.symbol?"$"+B.symbol.toUpperCase()+" - ":"";F+=B.title?B.title:"";F+=(B.message?". "+B.message.slice(0,175)+" ":" ");if(F.length>140-B.shareurl.length-4){F=F.slice(0,140-B.shareurl.length-4)+"... "}return E+urlencode(F+B.shareurl)}function A(){var F="http://digg.com/submit?";var G="title="+B.title?urlencode(B.title):"";var E="&bodytext="+(B.message?urlencode(B.message.slice(0,175)):"");if(B.message&&B.message.length>175){E+="..."}return F+G+E+"&url="+urlencode(B.shareurl)}function c(){var E="http://www.stumbleupon.com/submit?";var F="title="+urlencode(B.title+(B.message?". "+B.message.slice(0,175):""));if(B.message&&B.message.length>175){F+="..."}return E+F+"&url="+urlencode(B.shareurl)}function p(E){switch($(E.currentTarget).attr("class")){case"sh-em":a("em");break;case"sh-eb":a("eb");break;case"sh-pl":a("pl");break;case"sh-fb":h();o();x();break;default:h();window.open($(E.currentTarget).parent().attr("href"));x();break}}function x(){if(b.ShareDone){b.ShareDone()}}D()}ShareWidget.ALIGN={LEFT:0,RIGHT:1,CENTER:2};ShareWidget.SetApiPrefix=function(a){ShareWidget.api_prefix=a};ShareWidget.api_prefix="";function EmailPanel(k,c,t){var s=this;var q={url:"",message:"",email:"",$secureform:""};$.extend(true,q,c);var t=t||{};var h={"gmail.com":"GMail","yahoo.com":"Yahoo!","hotmail.com":"Hotmail","live.com":"Windows Live","aol.com":"AOL"};var b,d,a,u,w;if(q.email){var n=q.email.split("@");if(n.length==2){u=n[0];w=n[1]}else{u=q.email}}var o="Your Email Address";x();function x(){var p='<div class="sh-em-wrap"><div class="sh-headline">Email a Friend<div class="sh-close"/></div><div class="sh-em-row"><div class="sh-em-label">To:</div><div class="sh-em-field"><textarea name="to"/></div></div><div style="text-align:right"><span class="sh-import-button"></span></div><div class="sh-em-row"><div class="sh-em-label">From:</div><div class="sh-em-field"><input name="email" value="'+(q.email||"")+'"/></div></div><div class="sh-em-row"><div class="sh-em-label">Message:<br/><span>(Optional) </span></div><div class="sh-em-field"><textarea name="msg"/></div></div><div class="sh-em-row" style="text-align:right"><div class="sh-em-error"/><div class="sh-em-sending">Sending...</div><input type="button" class="sh-btn" value="Send"/></div></div><div class="sh-em-subpanel-wrap"><div class="sh-em-subpanel"/></div>';b=$("<div/>").addClass("sh-panel").append(p).appendTo(k);a=$(".sh-em-subpanel:first",b).hide();$(".sh-em-error",b).hide();$(".sh-em-sending",b).hide();var y=$("input[name=email]",b);if(u&&w){y.val(q.email)}else{y.val(o).css("color","#888888")}if(q.message){$("textarea[name=msg]",b).val(q.message)}d=new ImportPanel(b.find(".sh-em-subpanel-wrap"),{user:u,domain:w,$secureform:q.$secureform},{cancel:function(){d.Elem().hide("slide",{direction:"left"},300);s.Focus()},onimport:function(B,z,A){d.Elem().hide();l(B);if(!y.val()||y.val()==o){y.val(z+"@"+A).css("color","")}}});$("textarea",b).focus(function(){g();$(this).select()});y.focus(function(){g();if($(this).val()==o){$(this).val("").css("color","")}else{$(this).select()}}).blur(function(){if($(this).val()==""){$(this).val(o).css("color","#777777")}});$(".sh-import-button",k).html(f()).click(function(){g();if(t.widthChanged){t.widthChanged(b.width()+d.Elem().width())}d.Elem().effect("slide",{direction:"left"},300,function(){d.Focus()})});$(".sh-btn:first",k).one("click",r);$(".sh-close",k).click(t.close);b.click(function(){return false})}this.OnHide=function(){d.Elem().hide()};this.Width=function(){return parseInt($(".sh-em-wrap",b).css("width"))};this.Focus=function(){$("textarea[name=to]",b).focus()};this.Elem=function(){return b};this.Destroy=function(){d.Destroy();b.remove()};function f(){if(w&&h[w.toLowerCase()]){return"Import contacts from "+h[w]}else{return"Import contacts from GMail, Yahoo, Hotmail, etc."}}function l(p){var y=p[0],z=p[1];$.each(y,function(A){if(y[A]!=z[A]){$("<div/>").html('<span class="sh-em-name">'+y[A]+'</span> &lt;<span class="sh-em-email">'+z[A]+"</span>&gt;").appendTo(a)}else{$("<div/>").html('<span class="sh-em-name">'+z[A]+'</span><span class="sh-em-email"/>').appendTo(a)}});a.show().children().addClass("sh-em-listitem").click(j)}function j(){var z=$(".sh-em-name",this).html();var y=$(".sh-em-email",this).html();var B=y?'"'+z+'" <'+y+">, ":z;var C=$("textarea[name=to]",b);var A=C.val();if(!A.length||A.search(B)==-1){C.val(A+B+"\n");p(C.get(0),C.val().length,C.val().length);C.scrollTop(C.get(0).scrollHeight).focus()}function p(F,G,D){if(F.setSelectionRange){F.focus();F.setSelectionRange(G,D)}else{if(F.createTextRange){var E=F.createTextRange();E.collapse(true);E.moveEnd("character",D);E.moveStart("character",G);E.select()}}}}function r(){var A=$("textarea[name=to]",b).val();var z=$("input[name=email]",b).val();var y=$("textarea[name=msg]",b).val();g();if(!A){e(EmailPanel.ERROR.MISSING_TO)}else{if(!z||z==o){e(EmailPanel.ERROR.MISSING_FROM)}else{$(".sh-em-sending",b).show();var p={url:q.url,to:A,from:z,msg:y};if(t.getMeta){p.meta=$.toJSON(t.getMeta())}window.ajax.put("php/api/share/email.php",p,{error:e,success:function(B){$(".sh-em-sending",b).hide();if(!B.status){$(".sh-btn:first",k).one("click",r);var C=$('<div class="sh-em-success"><br/><br/><br/>Email Sent<br/>Thanks for Sharing</div>').appendTo($(".sh-em-wrap",b).get(0)).hide().fadeIn(500,function(){setTimeout(function(){t.close();C.remove()},3000)});if(t.emailsent){t.emailsent()}}else{e(B.status)}}})}}}function e(p){if(!p.length){switch(p){case EmailPanel.ERROR.MISSING_TO:p='Enter destination email addresses in the "To" box';break;case EmailPanel.ERROR.MISSING_FROM:p='Enter your email address in the "From" box';break;case EmailPanel.ERROR.INVALID_TO:p='Oops! I don\'t see any email addresses in the "To" box';break;case EmailPanel.ERROR.INVALID_FROM:p='Oops! The "From" email address doesn\'t look right';break;case EmailPanel.ERROR.INVALID_URL:case EmailPanel.ERROR.MISSING_URL:default:p="Oops! We are unable to send your email right now.";break}}$(".sh-em-error",b).html(p).show();$(".sh-btn:first",k).one("click",r)}function g(){$(".sh-em-error",b).hide()}}EmailPanel.ERROR={MISSING_URL:1,INVALID_URL:2,MISSING_TO:3,MISSING_FROM:4,INVALID_TO:5,INVALID_FROM:6};function ImportPanel(c,q,k){var l=this;var f={};$.extend(true,f,q);k=k||{};var j={GMail:"gmail.com","Yahoo!":"yahoo.com","Live/Hotmail":"hotmail.com",AOL:"aol.com","gmail.com":"GMail","yahoo.com":"Yahoo!","hotmail.com":"Live/Hotmail","live.com":"Live/Hotmail","aol.com":"AOL"};var e='<div class="sh-im-headline">Sign In To Use Your Contacts</div><div class="sh-import"><div class="sh-im-error"/><div class="sh-services"><div class="sh-domain sh-gmail">GMail</div><div class="sh-domain sh-yahoo">Yahoo!</div><div class="sh-domain sh-hotmail">Live/Hotmail</div><div class="sh-domain sh-aol">AOL</div></div><div class="sh-im-form"><div class="sh-em-row"><div class="sh-em-flabel">Email address:</div><div class="sh-em-ffield"><input class="sh-im-user"/></div></div><div class="sh-em-row"><div class="sh-em-flabel">Password:</div><div class="sh-em-ffield"><input type="password" class="sh-im-pass"/></div></div><div class="sh-em-bot"><div class="sh-btn-neg">Cancel</div><input type="button" class="sh-btn" value="Import"/></div><div class="sh-im-sts">Fetching Contacts...</div></div></div>';var p=$("<div/>").addClass("sh-em-subpanel sh-em-subpanel-c").append(e).appendTo(c).hide();var d=$(".sh-im-user",p);var n=$(".sh-im-pass",p);$(".sh-im-sts").hide();a();if(f.user){d.val(f.user+(f.domain?"@"+f.domain:""))}if(f.domain&&j[f.domain.toLowerCase()]){$(".sh-domain",p).filter(function(){return j[f.domain.toLowerCase()]==$(this).html()}).addClass("sh-domain-sel")}else{$(".sh-im-form",p).hide()}$("input",p).bind("focus keypress",a);$(".sh-domain",p).click(o);$(".sh-im-form .sh-btn",p).click(b);$(".sh-im-form .sh-btn-neg",p).click(b);d.keypress(function(r){if(r.which==13){if(n.val()==""){n.focus()}else{h()}}});n.keypress(function(r){if(r.which==13){h()}});p.click(function(){return false});this.Focus=function(){if(d.val()==""){d.focus()}else{n.focus()}};this.Elem=function(){return p};this.Destroy=function(){p.remove()};function o(r){r.preventDefault();$(".sh-domain",c).removeClass("sh-domain-sel");$(this).addClass("sh-domain-sel");$(".sh-im-form",c).filter(":hidden").slideDown(300,function(){$(this).height($(this).height()+5)});f.domain=j[$(this).html()];l.Focus()}function b(r){if($(this).html()=="Cancel"&&k.cancel){n.val("");k.cancel()}else{h()}}function h(){var r=$.trim(d.val());var t=$.trim(n.val());var s=r.split("@");if(s.length==2){r=s[0];f.domain=s[1]}else{f.domain=j[$(".sh-domain-sel",c).html()]}d.attr("disabled","disabled");n.attr("disabled","disabled");$(".sh-im-sts").show();$(".sh-em-bot").hide();f.$secureform.one("load",function(){window.ajax.put("php/api/user/status.php",{type:"importcontacts"},{error:g,success:function(u){if(!u.status&&u.message.length==2){n.val("");if(k.onimport){k.onimport(u.message,r,f.domain)}d.attr("disabled","");n.attr("disabled","");$(".sh-im-sts").hide();$(".sh-em-bot").show()}else{g(u.status)}}});f.$secureform.get(0).contentWindow.location.replace(ShareWidget.api_prefix+"securepost.php")});f.$secureform.get(0).contentWindow.ImportContacts(f.domain,r,t)}function g(r){switch(r){case 3:r="Please enter your email address";break;case 4:r="Please enter your email password";break;case 5:r="Sorry, we cannot import from "+f.domain;break;default:r=undefined}$(".sh-im-error",c).html(r||"Error importing contacts. Please double-check your email address and password.").show();d.attr("disabled","");n.attr("disabled","");$(".sh-im-sts").hide();$(".sh-em-bot").show()}function a(){$(".sh-im-error",c).hide()}}function TextFieldPanel(b,c,d){var f={style:"",title:"",description:"",text:""};$.extend(true,f,c);d=d||{};var a='<div class="'+f.style+'"><div class="sh-headline">'+f.title+'<div class="sh-close"/></div><div class="sh-em-row">'+f.description+'</div><input class="sh-textpanel-input"/><input type="button" value="Done"/></div>';var e=$("<div/>").addClass("sh-panel").appendTo(b).append(a);$(".sh-textpanel-input",e).val(f.text).bind("focus click",g);if(d.close){$(".sh-close",e).click(d.close)}$("input[type=button]",e).click(function(){if(d.close){d.close()}if(d.done){d.done()}});e.click(function(){return false});this.Width=function(){return parseInt($("."+f.style,e).css("width"))};this.Elem=function(){return e};this.Focus=function(){g()};this.Destroy=function(){e.remove()};function g(){$(".sh-textpanel-input",e).select()}}function urlencode(g){var f=function(j){return"%"+(j<16?"0":"")+j.toString(16).toUpperCase()};var b="",h=/[\w.-]/;g=(g+"").toString();for(var c=0,a=g.length;c<a;c++){var d=g.charAt(c);if(h.test(d)){b+=d}else{var e=g.charCodeAt(c);if(55296<=e&&e<=56319){b+=((e-55296)*1024)+(g.charCodeAt(c+1)-56320)+65536;c++}else{if(e===32){b+="+"}else{if(e<128){b+=f(e)}else{if(e>=128&&e<2048){b+=f((e>>6)|192);b+=f((e&63)|128)}else{if(e>=2048){b+=f((e>>12)|224);b+=f(((e>>6)&63)|128);b+=f((e&63)|128)}}}}}}}return b}function CtShareConnector(a){this.widget;this.meta=a}CtShareConnector.prototype={Connect:function(a){this.widget=a},Create:function(){var a=this;function b(){a.widget.UpdateParams({email:window.acct_manager.GetUserinfo().email})}b();window.acct_manager.RegisterForUserinfoChanged(this.widget,b)},Destroy:function(){window.acct_manager.UnregisterForUserinfoChanged(this.widget)},GetMeta:function(){return(this.meta)}};function CtAnnotateShareConnector(){}CtAnnotateShareConnector.prototype=new CtShareConnector();CtAnnotateShareConnector.prototype.constructor=CtAnnotateShareConnector;$.extend(true,CtAnnotateShareConnector.prototype,{Share:function(a){}});function CommentWidget(b,c,a){var d=this;d.container=b;d.params={threadId:undefined,comments:[]};$.extend(true,d.params,c);d.connector=a;a.Connect(d);a.Load(d.params.threadId,function(e){d.params.comments=e;$(b).append('<div class="cm-header"><span class="cm-h1">Comments</span></div><div class="cm-list"/><div class="cm-postform"><span class="cm-h1">Post a Comment</span><br/><div class="cm-post"><textarea class="cm-text"/></div><div class="cm-postfooter"><input type="button" value="Post Comment"/></div></div>');if(d.params.comments.length){d.BuildCommentList()}else{d.$(".cm-header").hide()}d.$("input[type=button]").click(function(){d.PostComment.call(d)});if(a.Ready){a.Ready()}})}CommentWidget.prototype={$:function(a){return a?$(a,this.container):$(this.container)},BuildCommentList:function(){var a=this;$.each(a.params.comments,function(){a.AddComment(this.user,this.time,this.comment)})},AddComment:function(a,c,d){var b=$("<div/>");this.$(".cm-list").append('<div class="cm-comment"><div class="cm-comment-info"><span class="cm-comment-user">'+b.text(a).html()+'</span><span class="cm-comment-time">'+b.text(c).html()+'</span></div><div class="cm-comment-text">'+b.text(d).html()+"</div></div>")},PostComment:function(){var c=this;var a=c.$(".cm-text");var b=c.$("input[type=button]");if(!a.val()||!b.val()){return}c.$("input,textarea").attr("disabled","disabled");c.connector.Post(c.params.threadId,a.val(),function(d){c.$("input,textarea").attr("disabled","");c.$(".cm-header").show();if(d){a.val("").focus();c.AddComment(d.user,d.time,d.comment)}})},Destroy:function(){this.$().empty()}};function CtCommentConnector(){this.symbol;this.widget}CtCommentConnector.prototype={Connect:function(a){this.widget=a},Ready:function(){AutoResizeTextArea(this.widget.$(".cm-text").get(0),40,200)},Load:function(c,b){var a=this;window.ajax.put("php/api/share/get.php",{thread:c},function(d){if(!d.status){var e=[];if(d.message.length){a.symbol=d.message[0].symbol;d.message.shift();$.each(d.message,function(){e.push({user:this.username,time:this.timestamp,comment:this.passage})})}if(b){b(e)}}})},Post:function(d,c,b){var a=this;if(!window.acct_manager.IsSignedIn()){acct_manager.SignIn("Sign In To Post Your Comments",function(e){if(e){a.Post.call(a,d,c,b)}else{b()}})}else{window.ajax.put("php/api/share/create.php",{symbol:a.symbol,commentto:d,passage:c},function(e){if(!e.status){window.ajax.put("php/api/share/get.php",{id:e.message},function(f){if(!f.status){b({user:f.message[0].username,time:f.message[0].timestamp,comment:f.message[0].passage})}})}})}}};function RatingWidget(b,c,a){var d=this;d.container=b;d.params={value:0,allowRating:true,numRatings:0,myRating:-1};$.extend(true,d.params,c);d.connector=a;a.Connect(d);$('<div class="rw"/>').appendTo(d.container).hover(function(){if(d.params.allowRating){$(this).mousemove(function(f){d.ShowRating(Math.round((f.pageX-$(this).offset().left)/15+0.5));if(d.params.myRating!=-1){d.ShowMessage("(You voted "+d.params.myRating+")")}}).click(function(f){d.AllowRating(false);a.Vote(Math.round((f.pageX-$(this).offset().left)/15+0.5))})}},function(){$(this).unbind("mousemove click");d.ShowRating(d.params.value);d.ShowMessage()});$('<span class="rw-msg"/>').appendTo(d.container);d.ShowMessage();d.ShowRating();a.Ready()}RatingWidget.prototype={$:function(a){return a?$(a,this.container):$(this.container)},AllowRating:function(a){this.params.allowRating=a},SetRating:function(a){this.params.value=a;this.ShowRating()},SetMyRating:function(a){this.params.myRating=a},ShowRating:function(a){v=a||this.params.value;if(!v){v=0}else{if(v>5){v=5}}v=Math.round(v/0.5)*0.5;this.$(".rw").removeClass().addClass("rw").addClass("rw-"+v.toFixed(1))},ShowMessage:function(a){if(a===undefined){a=("("+this.params.numRatings+" rating"+(this.params.numRatings==1?"":"s")+")")}this.$(".rw-msg").text(a)},Destroy:function(){this.connector.Disconnect();this.$().empty()}};function CtAnnotationRatingConnector(a){this.shareId=a;this.widget}CtAnnotationRatingConnector.prototype={Connect:function(a){this.widget=a},Disconnect:function(){window.acct_manager.UnregisterForSignedIn(this);window.acct_manager.UnregisterForSignedOut(this);this.widget=undefined},Ready:function(){var a=this;window.acct_manager.RegisterForSignedIn(a,function(){if(window.acct_manager.IsSignedIn()){window.ajax.put("php/api/share/rate.php",{id:a.shareId},function(b){if(b&&!b.status){a.widget.SetMyRating(b.message)}})}});window.acct_manager.RegisterForSignedOut(a,function(){a.widget.SetMyRating(-1)})},Vote:function(b,c){var a=this;if(!window.acct_manager.IsSignedIn()){acct_manager.SignIn("Sign In To Rate This Chart",function(d){if(d){a.Vote.call(a,b)}else{a.widget.AllowRating(true);a.widget.ShowRating()}})}else{window.ajax.put("php/api/share/rate.php",{id:this.shareId,rate:b},function(d){if(!d.status){if(d.message.rating===null){d.message.rating=0}if(d.message.rating_count===null){d.message.rating_count=0}a.widget.SetMyRating(b);a.widget.SetRating(d.message.rating);a.widget.params.numRatings=d.message.rating_count;a.widget.ShowMessage();ShowNotice("Your vote was cast.  Thanks for rating this chart!")}else{ShowNotice("Unable to save your rating.  Please try again.")}a.widget.AllowRating(true)})}}};var DEBUGLEVEL=1;var toast_manager=null;var acct_manager=null;var tab_manager=null;var portfolio_manager=null;var annotation_manager=null;var qq_control=QQ_Control.GetInstance();jQuery(function(){SetupToastManager();SetupAccount();SetupPortfolios();SetupAnnotations();SetupTabPanel();SetupNavBottom();SetupQQ();SetupLogo();SetupFeedback();HandleUnload();SetupHistory();ProcessURL()});function SetupToastManager(){toast_manager=new Toast_Manager($("body").get(0))}function SetupAccount(){acct_manager=new Account_Manager({username:PRELOAD.acct_manager.username,userinfo:PRELOAD.acct_manager.userinfo},{cbSignIn:function(b,c){a(b,c)},cbSignUp:function(b,c){a(b,c,true)},cbSignOut:function(b){$.get("php/api/user/logout.php",null,function(d,c){if(!d.status){acct_manager.SetSignedIn(false);tab_manager.RemoveAllPrivateTabs();ClearPersistedData();UpdateSigninStatusBox();ShowNotice("You are now signed out.");if(tab_manager.GetTabType(tab_manager.GetActiveTabID())==Page_Home||tab_manager.GetTabType(tab_manager.GetActiveTabID())==Page_Welcome){GoHome()}if(b){b(true)}}else{ShowNotice("We can't seem to log you out at the moment.  Close your browser or try again in a few minutes.");if(b){b(false)}}},"json")}});acct_manager.SetSignedIn(PRELOAD.acct_manager.signed_in);UpdateSigninStatusBox();function a(b,e,d){var c=new SignInWidget({directSignUp:d,message:b},{success:function(g,f){acct_manager.ReloadUserinfoFromDB(function(h){if(h){if(f){ShowNotice("Account created! You are now signed in.")}else{LoadPortfoliosFromDB();ShowNotice("You are now signed in.")}c.Destroy();UpdateSigninStatusBox();if(tab_manager.GetTabType(tab_manager.GetActiveTabID())==Page_Home||tab_manager.GetTabType(tab_manager.GetActiveTabID())==Page_Welcome){GoHome()}if(e){e(true)}}else{if(e){e(false)}}})},cancel:function(){if(e){e(false)}}})}}function SetupPortfolios(){portfolio_manager=Portfolio_Manager.GetInstance();LoadPortfoliosFromDB()}function SetupAnnotations(){annotation_manager=new AnnotationManager()}function SetupQQ(){var d,e;$("#wrapper_qq").html('<div id="qq">            <div id="qq_tab">QuickChart</div>            <div id="qq_topstrip">                <span class="leftedge"></span><span class="slice"></span><span class="rightedge"></span>            </div>            <div id="qq_main">                Enter one or more symbols below and press [Enter]:<br />                <br />                <input name="txtQQ" type="text" id="txtQQ" maxlength="256" value=""/><br />            </div>        </div>');function a(){clearTimeout(e);clearTimeout(d);qq_control.FadeIn();qq_control.Open();$("#txtQQ").focus().get(0).infocus=true}function b(){clearTimeout(e);clearTimeout(d);qq_control.Close(true);$("#txtQQ").blur().get(0).infocus=false}function c(h){var g=MultiSymbolStringToArray(h);if(g.length==1){GoCompanyInfo(g[0])}else{var f=portfolio_manager.GetCustomName();if(h.length>0&&g&&g.length>0){GoGallery(f,g)}}$("#txtQQ").val("");b()}$("#qq").hover(function(){clearTimeout(e);clearTimeout(d);d=setTimeout(a,400)},function(){clearTimeout(e);clearTimeout(d);e=setTimeout(function(){if(!($("#txtQQ").get(0).infocus)){b()}},2000)}).click(function(){return false});$("#qq_tab").click(function(){if(!qq_control.is_open){a()}});SetupInputFieldHoverBehavior("#txtQQ");$("#txtQQ").keypress(function(f){if(f.keyCode==13){c($(this).val())}else{this.infocus=true}}).blur(function(){this.infocus=false}).click(function(){this.infocus=true});$("body").click(function(){if(qq_control.is_open){b()}});new SuggestWidget("#txtQQ",{height:40},{select:c})}function SetupNavBottom(){$("#nav_bottom").html('<a href="index.php?t=a">About</a>&nbsp;|&nbsp;                <a>Contact</a>&nbsp;|&nbsp;                <a>Privacy Policy</a>&nbsp;|&nbsp;                <a href="/forum" target="_blank">Forum</a>&nbsp;|&nbsp;                <a href="/blog" target="_blank">Blog</a>').children("a").eq(0).click(function(){GoAbout({about:true,contact:false,privacy:false});return(false)}).end().eq(1).click(function(){GoAbout({about:false,contact:true,privacy:false});return(false)}).end().eq(2).click(function(){GoAbout({about:false,contact:false,privacy:true});return(false)}).end().eq(3).click(function(){}).end().eq(4).click(function(){}).end()}function SetupTabPanel(){tab_manager=new Tab_Manager($("#tab_panel").get(0),{tab_left:$("#tab_left"),tab_right:$("#tab_right"),tab_new:$(".tab_new"),tab_remove:$(".tab_remove"),content_wrapper:$("#panel_middle_a").get(0),tab_controls:$("#tab_panel").find(".tab_controls"),update_url:true,fixed_tabs:[Page_Home,Page_Welcome],page_map:[["h",Page_Home],["w",Page_Welcome],["as",Page_AcctSettings],["p",Page_Portfolios],["ci",Page_CompanyInfo],["an",Page_AnnotateShare],["v",Page_ViewChart],["g",Page_Gallery],["a",Page_About],["cf",Page_ChartFeatures]]});acct_manager.RegisterForSignedIn(window,function(){var b=tab_manager.FindIDByLabel(Page_Welcome.label);var a=tab_manager.GetActiveTabID();if(b){GoHome(null,b!=a)}});acct_manager.RegisterForSignedOut(window,function(){var a=tab_manager.FindIDByLabel(Page_Home.label);var b=tab_manager.GetActiveTabID();if(a){GoHome(null,a!=b)}})}function SetupLogo(){$("#panel_top_logo").click(function(){GoHome()}).hover(function(){$(this).css({backgroundImage:"url(images/logo2.png)"})},function(){$(this).css({backgroundImage:"url(images/logo.png)"})})}function SetupFeedback(){var a=new Feedback($("body").get(0),null,{OnSubmit:function(d){var e=acct_manager.GetUsername();var c=$.extend(true,{},d,{username:e,url:location.href});this.Hide();window.ajax.put("php/api/data/feedback.php",c,{success:function(f){if(!f.status){ShowNotice("Thanks! We'll review your feedback and contact you if necessary.")}else{b()}},error:function(){b()}});function b(){ShowNotice("Your feedback could not be submitted at this time.<br/>Please try again later.")}},OnCancel:function(){this.Hide()}});a.SetEmail(acct_manager.GetUserinfo().email);acct_manager.RegisterForUserinfoChanged(a,function(){a.SetEmail(acct_manager.GetUserinfo().email)})}function HandleUnload(){$(window).bind("unload",function(){if(CloseAllPopCharts){CloseAllPopCharts()}})}function SetupHistory(){$.history.init(tab_manager.ActivateTabByStructure)}function ProcessURL(){var a=self.document.location.hash.substring(1);if(a.length!=0){if(a.substr(0,1)=="/"){var b=a.split("/");if(b.length==3){GoHome(undefined,true);switch(b[1].toLowerCase()){case"chart":ProcessChartURL(b[2]);break;case"share":ProcessShareURL(b[2]);break;case"annotate":ProcessAnnotateURL(b[2]);break;case"user":ProcessUserURL(b[2]);break;default:GoHome()}}else{if(b.length==2&&/^[$^]?[a-z0-9]{1,8}$/i.test(b[1])){GoHome(undefined,true);ProcessChartURL(b[1])}else{GoHome()}}}else{if(a.substr(0,2)=="t="||a.substr(0,3)=="!t="){tab_manager.LoadTabStructure(a)}else{GoHome()}}}else{if(!PRELOAD.tab_manager.get_params.tab){GoHome()}}}function ProcessChartURL(c){var f=c.split("&");var g=f[0];var e={mainChart:{chart:{}}};for(var d=1;d<f.length;d++){var a=f[d].split("=");if(a.length==2){var h=a[1].split(",");if(h.length>1){e.mainChart["chart"][a[0]]=[];for(var b=0;b<h.length;b++){e.mainChart["chart"][a[0]].push(h[b])}}else{e.mainChart["chart"][a[0]]=a[1]}}}GoCompanyInfo(g,e)}function ProcessShareURL(a){if(!/(^\d+$)/.test(a)){GoHome()}else{GoViewShare(a)}}function ProcessAnnotateURL(a){if(a.length<=10){GoAnnotate(a)}}function ProcessUserURL(a){GoHome()}/** hoverIntent r5 // 2007.03.27 // jQuery 1.1.2+* <http://cherne.net/brian/resources/jquery.hoverIntent.html>** @param  f  onMouseOver function || An object with configuration options* @param  g  onMouseOut function  || Nothing (use configuration options object)* @author    Brian Cherne <brian@cherne.net>*/(function(a){a.fn.hoverIntent=function(l,k){var n={sensitivity:7,interval:150,timeout:250};n=a.extend(n,k?{over:l,out:k}:l);var p,o,h,d;var e=function(f){p=f.pageX;o=f.pageY};var c=function(g,f){f.hoverIntent_t=clearTimeout(f.hoverIntent_t);if((Math.abs(h-p)+Math.abs(d-o))<n.sensitivity){a(f).unbind("mousemove",e);f.hoverIntent_s=1;return n.over.apply(f,[g])}else{h=p;d=o;f.hoverIntent_t=setTimeout(function(){c(g,f)},n.interval)}};var j=function(g,f){f.hoverIntent_t=clearTimeout(f.hoverIntent_t);f.hoverIntent_s=0;return n.out.apply(f,[g])};var b=function(r){var q=(r.type=="mouseover"?r.fromElement:r.toElement)||r.relatedTarget;while(q&&q!=this){try{q=q.parentNode}catch(r){q=this}}if(q==this){return false}var g=jQuery.extend({},r);var f=this;if(f.hoverIntent_t){f.hoverIntent_t=clearTimeout(f.hoverIntent_t)}if(r.type=="mouseover"){h=g.pageX;d=g.pageY;a(f).bind("mousemove",e);if(f.hoverIntent_s!=1){f.hoverIntent_t=setTimeout(function(){c(g,f)},n.interval)}}else{a(f).unbind("mousemove",e);if(f.hoverIntent_s==1){f.hoverIntent_t=setTimeout(function(){j(g,f)},n.timeout)}}};return this.mouseover(b).mouseout(b)}})(jQuery);/*This program is free software: you can redistribute it and/or modifyit under the terms of the GNU General Public License as published bythe Free Software Foundation, either version 3 of the License, or(at your option) any later version.This program is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See theGNU General Public License for more details.You should have received a copy of the GNU General Public Licensealong with this program.  If not, see <http://www.gnu.org/licenses/>.*//* * (C) 2008 Syronex / J.M. Rosengard * http://www.syronex.com/software/jquery-color-picker * * - Check mark is either black or white, depending on the darkness *   of the color selected. * - Fixed a bug in the original plugin that led to problems when there is *   more than one colorPicker in a document. * * This is based on: * * jQuery colorSelect plugin 0.9 * http://plugins.jquery.com/project/colorPickerAgain * Copyright (c) 2008 Otaku RzO (Renzo Galo Castro Jurado). * (Original author URL & domain name no longer available.) * */(function(a){a.fn.colorPicker=function(d){var c={color:new Array("#FFFFFF","#EEEEEE","#FFFF88","#FF7400","#CDEB8B","#6BBA70","#006E2E","#C3D9FF","#4096EE","#356AA0","#FF0096","#B02B2C","#000000"),defaultColor:0,columns:0,click:function(e){}};var b=a.extend({},c,d);return this.each(function(){var h=a(this);var j=a.meta?a.extend({},b,h.data()):b;var g=typeof(j.defaultColor)=="number"?j.defaultColor:-1;var f="";for(i=0;i<j.color.length;i++){f+='<div style="background-color:'+j.color[i]+';"></div>';if(g==-1&&j.defaultColor==j.color[i]){g=i}}h.html('<div class="jColorSelect">'+f+"</div>");var k=h.children(".jColorSelect").children("div");var e=(13+2+2)*(j.columns>0?j.columns:j.color.length);h.children(".jColorSelect").css("width",e).css("height",17);k.each(function(l){a(this).click(function(){if(g==l){return}if(g>-1){cell=k.eq(g);if(cell.hasClass("check")){cell.removeClass("check").removeClass("checkwht").removeClass("checkblk")}}g=l;a(this).addClass("check").addClass(isdark(j.color[l])?"checkwht":"checkblk");j.click(j.color[l])})});_tmp=g;g=-1;k.eq(_tmp).trigger("click")});return this}})(jQuery);function isdark(a){var b=parseInt(a.substr(1),16);return(b>>>16)+((b>>>8)&255)+(b&255)<500}(function(a){a.fn.dropShadow=function(b){var c=a.extend({left:4,top:4,blur:2,opacity:0.5,color:"black",swap:false},b);var d=a([]);this.not(".dropShadow").each(function(){var q=a(this);var l=[];var f=(c.blur<=0)?0:c.blur;var p=(f==0)?c.opacity:c.opacity/(f*8);var k=parseInt(q.css("zIndex"))||0;var r=(c.swap)?k:k+1;var e=(c.swap)?k+1:k;var s;if(this.id){s=this.id+"_dropShadow"}else{s="ds"+(1+Math.floor(9999*Math.random()))}a.data(this,"shadowId",s);a.data(this,"shadowOptions",b);a.data(this,"zSave",k);q.attr("shadowId",s).css("zIndex",r);if(q.css("position")!="absolute"){q.css({position:"relative",zoom:1})}bgColor=q.css("backgroundColor");if(bgColor=="rgba(0, 0, 0, 0)"){bgColor="transparent"}if(bgColor!="transparent"||q.css("backgroundImage")!="none"||this.nodeName=="SELECT"||this.nodeName=="INPUT"||this.nodeName=="TEXTAREA"){l[0]=a("<div></div>").css("background",c.color)}else{l[0]=q.clone().removeAttr("id").removeAttr("name").removeAttr("shadowId").css("color",c.color)}l[0].addClass("dropShadow").css({height:q.outerHeight(),left:f,opacity:p,position:"absolute",top:f,width:q.outerWidth(),zIndex:e});var o=(8*f)+1;for(n=1;n<o;n++){l[n]=l[0].clone()}var n=1;var h=f;while(h>0){l[n].css({left:h*2,top:0});l[n+1].css({left:h*4,top:h*2});l[n+2].css({left:h*2,top:h*4});l[n+3].css({left:0,top:h*2});l[n+4].css({left:h*3,top:h});l[n+5].css({left:h*3,top:h*3});l[n+6].css({left:h,top:h*3});l[n+7].css({left:h,top:h});n+=8;h--}var g=a("<div></div>").attr("id",s).addClass("dropShadow").css({left:q.position().left+c.left-f,marginTop:q.css("marginTop"),marginRight:q.css("marginRight"),marginBottom:q.css("marginBottom"),marginLeft:q.css("marginLeft"),position:"absolute",top:q.position().top+c.top-f,zIndex:e});for(n=0;n<o;n++){g.append(l[n])}q.after(g);d=d.add(g);a(window).resize(function(){try{g.css({left:q.position().left+c.left-f,top:q.position().top+c.top-f})}catch(j){}})});return this.pushStack(d)};a.fn.redrawShadow=function(){this.removeShadow();return this.each(function(){var b=a.data(this,"shadowOptions");a(this).dropShadow(b)})};a.fn.removeShadow=function(){return this.each(function(){var b=a(this).shadowId();a("div#"+b).remove();a(this).css("zIndex",a(this).data("zSave"))})};a.fn.shadowId=function(){return a.data(this[0],"shadowId")};a(function(){var b="<style type='text/css' media='print'>";b+=".dropShadow{visibility:hidden;}</style>";a("head").append(b)})})(jQuery);