
(function(a){a.tools=a.tools||{version:"dev"},a.tools.overlay={addEffect:function(a,b,d){c[a]=[b,d]},conf:{close:null,closeOnClick:!0,closeOnEsc:!0,closeSpeed:"fast",effect:"default",fixed:!a.browser.msie||a.browser.version>6,left:"center",load:!1,maskOverlay:null,oneInstance:!0,speed:"normal",target:null,top:"10%"}};var b=[],c={};a.tools.overlay.addEffect("default",function(b,c){var d=this.getConf(),e=a(window);d.fixed||(b.top+=e.scrollTop(),b.left+=e.scrollLeft()),b.position=d.fixed?"fixed":"absolute",this.getOverlay().css(b).fadeIn(d.speed,c)},function(a){this.getOverlay().fadeOut(this.getConf().closeSpeed,a)});function d(d,e){var f=this,g=d.add(f),h=a(window),i,j,k,l=a.tools.expose&&(e.maskOverlay||e.expose),m=Math.random().toString().slice(10);l&&(typeof l=="string"&&(l={color:l}),l.closeOnClick=l.closeOnEsc=!1);var n=e.target||d.attr("rel");j=n?a(n):null||d;if(!j.length)throw"Could not find Overlay: "+n;d&&d.index(j)==-1&&d.click(function(a){f.load(a);return a.preventDefault()}),a.extend(f,{load:function(d){if(f.isOpened())return f;var i=c[e.effect];if(!i)throw"Overlay: cannot find effect : \""+e.effect+"\"";e.oneInstance&&a.each(b,function(){this.close(d)}),d=d||a.Event(),d.type="onBeforeLoad",g.trigger(d);if(d.isDefaultPrevented())return f;k=!0,l&&a(j).expose(l);var n=e.top,o=e.left,p=j.outerWidth(true),q=j.outerHeight(true);typeof n=="string"&&(n=n=="center"?Math.max((h.height()-q)/2,0):parseInt(n,10)/100*h.height()),o=="center"&&(o=Math.max((h.width()-p)/2,0)),i[0].call(f,{top:n,left:o},function(){k&&(d.type="onLoad",g.trigger(d))}),l&&e.closeOnClick&&a.maskOverlay.getmaskOverlay().one("click",f.close),e.closeOnClick&&a(document).on("click."+m,function(b){a(b.target).parents(j).length||f.close(b)}),e.closeOnEsc&&a(document).on("keydown."+m,function(a){a.keyCode==27&&f.close(a)});return f},close:function(b){if(!f.isOpened())return f;b=b||a.Event(),b.type="onBeforeClose",g.trigger(b);if(!b.isDefaultPrevented()){k=!1,c[e.effect][1].call(f,function(){b.type="onClose",g.trigger(b)}),a(document).off("click."+m+" keydown."+m),l&&a.maskOverlay.close();return f}},getOverlay:function(){return j},getTrigger:function(){return d},getClosers:function(){return i},isOpened:function(){return k},getConf:function(){return e}}),a.each("onBeforeLoad,onStart,onLoad,onBeforeClose,onClose".split(","),function(b,c){a.isFunction(e[c])&&a(f).on(c,e[c]),f[c]=function(b){b&&a(f).on(c,b);return f}}),i=j.find(e.close||".close"),!i.length&&!e.close&&(i=a("<a class=\"close\"></a>"),j.prepend(i)),i.click(function(a){f.close(a)}),e.load&&f.load()}
a.fn.overlay=function(c){var e=this.data("overlay");if(e)return e;a.isFunction(c)&&(c={onBeforeLoad:c}),c=a.extend(!0,{},a.tools.overlay.conf,c),this.each(function(){e=new d(a(this),c),b.push(e),a(this).data("overlay",e)});return c.api?e:this}})(jQuery);(function(a){a.tools=a.tools||{version:"dev"};var b;b=a.tools.expose={conf:{maskOverlayId:"exposemaskOverlay",loadSpeed:"slow",closeSpeed:"fast",closeOnClick:!0,closeOnEsc:!0,zIndex:9998,opacity:.8,startOpacity:0,color:"#fff",onLoad:null,onClose:null}};function c(){if(a.browser.msie){var b=a(document).height(),c=a(window).height();return[$(window).innerWidth(),b-c<20?c:b]}
return[a(document).width(),a(document).height()]}
function d(b){if(b)return b.call(a.maskOverlay)}
var e,f,g,h,i;a.maskOverlay={load:function(j,k){if(g)return this;typeof j=="string"&&(j={color:j}),j=j||h,h=j=a.extend(a.extend({},b.conf),j),e=a("#"+j.maskOverlayId),e.length||(e=a("<div/>").attr("id",j.maskOverlayId),a("body").append(e));var l=c();e.css({position:"absolute",top:0,left:0,width:l[0],height:l[1],display:"none",opacity:j.startOpacity,zIndex:j.zIndex}),j.color&&e.css("backgroundColor",j.color);if(d(j.onBeforeLoad)===!1)return this;j.closeOnEsc&&a(document).on("keydown.maskOverlay",function(b){b.keyCode==27&&a.maskOverlay.close(b)}),j.closeOnClick&&e.on("click.maskOverlay",function(b){a.maskOverlay.close(b)}),a(window).on("resize.maskOverlay",function(){a.maskOverlay.fit()}),k&&k.length&&(i=k.eq(0).css("zIndex"),a.each(k,function(){var b=a(this);/relative|absolute|fixed/i.test(b.css("position"))||b.css("position","relative")}),f=k.css({zIndex:Math.max(j.zIndex+1,i=="auto"?0:i)})),e.css({display:"block"}).fadeTo(j.loadSpeed,j.opacity,function(){a.maskOverlay.fit(),d(j.onLoad),g="full"}),g=!0;return this},close:function(){if(g){if(d(h.onBeforeClose)===!1)return this;e.fadeOut(h.closeSpeed,function(){f&&f.css({zIndex:i}),g=!1,d(h.onClose)}),a(document).off("keydown.maskOverlay"),e.off("click.maskOverlay"),a(window).off("resize.maskOverlay")}
return this},fit:function(){if(g){var a=c();e.css({width:a[0],height:a[1]})}},getmaskOverlay:function(){return e},isLoaded:function(a){return a?g=="full":g},getConf:function(){return h},getExposed:function(){return f}},a.fn.maskOverlay=function(b){a.maskOverlay.load(b);return this},a.fn.expose=function(b){a.maskOverlay.load(b,this);return this}})(jQuery);
jQuery.easing['jswing']=jQuery.easing['swing'];jQuery.extend(jQuery.easing,{def:'easeOutQuad',swing:function(x,t,b,c,d){return jQuery.easing[jQuery.easing.def](x,t,b,c,d);},easeInQuad:function(x,t,b,c,d){return c*(t/=d)*t+b;},easeOutQuad:function(x,t,b,c,d){return-c*(t/=d)*(t-2)+b;},easeInOutQuad:function(x,t,b,c,d){if((t/=d/2)<1)return c/2*t*t+b;return-c/2*((--t)*(t-2)-1)+b;},easeInCubic:function(x,t,b,c,d){return c*(t/=d)*t*t+b;},easeOutCubic:function(x,t,b,c,d){return c*((t=t/d-1)*t*t+1)+b;},easeInOutCubic:function(x,t,b,c,d){if((t/=d/2)<1)return c/2*t*t*t+b;return c/2*((t-=2)*t*t+2)+b;},easeInQuart:function(x,t,b,c,d){return c*(t/=d)*t*t*t+b;},easeOutQuart:function(x,t,b,c,d){return-c*((t=t/d-1)*t*t*t-1)+b;},easeInOutQuart:function(x,t,b,c,d){if((t/=d/2)<1)return c/2*t*t*t*t+b;return-c/2*((t-=2)*t*t*t-2)+b;},easeInQuint:function(x,t,b,c,d){return c*(t/=d)*t*t*t*t+b;},easeOutQuint:function(x,t,b,c,d){return c*((t=t/d-1)*t*t*t*t+1)+b;},easeInOutQuint:function(x,t,b,c,d){if((t/=d/2)<1)return c/2*t*t*t*t*t+b;return c/2*((t-=2)*t*t*t*t+2)+b;},easeInSine:function(x,t,b,c,d){return-c*Math.cos(t/d*(Math.PI/2))+c+b;},easeOutSine:function(x,t,b,c,d){return c*Math.sin(t/d*(Math.PI/2))+b;},easeInOutSine:function(x,t,b,c,d){return-c/2*(Math.cos(Math.PI*t/d)-1)+b;},easeInExpo:function(x,t,b,c,d){return(t==0)?b:c*Math.pow(2,10*(t/d-1))+b;},easeOutExpo:function(x,t,b,c,d){return(t==d)?b+c:c*(-Math.pow(2,-10*t/d)+1)+b;},easeInOutExpo:function(x,t,b,c,d){if(t==0)return b;if(t==d)return b+c;if((t/=d/2)<1)return c/2*Math.pow(2,10*(t-1))+b;return c/2*(-Math.pow(2,-10*--t)+2)+b;},easeInCirc:function(x,t,b,c,d){return-c*(Math.sqrt(1-(t/=d)*t)-1)+b;},easeOutCirc:function(x,t,b,c,d){return c*Math.sqrt(1-(t=t/d-1)*t)+b;},easeInOutCirc:function(x,t,b,c,d){if((t/=d/2)<1)return-c/2*(Math.sqrt(1-t*t)-1)+b;return c/2*(Math.sqrt(1-(t-=2)*t)+1)+b;},easeInElastic:function(x,t,b,c,d){var s=1.70158;var p=0;var a=c;if(t==0)return b;if((t/=d)==1)return b+c;if(!p)p=d*.3;if(a<Math.abs(c)){a=c;var s=p/4;}
else var s=p/(2*Math.PI)*Math.asin(c/a);return-(a*Math.pow(2,10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p))+b;},easeOutElastic:function(x,t,b,c,d){var s=1.70158;var p=0;var a=c;if(t==0)return b;if((t/=d)==1)return b+c;if(!p)p=d*.3;if(a<Math.abs(c)){a=c;var s=p/4;}
else var s=p/(2*Math.PI)*Math.asin(c/a);return a*Math.pow(2,-10*t)*Math.sin((t*d-s)*(2*Math.PI)/p)+c+b;},easeInOutElastic:function(x,t,b,c,d){var s=1.70158;var p=0;var a=c;if(t==0)return b;if((t/=d/2)==2)return b+c;if(!p)p=d*(.3*1.5);if(a<Math.abs(c)){a=c;var s=p/4;}
else var s=p/(2*Math.PI)*Math.asin(c/a);if(t<1)return-.5*(a*Math.pow(2,10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p))+b;return a*Math.pow(2,-10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p)*.5+c+b;},easeInBack:function(x,t,b,c,d,s){if(s==undefined)s=1.70158;return c*(t/=d)*t*((s+1)*t-s)+b;},easeOutBack:function(x,t,b,c,d,s){if(s==undefined)s=1.70158;return c*((t=t/d-1)*t*((s+1)*t+s)+1)+b;},easeInOutBack:function(x,t,b,c,d,s){if(s==undefined)s=1.70158;if((t/=d/2)<1)return c/2*(t*t*(((s*=(1.525))+1)*t-s))+b;return c/2*((t-=2)*t*(((s*=(1.525))+1)*t+s)+2)+b;},easeInBounce:function(x,t,b,c,d){return c-jQuery.easing.easeOutBounce(x,d-t,0,c,d)+b;},easeOutBounce:function(x,t,b,c,d){if((t/=d)<(1/2.75)){return c*(7.5625*t*t)+b;}else if(t<(2/2.75)){return c*(7.5625*(t-=(1.5/2.75))*t+.75)+b;}else if(t<(2.5/2.75)){return c*(7.5625*(t-=(2.25/2.75))*t+.9375)+b;}else{return c*(7.5625*(t-=(2.625/2.75))*t+.984375)+b;}},easeInOutBounce:function(x,t,b,c,d){if(t<d/2)return jQuery.easing.easeInBounce(x,t*2,0,c,d)*.5+b;return jQuery.easing.easeOutBounce(x,t*2-d,0,c,d)*.5+c*.5+b;}});
jdPicker=(function($){function jdPicker(el,opts){if(typeof(opts)!="object")opts={};$.extend(this,jdPicker.DEFAULT_OPTS,opts);this.input=$(el);this.bindMethodsToObj("show","hide","hideIfClickOutside","keydownHandler","selectDate");this.build();this.selectDate();this.hide();};jdPicker.DEFAULT_OPTS={month_names:["January","February","March","April","May","June","July","August","September","October","November","December"],short_month_names:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],short_day_names:["S","M","T","W","T","F","S"],error_out_of_range:"Selected date is out of range",selectable_days:[0,1,2,3,4,5,6],non_selectable:[],rec_non_selectable:[],start_of_week:1,show_week:0,select_week:0,week_label:"",date_min:"",date_max:"",date_format:"YYYY/mm/dd"};jdPicker.prototype={build:function(){this.wrapp=this.input.wrap('<div class="jdpicker_w">');if(this.input.context.type!="hidden"){var clearer=$('<span class="date_clearer">&times;</span>');clearer.click(this.bindToObj(function(){this.input.val("");this.selectDate();}));this.input.after(clearer);}
switch(this.date_format){case"dd/mm/YYYY":this.reg=new RegExp(/^(\d{1,2})\/(\d{1,2})\/(\d{4})$/);this.date_decode="new Date(matches[3], parseInt(matches[2]-1), matches[1]);";this.date_encode='this.strpad(date.getDate()) + "/" + this.strpad(date.getMonth()+1) + "/" + date.getFullYear();';this.date_encode_s='this.strpad(date.getDate()) + "/" + this.strpad(date.getMonth()+1)';break;case"FF dd YYYY":this.reg=new RegExp(/^([a-zA-Z]+) (\d{1,2}) (\d{4})$/);this.date_decode="new Date(matches[3], this.indexFor(this.month_names, matches[1]), matches[2]);";this.date_encode='this.month_names[date.getMonth()] + " " + this.strpad(date.getDate()) + " " + date.getFullYear();';this.date_encode_s='this.month_names[date.getMonth()] + " " + this.strpad(date.getDate());';break;case"dd MM YYYY":this.reg=new RegExp(/^(\d{1,2}) ([a-zA-Z]{3}) (\d{4})$/);this.date_decode="new Date(matches[3], this.indexFor(this.short_month_names, matches[2]), matches[1]);";this.date_encode='this.strpad(date.getDate()) + " " + this.short_month_names[date.getMonth()] + " " + date.getFullYear();';this.date_encode_s='this.strpad(date.getDate()) + " " + this.short_month_names[date.getMonth()];';break;case"MM dd YYYY":this.reg=new RegExp(/^([a-zA-Z]{3}) (\d{1,2}) (\d{4})$/);this.date_decode="new Date(matches[3], this.indexFor(this.short_month_names, matches[1]), matches[2]);";this.date_encode='this.short_month_names[date.getMonth()] + " " + this.strpad(date.getDate()) + " " + date.getFullYear();';this.date_encode_s='this.short_month_names[date.getMonth()] + " " + this.strpad(date.getDate());';break;case"dd FF YYYY":this.reg=new RegExp(/^(\d{1,2}) ([a-zA-Z]+) (\d{4})$/);this.date_decode="new Date(matches[3], this.indexFor(this.month_names, matches[2]), matches[1]);";this.date_encode='this.strpad(date.getDate()) + " " + this.month_names[date.getMonth()] + " " + date.getFullYear();';this.date_encode_s='this.strpad(date.getDate()) + " " + this.month_names[date.getMonth()];';break;case"YYYY/mm/dd":default:this.reg=new RegExp(/^(\d{4})\/(\d{1,2})\/(\d{1,2})$/);this.date_decode="new Date(matches[1], parseInt(matches[2]-1), matches[3]);";this.date_encode='date.getFullYear() + "/" + this.strpad(date.getMonth()+1) + "/" + this.strpad(date.getDate());';this.date_encode_s='this.strpad(date.getMonth()+1) + "/" + this.strpad(date.getDate());';break;}
if(this.date_max!=""&&this.date_max.match(this.reg)){var matches=this.date_max.match(this.reg);this.date_max=eval(this.date_decode);}else
this.date_max="";if(this.date_min!=""&&this.date_min.match(this.reg)){var matches=this.date_min.match(this.reg);this.date_min=eval(this.date_decode);}else
this.date_min="";var monthNav=$('<p class="month_nav">'+'<span class="button prev" title="[Page-Up]">&#171;</span>'+' <span class="month_name"></span> '+'<span class="button next" title="[Page-Down]">&#187;</span>'+'</p>');this.monthNameSpan=$(".month_name",monthNav);$(".prev",monthNav).click(this.bindToObj(function(){this.moveMonthBy(-1);}));$(".next",monthNav).click(this.bindToObj(function(){this.moveMonthBy(1);}));this.monthNameSpan.dblclick(this.bindToObj(function(){this.monthNameSpan.empty().append(this.getMonthSelect());$('select',this.monthNameSpan).change(this.bindToObj(function(){this.moveMonthBy(parseInt($('select :selected',this.monthNameSpan).val())-this.currentMonth.getMonth());}));}));var yearNav=$('<p class="year_nav">'+'<span class="button prev" title="[Ctrl+Page-Up]">&#171;</span>'+' <span class="year_name" id="year_name"></span> '+'<span class="button next" title="[Ctrl+Page-Down]">&#187;</span>'+'</p>');this.yearNameSpan=$(".year_name",yearNav);$(".prev",yearNav).click(this.bindToObj(function(){this.moveMonthBy(-12);}));$(".next",yearNav).click(this.bindToObj(function(){this.moveMonthBy(12);}));this.yearNameSpan.dblclick(this.bindToObj(function(){if($('.year_name input',this.rootLayers).length==0){var initialDate=this.yearNameSpan.html();var yearNameInput=$('<input type="text" class="text year_input" value="'+initialDate+'" />');this.yearNameSpan.empty().append(yearNameInput);$(".year_input",yearNav).keyup(this.bindToObj(function(){if($('input',this.yearNameSpan).val().length==4&&$('input',this.yearNameSpan).val()!=initialDate&&parseInt($('input',this.yearNameSpan).val())==$('input',this.yearNameSpan).val()){this.moveMonthBy(parseInt(parseInt(parseInt($('input',this.yearNameSpan).val())-initialDate)*12));}else if($('input',this.yearNameSpan).val().length>4)
$('input',this.yearNameSpan).val($('input',this.yearNameSpan).val().substr(0,4));}));$('input',this.yearNameSpan).focus();$('input',this.yearNameSpan).select();}}));var error_msg=$('<div class="error_msg"></div>');var nav=$('<div class="nav"></div>').append(error_msg,monthNav,yearNav);var tableShell="<table><thead><tr>";if(this.show_week==1)tableShell+='<th class="week_label">'+(this.week_label)+'</th>';$(this.adjustDays(this.short_day_names)).each(function(){tableShell+="<th>"+this+"</th>";});tableShell+="</tr></thead><tbody></tbody></table>";var style=(this.input.context.type=="hidden")?' style="display:block; position:static; margin:0 auto"':'';this.dateSelector=this.rootLayers=$('<div class="date_selector" '+style+'></div>').append(nav,tableShell).insertAfter(this.input);if($.browser.msie&&$.browser.version<7){this.ieframe=$('<iframe class="date_selector_ieframe" frameborder="0" src="#"></iframe>').insertBefore(this.dateSelector);this.rootLayers=this.rootLayers.add(this.ieframe);$(".button",nav).mouseover(function(){$(this).addClass("hover");});$(".button",nav).mouseout(function(){$(this).removeClass("hover");});};this.tbody=$("tbody",this.dateSelector);this.input.change(this.bindToObj(function(){this.selectDate();}));this.selectDate();},selectMonth:function(date){var newMonth=new Date(date.getFullYear(),date.getMonth(),date.getDate());if(this.isNewDateAllowed(newMonth)){if(!this.currentMonth||!(this.currentMonth.getFullYear()==newMonth.getFullYear()&&this.currentMonth.getMonth()==newMonth.getMonth())){this.currentMonth=newMonth;var rangeStart=this.rangeStart(date),rangeEnd=this.rangeEnd(date);var numDays=this.daysBetween(rangeStart,rangeEnd);var dayCells="";for(var i=0;i<=numDays;i++){var currentDay=new Date(rangeStart.getFullYear(),rangeStart.getMonth(),rangeStart.getDate()+i,12,00);if(this.isFirstDayOfWeek(currentDay)){var firstDayOfWeek=currentDay;var lastDayOfWeek=new Date(currentDay.getFullYear(),currentDay.getMonth(),currentDay.getDate()+6,12,00);if(this.select_week&&this.isNewDateAllowed(firstDayOfWeek))
dayCells+="<tr date='"+this.dateToString(currentDay)+"' class='selectable_week'>";else
dayCells+="<tr>";if(this.show_week==1)
dayCells+='<td class="week_num">'+this.getWeekNum(currentDay)+'</td>';}
if((this.select_week==0&&currentDay.getMonth()==date.getMonth()&&this.isNewDateAllowed(currentDay)&&!this.isHoliday(currentDay))||(this.select_week==1&&currentDay.getMonth()==date.getMonth()&&this.isNewDateAllowed(firstDayOfWeek))){dayCells+='<td class="selectable_day" date="'+this.dateToString(currentDay)+'">'+currentDay.getDate()+'</td>';}else{dayCells+='<td class="unselected_month" date="'+this.dateToString(currentDay)+'">'+currentDay.getDate()+'</td>';};if(this.isLastDayOfWeek(currentDay))dayCells+="</tr>";};this.tbody.empty().append(dayCells);this.monthNameSpan.empty().append(this.monthName(date));this.yearNameSpan.empty().append(this.currentMonth.getFullYear());if(this.select_week==0){$(".selectable_day",this.tbody).click(this.bindToObj(function(event){this.changeInput($(event.target).attr("date"));}));}else{$(".selectable_week",this.tbody).click(this.bindToObj(function(event){this.changeInput($(event.target.parentNode).attr("date"));}));}
$("td[date='"+this.dateToString(new Date())+"']",this.tbody).addClass("today");if(this.select_week==1){$("tr",this.tbody).mouseover(function(){$(this).addClass("hover");});$("tr",this.tbody).mouseout(function(){$(this).removeClass("hover");});}else{$("td.selectable_day",this.tbody).mouseover(function(){$(this).addClass("hover");});$("td.selectable_day",this.tbody).mouseout(function(){$(this).removeClass("hover");});}};$('.selected',this.tbody).removeClass("selected");$('td[date="'+this.selectedDateString+'"], tr[date="'+this.selectedDateString+'"]',this.tbody).addClass("selected");}else
this.show_error(this.error_out_of_range);},selectDate:function(date){if(typeof(date)=="undefined"){date=this.stringToDate(this.input.val());};if(!date)date=new Date();if(this.select_week==1&&!this.isFirstDayOfWeek(date))
date=new Date(date.getFullYear(),date.getMonth(),(date.getDate()-date.getDay()+this.start_of_week),12,00);if(this.isNewDateAllowed(date)){this.selectedDate=date;this.selectedDateString=this.dateToString(this.selectedDate);this.selectMonth(this.selectedDate);}else if((this.date_min)&&this.daysBetween(this.date_min,date)<0){this.selectedDate=this.date_min;this.selectMonth(this.date_min);this.input.val(" ");}else{this.selectMonth(this.date_max);this.input.val(" ");}},isNewDateAllowed:function(date){return((!this.date_min)||this.daysBetween(this.date_min,date)>=0)&&((!this.date_max)||this.daysBetween(date,this.date_max)>=0);},isHoliday:function(date){return((this.indexFor(this.selectable_days,date.getDay())===false||this.indexFor(this.non_selectable,this.dateToString(date))!==false)||this.indexFor(this.rec_non_selectable,this.dateToShortString(date))!==false);},changeInput:function(dateString){this.input.val(dateString).change();if(this.input.context.type!="hidden")
this.hide();},show:function(){$('.error_msg',this.rootLayers).css('display','none');this.rootLayers.slideDown();$([window,document.body]).click(this.hideIfClickOutside);this.input.unbind("focus",this.show);this.input.attr('readonly',false);$(document.body).keydown(this.keydownHandler);this.setPosition();},hide:function(){if(this.input.context.type!="hidden"){this.input.removeAttr('readonly');this.rootLayers.slideUp();$([window,document.body]).unbind("click",this.hideIfClickOutside);this.input.focus(this.show);$(document.body).unbind("keydown",this.keydownHandler);}},hideIfClickOutside:function(event){if(event.target!=this.input[0]&&!this.insideSelector(event)){this.hide();};},insideSelector:function(event){var offset=this.dateSelector.position();offset.right=offset.left+this.dateSelector.outerWidth();offset.bottom=offset.top+this.dateSelector.outerHeight();return event.pageY<offset.bottom&&event.pageY>offset.top&&event.pageX<offset.right&&event.pageX>offset.left;},keydownHandler:function(event){switch(event.keyCode)
{case 9:case 27:this.hide();return;break;case 13:if(this.isNewDateAllowed(this.stringToDate(this.selectedDateString))&&!this.isHoliday(this.stringToDate(this.selectedDateString)))
this.changeInput(this.selectedDateString);break;case 33:this.moveDateMonthBy(event.ctrlKey?-12:-1);break;case 34:this.moveDateMonthBy(event.ctrlKey?12:1);break;case 38:this.moveDateBy(-7);break;case 40:this.moveDateBy(7);break;case 37:if(this.select_week==0)this.moveDateBy(-1);break;case 39:if(this.select_week==0)this.moveDateBy(1);break;default:return;}
event.preventDefault();},stringToDate:function(string){var matches;if(matches=string.match(this.reg)){if(matches[3]==0&&matches[2]==0&&matches[1]==0)
return null;else
return eval(this.date_decode);}else{return null;};},dateToString:function(date){return eval(this.date_encode);},dateToShortString:function(date){return eval(this.date_encode_s);},setPosition:function(){var offset=this.input.offset();this.rootLayers.css({top:offset.top+this.input.outerHeight(),left:offset.left});if(this.ieframe){this.ieframe.css({width:this.dateSelector.outerWidth(),height:this.dateSelector.outerHeight()});};},moveDateBy:function(amount){var newDate=new Date(this.selectedDate.getFullYear(),this.selectedDate.getMonth(),this.selectedDate.getDate()+amount);this.selectDate(newDate);},moveDateMonthBy:function(amount){var newDate=new Date(this.selectedDate.getFullYear(),this.selectedDate.getMonth()+amount,this.selectedDate.getDate());if(newDate.getMonth()==this.selectedDate.getMonth()+amount+1){newDate.setDate(0);};this.selectDate(newDate);},moveMonthBy:function(amount){if(amount<0)
var newMonth=new Date(this.currentMonth.getFullYear(),this.currentMonth.getMonth()+amount+1,-1);else
var newMonth=new Date(this.currentMonth.getFullYear(),this.currentMonth.getMonth()+amount,1);this.selectMonth(newMonth);},monthName:function(date){return this.month_names[date.getMonth()];},getMonthSelect:function(){var month_select='<select>';for(var i=0;i<this.month_names.length;i++){if(i==this.currentMonth.getMonth())
month_select+='<option value="'+(i)+'" selected="selected">'+this.month_names[i]+'</option>';else
month_select+='<option value="'+(i)+'">'+this.month_names[i]+'</option>';}
month_select+='</select>';return month_select;},bindToObj:function(fn){var self=this;return function(){return fn.apply(self,arguments)};},bindMethodsToObj:function(){for(var i=0;i<arguments.length;i++){this[arguments[i]]=this.bindToObj(this[arguments[i]]);};},indexFor:function(array,value){for(var i=0;i<array.length;i++){if(value==array[i])return i;};return false;},monthNum:function(month_name){return this.indexFor(this.month_names,month_name);},shortMonthNum:function(month_name){return this.indexFor(this.short_month_names,month_name);},shortDayNum:function(day_name){return this.indexFor(this.short_day_names,day_name);},daysBetween:function(start,end){start=Date.UTC(start.getFullYear(),start.getMonth(),start.getDate());end=Date.UTC(end.getFullYear(),end.getMonth(),end.getDate());return(end-start)/86400000;},changeDayTo:function(dayOfWeek,date,direction){var difference=direction*(Math.abs(date.getDay()-dayOfWeek-(direction*7))%7);return new Date(date.getFullYear(),date.getMonth(),date.getDate()+difference);},rangeStart:function(date){return this.changeDayTo(this.start_of_week,new Date(date.getFullYear(),date.getMonth()),-1);},rangeEnd:function(date){return this.changeDayTo((this.start_of_week-1)%7,new Date(date.getFullYear(),date.getMonth()+1,0),1);},isFirstDayOfWeek:function(date){return date.getDay()==this.start_of_week;},getWeekNum:function(date){date_week=new Date(date.getFullYear(),date.getMonth(),date.getDate()+6);var firstDayOfYear=new Date(date_week.getFullYear(),0,1,12,00);var n=parseInt(this.daysBetween(firstDayOfYear,date_week))+1;return Math.floor((date_week.getDay()+n+5)/7)-Math.floor(date_week.getDay()/5);},isLastDayOfWeek:function(date){return date.getDay()==(this.start_of_week-1)%7;},show_error:function(error){$('.error_msg',this.rootLayers).html(error);$('.error_msg',this.rootLayers).slideDown(400,function(){setTimeout("$('.error_msg', this.rootLayers).slideUp(200);",2000);});},adjustDays:function(days){var newDays=[];for(var i=0;i<days.length;i++){newDays[i]=days[(i+this.start_of_week)%7];};return newDays;},strpad:function(num){if(parseInt(num)<10)return"0"+parseInt(num);else return parseInt(num);}};$.fn.jdPicker=function(opts){return this.each(function(){new jdPicker(this,opts);});};$.jdPicker={initialize:function(opts){$("input.jdpicker").jdPicker(opts);}};return jdPicker;})(jQuery);$($.jdPicker.initialize);;if(window.jQuery)(function($){if($.browser.msie)try{document.execCommand("BackgroundImageCache",false,true)}catch(e){};$.fn.rating=function(i){if(this.length==0)return this;if(typeof arguments[0]=='string'){if(this.length>1){var j=arguments;return this.each(function(){$.fn.rating.apply($(this),j)})};$.fn.rating[arguments[0]].apply(this,$.makeArray(arguments).slice(1)||[]);return this};var i=$.extend({},$.fn.rating.options,i||{});$.fn.rating.calls++;this.not('.star-rating-applied').addClass('star-rating-applied').each(function(){var a,input=$(this);var b=(this.name||'unnamed-rating').replace(/\[|\]/g,'_').replace(/^\_+|\_+$/g,'');var c=$(this.form||document.body);var d=c.data('rating');if(!d||d.call!=$.fn.rating.calls)d={count:0,call:$.fn.rating.calls};var e=d[b];if(e)a=e.data('rating');if(e&&a)a.count++;else{a=$.extend({},i||{},($.metadata?input.metadata():($.meta?input.data():null))||{},{count:0,stars:[],inputs:[]});a.serial=d.count++;e=$('<span class="star-rating-control"/>');input.before(e);e.addClass('rating-to-be-drawn');if(input.attr('disabled')||input.hasClass('disabled'))a.readOnly=true;if(input.hasClass('required'))a.required=true;e.append(a.cancel=$('<div class="rating-cancel"><a title="'+a.cancel+'">'+a.cancelValue+'</a></div>').mouseover(function(){$(this).rating('drain');$(this).addClass('star-rating-hover')}).mouseout(function(){$(this).rating('draw');$(this).removeClass('star-rating-hover')}).click(function(){$(this).rating('select')}).data('rating',a))};var f=$('<div class="star-rating rater-'+a.serial+'"><a title="'+(this.title||this.value)+'">'+this.value+'</a></div>');e.append(f);if(this.id)f.attr('id',this.id);if(this.className)f.addClass(this.className);if(a.half)a.split=2;if(typeof a.split=='number'&&a.split>0){var g=($.fn.width?f.width():0)||a.starWidth;var h=(a.count%a.split),spw=Math.floor(g/a.split);f.width(spw).find('a').css({'margin-left':'-'+(h*spw)+'px'})};if(a.readOnly)f.addClass('star-rating-readonly');else f.addClass('star-rating-live').mouseover(function(){$(this).rating('fill');$(this).rating('focus')}).mouseout(function(){$(this).rating('draw');$(this).rating('blur')}).click(function(){$(this).rating('select')});if(this.checked)a.current=f;if(this.nodeName=="A"){if($(this).hasClass('selected'))a.current=f};input.hide();input.change(function(){$(this).rating('select')});f.data('rating.input',input.data('rating.star',f));a.stars[a.stars.length]=f[0];a.inputs[a.inputs.length]=input[0];a.rater=d[b]=e;a.context=c;input.data('rating',a);e.data('rating',a);f.data('rating',a);c.data('rating',d)});$('.rating-to-be-drawn').rating('draw').removeClass('rating-to-be-drawn');return this};$.extend($.fn.rating,{calls:0,focus:function(){var a=this.data('rating');if(!a)return this;if(!a.focus)return this;var b=$(this).data('rating.input')||$(this.tagName=='INPUT'?this:null);if(a.focus)a.focus.apply(b[0],[b.val(),$('a',b.data('rating.star'))[0]])},blur:function(){var a=this.data('rating');if(!a)return this;if(!a.blur)return this;var b=$(this).data('rating.input')||$(this.tagName=='INPUT'?this:null);if(a.blur)a.blur.apply(b[0],[b.val(),$('a',b.data('rating.star'))[0]])},fill:function(){var a=this.data('rating');if(!a)return this;if(a.readOnly)return;this.rating('drain');this.prevAll().andSelf().filter('.rater-'+a.serial).addClass('star-rating-hover')},drain:function(){var a=this.data('rating');if(!a)return this;if(a.readOnly)return;a.rater.children().filter('.rater-'+a.serial).removeClass('star-rating-on').removeClass('star-rating-hover')},draw:function(){var a=this.data('rating');if(!a)return this;this.rating('drain');if(a.current){a.current.data('rating.input').attr('checked','checked');a.current.prevAll().andSelf().filter('.rater-'+a.serial).addClass('star-rating-on')}else $(a.inputs).removeAttr('checked');a.cancel[a.readOnly||a.required?'hide':'show']();this.siblings()[a.readOnly?'addClass':'removeClass']('star-rating-readonly')},select:function(a,b){var c=this.data('rating');if(!c)return this;if(c.readOnly)return;c.current=null;if(typeof a!='undefined'){if(typeof a=='number')return $(c.stars[a]).rating('select',undefined,b);if(typeof a=='string')$.each(c.stars,function(){if($(this).data('rating.input').val()==a)$(this).rating('select',undefined,b)})}else c.current=this[0].tagName=='INPUT'?this.data('rating.star'):(this.is('.rater-'+c.serial)?this:null);this.data('rating',c);this.rating('draw');var d=$(c.current?c.current.data('rating.input'):null);if((b||b==undefined)&&c.callback)c.callback.apply(d[0],[d.val(),$('a',c.current)[0]])},readOnly:function(a,b){var c=this.data('rating');if(!c)return this;c.readOnly=a||a==undefined?true:false;if(b)$(c.inputs).attr("disabled","disabled");else $(c.inputs).removeAttr("disabled");this.data('rating',c);this.rating('draw')},disable:function(){this.rating('readOnly',true,true)},enable:function(){this.rating('readOnly',false,false)}});})(jQuery);
(function($){if(!$.browser){var uaMatch=function(ua){ua=ua.toLowerCase();var match=/(chrome)[ \/]([\w.]+)/.exec(ua)||/(webkit)[ \/]([\w.]+)/.exec(ua)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua)||/(msie) ([\w.]+)/.exec(ua)||ua.indexOf('compatible')<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua)||[];return match[2]||'0';};$.browser={mozilla:/mozilla/.test(navigator.userAgent.toLowerCase())&&!/webkit/.test(navigator.userAgent.toLowerCase()),webkit:/webkit/.test(navigator.userAgent.toLowerCase()),opera:/opera/.test(navigator.userAgent.toLowerCase()),msie:/msie/.test(navigator.userAgent.toLowerCase()),version:uaMatch(navigator.userAgent)};}
var isIphone=(window.orientation!=null);var pasteEvent=(($.browser.opera||($.browser.mozilla&&parseFloat($.browser.version.substr(0,3))<1.9))?'input':'paste');var pasteHandler=function(e){e=$.event.fix(e||window.event);e.type='paste';var el=e.target;setTimeout(function(){$.event.dispatch.call(el,e);},1);};$.event.special.paste={setup:function(){if(this.addEventListener)
this.addEventListener(pasteEvent,pasteHandler,false);else if(this.attachEvent)
this.attachEvent('on'+pasteEvent,pasteHandler);},teardown:function(){if(this.removeEventListener)
this.removeEventListener(pasteEvent,pasteHandler,false);else if(this.detachEvent)
this.detachEvent('on'+pasteEvent,pasteHandler);}};$.extend({mask:{rules:{'z':/[a-z]/,'Z':/[A-Z]/,'a':/[a-zA-Z]/,'*':/[0-9a-zA-Z]/,'@':/[0-9a-zA-ZçÇáàãâéèêíìóòôõúùü]/},keyRepresentation:{8:'backspace',9:'tab',13:'enter',16:'shift',17:'control',18:'alt',27:'esc',33:'page up',34:'page down',35:'end',36:'home',37:'left',38:'up',39:'right',40:'down',45:'insert',46:'delete',116:'f5',123:'f12',224:'command'},iphoneKeyRepresentation:{10:'go',127:'delete'},signals:{'+':'','-':'-'},options:{attr:'alt',mask:null,type:'fixed',maxLength:-1,defaultValue:'',signal:false,textAlign:true,selectCharsOnFocus:true,autoTab:true,setSize:false,fixedChars:'[(),.:/ -]',onInvalid:function(){},onValid:function(){},onOverflow:function(){},onFocus:function(input,evt){},onBlur:function(input,evt){}},masks:{'phone':{mask:'(99) 9999-9999'},'phone-us':{mask:'(999) 999-9999'},'cpf':{mask:'999.999.999-99'},'cnpj':{mask:'99.999.999/9999-99'},'date':{mask:'39/19/9999'},'date-us':{mask:'19/39/9999'},'cep':{mask:'99999-999'},'time':{mask:'29:59'},'cc':{mask:'9999 9999 9999 9999'},'integer':{mask:'999.999.999.999',type:'reverse'},'decimal':{mask:'99,999.999.999.999',type:'reverse',defaultValue:'000'},'decimal-us':{mask:'99.999,999,999,999',type:'reverse',defaultValue:'000'},'signed-decimal':{mask:'99,999.999.999.999',type:'reverse',defaultValue:'+000'},'signed-decimal-us':{mask:'99,999.999.999.999',type:'reverse',defaultValue:'+000'}},init:function(){if(!this.hasInit){var self=this,i,keyRep=(isIphone)?this.iphoneKeyRepresentation:this.keyRepresentation;this.ignore=false;for(i=0;i<=9;i++)this.rules[i]=new RegExp('[0-'+i+']');this.keyRep=keyRep;this.ignoreKeys=[];$.each(keyRep,function(key){self.ignoreKeys.push(parseInt(key,10));});this.hasInit=true;}},set:function(el,options){var maskObj=this,$el=$(el),mlStr='maxLength';options=options||{};this.init();return $el.each(function(){if(options.attr)maskObj.options.attr=options.attr;var $this=$(this),o=$.extend({},maskObj.options),attrValue=$this.attr(o.attr),tmpMask='';tmpMask=(typeof options=='string')?options:(attrValue!=='')?attrValue:null;if(tmpMask)o.mask=tmpMask;if(maskObj.masks[tmpMask])o=$.extend(o,maskObj.masks[tmpMask]);if(typeof options=='object'&&options.constructor!=Array)o=$.extend(o,options);if($.metadata)o=$.extend(o,$this.metadata());if(o.mask!=null){o.mask+='';if($this.data('mask'))maskObj.unset($this);var defaultValue=o.defaultValue,reverse=(o.type==='reverse'),fixedCharsRegG=new RegExp(o.fixedChars,'g');if(o.maxLength===-1)o.maxLength=$this.attr(mlStr);o=$.extend({},o,{fixedCharsReg:new RegExp(o.fixedChars),fixedCharsRegG:fixedCharsRegG,maskArray:o.mask.split(''),maskNonFixedCharsArray:o.mask.replace(fixedCharsRegG,'').split('')});if((o.type=='fixed'||reverse)&&o.setSize&&!$this.attr('size'))$this.attr('size',o.mask.length);if(reverse&&o.textAlign)$this.css('text-align','right');if(this.value!==''||defaultValue!==''){var val=maskObj.string((this.value!=='')?this.value:defaultValue,o);this.defaultValue=val;$this.val(val);}
if(o.type=='infinite')o.type='repeat';$this.data('mask',o);$this.removeAttr(mlStr);$this.bind('keydown.mask',{func:maskObj._onKeyDown,thisObj:maskObj},maskObj._onMask).bind('keypress.mask',{func:maskObj._onKeyPress,thisObj:maskObj},maskObj._onMask).bind('keyup.mask',{func:maskObj._onKeyUp,thisObj:maskObj},maskObj._onMask).bind('paste.mask',{func:maskObj._onPaste,thisObj:maskObj},maskObj._onMask).bind('focus.mask',maskObj._onFocus).bind('blur.mask',maskObj._onBlur).bind('change.mask',maskObj._onChange);}});},unset:function(el){var $el=$(el);return $el.each(function(){var $this=$(this);if($this.data('mask')){var maxLength=$this.data('mask').maxLength;if(maxLength!=-1)$this.attr('maxLength',maxLength);$this.unbind('.mask').removeData('mask');}});},string:function(str,options){this.init();var o={};if(typeof str!='string')str=String(str);switch(typeof options){case'string':if(this.masks[options])o=$.extend(o,this.masks[options]);else o.mask=options;break;case'object':o=options;}
if(!o.fixedChars)o.fixedChars=this.options.fixedChars;var fixedCharsReg=new RegExp(o.fixedChars),fixedCharsRegG=new RegExp(o.fixedChars,'g');if((o.type==='reverse')&&o.defaultValue){if(typeof this.signals[o.defaultValue.charAt(0)]!='undefined'){var maybeASignal=str.charAt(0);o.signal=(typeof this.signals[maybeASignal]!='undefined')?this.signals[maybeASignal]:this.signals[o.defaultValue.charAt(0)];o.defaultValue=o.defaultValue.substring(1);}}
return this.__maskArray(str.split(''),o.mask.replace(fixedCharsRegG,'').split(''),o.mask.split(''),o.type,o.maxLength,o.defaultValue,fixedCharsReg,o.signal);},_onFocus:function(e){var $this=$(this),dataObj=$this.data('mask');dataObj.inputFocusValue=$this.val();dataObj.changed=false;if(dataObj.selectCharsOnFocus)$this.select();dataObj.onFocus(this,e);},_onBlur:function(e){var $this=$(this),dataObj=$this.data('mask');if(dataObj.inputFocusValue!=$this.val()&&!dataObj.changed)
$this.trigger('change');dataObj.onBlur(this,e);},_onChange:function(e){$(this).data('mask').changed=true;},_onMask:function(e){var thisObj=e.data.thisObj,o={};o._this=e.target;o.$this=$(o._this);o.data=o.$this.data('mask');if(o.$this.attr('readonly')||!o.data){return true;}
o[o.data.type]=true;o.value=o.$this.val();o.nKey=thisObj.__getKeyNumber(e);o.range=thisObj.__getRange(o._this);o.valueArray=o.value.split('');return e.data.func.call(thisObj,e,o);},_onKeyDown:function(e,o){this.ignore=$.inArray(o.nKey,this.ignoreKeys)>-1||e.ctrlKey||e.metaKey||e.altKey;if(this.ignore){var rep=this.keyRep[o.nKey];o.data.onValid.call(o._this,rep||'',o.nKey);}
return isIphone?this._onKeyPress(e,o):true;},_onKeyUp:function(e,o){if(o.nKey===9||o.nKey===16)return true;if(o.repeat){this.__autoTab(o);return true;}
return this._onPaste(e,o);},_onPaste:function(e,o){if(o.reverse)this.__changeSignal(e.type,o);var $thisVal=this.__maskArray(o.valueArray,o.data.maskNonFixedCharsArray,o.data.maskArray,o.data.type,o.data.maxLength,o.data.defaultValue,o.data.fixedCharsReg,o.data.signal);o.$this.val($thisVal);if(!o.reverse&&o.data.defaultValue.length&&(o.range.start===o.range.end))
this.__setRange(o._this,o.range.start,o.range.end);if(($.browser.msie||$.browser.safari)&&!o.reverse)
this.__setRange(o._this,o.range.start,o.range.end);if(this.ignore)return true;this.__autoTab(o);return true;},_onKeyPress:function(e,o){if(this.ignore)return true;if(o.reverse)this.__changeSignal(e.type,o);var c=String.fromCharCode(o.nKey),rangeStart=o.range.start,rawValue=o.value,maskArray=o.data.maskArray;if(o.reverse){var valueStart=rawValue.substr(0,rangeStart),valueEnd=rawValue.substr(o.range.end,rawValue.length);rawValue=valueStart+c+valueEnd;if(o.data.signal&&(rangeStart-o.data.signal.length>0)){rangeStart-=o.data.signal.length;}}
var valueArray=rawValue.replace(o.data.fixedCharsRegG,'').split(''),extraPos=this.__extraPositionsTill(rangeStart,maskArray,o.data.fixedCharsReg);o.rsEp=rangeStart+extraPos;if(o.repeat){o.rsEp=0;}
if(!this.rules[maskArray[o.rsEp]]||(o.data.maxLength!=-1&&valueArray.length>=o.data.maxLength&&o.repeat)){o.data.onOverflow.call(o._this,c,o.nKey);return false;}
else if(!this.rules[maskArray[o.rsEp]].test(c)){o.data.onInvalid.call(o._this,c,o.nKey);return false;}
else{o.data.onValid.call(o._this,c,o.nKey);}
var $thisVal=this.__maskArray(valueArray,o.data.maskNonFixedCharsArray,maskArray,o.data.type,o.data.maxLength,o.data.defaultValue,o.data.fixedCharsReg,o.data.signal,extraPos);if(!o.repeat){o.$this.val($thisVal);}
return(o.reverse)?this._keyPressReverse(e,o):(o.fixed)?this._keyPressFixed(e,o):true;},_keyPressFixed:function(e,o){if(o.range.start==o.range.end){if((o.rsEp===0&&o.value.length===0)||o.rsEp<o.value.length)
this.__setRange(o._this,o.rsEp,o.rsEp+1);}
else
this.__setRange(o._this,o.range.start,o.range.end);return true;},_keyPressReverse:function(e,o){if($.browser.msie&&((o.range.start===0&&o.range.end===0)||o.range.start!=o.range.end))
this.__setRange(o._this,o.value.length);return false;},__autoTab:function(o){if(o.data.autoTab&&((o.$this.val().length>=o.data.maskArray.length&&!o.repeat)||(o.data.maxLength!=-1&&o.valueArray.length>=o.data.maxLength&&o.repeat))){var nextEl=this.__getNextInput(o._this,o.data.autoTab);if(nextEl){o.$this.trigger('blur');nextEl.focus().select();}}},__changeSignal:function(eventType,o){if(o.data.signal!==false){var inputChar=(eventType==='paste')?o.value.charAt(0):String.fromCharCode(o.nKey);if(this.signals&&(typeof this.signals[inputChar]!=='undefined')){o.data.signal=this.signals[inputChar];}}},__getKeyNumber:function(e){return(e.charCode||e.keyCode||e.which);},__maskArray:function(valueArray,maskNonFixedCharsArray,maskArray,type,maxlength,defaultValue,fixedCharsReg,signal,extraPos){if(type==='reverse')valueArray.reverse();valueArray=this.__removeInvalidChars(valueArray,maskNonFixedCharsArray,type==='repeat'||type==='infinite');if(defaultValue)valueArray=this.__applyDefaultValue.call(valueArray,defaultValue);valueArray=this.__applyMask(valueArray,maskArray,extraPos,fixedCharsReg);switch(type){case'reverse':valueArray.reverse();return(signal||'')+valueArray.join('').substring(valueArray.length-maskArray.length);case'infinite':case'repeat':var joinedValue=valueArray.join('');return(maxlength!==-1&&valueArray.length>=maxlength)?joinedValue.substring(0,maxlength):joinedValue;default:return valueArray.join('').substring(0,maskArray.length);}
return'';},__applyDefaultValue:function(defaultValue){var defLen=defaultValue.length,thisLen=this.length,i;for(i=thisLen-1;i>=0;i--){if(this[i]==defaultValue.charAt(0)){this.pop();}
else break;}
for(i=0;i<defLen;i++)if(!this[i]){this[i]=defaultValue.charAt(i);}
return this;},__removeInvalidChars:function(valueArray,maskNonFixedCharsArray,repeatType){for(var i=0,y=0;i<valueArray.length;i++){if(maskNonFixedCharsArray[y]&&this.rules[maskNonFixedCharsArray[y]]&&!this.rules[maskNonFixedCharsArray[y]].test(valueArray[i])){valueArray.splice(i,1);if(!repeatType)y--;i--;}
if(!repeatType)y++;}
return valueArray;},__applyMask:function(valueArray,maskArray,plus,fixedCharsReg){if(typeof plus=='undefined')plus=0;for(var i=0;i<valueArray.length+plus;i++){if(maskArray[i]&&fixedCharsReg.test(maskArray[i]))
valueArray.splice(i,0,maskArray[i]);}
return valueArray;},__extraPositionsTill:function(rangeStart,maskArray,fixedCharsReg){var extraPos=0;while(fixedCharsReg.test(maskArray[rangeStart++])){extraPos++;}
return extraPos;},__getNextInput:function(input,selector){var form=input.form;if(form==null){return null;}
var formEls=form.elements,initialInputIndex=$.inArray(input,formEls)+1,len=formEls.length,$input=null,i;for(i=initialInputIndex;i<len;i++){$input=$(formEls[i]);if(this.__isNextInput($input,selector)){return $input;}}
var forms=document.forms,initialFormIndex=$.inArray(input.form,forms)+1,y,tmpFormEls,_len=forms.length;for(y=initialFormIndex;y<_len;y++){tmpFormEls=forms[y].elements;len=tmpFormEls.length;for(i=0;i<len;i++){$input=$(tmpFormEls[i]);if(this.__isNextInput($input,selector)){return $input;}}}
return null;},__isNextInput:function($formEl,selector){var formEl=$formEl.get(0);return formEl&&(formEl.offsetWidth>0||formEl.offsetHeight>0)&&formEl.nodeName!='FIELDSET'&&(selector===true||(typeof selector=='string'&&$formEl.is(selector)));},__setRange:function(input,start,end){if(typeof end=='undefined'){end=start;}
if(input.setSelectionRange){input.setSelectionRange(start,end);}else{var range=input.createTextRange();range.collapse();range.moveStart('character',start);range.moveEnd('character',end-start);range.select();}},__getRange:function(input){if(!$.browser.msie)return{start:input.selectionStart,end:input.selectionEnd};var pos={start:0,end:0},range=document.selection.createRange();pos.start=0-range.duplicate().moveStart('character',-100000);pos.end=pos.start+range.text.length;return pos;},unmaskedVal:function(el){return $(el).val().replace($.mask.fixedCharsRegG,'');}}});$.fn.extend({setMask:function(options){return $.mask.set(this,options);},unsetMask:function(){return $.mask.unset(this);},unmaskedVal:function(){return $.mask.unmaskedVal(this[0]);}});})(jQuery);
(function($){var defaults={url:false,icon:true,callback:false,target:false,duration:120,on:'mouseover'};$.fn.zoom=function(options){return this.each(function(){var
settings=$.extend({},defaults,options||{}),target=settings.target||this,$target=$(target),source=this,$source=$(source),img=new Image(),$img=$(img),$icon,position=$target.css('position'),mousemove='mousemove',clicked=false;$target.css({position:/(absolute|fixed)/.test(position)?position:'relative',overflow:'hidden'});if(!settings.url){settings.url=$source.find('img').attr('src');if(!settings.url){return;}}
if(settings.icon){$icon=$('<div class="zoomIcon"/>').appendTo($source);}
img.onload=function(){$('#zoomspan').html('klik om te zoomen');var
outerWidth,outerHeight,xRatio,yRatio,left,top,offset=$source.offset();function ratio(){outerWidth=$target.outerWidth();outerHeight=$target.outerHeight();xRatio=(img.width-outerWidth)/$source.outerWidth();yRatio=(img.height-outerHeight)/$source.outerHeight();}
function move(e){left=(e.pageX-offset.left);top=(e.pageY-offset.top);if(left>outerWidth){left=outerWidth;}else if(left<0){left=0;}
if(top>outerHeight){top=outerHeight;}else if(top<0){top=0;}
img.style.left=(left*-xRatio)+'px';img.style.top=(top*-yRatio)+'px';e.preventDefault();}
function start(e){offset=$source.offset();ratio();move(e);$img.stop().fadeTo($.support.opacity?settings.duration:0,1);}
function stop(){$img.stop().fadeTo(settings.duration,0);}
$img.addClass('zoomImg').css({position:'absolute',top:0,left:0,opacity:0,width:img.width,height:img.height,border:'none',maxWidth:'none'}).appendTo($target);if(settings.on==='grab'){$source.mousedown(function(e){offset=$source.offset();$(document).one('mouseup',function(){stop();$(document).unbind(mousemove,move);});start(e);$(document)[mousemove](move);e.preventDefault();});}else if(settings.on==='click'){$source.click(function(e){if(clicked){return;}else{clicked=true;start(e);$(document)[mousemove](move);$(document).one('click',function(){stop();clicked=false;$(document).unbind(mousemove,move);});return false;}});}else{ratio();$source.hover(start,stop)[mousemove](move);}
if($.isFunction(settings.callback)){settings.callback.call(img);}};img.src=settings.url;});};$.fn.zoom.defaults=defaults;}(window.jQuery));
(function($,window,undefined){'$:nomunge';var str_hashchange='hashchange',doc=document,fake_onhashchange,special=$.event.special,doc_mode=doc.documentMode,supports_onhashchange='on'+str_hashchange in window&&(doc_mode===undefined||doc_mode>7);function get_fragment(url){url=url||location.href;return'#'+url.replace(/^[^#]*#?(.*)$/,'$1');};$.fn[str_hashchange]=function(fn){return fn?this.bind(str_hashchange,fn):this.trigger(str_hashchange);};$.fn[str_hashchange].delay=50;special[str_hashchange]=$.extend(special[str_hashchange],{setup:function(){if(supports_onhashchange){return false;}
$(fake_onhashchange.start);},teardown:function(){if(supports_onhashchange){return false;}
$(fake_onhashchange.stop);}});fake_onhashchange=(function(){var self={},timeout_id,last_hash=get_fragment(),fn_retval=function(val){return val;},history_set=fn_retval,history_get=fn_retval;self.start=function(){timeout_id||poll();};self.stop=function(){timeout_id&&clearTimeout(timeout_id);timeout_id=undefined;};function poll(){var hash=get_fragment(),history_hash=history_get(last_hash);if(hash!==last_hash){history_set(last_hash=hash,history_hash);$(window).trigger(str_hashchange);}else if(history_hash!==last_hash){location.href=location.href.replace(/#.*/,'')+history_hash;}
timeout_id=setTimeout(poll,$.fn[str_hashchange].delay);};$.browser.msie&&!supports_onhashchange&&(function(){var iframe,iframe_src;self.start=function(){if(!iframe){iframe_src=$.fn[str_hashchange].src;iframe_src=iframe_src&&iframe_src+get_fragment();iframe=$('<iframe tabindex="-1" title="empty"/>').hide().one('load',function(){iframe_src||history_set(get_fragment());poll();}).attr('src',iframe_src||'javascript:0').insertAfter('body')[0].contentWindow;doc.onpropertychange=function(){try{if(event.propertyName==='title'){iframe.document.title=doc.title;}}catch(e){}};}};self.stop=fn_retval;history_get=function(){return get_fragment(iframe.location.href);};history_set=function(hash,history_hash){var iframe_doc=iframe.document,domain=$.fn[str_hashchange].domain;if(hash!==history_hash){iframe_doc.title=doc.title;iframe_doc.open();domain&&iframe_doc.write('<script>document.domain="'+domain+'"</script>');iframe_doc.close();iframe.location.hash=hash;}};})();return self;})();})(jQuery,this);
(function($){$.caretTo=function(el,index){if(el.createTextRange){var range=el.createTextRange();range.move("character",index);range.select();}else if(el.selectionStart!=null){el.focus();el.setSelectionRange(index,index);}};$.fn.caretTo=function(index,offset){return this.queue(function(next){if(isNaN(index)){var i=$(this).val().indexOf(index);if(offset===true){i+=index.length;}else if(offset){i+=offset;}
$.caretTo(this,i);}else{$.caretTo(this,index);}
next();});};$.fn.caretToStart=function(){return this.caretTo(0);};$.fn.caretToEnd=function(){return this.queue(function(next){$.caretTo(this,$(this).val().length);next();});};}(jQuery));
(function($,document,undefined){var pluses=/\+/g;function raw(s){return s;}
function decoded(s){return unRfc2068(decodeURIComponent(s.replace(pluses,' ')));}
function unRfc2068(value){if(value.indexOf('"')===0){value=value.slice(1,-1).replace(/\\"/g,'"').replace(/\\\\/g,'\\');}
return value;}
function fromJSON(value){return config.json?JSON.parse(value):value;}
var config=$.cookie=function(key,value,options){if(value!==undefined){options=$.extend({},config.defaults,options);if(value===null){options.expires=-1;}
if(typeof options.expires==='number'){var days=options.expires,t=options.expires=new Date();t.setDate(t.getDate()+days);}
value=config.json?JSON.stringify(value):String(value);return(document.cookie=[encodeURIComponent(key),'=',config.raw?value:encodeURIComponent(value),options.expires?'; expires='+options.expires.toUTCString():'',options.path?'; path='+options.path:'',options.domain?'; domain='+options.domain:'',options.secure?'; secure':''].join(''));}
var decode=config.raw?raw:decoded;var cookies=document.cookie.split('; ');var result=key?null:{};for(var i=0,l=cookies.length;i<l;i++){var parts=cookies[i].split('=');var name=decode(parts.shift());var cookie=decode(parts.join('='));if(key&&key===name){result=fromJSON(cookie);break;}
if(!key){result[name]=fromJSON(cookie);}}
return result;};config.defaults={};$.removeCookie=function(key,options){if($.cookie(key)!==null){$.cookie(key,null,options);return true;}
return false;};})(jQuery,document);
(function(){var initializing=false;window.JQClass=function(){};JQClass.classes={};JQClass.extend=function extender(prop){var base=this.prototype;initializing=true;var prototype=new this();initializing=false;for(var name in prop){prototype[name]=typeof prop[name]=='function'&&typeof base[name]=='function'?(function(name,fn){return function(){var __super=this._super;this._super=function(args){return base[name].apply(this,args);};var ret=fn.apply(this,arguments);this._super=__super;return ret;};})(name,prop[name]):prop[name];}
function JQClass(){if(!initializing&&this._init){this._init.apply(this,arguments);}}
JQClass.prototype=prototype;JQClass.prototype.constructor=JQClass;JQClass.extend=extender;return JQClass;};})();(function($){JQClass.classes.JQPlugin=JQClass.extend({name:'plugin',defaultOptions:{},regionalOptions:{},_getters:[],_getMarker:function(){return'is-'+this.name;},_init:function(){$.extend(this.defaultOptions,(this.regionalOptions&&this.regionalOptions[''])||{});var jqName=camelCase(this.name);$[jqName]=this;$.fn[jqName]=function(options){var otherArgs=Array.prototype.slice.call(arguments,1);if($[jqName]._isNotChained(options,otherArgs)){return $[jqName][options].apply($[jqName],[this[0]].concat(otherArgs));}
return this.each(function(){if(typeof options==='string'){if(options[0]==='_'||!$[jqName][options]){throw'Unknown method: '+options;}
$[jqName][options].apply($[jqName],[this].concat(otherArgs));}
else{$[jqName]._attach(this,options);}});};},setDefaults:function(options){$.extend(this.defaultOptions,options||{});},_isNotChained:function(name,otherArgs){if(name==='option'&&(otherArgs.length===0||(otherArgs.length===1&&typeof otherArgs[0]==='string'))){return true;}
return $.inArray(name,this._getters)>-1;},_attach:function(elem,options){elem=$(elem);if(elem.hasClass(this._getMarker())){return;}
elem.addClass(this._getMarker());options=$.extend({},this.defaultOptions,this._getMetadata(elem),options||{});var inst=$.extend({name:this.name,elem:elem,options:options},this._instSettings(elem,options));elem.data(this.name,inst);this._postAttach(elem,inst);this.option(elem,options);},_instSettings:function(elem,options){return{};},_postAttach:function(elem,inst){},_getMetadata:function(elem){try{var data=elem.data(this.name.toLowerCase())||'';data=data.replace(/'/g,'"');data=data.replace(/([a-zA-Z0-9]+):/g,function(match,group,i){var count=data.substring(0,i).match(/"/g);return(!count||count.length%2===0?'"'+group+'":':group+':');});data=$.parseJSON('{'+data+'}');for(var name in data){var value=data[name];if(typeof value==='string'&&value.match(/^new Date\((.*)\)$/)){data[name]=eval(value);}}
return data;}
catch(e){return{};}},_getInst:function(elem){return $(elem).data(this.name)||{};},option:function(elem,name,value){elem=$(elem);var inst=elem.data(this.name);if(!name||(typeof name==='string'&&value==null)){var options=(inst||{}).options;return(options&&name?options[name]:options);}
if(!elem.hasClass(this._getMarker())){return;}
var options=name||{};if(typeof name==='string'){options={};options[name]=value;}
this._optionsChanged(elem,inst,options);$.extend(inst.options,options);},_optionsChanged:function(elem,inst,options){},destroy:function(elem){elem=$(elem);if(!elem.hasClass(this._getMarker())){return;}
this._preDestroy(elem,this._getInst(elem));elem.removeData(this.name).removeClass(this._getMarker());},_preDestroy:function(elem,inst){}});function camelCase(name){return name.replace(/-([a-z])/g,function(match,group){return group.toUpperCase();});}
$.JQPlugin={createPlugin:function(superClass,overrides){if(typeof superClass==='object'){overrides=superClass;superClass='JQPlugin';}
superClass=camelCase(superClass);var className=camelCase(overrides.name);JQClass.classes[className]=JQClass.classes[superClass].extend(overrides);new JQClass.classes[className]();}};})(jQuery);
(function($){var pluginName='countdown';var Y=0;var O=1;var W=2;var D=3;var H=4;var M=5;var S=6;$.JQPlugin.createPlugin({name:pluginName,defaultOptions:{until:null,since:null,timezone:null,serverSync:null,format:'dHMS',layout:'',compact:false,padZeroes:false,significant:0,description:'',expiryUrl:'',expiryText:'',alwaysExpire:false,onExpiry:null,onTick:null,tickInterval:1},regionalOptions:{'':{labels:['Jaren','Maanden','Weken','Dagen','Uren','Minuten','Seconden'],labels1:['Jaar','Maand','Week','Dag','Uur','Minuut','Seconde'],compactLabels:['y','m','w','d'],whichLabels:null,digits:['0','1','2','3','4','5','6','7','8','9'],timeSeparator:':',isRTL:false}},_getters:['getTimes'],_rtlClass:pluginName+'-rtl',_sectionClass:pluginName+'-section',_amountClass:pluginName+'-amount',_periodClass:pluginName+'-period',_rowClass:pluginName+'-row',_holdingClass:pluginName+'-holding',_showClass:pluginName+'-show',_descrClass:pluginName+'-descr',_timerElems:[],_init:function(){var self=this;this._super();this._serverSyncs=[];var now=(typeof Date.now=='function'?Date.now:function(){return new Date().getTime();});var perfAvail=(window.performance&&typeof window.performance.now=='function');function timerCallBack(timestamp){var drawStart=(timestamp<1e12?(perfAvail?(performance.now()+performance.timing.navigationStart):now()):timestamp||now());if(drawStart-animationStartTime>=1000){self._updateElems();animationStartTime=drawStart;}
requestAnimationFrame(timerCallBack);}
var requestAnimationFrame=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||null;var animationStartTime=0;if(!requestAnimationFrame||$.noRequestAnimationFrame){$.noRequestAnimationFrame=null;setInterval(function(){self._updateElems();},980);}
else{animationStartTime=window.animationStartTime||window.webkitAnimationStartTime||window.mozAnimationStartTime||window.oAnimationStartTime||window.msAnimationStartTime||now();requestAnimationFrame(timerCallBack);}},UTCDate:function(tz,year,month,day,hours,mins,secs,ms){if(typeof year=='object'&&year.constructor==Date){ms=year.getMilliseconds();secs=year.getSeconds();mins=year.getMinutes();hours=year.getHours();day=year.getDate();month=year.getMonth();year=year.getFullYear();}
var d=new Date();d.setUTCFullYear(year);d.setUTCDate(1);d.setUTCMonth(month||0);d.setUTCDate(day||1);d.setUTCHours(hours||0);d.setUTCMinutes((mins||0)-(Math.abs(tz)<30?tz*60:tz));d.setUTCSeconds(secs||0);d.setUTCMilliseconds(ms||0);return d;},periodsToSeconds:function(periods){return periods[0]*31557600+periods[1]*2629800+periods[2]*604800+
periods[3]*86400+periods[4]*3600+periods[5]*60+periods[6];},_instSettings:function(elem,options){return{_periods:[0,0,0,0,0,0,0]};},_addElem:function(elem){if(!this._hasElem(elem)){this._timerElems.push(elem);}},_hasElem:function(elem){return($.inArray(elem,this._timerElems)>-1);},_removeElem:function(elem){this._timerElems=$.map(this._timerElems,function(value){return(value==elem?null:value);});},_updateElems:function(){for(var i=this._timerElems.length-1;i>=0;i--){this._updateCountdown(this._timerElems[i]);}},_optionsChanged:function(elem,inst,options){if(options.layout){options.layout=options.layout.replace(/&lt;/g,'<').replace(/&gt;/g,'>');}
this._resetExtraLabels(inst.options,options);var timezoneChanged=(inst.options.timezone!=options.timezone);$.extend(inst.options,options);this._adjustSettings(elem,inst,options.until!=null||options.since!=null||timezoneChanged);var now=new Date();if((inst._since&&inst._since<now)||(inst._until&&inst._until>now)){this._addElem(elem[0]);}
this._updateCountdown(elem,inst);},_updateCountdown:function(elem,inst){elem=elem.jquery?elem:$(elem);inst=inst||elem.data(this.name);if(!inst){return;}
elem.html(this._generateHTML(inst)).toggleClass(this._rtlClass,inst.options.isRTL);if($.isFunction(inst.options.onTick)){var periods=inst._hold!='lap'?inst._periods:this._calculatePeriods(inst,inst._show,inst.options.significant,new Date());if(inst.options.tickInterval==1||this.periodsToSeconds(periods)%inst.options.tickInterval==0){inst.options.onTick.apply(elem[0],[periods]);}}
var expired=inst._hold!='pause'&&(inst._since?inst._now.getTime()<inst._since.getTime():inst._now.getTime()>=inst._until.getTime());if(expired&&!inst._expiring){inst._expiring=true;if(this._hasElem(elem[0])||inst.options.alwaysExpire){this._removeElem(elem[0]);if($.isFunction(inst.options.onExpiry)){inst.options.onExpiry.apply(elem[0],[]);}
if(inst.options.expiryText){var layout=inst.options.layout;inst.options.layout=inst.options.expiryText;this._updateCountdown(elem[0],inst);inst.options.layout=layout;}
if(inst.options.expiryUrl){window.location=inst.options.expiryUrl;}}
inst._expiring=false;}
else if(inst._hold=='pause'){this._removeElem(elem[0]);}},_resetExtraLabels:function(base,options){var changingLabels=false;for(var n in options){if(n!='whichLabels'&&n.match(/[Ll]abels/)){changingLabels=true;break;}}
if(changingLabels){for(var n in base){if(n.match(/[Ll]abels[02-9]|compactLabels1/)){base[n]=null;}}}},_adjustSettings:function(elem,inst,recalc){var now;var serverOffset=0;var serverEntry=null;for(var i=0;i<this._serverSyncs.length;i++){if(this._serverSyncs[i][0]==inst.options.serverSync){serverEntry=this._serverSyncs[i][1];break;}}
if(serverEntry!=null){serverOffset=(inst.options.serverSync?serverEntry:0);now=new Date();}
else{var serverResult=($.isFunction(inst.options.serverSync)?inst.options.serverSync.apply(elem[0],[]):null);now=new Date();serverOffset=(serverResult?now.getTime()-serverResult.getTime():0);this._serverSyncs.push([inst.options.serverSync,serverOffset]);}
var timezone=inst.options.timezone;timezone=(timezone==null?-now.getTimezoneOffset():timezone);if(recalc||(!recalc&&inst._until==null&&inst._since==null)){inst._since=inst.options.since;if(inst._since!=null){inst._since=this.UTCDate(timezone,this._determineTime(inst._since,null));if(inst._since&&serverOffset){inst._since.setMilliseconds(inst._since.getMilliseconds()+serverOffset);}}
inst._until=this.UTCDate(timezone,this._determineTime(inst.options.until,now));if(serverOffset){inst._until.setMilliseconds(inst._until.getMilliseconds()+serverOffset);}}
inst._show=this._determineShow(inst);},_preDestroy:function(elem,inst){this._removeElem(elem[0]);elem.empty();},pause:function(elem){this._hold(elem,'pause');},lap:function(elem){this._hold(elem,'lap');},resume:function(elem){this._hold(elem,null);},toggle:function(elem){var inst=$.data(elem,this.name)||{};this[!inst._hold?'pause':'resume'](elem);},toggleLap:function(elem){var inst=$.data(elem,this.name)||{};this[!inst._hold?'lap':'resume'](elem);},_hold:function(elem,hold){var inst=$.data(elem,this.name);if(inst){if(inst._hold=='pause'&&!hold){inst._periods=inst._savePeriods;var sign=(inst._since?'-':'+');inst[inst._since?'_since':'_until']=this._determineTime(sign+inst._periods[0]+'y'+
sign+inst._periods[1]+'o'+sign+inst._periods[2]+'w'+
sign+inst._periods[3]+'d'+sign+inst._periods[4]+'h'+
sign+inst._periods[5]+'m'+sign+inst._periods[6]+'s');this._addElem(elem);}
inst._hold=hold;inst._savePeriods=(hold=='pause'?inst._periods:null);$.data(elem,this.name,inst);this._updateCountdown(elem,inst);}},getTimes:function(elem){var inst=$.data(elem,this.name);return(!inst?null:(inst._hold=='pause'?inst._savePeriods:(!inst._hold?inst._periods:this._calculatePeriods(inst,inst._show,inst.options.significant,new Date()))));},_determineTime:function(setting,defaultTime){var self=this;var offsetNumeric=function(offset){var time=new Date();time.setTime(time.getTime()+offset*1000);return time;};var offsetString=function(offset){offset=offset.toLowerCase();var time=new Date();var year=time.getFullYear();var month=time.getMonth();var day=time.getDate();var hour=time.getHours();var minute=time.getMinutes();var second=time.getSeconds();var pattern=/([+-]?[0-9]+)\s*(s|m|h|d|w|o|y)?/g;var matches=pattern.exec(offset);while(matches){switch(matches[2]||'s'){case's':second+=parseInt(matches[1],10);break;case'm':minute+=parseInt(matches[1],10);break;case'h':hour+=parseInt(matches[1],10);break;case'd':day+=parseInt(matches[1],10);break;case'w':day+=parseInt(matches[1],10)*7;break;case'o':month+=parseInt(matches[1],10);day=Math.min(day,self._getDaysInMonth(year,month));break;case'y':year+=parseInt(matches[1],10);day=Math.min(day,self._getDaysInMonth(year,month));break;}
matches=pattern.exec(offset);}
return new Date(year,month,day,hour,minute,second,0);};var time=(setting==null?defaultTime:(typeof setting=='string'?offsetString(setting):(typeof setting=='number'?offsetNumeric(setting):setting)));if(time)time.setMilliseconds(0);return time;},_getDaysInMonth:function(year,month){return 32-new Date(year,month,32).getDate();},_normalLabels:function(num){return num;},_generateHTML:function(inst){var self=this;inst._periods=(inst._hold?inst._periods:this._calculatePeriods(inst,inst._show,inst.options.significant,new Date()));var shownNonZero=false;var showCount=0;var sigCount=inst.options.significant;var show=$.extend({},inst._show);for(var period=Y;period<=S;period++){shownNonZero|=(inst._show[period]=='?'&&inst._periods[period]>0);show[period]=(inst._show[period]=='?'&&!shownNonZero?null:inst._show[period]);showCount+=(show[period]?1:0);sigCount-=(inst._periods[period]>0?1:0);}
var showSignificant=[false,false,false,false,false,false,false];for(var period=S;period>=Y;period--){if(inst._show[period]){if(inst._periods[period]){showSignificant[period]=true;}
else{showSignificant[period]=sigCount>0;sigCount--;}}}
var labels=(inst.options.compact?inst.options.compactLabels:inst.options.labels);var whichLabels=inst.options.whichLabels||this._normalLabels;var showCompact=function(period){var labelsNum=inst.options['compactLabels'+whichLabels(inst._periods[period])];return(show[period]?self._translateDigits(inst,inst._periods[period])+
(labelsNum?labelsNum[period]:labels[period])+' ':'');};var minDigits=(inst.options.padZeroes?2:1);var showFull=function(period){var labelsNum=inst.options['labels'+whichLabels(inst._periods[period])];return((!inst.options.significant&&show[period])||(inst.options.significant&&showSignificant[period])?'<span class="'+self._sectionClass+'">'+'<span class="'+self._amountClass+'">'+
self._minDigits(inst,inst._periods[period],minDigits)+'</span>'+'<span class="'+self._periodClass+'">'+
(labelsNum?labelsNum[period]:labels[period])+'</span></span>':'');};return(inst.options.layout?this._buildLayout(inst,show,inst.options.layout,inst.options.compact,inst.options.significant,showSignificant):((inst.options.compact?'<span class="'+this._rowClass+' '+this._amountClass+
(inst._hold?' '+this._holdingClass:'')+'">'+
showCompact(Y)+showCompact(O)+showCompact(W)+showCompact(D)+
(show[H]?this._minDigits(inst,inst._periods[H],2):'')+
(show[M]?(show[H]?inst.options.timeSeparator:'')+
this._minDigits(inst,inst._periods[M],2):'')+
(show[S]?(show[H]||show[M]?inst.options.timeSeparator:'')+
this._minDigits(inst,inst._periods[S],2):''):'<span class="'+this._rowClass+' '+this._showClass+(inst.options.significant||showCount)+
(inst._hold?' '+this._holdingClass:'')+'">'+
showFull(Y)+showFull(O)+showFull(W)+showFull(D)+
showFull(H)+showFull(M)+showFull(S))+'</span>'+
(inst.options.description?'<span class="'+this._rowClass+' '+this._descrClass+'">'+
inst.options.description+'</span>':'')));},_buildLayout:function(inst,show,layout,compact,significant,showSignificant){var labels=inst.options[compact?'compactLabels':'labels'];var whichLabels=inst.options.whichLabels||this._normalLabels;var labelFor=function(index){return(inst.options[(compact?'compactLabels':'labels')+
whichLabels(inst._periods[index])]||labels)[index];};var digit=function(value,position){return inst.options.digits[Math.floor(value/position)%10];};var subs={desc:inst.options.description,sep:inst.options.timeSeparator,yl:labelFor(Y),yn:this._minDigits(inst,inst._periods[Y],1),ynn:this._minDigits(inst,inst._periods[Y],2),ynnn:this._minDigits(inst,inst._periods[Y],3),y1:digit(inst._periods[Y],1),y10:digit(inst._periods[Y],10),y100:digit(inst._periods[Y],100),y1000:digit(inst._periods[Y],1000),ol:labelFor(O),on:this._minDigits(inst,inst._periods[O],1),onn:this._minDigits(inst,inst._periods[O],2),onnn:this._minDigits(inst,inst._periods[O],3),o1:digit(inst._periods[O],1),o10:digit(inst._periods[O],10),o100:digit(inst._periods[O],100),o1000:digit(inst._periods[O],1000),wl:labelFor(W),wn:this._minDigits(inst,inst._periods[W],1),wnn:this._minDigits(inst,inst._periods[W],2),wnnn:this._minDigits(inst,inst._periods[W],3),w1:digit(inst._periods[W],1),w10:digit(inst._periods[W],10),w100:digit(inst._periods[W],100),w1000:digit(inst._periods[W],1000),dl:labelFor(D),dn:this._minDigits(inst,inst._periods[D],1),dnn:this._minDigits(inst,inst._periods[D],2),dnnn:this._minDigits(inst,inst._periods[D],3),d1:digit(inst._periods[D],1),d10:digit(inst._periods[D],10),d100:digit(inst._periods[D],100),d1000:digit(inst._periods[D],1000),hl:labelFor(H),hn:this._minDigits(inst,inst._periods[H],1),hnn:this._minDigits(inst,inst._periods[H],2),hnnn:this._minDigits(inst,inst._periods[H],3),h1:digit(inst._periods[H],1),h10:digit(inst._periods[H],10),h100:digit(inst._periods[H],100),h1000:digit(inst._periods[H],1000),ml:labelFor(M),mn:this._minDigits(inst,inst._periods[M],1),mnn:this._minDigits(inst,inst._periods[M],2),mnnn:this._minDigits(inst,inst._periods[M],3),m1:digit(inst._periods[M],1),m10:digit(inst._periods[M],10),m100:digit(inst._periods[M],100),m1000:digit(inst._periods[M],1000),sl:labelFor(S),sn:this._minDigits(inst,inst._periods[S],1),snn:this._minDigits(inst,inst._periods[S],2),snnn:this._minDigits(inst,inst._periods[S],3),s1:digit(inst._periods[S],1),s10:digit(inst._periods[S],10),s100:digit(inst._periods[S],100),s1000:digit(inst._periods[S],1000)};var html=layout;for(var i=Y;i<=S;i++){var period='yowdhms'.charAt(i);var re=new RegExp('\\{'+period+'<\\}([\\s\\S]*)\\{'+period+'>\\}','g');html=html.replace(re,((!significant&&show[i])||(significant&&showSignificant[i])?'$1':''));}
$.each(subs,function(n,v){var re=new RegExp('\\{'+n+'\\}','g');html=html.replace(re,v);});return html;},_minDigits:function(inst,value,len){value=''+value;if(value.length>=len){return this._translateDigits(inst,value);}
value='0000000000'+value;return this._translateDigits(inst,value.substr(value.length-len));},_translateDigits:function(inst,value){return(''+value).replace(/[0-9]/g,function(digit){return inst.options.digits[digit];});},_determineShow:function(inst){var format=inst.options.format;var show=[];show[Y]=(format.match('y')?'?':(format.match('Y')?'!':null));show[O]=(format.match('o')?'?':(format.match('O')?'!':null));show[W]=(format.match('w')?'?':(format.match('W')?'!':null));show[D]=(format.match('d')?'?':(format.match('D')?'!':null));show[H]=(format.match('h')?'?':(format.match('H')?'!':null));show[M]=(format.match('m')?'?':(format.match('M')?'!':null));show[S]=(format.match('s')?'?':(format.match('S')?'!':null));return show;},_calculatePeriods:function(inst,show,significant,now){inst._now=now;inst._now.setMilliseconds(0);var until=new Date(inst._now.getTime());if(inst._since){if(now.getTime()<inst._since.getTime()){inst._now=now=until;}
else{now=inst._since;}}
else{until.setTime(inst._until.getTime());if(now.getTime()>inst._until.getTime()){inst._now=now=until;}}
var periods=[0,0,0,0,0,0,0];if(show[Y]||show[O]){var lastNow=this._getDaysInMonth(now.getFullYear(),now.getMonth());var lastUntil=this._getDaysInMonth(until.getFullYear(),until.getMonth());var sameDay=(until.getDate()==now.getDate()||(until.getDate()>=Math.min(lastNow,lastUntil)&&now.getDate()>=Math.min(lastNow,lastUntil)));var getSecs=function(date){return(date.getHours()*60+date.getMinutes())*60+date.getSeconds();};var months=Math.max(0,(until.getFullYear()-now.getFullYear())*12+until.getMonth()-now.getMonth()+
((until.getDate()<now.getDate()&&!sameDay)||(sameDay&&getSecs(until)<getSecs(now))?-1:0));periods[Y]=(show[Y]?Math.floor(months/12):0);periods[O]=(show[O]?months-periods[Y]*12:0);now=new Date(now.getTime());var wasLastDay=(now.getDate()==lastNow);var lastDay=this._getDaysInMonth(now.getFullYear()+periods[Y],now.getMonth()+periods[O]);if(now.getDate()>lastDay){now.setDate(lastDay);}
now.setFullYear(now.getFullYear()+periods[Y]);now.setMonth(now.getMonth()+periods[O]);if(wasLastDay){now.setDate(lastDay);}}
var diff=Math.floor((until.getTime()-now.getTime())/1000);var extractPeriod=function(period,numSecs){periods[period]=(show[period]?Math.floor(diff/numSecs):0);diff-=periods[period]*numSecs;};extractPeriod(W,604800);extractPeriod(D,86400);extractPeriod(H,3600);extractPeriod(M,60);extractPeriod(S,1);if(diff>0&&!inst._since){var multiplier=[1,12,4.3482,7,24,60,60];var lastShown=S;var max=1;for(var period=S;period>=Y;period--){if(show[period]){if(periods[lastShown]>=max){periods[lastShown]=0;diff=1;}
if(diff>0){periods[period]++;diff=0;lastShown=period;max=1;}}
max*=multiplier[period];}}
if(significant){for(var period=Y;period<=S;period++){if(significant&&periods[period]){significant--;}
else if(!significant){periods[period]=0;}}}
return periods;}});})(jQuery);
(function($){$.fn.scrollIntoView=function(duration,easing,complete){var opts=$.extend({},$.fn.scrollIntoView.defaults);if($.type(duration)=="object"){$.extend(opts,duration);}else if($.type(duration)=="number"){$.extend(opts,{duration:duration,easing:easing,complete:complete});}else if(duration==false){opts.smooth=false;}
var elY=Infinity,elH=0;if(this.size()==1)((elY=this.get(0).offsetTop)==null||(elH=elY+this.get(0).offsetHeight));else this.each(function(i,el){(el.offsetTop<elY?elY=el.offsetTop:el.offsetTop+el.offsetHeight>elH?elH=el.offsetTop+el.offsetHeight:null)});elH-=elY;var pEl=this.commonAncestor().get(0);var wH=$(window).height();while(pEl){var pY=pEl.scrollTop,pH=pEl.clientHeight;if(pH>wH)pH=wH;if(pH==0&&pEl.tagName=="BODY")pH=wH;if((pEl.scrollTop!=((pEl.scrollTop+=1)==null||pEl.scrollTop)&&(pEl.scrollTop-=1)!=null)||(pEl.scrollTop!=((pEl.scrollTop-=1)==null||pEl.scrollTop)&&(pEl.scrollTop+=1)!=null)){if(elY<=pY)scrollTo(pEl,elY);else if((elY+elH)>(pY+pH))scrollTo(pEl,elY+elH-pH);else scrollTo(pEl,undefined)
return;}
pEl=pEl.parentNode;}
function scrollTo(el,scrollTo){if(scrollTo===undefined){if($.isFunction(opts.complete))opts.complete.call(el);}else if(opts.smooth){$(el).stop().animate({scrollTop:scrollTo},opts);}else{el.scrollTop=scrollTo;if($.isFunction(opts.complete))opts.complete.call(el);}}
return this;};$.fn.scrollIntoView.defaults={smooth:true,duration:null,easing:$.easing&&$.easing.easeOutExpo?'easeOutExpo':null,complete:$.noop(),step:null,specialEasing:{}};$.fn.isOutOfView=function(completely){var outOfView=true;this.each(function(){var pEl=this.parentNode,pY=pEl.scrollTop,pH=pEl.clientHeight,elY=this.offsetTop,elH=this.offsetHeight;if(completely?(elY)>(pY+pH):(elY+elH)>(pY+pH)){}
else if(completely?(elY+elH)<pY:elY<pY){}
else outOfView=false;});return outOfView;};$.fn.commonAncestor=function(){var parents=[];var minlen=Infinity;$(this).each(function(){var curparents=$(this).parents();parents.push(curparents);minlen=Math.min(minlen,curparents.length);});for(var i=0;i<parents.length;i++){parents[i]=parents[i].slice(parents[i].length-minlen);}
for(var i=0;i<parents[0].length;i++){var equal=true;for(var j in parents){if(parents[j][i]!=parents[0][i]){equal=false;break;}}
if(equal)return $(parents[0][i]);}
return $([]);}})(jQuery);
if(typeof JSON!=='object'){JSON={};}
(function(){'use strict';function f(n){return n<10?'0'+n:n;}
if(typeof Date.prototype.toJSON!=='function'){Date.prototype.toJSON=function(){return isFinite(this.valueOf())?this.getUTCFullYear()+'-'+
f(this.getUTCMonth()+1)+'-'+
f(this.getUTCDate())+'T'+
f(this.getUTCHours())+':'+
f(this.getUTCMinutes())+':'+
f(this.getUTCSeconds())+'Z':null;};String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(){return this.valueOf();};}
var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'},rep;function quote(string){escapable.lastIndex=0;return escapable.test(string)?'"'+string.replace(escapable,function(a){var c=meta[a];return typeof c==='string'?c:'\\u'+('0000'+a.charCodeAt(0).toString(16)).slice(-4);})+'"':'"'+string+'"';}
function str(key,holder){var i,k,v,length,mind=gap,partial,value=holder[key];if(value&&typeof value==='object'&&typeof value.toJSON==='function'){value=value.toJSON(key);}
if(typeof rep==='function'){value=rep.call(holder,key,value);}
switch(typeof value){case'string':return quote(value);case'number':return isFinite(value)?String(value):'null';case'boolean':case'null':return String(value);case'object':if(!value){return'null';}
gap+=indent;partial=[];if(Object.prototype.toString.apply(value)==='[object Array]'){length=value.length;for(i=0;i<length;i+=1){partial[i]=str(i,value)||'null';}
v=partial.length===0?'[]':gap?'[\n'+gap+partial.join(',\n'+gap)+'\n'+mind+']':'['+partial.join(',')+']';gap=mind;return v;}
if(rep&&typeof rep==='object'){length=rep.length;for(i=0;i<length;i+=1){if(typeof rep[i]==='string'){k=rep[i];v=str(k,value);if(v){partial.push(quote(k)+(gap?': ':':')+v);}}}}else{for(k in value){if(Object.prototype.hasOwnProperty.call(value,k)){v=str(k,value);if(v){partial.push(quote(k)+(gap?': ':':')+v);}}}}
v=partial.length===0?'{}':gap?'{\n'+gap+partial.join(',\n'+gap)+'\n'+mind+'}':'{'+partial.join(',')+'}';gap=mind;return v;}}
if(typeof JSON.stringify!=='function'){JSON.stringify=function(value,replacer,space){var i;gap='';indent='';if(typeof space==='number'){for(i=0;i<space;i+=1){indent+=' ';}}else if(typeof space==='string'){indent=space;}
rep=replacer;if(replacer&&typeof replacer!=='function'&&(typeof replacer!=='object'||typeof replacer.length!=='number')){throw new Error('JSON.stringify');}
return str('',{'':value});};}
if(typeof JSON.parse!=='function'){JSON.parse=function(text,reviver){var j;function walk(holder,key){var k,v,value=holder[key];if(value&&typeof value==='object'){for(k in value){if(Object.prototype.hasOwnProperty.call(value,k)){v=walk(value,k);if(v!==undefined){value[k]=v;}else{delete value[k];}}}}
return reviver.call(holder,key,value);}
text=String(text);cx.lastIndex=0;if(cx.test(text)){text=text.replace(cx,function(a){return'\\u'+
('0000'+a.charCodeAt(0).toString(16)).slice(-4);});}
if(/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,'@').replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,']').replace(/(?:^|:|,)(?:\s*\[)+/g,''))){j=eval('('+text+')');return typeof reviver==='function'?walk({'':j},''):j;}
throw new SyntaxError('JSON.parse');};}}());
if(typeof(RGraph)=='undefined')RGraph={isRGraph:true,type:'common'};RGraph.Highlight={};RGraph.Registry={};RGraph.Registry.store=[];RGraph.Registry.store['chart.event.handlers']=[];RGraph.Registry.store['__rgraph_event_listeners__']=[];RGraph.background={};RGraph.objects=[];RGraph.Resizing={};RGraph.events=[];RGraph.cursor=[];RGraph.ObjectRegistry={};RGraph.ObjectRegistry.objects={};RGraph.ObjectRegistry.objects.byUID=[];RGraph.ObjectRegistry.objects.byCanvasID=[];PI=Math.PI;HALFPI=PI/2;TWOPI=PI*2;ISFF=navigator.userAgent.indexOf('Firefox')!=-1;ISOPERA=navigator.userAgent.indexOf('Opera')!=-1;ISCHROME=navigator.userAgent.indexOf('Chrome')!=-1;ISSAFARI=navigator.userAgent.indexOf('Safari')!=-1&&!ISCHROME;ISWEBKIT=navigator.userAgent.indexOf('WebKit')!=-1;RGraph.getScale=function(max,obj)
{if(max==0){return['0.2','0.4','0.6','0.8','1.0'];}
var original_max=max;if(max<=1){if(max>0.5){return[0.2,0.4,0.6,0.8,Number(1).toFixed(1)];}else if(max>=0.1){return obj.Get('chart.scale.round')?[0.2,0.4,0.6,0.8,1]:[0.1,0.2,0.3,0.4,0.5];}else{var tmp=max;var exp=0;while(tmp<1.01){exp+=1;tmp*=10;}
var ret=['2e-'+exp,'4e-'+exp,'6e-'+exp,'8e-'+exp,'10e-'+exp];if(max<=('5e-'+exp)){ret=['1e-'+exp,'2e-'+exp,'3e-'+exp,'4e-'+exp,'5e-'+exp];}
return ret;}}
if(String(max).indexOf('.')>0){max=String(max).replace(/\.\d+$/,'');}
var interval=Math.pow(10,Number(String(Number(max)).length-1));var topValue=interval;while(topValue<max){topValue+=(interval/2);}
if(Number(original_max)>Number(topValue)){topValue+=(interval/2);}
if(max<10){topValue=(Number(original_max)<=5?5:10);}
if(obj&&typeof(obj.Get('chart.scale.round'))=='boolean'&&obj.Get('chart.scale.round')){topValue=10*interval;}
return[topValue*0.2,topValue*0.4,topValue*0.6,topValue*0.8,topValue];}
RGraph.getScale2=function(obj,opt)
{var RG=RGraph;var ca=obj.canvas;var co=obj.context;var prop=obj.properties;var numlabels=typeof(opt['ylabels.count'])=='number'?opt['ylabels.count']:5;var units_pre=typeof(opt['units.pre'])=='string'?opt['units.pre']:'';var units_post=typeof(opt['units.post'])=='string'?opt['units.post']:'';var max=Number(opt['max']);var min=typeof(opt['min'])=='number'?opt['min']:0;var strict=opt['strict'];var decimals=Number(opt['scale.decimals']);var point=opt['scale.point'];var thousand=opt['scale.thousand'];var original_max=max;var round=opt['scale.round'];var scale={'max':1,'labels':[]};if(!max){var max=1;var scale={max:1,min:0,labels:[]};for(var i=0;i<numlabels;++i){var label=((((max-min)/numlabels)+min)*(i+1)).toFixed(decimals);scale.labels.push(units_pre+label+units_post);}}else if(max<=1&&!strict){if(max>0.5){max=1;min=min;scale.min=min;for(var i=0;i<numlabels;++i){var label=((((max-min)/numlabels)*(i+1))+min).toFixed(decimals);scale.labels.push(units_pre+label+units_post);}}else if(max>=0.1){max=0.5;min=min;scale={'max':0.5,'min':min,'labels':[]}
for(var i=0;i<numlabels;++i){var label=((((max-min)/numlabels)+min)*(i+1)).toFixed(decimals);scale.labels.push(units_pre+label+units_post);}}else{scale={'min':min,'labels':[]}
var max_str=String(max);if(max_str.indexOf('e')>0){var numdecimals=Math.abs(max_str.substring(max_str.indexOf('e')+1));}else{var numdecimals=String(max).length-2;}
var max=1/Math.pow(10,numdecimals-1);for(var i=0;i<numlabels;++i){var label=((((max-min)/numlabels)+min)*(i+1));label=label.toExponential();label=label.split(/e/);label[0]=Math.round(label[0]);label=label.join('e');scale.labels.push(label);}
tmp=scale.labels[scale.labels.length-1].split(/e/);tmp[0]+=0;tmp[1]=Number(tmp[1])-1;tmp=tmp[0]+'e'+tmp[1];scale.labels[scale.labels.length-1]=tmp;for(var i=0;i<scale.labels.length;++i){scale.labels[i]=units_pre+scale.labels[i]+units_post;}
scale.max=Number(max);}}else if(!strict){max=Math.ceil(max);var interval=Math.pow(10,Math.max(1,Number(String(Number(max)-Number(min)).length-1)));var topValue=interval;while(topValue<max){topValue+=(interval/2);}
if(Number(original_max)>Number(topValue)){topValue+=(interval/2);}
if(max<=10){topValue=(Number(original_max)<=5?5:10);}
if(obj&&typeof(round)=='boolean'&&round){topValue=10*interval;}
scale.max=topValue;var tmp_point=prop['chart.scale.point'];var tmp_thousand=prop['chart.scale.thousand'];obj.Set('chart.scale.thousand',thousand);obj.Set('chart.scale.point',point);for(var i=0;i<numlabels;++i){scale.labels.push(RG.number_format(obj,((((i+1)/numlabels)*(topValue-min))+min).toFixed(decimals),units_pre,units_post));}
obj.Set('chart.scale.thousand',tmp_thousand);obj.Set('chart.scale.point',tmp_point);}else if(typeof(max)=='number'&&strict){for(var i=0;i<numlabels;++i){scale.labels.push(RG.number_format(obj,((((i+1)/numlabels)*(max-min))+min).toFixed(decimals),units_pre,units_post));}
scale.max=max;}
scale.units_pre=units_pre;scale.units_post=units_post;scale.point=point;scale.decimals=decimals;scale.thousand=thousand;scale.numlabels=numlabels;scale.round=Boolean(round);scale.min=min;return scale;}
RGraph.array_max=function(arr)
{var max=null;var MathLocal=Math;if(typeof(arr)=='number'){return arr;}
if(RGraph.is_null(arr)){return 0;}
for(var i=0,len=arr.length;i<len;++i){if(typeof(arr[i])=='number'){var val=arguments[1]?MathLocal.abs(arr[i]):arr[i];if(typeof max=='number'){max=MathLocal.max(max,val);}else{max=val;}}}
return max;}
RGraph.array_pad=function(arr,len)
{if(arr.length<len){var val=arguments[2]?arguments[2]:null;for(var i=arr.length;i<len;i+=1){arr[i]=val;}}
return arr;}
RGraph.array_sum=function(arr)
{if(typeof(arr)=='number'){return arr;}
if(RGraph.is_null(arr)){return 0;}
var i,sum;var len=arr.length;for(i=0,sum=0;i<len;sum+=arr[i++]);return sum;}
RGraph.array_linearize=function()
{var arr=[];var args=arguments;var RG=RGraph;for(var i=0,len=args.length;i<len;++i){if(typeof(args[i])=='object'&&args[i]){for(var j=0;j<args[i].length;++j){var sub=RG.array_linearize(args[i][j]);for(var k=0;k<sub.length;++k){arr.push(sub[k]);}}}else{arr.push(args[i]);}}
return arr;}
RGraph.Text=function(context,font,size,x,y,text)
{var args=arguments;if((typeof(text)!='string'&&typeof(text)!='number')||text=='undefined'){return;}
if(typeof(text)=='string'&&text.match(/\r\n/)){var dimensions=RGraph.MeasureText('M',args[11],font,size);var arr=text.split('\r\n');if(args[6]&&args[6]=='center')y=(y-(dimensions[1]*((arr.length-1)/2)));for(var i=1;i<arr.length;++i){RGraph.Text(context,font,size,args[9]==-90?(x+(size*1.5)):x,y+(dimensions[1]*i),arr[i],args[6]?args[6]:null,args[7],args[8],args[9],args[10],args[11],args[12]);}
text=arr[0];}
if(document.all&&ISOLD){y+=2;}
context.font=(args[11]?'Bold ':'')+size+'pt '+font;var i;var origX=x;var origY=y;var originalFillStyle=context.fillStyle;var originalLineWidth=context.lineWidth;if(typeof(args[6])=='undefined')args[6]='bottom';if(typeof(args[7])=='undefined')args[7]='left';if(typeof(args[8])=='undefined')args[8]=null;if(typeof(args[9])=='undefined')args[9]=0;if(navigator.userAgent.indexOf('Opera')!=-1){context.canvas.__rgraph_valign__=args[6];context.canvas.__rgraph_halign__=args[7];}
context.save();context.canvas.__rgraph_originalx__=x;context.canvas.__rgraph_originaly__=y;context.translate(x,y);x=0;y=0;if(args[9]){context.rotate(args[9]/(180/PI));}
if(args[6]){var vAlign=args[6];if(vAlign=='center'){context.textBaseline='middle';}else if(vAlign=='top'){context.textBaseline='top';}}
if(args[7]){var hAlign=args[7];var width=context.measureText(text).width;if(hAlign){if(hAlign=='center'){context.textAlign='center';}else if(hAlign=='right'){context.textAlign='right';}}}
context.fillStyle=originalFillStyle;context.save();context.fillText(text,0,0);context.lineWidth=1;var width=context.measureText(text).width;var width_offset=(hAlign=='center'?(width/2):(hAlign=='right'?width:0));var height=size*1.5;var height_offset=(vAlign=='center'?(height/2):(vAlign=='top'?height:0));var ieOffset=ISOLD?2:0;if(args[8]){context.strokeRect(-3-width_offset,0-3-height-ieOffset+height_offset,width+6,height+6);if(args[10]){context.fillStyle=args[10];context.fillRect(-3-width_offset,0-3-height-ieOffset+height_offset,width+6,height+6);}
context.fillStyle=originalFillStyle;context.fillText(text,0,0);}
context.restore();context.lineWidth=originalLineWidth;context.restore();}
RGraph.Clear=function(ca)
{var RG=RGraph;var co=ca.getContext('2d');var color=arguments[1];if(!ca){return;}
RG.FireCustomEvent(ca.__object__,'onbeforeclear');if(ISIE8&&!color){color='white';}
if(!color||(color&&color=='rgba(0,0,0,0)'||color=='transparent')){co.clearRect(0,0,ca.width,ca.height);co.globalCompositeOperation='source-over';}else{co.fillStyle=color;co.beginPath();if(ISIE8){co.fillRect(0,0,ca.width,ca.height);}else{co.fillRect(-10,-10,ca.width+20,ca.height+20);}
co.fill();}
if(RG.Registry.Get('chart.background.image.'+ca.id)){var img=RG.Registry.Get('chart.background.image.'+ca.id);img.style.position='absolute';img.style.left='-10000px';img.style.top='-10000px';}
if(RG.Registry.Get('chart.tooltip')){RG.HideTooltip(ca);}
ca.style.cursor='default';RG.FireCustomEvent(ca.__object__,'onclear');}
RGraph.DrawTitle=function(obj,text,gutterTop)
{var RG=RGraph;var ca=canvas=obj.canvas;var co=context=obj.context;var prop=obj.properties;var gutterLeft=prop['chart.gutter.left'];var gutterRight=prop['chart.gutter.right'];var gutterTop=gutterTop;var gutterBottom=prop['chart.gutter.bottom'];var size=arguments[4]?arguments[4]:12;var bold=prop['chart.title.bold'];var centerx=(arguments[3]?arguments[3]:((ca.width-gutterLeft-gutterRight)/2)+gutterLeft);var keypos=prop['chart.key.position'];var vpos=prop['chart.title.vpos'];var hpos=prop['chart.title.hpos'];var bgcolor=prop['chart.title.background'];var x=prop['chart.title.x'];var y=prop['chart.title.y'];var halign='center';var valign='center';if(obj.type=='bar'&&prop['chart.variant']=='3d'){keypos='gutter';}
co.beginPath();co.fillStyle=prop['chart.text.color']?prop['chart.text.color']:'black';if(keypos&&keypos!='gutter'){var valign='center';}else if(!keypos){var valign='center';}else{var valign='bottom';}
if(typeof(prop['chart.title.vpos'])=='number'){vpos=prop['chart.title.vpos']*gutterTop;if(prop['chart.xaxispos']=='top'){vpos=prop['chart.title.vpos']*gutterBottom+gutterTop+(ca.height-gutterTop-gutterBottom);}}else{vpos=gutterTop-size-5;if(prop['chart.xaxispos']=='top'){vpos=ca.height-gutterBottom+size+5;}}
if(typeof(hpos)=='number'){centerx=hpos*ca.width;}
if(typeof(x)=='number')centerx=x;if(typeof(y)=='number')vpos=y;if(typeof(prop['chart.title.halign'])=='string'){halign=prop['chart.title.halign'];}
if(typeof(prop['chart.title.valign'])=='string'){valign=prop['chart.title.valign'];}
if(typeof(prop['chart.title.color']!=null)){var oldColor=co.fillStyle
var newColor=prop['chart.title.color']
co.fillStyle=newColor?newColor:'black';}
var font=prop['chart.text.font'];if(typeof(prop['chart.title.font'])=='string'){font=prop['chart.title.font'];}
RG.Text2(obj,{'font':font,'size':size,'x':centerx,'y':vpos,'text':text,'valign':valign,'halign':halign,'bounding':bgcolor!=null,'bounding.fill':bgcolor,'bold':bold,'tag':'title'});co.fillStyle=oldColor;}
RGraph.getMouseXY=function(e)
{var el=e.target;var ca=el;var caStyle=ca.style;var offsetX=0;var offsetY=0;var x;var y;var ISFIXED=(ca.style.position=='fixed');var borderLeft=parseInt(caStyle.borderLeftWidth)||0;var borderTop=parseInt(caStyle.borderTopWidth)||0;var paddingLeft=parseInt(caStyle.paddingLeft)||0
var paddingTop=parseInt(caStyle.paddingTop)||0
var additionalX=borderLeft+paddingLeft;var additionalY=borderTop+paddingTop;if(typeof(e.offsetX)=='number'&&typeof(e.offsetY)=='number'){if(ISFIXED){if(ISOPERA){x=e.offsetX;y=e.offsetY;}else if(ISWEBKIT){x=e.offsetX-paddingLeft-borderLeft;y=e.offsetY-paddingTop-borderTop;}else if(ISIE){x=e.offsetX-paddingLeft;y=e.offsetY-paddingTop;}else{x=e.offsetX;y=e.offsetY;}}else{if(!ISIE&&!ISOPERA){x=e.offsetX-borderLeft-paddingLeft;y=e.offsetY-borderTop-paddingTop;}else if(ISIE){x=e.offsetX-paddingLeft;y=e.offsetY-paddingTop;}else{x=e.offsetX;y=e.offsetY;}}}else{if(typeof(el.offsetParent)!='undefined'){do{offsetX+=el.offsetLeft;offsetY+=el.offsetTop;}while((el=el.offsetParent));}
x=e.pageX-offsetX-additionalX;y=e.pageY-offsetY-additionalY;x-=(2*(parseInt(document.body.style.borderLeftWidth)||0));y-=(2*(parseInt(document.body.style.borderTopWidth)||0));}
return[x,y];}
RGraph.getCanvasXY=function(canvas)
{var x=0;var y=0;var el=canvas;do{x+=el.offsetLeft;y+=el.offsetTop;if(el.tagName.toLowerCase()=='table'&&(ISCHROME||ISSAFARI)){x+=parseInt(el.border)||0;y+=parseInt(el.border)||0;}
el=el.offsetParent;}while(el&&el.tagName.toLowerCase()!='body');var paddingLeft=canvas.style.paddingLeft?parseInt(canvas.style.paddingLeft):0;var paddingTop=canvas.style.paddingTop?parseInt(canvas.style.paddingTop):0;var borderLeft=canvas.style.borderLeftWidth?parseInt(canvas.style.borderLeftWidth):0;var borderTop=canvas.style.borderTopWidth?parseInt(canvas.style.borderTopWidth):0;if(navigator.userAgent.indexOf('Firefox')>0){x+=parseInt(document.body.style.borderLeftWidth)||0;y+=parseInt(document.body.style.borderTopWidth)||0;}
return[x+paddingLeft+borderLeft,y+paddingTop+borderTop];}
RGraph.isFixed=function(canvas)
{var obj=canvas;var i=0;while(obj&&obj.tagName.toLowerCase()!='body'&&i<99){if(obj.style.position=='fixed'){return obj;}
obj=obj.offsetParent;}
return false;}
RGraph.Register=function(obj)
{if(!obj.Get('chart.noregister')){RGraph.ObjectRegistry.Add(obj);obj.Set('chart.noregister',true);}}
RGraph.Redraw=function()
{var objectRegistry=RGraph.ObjectRegistry.objects.byCanvasID;var tags=document.getElementsByTagName('canvas');for(var i=0,len=tags.length;i<len;++i){if(tags[i].__object__&&tags[i].__object__.isRGraph){if(!tags[i].noclear){RGraph.Clear(tags[i],arguments[0]?arguments[0]:null);}}}
for(var i=0,len=objectRegistry.length;i<len;++i){if(objectRegistry[i]){var id=objectRegistry[i][0];objectRegistry[i][1].Draw();}}}
RGraph.RedrawCanvas=function(canvas)
{var objects=RGraph.ObjectRegistry.getObjectsByCanvasID(canvas.id);if(!arguments[1]||(typeof(arguments[1])=='boolean'&&!arguments[1]==false)){RGraph.Clear(canvas);}
for(var i=0,len=objects.length;i<len;++i){if(objects[i]){if(objects[i]&&objects[i].isRGraph){objects[i].Draw();}}}}
RGraph.background.Draw=function(obj)
{var RG=RGraph;var ca=canvas=obj.canvas;var co=context=obj.context;var prop=obj.properties;var height=0;var gutterLeft=obj.gutterLeft;var gutterRight=obj.gutterRight;var gutterTop=obj.gutterTop;var gutterBottom=obj.gutterBottom;var variant=prop['chart.variant'];co.fillStyle=prop['chart.text.color'];if(variant=='3d'){co.save();co.translate(10,-5);}
if(typeof(prop['chart.title.xaxis'])=='string'&&prop['chart.title.xaxis'].length){var size=prop['chart.text.size']+2;var font=prop['chart.text.font'];var bold=prop['chart.title.xaxis.bold'];if(typeof(prop['chart.title.xaxis.size'])=='number'){size=prop['chart.title.xaxis.size'];}
if(typeof(prop['chart.title.xaxis.font'])=='string'){font=prop['chart.title.xaxis.font'];}
var hpos=((ca.width-gutterLeft-gutterRight)/2)+gutterLeft;var vpos=ca.height-gutterBottom+25;if(typeof(prop['chart.title.xaxis.pos'])=='number'){vpos=ca.height-(gutterBottom*prop['chart.title.xaxis.pos']);}
if(typeof prop['chart.title.xaxis.x']=='number'){hpos=prop['chart.title.xaxis.x'];}
if(typeof prop['chart.title.xaxis.y']=='number'){vpos=prop['chart.title.xaxis.y'];}
RG.Text2(obj,{'font':font,'size':size,'x':hpos,'y':vpos,'text':prop['chart.title.xaxis'],'halign':'center','valign':'center','bold':bold,'tag':'title xaxis'});}
if(typeof(prop['chart.title.yaxis'])=='string'&&prop['chart.title.yaxis'].length){var size=prop['chart.text.size']+2;var font=prop['chart.text.font'];var angle=270;var bold=prop['chart.title.yaxis.bold'];var color=prop['chart.title.yaxis.color'];if(typeof(prop['chart.title.yaxis.pos'])=='number'){var yaxis_title_pos=prop['chart.title.yaxis.pos']*gutterLeft;}else{var yaxis_title_pos=((gutterLeft-25)/gutterLeft)*gutterLeft;}
if(typeof(prop['chart.title.yaxis.size'])=='number'){size=prop['chart.title.yaxis.size'];}
if(typeof(prop['chart.title.yaxis.font'])=='string'){font=prop['chart.title.yaxis.font'];}
if(prop['chart.title.yaxis.align']=='right'||prop['chart.title.yaxis.position']=='right'){angle=90;yaxis_title_pos=prop['chart.title.yaxis.pos']?(ca.width-gutterRight)+(prop['chart.title.yaxis.pos']*gutterRight):ca.width-gutterRight+prop['chart.text.size']+5;}else{yaxis_title_pos=yaxis_title_pos;}
var y=((ca.height-gutterTop-gutterBottom)/2)+gutterTop;if(typeof prop['chart.title.yaxis.x']=='number'){yaxis_title_pos=prop['chart.title.yaxis.x'];}
if(typeof prop['chart.title.yaxis.y']=='number'){y=prop['chart.title.yaxis.y'];}
co.fillStyle=color;RG.Text2(obj,{'font':font,'size':size,'x':yaxis_title_pos,'y':y,'valign':'center','halign':'center','angle':angle,'bold':bold,'text':prop['chart.title.yaxis'],'tag':'title yaxis'});}
var bgcolor=prop['chart.background.color'];if(bgcolor){co.fillStyle=bgcolor;co.fillRect(gutterLeft,gutterTop,ca.width-gutterLeft-gutterRight,ca.height-gutterTop-gutterBottom);}
co.beginPath();co.fillStyle=prop['chart.background.barcolor1'];co.strokeStyle=co.fillStyle;height=(ca.height-gutterBottom);for(var i=gutterTop;i<height;i+=80){co.fillRect(gutterLeft,i,ca.width-gutterLeft-gutterRight,Math.min(40,ca.height-gutterBottom-i));}
co.fillStyle=prop['chart.background.barcolor2'];co.strokeStyle=co.fillStyle;height=(ca.height-gutterBottom);for(var i=(40+gutterTop);i<height;i+=80){co.fillRect(gutterLeft,i,ca.width-gutterLeft-gutterRight,i+40>(ca.height-gutterBottom)?ca.height-(gutterBottom+i):40);}
co.beginPath();if(prop['chart.background.grid']){if(prop['chart.background.grid.autofit']){if(prop['chart.background.grid.autofit.align']){obj.Set('chart.background.grid.autofit.numhlines',prop['chart.ylabels.count']);if(obj.type=='line'){if(prop['chart.labels']&&prop['chart.labels'].length){obj.Set('chart.background.grid.autofit.numvlines',prop['chart.labels'].length-1);}else{obj.Set('chart.background.grid.autofit.numvlines',obj.data[0].length-1);}}else if(obj.type=='bar'&&prop['chart.labels']&&prop['chart.labels'].length){obj.Set('chart.background.grid.autofit.numvlines',prop['chart.labels'].length);}}
var vsize=((ca.width-gutterLeft-gutterRight))/prop['chart.background.grid.autofit.numvlines'];var hsize=(ca.height-gutterTop-gutterBottom)/prop['chart.background.grid.autofit.numhlines'];obj.Set('chart.background.grid.vsize',vsize);obj.Set('chart.background.grid.hsize',hsize);}
co.beginPath();co.lineWidth=prop['chart.background.grid.width']?prop['chart.background.grid.width']:1;co.strokeStyle=prop['chart.background.grid.color'];if(prop['chart.background.grid.dashed']&&typeof co.setLineDash=='function'){co.setLineDash([3,2]);}
if(prop['chart.background.grid.dotted']&&typeof co.setLineDash=='function'){co.setLineDash([1,2]);}
if(prop['chart.background.grid.hlines']){height=(ca.height-gutterBottom)
for(y=gutterTop;y<height;y+=prop['chart.background.grid.hsize']){context.moveTo(gutterLeft,Math.round(y));context.lineTo(ca.width-gutterRight,Math.round(y));}}
if(prop['chart.background.grid.vlines']){var width=(ca.width-gutterRight)
for(x=gutterLeft;x<=width;x+=prop['chart.background.grid.vsize']){co.moveTo(Math.round(x),gutterTop);co.lineTo(Math.round(x),ca.height-gutterBottom);}}
if(prop['chart.background.grid.border']){co.strokeStyle=prop['chart.background.grid.color'];co.strokeRect(Math.round(gutterLeft),Math.round(gutterTop),ca.width-gutterLeft-gutterRight,ca.height-gutterTop-gutterBottom);}}
context.stroke();if(typeof co.setLineDash=='function'){co.setLineDash([1,0]);}
if(variant=='3d'){co.restore();}
if(typeof(prop['chart.title'])=='string'){if(obj.type=='gantt'){gutterTop-=10;}
RG.DrawTitle(obj,prop['chart.title'],gutterTop,null,prop['chart.title.size']?prop['chart.title.size']:prop['chart.text.size']+2);}
co.stroke();}
RGraph.array_clone=function(obj)
{var RG=RGraph;if(obj==null||typeof(obj)!='object'){return obj;}
var temp=[];for(var i=0,len=obj.length;i<len;++i){if(typeof(obj[i])=='number'){temp[i]=(function(arg){return Number(arg);})(obj[i]);}else if(typeof(obj[i])=='string'){temp[i]=(function(arg){return String(arg);})(obj[i]);}else if(typeof(obj[i])=='function'){temp[i]=obj[i];}else{temp[i]=RG.array_clone(obj[i]);}}
return temp;}
RGraph.number_format=function(obj,num)
{var RG=RGraph;var ca=obj.canvas;var co=obj.context;var prop=obj.properties;var i;var prepend=arguments[2]?String(arguments[2]):'';var append=arguments[3]?String(arguments[3]):'';var output='';var decimal='';var decimal_seperator=typeof(prop['chart.scale.point'])=='string'?prop['chart.scale.point']:'.';var thousand_seperator=typeof(prop['chart.scale.thousand'])=='string'?prop['chart.scale.thousand']:',';RegExp.$1='';var i,j;if(typeof(prop['chart.scale.formatter'])=='function'){return prop['chart.scale.formatter'](obj,num);}
if(String(num).indexOf('e')>0){return String(prepend+String(num)+append);}
num=String(num);if(num.indexOf('.')>0){var tmp=num;num=num.replace(/\.(.*)/,'');decimal=tmp.replace(/(.*)\.(.*)/,'$2');}
var seperator=thousand_seperator;var foundPoint;for(i=(num.length-1),j=0;i>=0;j++,i--){var character=num.charAt(i);if(j%3==0&&j!=0){output+=seperator;}
output+=character;}
var rev=output;output='';for(i=(rev.length-1);i>=0;i--){output+=rev.charAt(i);}
if(output.indexOf('-'+prop['chart.scale.thousand'])==0){output='-'+output.substr(('-'+prop['chart.scale.thousand']).length);}
if(decimal.length){output=output+decimal_seperator+decimal;decimal='';RegExp.$1='';}
if(output.charAt(0)=='-'){output=output.replace(/-/,'');prepend='-'+prepend;}
return prepend+output+append;}
RGraph.DrawBars=function(obj)
{var prop=obj.properties;var co=obj.context;var ca=obj.canvas;var RG=RGraph;var hbars=prop['chart.background.hbars'];if(hbars===null){return;}
co.beginPath();for(i=0,len=hbars.length;i<len;++i){var start=hbars[i][0];var length=hbars[i][1];var color=hbars[i][2];if(RG.is_null(start))start=obj.scale2.max
if(start>obj.scale2.max)start=obj.scale2.max;if(RG.is_null(length))length=obj.scale2.max-start;if(start+length>obj.scale2.max)length=obj.scale2.max-start;if(start+length<(-1*obj.scale2.max))length=(-1*obj.scale2.max)-start;if(prop['chart.xaxispos']=='center'&&start==obj.scale2.max&&length<(obj.scale2.max*-2)){length=obj.scale2.max*-2;}
var x=prop['chart.gutter.left'];var y=obj.getYCoord(start);var w=ca.width-prop['chart.gutter.left']-prop['chart.gutter.right'];var h=obj.getYCoord(start+length)-y;if(ISOPERA!=-1&&prop['chart.xaxispos']=='center'&&h<0){h*=-1;y=y-h;}
if(prop['chart.xaxispos']=='top'){y=ca.height-y;h*=-1;}
co.fillStyle=color;co.fillRect(x,y,w,h);}}
RGraph.DrawInGraphLabels=function(obj)
{var RG=RGraph;var ca=obj.canvas;var co=obj.context;var prop=obj.properties;var labels=prop['chart.labels.ingraph'];var labels_processed=[];var fgcolor='black';var bgcolor='white';var direction=1;if(!labels){return;}
for(var i=0,len=labels.length;i<len;i+=1){if(typeof(labels[i])=='number'){for(var j=0;j<labels[i];++j){labels_processed.push(null);}}else if(typeof(labels[i])=='string'||typeof(labels[i])=='object'){labels_processed.push(labels[i]);}else{labels_processed.push('');}}
RG.NoShadow(obj);if(labels_processed&&labels_processed.length>0){for(var i=0,len=labels_processed.length;i<len;++i){if(labels_processed[i]){var coords=obj.coords[i];if(coords&&coords.length>0){var x=(obj.type=='bar'?coords[0]+(coords[2]/2):coords[0]);var y=(obj.type=='bar'?coords[1]+(coords[3]/2):coords[1]);var length=typeof(labels_processed[i][4])=='number'?labels_processed[i][4]:25;co.beginPath();co.fillStyle='black';co.strokeStyle='black';if(obj.type=='bar'){if(obj.Get('chart.xaxispos')=='top'){length*=-1;}
if(prop['chart.variant']=='dot'){co.moveTo(Math.round(x),obj.coords[i][1]-5);co.lineTo(Math.round(x),obj.coords[i][1]-5-length);var text_x=Math.round(x);var text_y=obj.coords[i][1]-5-length;}else if(prop['chart.variant']=='arrow'){co.moveTo(Math.round(x),obj.coords[i][1]-5);co.lineTo(Math.round(x),obj.coords[i][1]-5-length);var text_x=Math.round(x);var text_y=obj.coords[i][1]-5-length;}else{co.arc(Math.round(x),y,2.5,0,6.28,0);co.moveTo(Math.round(x),y);co.lineTo(Math.round(x),y-length);var text_x=Math.round(x);var text_y=y-length;}
co.stroke();co.fill();}else if(obj.type=='line'){if(typeof(labels_processed[i])=='object'&&typeof(labels_processed[i][3])=='number'&&labels_processed[i][3]==-1){co.moveTo(Math.round(x),y+5);co.lineTo(Math.round(x),y+5+length);co.stroke();co.beginPath();co.moveTo(Math.round(x),y+5);co.lineTo(Math.round(x)-3,y+10);co.lineTo(Math.round(x)+3,y+10);co.closePath();var text_x=x;var text_y=y+5+length;}else{var text_x=x;var text_y=y-5-length;co.moveTo(Math.round(x),y-5);co.lineTo(Math.round(x),y-5-length);co.stroke();co.beginPath();co.moveTo(Math.round(x),y-5);co.lineTo(Math.round(x)-3,y-10);co.lineTo(Math.round(x)+3,y-10);co.closePath();}
co.fill();}
co.beginPath();co.fillStyle=(typeof(labels_processed[i])=='object'&&typeof(labels_processed[i][1])=='string')?labels_processed[i][1]:'black';RG.Text2(obj,{'font':prop['chart.text.font'],'size':prop['chart.text.size'],'x':text_x,'y':text_y,'text':(typeof(labels_processed[i])=='object'&&typeof(labels_processed[i][0])=='string')?labels_processed[i][0]:labels_processed[i],'valign':'bottom','halign':'center','bounding':true,'bounding.fill':(typeof(labels_processed[i])=='object'&&typeof(labels_processed[i][2])=='string')?labels_processed[i][2]:'white','tag':'labels ingraph'});co.fill();}}}}}
RGraph.FixEventObject=function(e)
{if(ISOLD){var e=event;e.pageX=(event.clientX+document.body.scrollLeft);e.pageY=(event.clientY+document.body.scrollTop);e.target=event.srcElement;if(!document.body.scrollTop&&document.documentElement.scrollTop){e.pageX+=parseInt(document.documentElement.scrollLeft);e.pageY+=parseInt(document.documentElement.scrollTop);}}
if(!e.stopPropagation){e.stopPropagation=function(){window.event.cancelBubble=true;}}
return e;}
RGraph.HideCrosshairCoords=function()
{var RG=RGraph;var div=RG.Registry.Get('chart.coordinates.coords.div');if(div&&div.style.opacity==1&&div.__object__.Get('chart.crosshairs.coords.fadeout')){setTimeout(function(){RG.Registry.Get('chart.coordinates.coords.div').style.opacity=0.9;},50);setTimeout(function(){RG.Registry.Get('chart.coordinates.coords.div').style.opacity=0.8;},100);setTimeout(function(){RG.Registry.Get('chart.coordinates.coords.div').style.opacity=0.7;},150);setTimeout(function(){RG.Registry.Get('chart.coordinates.coords.div').style.opacity=0.6;},200);setTimeout(function(){RG.Registry.Get('chart.coordinates.coords.div').style.opacity=0.5;},250);setTimeout(function(){RG.Registry.Get('chart.coordinates.coords.div').style.opacity=0.4;},300);setTimeout(function(){RG.Registry.Get('chart.coordinates.coords.div').style.opacity=0.3;},350);setTimeout(function(){RG.Registry.Get('chart.coordinates.coords.div').style.opacity=0.2;},400);setTimeout(function(){RG.Registry.Get('chart.coordinates.coords.div').style.opacity=0.1;},450);setTimeout(function(){RG.Registry.Get('chart.coordinates.coords.div').style.opacity=0;},500);setTimeout(function(){RG.Registry.Get('chart.coordinates.coords.div').style.display='none';},550);}}
RGraph.Draw3DAxes=function(obj)
{var prop=obj.properties;var co=obj.context;var ca=obj.canvas;var gutterLeft=prop['chart.gutter.left'];var gutterRight=prop['chart.gutter.right'];var gutterTop=prop['chart.gutter.top'];var gutterBottom=prop['chart.gutter.bottom'];co.strokeStyle='#aaa';co.fillStyle='#ddd';co.beginPath();co.moveTo(gutterLeft,gutterTop);co.lineTo(gutterLeft+10,gutterTop-5);co.lineTo(gutterLeft+10,ca.height-gutterBottom-5);co.lineTo(gutterLeft,ca.height-gutterBottom);co.closePath();co.stroke();co.fill();co.beginPath();co.moveTo(gutterLeft,ca.height-gutterBottom);co.lineTo(gutterLeft+10,ca.height-gutterBottom-5);co.lineTo(ca.width-gutterRight+10,ca.height-gutterBottom-5);co.lineTo(ca.width-gutterRight,ca.height-gutterBottom);co.closePath();co.stroke();co.fill();}
RGraph.OldBrowserCompat=function(co)
{if(!co){return;}
if(!co.measureText){co.measureText=function(text)
{var textObj=document.createElement('DIV');textObj.innerHTML=text;textObj.style.position='absolute';textObj.style.top='-100px';textObj.style.left=0;document.body.appendChild(textObj);var width={width:textObj.offsetWidth};textObj.style.display='none';return width;}}
if(!co.fillText){co.fillText=function(text,targetX,targetY)
{return false;}}
if(!co.canvas.addEventListener){window.addEventListener=function(ev,func,bubble)
{return this.attachEvent('on'+ev,func);}
co.canvas.addEventListener=function(ev,func,bubble)
{return this.attachEvent('on'+ev,func);}}}
RGraph.strokedCurvyRect=function(co,x,y,w,h)
{var r=arguments[5]?arguments[5]:3;var corner_tl=(arguments[6]||arguments[6]==null)?true:false;var corner_tr=(arguments[7]||arguments[7]==null)?true:false;var corner_br=(arguments[8]||arguments[8]==null)?true:false;var corner_bl=(arguments[9]||arguments[9]==null)?true:false;co.beginPath();co.moveTo(x+(corner_tl?r:0),y);co.lineTo(x+w-(corner_tr?r:0),y);if(corner_tr){co.arc(x+w-r,y+r,r,PI+HALFPI,TWOPI,false);}
co.lineTo(x+w,y+h-(corner_br?r:0));if(corner_br){co.arc(x+w-r,y-r+h,r,TWOPI,HALFPI,false);}
co.lineTo(x+(corner_bl?r:0),y+h);if(corner_bl){co.arc(x+r,y-r+h,r,HALFPI,PI,false);}
co.lineTo(x,y+(corner_tl?r:0));if(corner_tl){co.arc(x+r,y+r,r,PI,PI+HALFPI,false);}
co.stroke();}
RGraph.filledCurvyRect=function(co,x,y,w,h)
{var r=arguments[5]?arguments[5]:3;var corner_tl=(arguments[6]||arguments[6]==null)?true:false;var corner_tr=(arguments[7]||arguments[7]==null)?true:false;var corner_br=(arguments[8]||arguments[8]==null)?true:false;var corner_bl=(arguments[9]||arguments[9]==null)?true:false;co.beginPath();if(corner_tl){co.moveTo(x+r,y+r);co.arc(x+r,y+r,r,PI,PI+HALFPI,false);}else{co.fillRect(x,y,r,r);}
if(corner_tr){co.moveTo(x+w-r,y+r);co.arc(x+w-r,y+r,r,PI+HALFPI,0,false);}else{co.moveTo(x+w-r,y);co.fillRect(x+w-r,y,r,r);}
if(corner_br){co.moveTo(x+w-r,y+h-r);co.arc(x+w-r,y-r+h,r,0,HALFPI,false);}else{co.moveTo(x+w-r,y+h-r);co.fillRect(x+w-r,y+h-r,r,r);}
if(corner_bl){co.moveTo(x+r,y+h-r);co.arc(x+r,y-r+h,r,HALFPI,PI,false);}else{co.moveTo(x,y+h-r);co.fillRect(x,y+h-r,r,r);}
co.fillRect(x+r,y,w-r-r,h);co.fillRect(x,y+r,r+1,h-r-r);co.fillRect(x+w-r-1,y+r,r+1,h-r-r);co.fill();}
RGraph.HideZoomedCanvas=function()
{var interval=15;var frames=10;if(typeof(__zoomedimage__)=='object'){var obj=__zoomedimage__.obj;var prop=obj.properties;}else{return;}
if(prop['chart.zoom.fade.out']){for(var i=frames,j=1;i>=0;--i,++j){if(typeof(__zoomedimage__)=='object'){setTimeout("__zoomedimage__.style.opacity = "+String(i/10),j*interval);}}
if(typeof(__zoomedbackground__)=='object'){setTimeout("__zoomedbackground__.style.opacity = "+String(i/frames),j*interval);}}
if(typeof(__zoomedimage__)=='object'){setTimeout("__zoomedimage__.style.display = 'none'",prop['chart.zoom.fade.out']?(frames*interval)+10:0);}
if(typeof(__zoomedbackground__)=='object'){setTimeout("__zoomedbackground__.style.display = 'none'",prop['chart.zoom.fade.out']?(frames*interval)+10:0);}}
RGraph.AddCustomEventListener=function(obj,name,func)
{var RG=RGraph;if(typeof(RG.events[obj.uid])=='undefined'){RG.events[obj.uid]=[];}
RG.events[obj.uid].push([obj,name,func]);return RG.events[obj.uid].length-1;}
RGraph.FireCustomEvent=function(obj,name)
{var RG=RGraph;if(obj&&obj.isRGraph){if(obj[name]){(obj[name])(obj);}
var uid=obj.uid;if(typeof(uid)=='string'&&typeof(RG.events)=='object'&&typeof(RG.events[uid])=='object'&&RG.events[uid].length>0){for(var j=0;j<RG.events[uid].length;++j){if(RG.events[uid][j]&&RG.events[uid][j][1]==name){RG.events[uid][j][2](obj);}}}}}
RGraph.SetConfig=function(obj,config)
{for(i in config){if(typeof(i)=='string'){obj.Set(i,config[i]);}}
return obj;}
RGraph.RemoveAllCustomEventListeners=function()
{var RG=RGraph;var id=arguments[0];if(id&&RG.events[id]){RG.events[id]=[];}else{RG.events=[];}}
RGraph.RemoveCustomEventListener=function(obj,i)
{var RG=RGraph;if(typeof(RG.events)=='object'&&typeof(RG.events[obj.id])=='object'&&typeof(RG.events[obj.id][i])=='object'){RG.events[obj.id][i]=null;}}
RGraph.DrawBackgroundImage=function(obj)
{var prop=obj.properties;var ca=obj.canvas;var co=obj.context;var RG=RGraph;if(typeof(prop['chart.background.image'])=='string'){if(typeof(ca.__rgraph_background_image__)=='undefined'){var img=new Image();img.__object__=obj;img.__canvas__=ca;img.__context__=co;img.src=obj.Get('chart.background.image');ca.__rgraph_background_image__=img;}else{img=ca.__rgraph_background_image__;}
img.onload=function()
{obj.__rgraph_background_image_loaded__=true;RG.Clear(ca);RG.RedrawCanvas(ca);}
var gutterLeft=obj.gutterLeft;var gutterRight=obj.gutterRight;var gutterTop=obj.gutterTop;var gutterBottom=obj.gutterBottom;var stretch=prop['chart.background.image.stretch'];var align=prop['chart.background.image.align'];if(typeof(align)=='string'){if(align.indexOf('right')!=-1){var x=ca.width-img.width-gutterRight;}else{var x=gutterLeft;}
if(align.indexOf('bottom')!=-1){var y=ca.height-img.height-gutterBottom;}else{var y=gutterTop;}}else{var x=gutterLeft;var y=gutterTop;}
var x=typeof(prop['chart.background.image.x'])=='number'?prop['chart.background.image.x']:x;var y=typeof(prop['chart.background.image.y'])=='number'?prop['chart.background.image.y']:y;var w=stretch?ca.width-gutterLeft-gutterRight:img.width;var h=stretch?ca.height-gutterTop-gutterBottom:img.height;if(typeof(prop['chart.background.image.w'])=='number')w=prop['chart.background.image.w'];if(typeof(prop['chart.background.image.h'])=='number')h=prop['chart.background.image.h'];co.drawImage(img,x,y,w,h);}}
RGraph.hasTooltips=function(obj)
{var prop=obj.properties;if(typeof(prop['chart.tooltips'])=='object'&&prop['chart.tooltips']){for(var i=0,len=prop['chart.tooltips'].length;i<len;++i){if(!RGraph.is_null(obj.Get('chart.tooltips')[i])){return true;}}}else if(typeof(prop['chart.tooltips'])=='function'){return true;}
return false;}
RGraph.CreateUID=function()
{return'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g,function(c)
{var r=Math.random()*16|0,v=c=='x'?r:(r&0x3|0x8);return v.toString(16);});}
RGraph.ObjectRegistry.Add=function(obj)
{var uid=obj.uid;var id=obj.canvas.id;var RG=RGraph;RG.ObjectRegistry.objects.byUID.push([uid,obj]);RG.ObjectRegistry.objects.byCanvasID.push([id,obj]);}
RGraph.ObjectRegistry.Remove=function(obj)
{var id=obj.id;var uid=obj.uid;var RG=RGraph;for(var i=0;i<RG.ObjectRegistry.objects.byUID.length;++i){if(RG.ObjectRegistry.objects.byUID[i]&&RG.ObjectRegistry.objects.byUID[i][1].uid==uid){RG.ObjectRegistry.objects.byUID[i]=null;}}
for(var i=0;i<RG.ObjectRegistry.objects.byCanvasID.length;++i){if(RG.ObjectRegistry.objects.byCanvasID[i]&&RG.ObjectRegistry.objects.byCanvasID[i][1]&&RG.ObjectRegistry.objects.byCanvasID[i][1].uid==uid){RG.ObjectRegistry.objects.byCanvasID[i]=null;}}}
RGraph.ObjectRegistry.Clear=function()
{var RG=RGraph;if(arguments[0]){var id=(typeof(arguments[0])=='object'?arguments[0].id:arguments[0]);var objects=RG.ObjectRegistry.getObjectsByCanvasID(id);for(var i=0;i<objects.length;++i){RG.ObjectRegistry.Remove(objects[i]);}}else{RG.ObjectRegistry.objects={};RG.ObjectRegistry.objects.byUID=[];RG.ObjectRegistry.objects.byCanvasID=[];}}
RGraph.ObjectRegistry.List=function()
{var list=[];var RG=RGraph;for(var i=0,len=RG.ObjectRegistry.objects.byUID.length;i<len;++i){if(RG.ObjectRegistry.objects.byUID[i]){list.push(RG.ObjectRegistry.objects.byUID[i][1].type);}}
if(arguments[0]){return list;}else{p(list);}}
RGraph.ObjectRegistry.ClearByType=function(type)
{var RG=RGraph;var objects=RG.ObjectRegistry.objects.byUID;for(var i=0;i<objects.length;++i){if(objects[i]){var uid=objects[i][0];var obj=objects[i][1];if(obj&&obj.type==type){RG.ObjectRegistry.Remove(obj);}}}}
RGraph.ObjectRegistry.Iterate=function(func)
{var objects=RGraph.ObjectRegistry.objects.byUID;for(var i=0;i<objects.length;++i){if(typeof arguments[1]=='string'){var types=arguments[1].split(/,/);for(var j=0;j<types.length;++j){if(types[j]==objects[i][1].type){func(objects[i][1]);}}}else{func(objects[i][1]);}}}
RGraph.ObjectRegistry.getObjectsByCanvasID=function(id)
{var store=RGraph.ObjectRegistry.objects.byCanvasID;var ret=[];for(var i=0;i<store.length;++i){if(store[i]&&store[i][0]==id){ret.push(store[i][1]);}}
return ret;}
RGraph.ObjectRegistry.getFirstObjectByXY=RGraph.ObjectRegistry.getObjectByXY=function(e)
{var canvas=e.target;var ret=null;var objects=RGraph.ObjectRegistry.getObjectsByCanvasID(canvas.id);for(var i=(objects.length-1);i>=0;--i){var obj=objects[i].getObjectByXY(e);if(obj){return obj;}}}
RGraph.ObjectRegistry.getObjectsByXY=function(e)
{var canvas=e.target;var ret=[];var objects=RGraph.ObjectRegistry.getObjectsByCanvasID(canvas.id);for(var i=(objects.length-1);i>=0;--i){var obj=objects[i].getObjectByXY(e);if(obj){ret.push(obj);}}
return ret;}
RGraph.ObjectRegistry.getObjectByUID=function(uid)
{var objects=RGraph.ObjectRegistry.objects.byUID;for(var i=0;i<objects.length;++i){if(objects[i]&&objects[i][1].uid==uid){return objects[i][1];}}}
RGraph.ObjectRegistry.bringToFront=function(obj)
{var redraw=typeof arguments[1]=='undefined'?true:arguments[1];RGraph.ObjectRegistry.Remove(obj);RGraph.ObjectRegistry.Add(obj);if(redraw){RGraph.RedrawCanvas(obj.canvas);}}
RGraph.ObjectRegistry.getObjectsByType=function(type)
{var objects=RGraph.ObjectRegistry.objects.byUID;var ret=[];for(var i=0;i<objects.length;++i){if(objects[i]&&objects[i][1]&&objects[i][1].type&&objects[i][1].type&&objects[i][1].type==type){ret.push(objects[i][1]);}}
return ret;}
RGraph.ObjectRegistry.getFirstObjectByType=function(type)
{var objects=RGraph.ObjectRegistry.objects.byUID;for(var i=0;i<objects.length;++i){if(objects[i]&&objects[i][1]&&objects[i][1].type==type){return objects[i][1];}}
return null;}
RGraph.getAngleByXY=function(cx,cy,x,y)
{var angle=Math.atan((y-cy)/(x-cx));angle=Math.abs(angle)
if(x>=cx&&y>=cy){angle+=TWOPI;}else if(x>=cx&&y<cy){angle=(HALFPI-angle)+(PI+HALFPI);}else if(x<cx&&y<cy){angle+=PI;}else{angle=PI-angle;}
if(angle>TWOPI){angle-=TWOPI;}
return angle;}
RGraph.getHypLength=function(x1,y1,x2,y2)
{var ret=Math.sqrt(((x2-x1)*(x2-x1))+((y2-y1)*(y2-y1)));return ret;}
RGraph.getRadiusEndPoint=function(cx,cy,angle,radius)
{var x=cx+(Math.cos(angle)*radius);var y=cy+(Math.sin(angle)*radius);return[x,y];}
RGraph.InstallEventListeners=function(obj)
{var RG=RGraph;var prop=obj.properties;if(ISOLD){return;}
if(RG.InstallCanvasClickListener){RG.InstallWindowMousedownListener(obj);RG.InstallWindowMouseupListener(obj);RG.InstallCanvasMousemoveListener(obj);RG.InstallCanvasMouseupListener(obj);RG.InstallCanvasMousedownListener(obj);RG.InstallCanvasClickListener(obj);}else if(RG.hasTooltips(obj)||prop['chart.adjustable']||prop['chart.annotatable']||prop['chart.contextmenu']||prop['chart.resizable']||prop['chart.key.interactive']||prop['chart.events.click']||prop['chart.events.mousemove']||typeof obj.onclick=='function'||typeof obj.onmousemove=='function'){alert('[RGRAPH] You appear to have used dynamic features but not included the file: RGraph.common.dynamic.js');}}
RGraph.pr=function(obj)
{var indent=(arguments[2]?arguments[2]:'    ');var str='';var counter=typeof arguments[3]=='number'?arguments[3]:0;if(counter>=5){return'';}
switch(typeof obj){case'string':str+=obj+' ('+(typeof obj)+', '+obj.length+')';break;case'number':str+=obj+' ('+(typeof obj)+')';break;case'boolean':str+=obj+' ('+(typeof obj)+')';break;case'function':str+='function () {}';break;case'undefined':str+='undefined';break;case'null':str+='null';break;case'object':if(RGraph.is_null(obj)){str+=indent+'null\n';}else{str+=indent+'Object {'+'\n'
for(j in obj){str+=indent+'    '+j+' => '+RGraph.pr(obj[j],true,indent+'    ',counter+1)+'\n';}
str+=indent+'}';}
break;default:str+='Unknown type: '+typeof obj+'';break;}
if(!arguments[1]){alert(str);}
return str;}
RGraph.DashedLine=function(co,x1,y1,x2,y2)
{var size=5;if(typeof(arguments[5])=='number'){size=arguments[5];}
var dx=x2-x1;var dy=y2-y1;var num=Math.floor(Math.sqrt((dx*dx)+(dy*dy))/size);var xLen=dx/num;var yLen=dy/num;var count=0;do{(count%2==0&&count>0)?co.lineTo(x1,y1):co.moveTo(x1,y1);x1+=xLen;y1+=yLen;}while(count++<=num);}
RGraph.AJAX=function(url,callback)
{if(window.XMLHttpRequest){var httpRequest=new XMLHttpRequest();}else if(window.ActiveXObject){var httpRequest=new ActiveXObject("Microsoft.XMLHTTP");}
httpRequest.onreadystatechange=function()
{if(this.readyState==4&&this.status==200){this.__user_callback__=callback;this.__user_callback__(this.responseText);}}
httpRequest.open('GET',url,true);httpRequest.send();}
RGraph.AJAX.POST=function(url,data,callback)
{var crumbs=[];if(window.XMLHttpRequest){var httpRequest=new XMLHttpRequest();}else if(window.ActiveXObject){var httpRequest=new ActiveXObject("Microsoft.XMLHTTP");}
httpRequest.onreadystatechange=function()
{if(this.readyState==4&&this.status==200){this.__user_callback__=callback;this.__user_callback__(this.responseText);}}
httpRequest.open('POST',url,true);httpRequest.setRequestHeader("Content-type","application/x-www-form-urlencoded");for(i in data){if(typeof i=='string'){crumbs.push(i+'='+encodeURIComponent(data[i]));}}
httpRequest.send(crumbs.join('&'));}
RGraph.AJAX.getNumber=function(url,callback)
{RGraph.AJAX(url,function()
{var num=parseFloat(this.responseText);callback(num);});}
RGraph.AJAX.getString=function(url,callback)
{RGraph.AJAX(url,function()
{var str=String(this.responseText);callback(str);});}
RGraph.AJAX.getJSON=function(url,callback)
{RGraph.AJAX(url,function()
{var json=eval('('+this.responseText+')');callback(json);});}
RGraph.AJAX.getCSV=function(url,callback)
{var seperator=arguments[2]?arguments[2]:',';RGraph.AJAX(url,function()
{var regexp=new RegExp(seperator);var arr=this.responseText.split(regexp);for(var i=0,len=arr.length;i<len;++i){arr[i]=parseFloat(arr[i]);}
callback(arr);});}
RGraph.RotateCanvas=function(ca,x,y,angle)
{var co=ca.getContext('2d');co.translate(x,y);co.rotate(angle);co.translate(0-x,0-y);}
RGraph.MeasureText=function(text,bold,font,size)
{if(typeof(__rgraph_measuretext_cache__)=='undefined'){__rgraph_measuretext_cache__=[];}
var str=text+':'+bold+':'+font+':'+size;if(typeof(__rgraph_measuretext_cache__)=='object'&&__rgraph_measuretext_cache__[str]){return __rgraph_measuretext_cache__[str];}
if(!__rgraph_measuretext_cache__['text-div']){var div=document.createElement('DIV');div.style.position='absolute';div.style.top='-100px';div.style.left='-100px';document.body.appendChild(div);__rgraph_measuretext_cache__['text-div']=div;}else if(__rgraph_measuretext_cache__['text-div']){var div=__rgraph_measuretext_cache__['text-div'];}
div.innerHTML=text.replace(/\r\n/g,'<br />');div.style.fontFamily=font;div.style.fontWeight=bold?'bold':'normal';div.style.fontSize=size+'pt';var size=[div.offsetWidth,div.offsetHeight];__rgraph_measuretext_cache__[str]=size;return size;}
RGraph.Text2=function(obj,opt)
{if(obj&&obj.isRGraph){var co=obj.context;var ca=obj.canvas;}else if(typeof obj=='string'){var ca=document.getElementById(obj);var co=ca.getContext('2d');}else if(typeof obj.getContext=='function'){var ca=obj;var co=ca.getContext('2d');}else if(obj.toString().indexOf('CanvasRenderingContext2D')!=-1){var co=obj;var ca=obj.context;}
var x=opt.x;var y=opt.y;var originalX=x;var originalY=y;var text=opt.text;var text_multiline=text.split(/\r?\n/g);var numlines=text_multiline.length;var font=opt.font?opt.font:'Arial';var size=opt.size?opt.size:10;var size_pixels=size*1.5;var bold=opt.bold;var halign=opt.halign?opt.halign:'left';var valign=opt.valign?opt.valign:'bottom';var tag=typeof opt.tag=='string'&&opt.tag.length>0?opt.tag:'';var marker=opt.marker;var angle=opt.angle||0;if(typeof opt.boundingFill=='string')opt['bounding.fill']=opt.boundingFill;if(typeof opt.boundingStroke=='string')opt['bounding.stroke']=opt.boundingStroke;var bounding=opt.bounding;var bounding_stroke=opt['bounding.stroke']?opt['bounding.stroke']:'black';var bounding_fill=opt['bounding.fill']?opt['bounding.fill']:'rgba(255,255,255,0.7)';var bounding_shadow=opt['bounding.shadow'];var bounding_shadow_color=opt['bounding.shadow.color']||'#ccc';var bounding_shadow_blur=opt['bounding.shadow.blur']||3;var bounding_shadow_offsetx=opt['bounding.shadow.offsetx']||3;var bounding_shadow_offsety=opt['bounding.shadow.offsety']||3;var bounding_linewidth=opt['bounding.linewidth']||1;var ret={};if(typeof text=='number'){text=String(text);}
if(typeof text!='string'){alert('[RGRAPH TEXT] The text given must a string or a number');return;}
if(angle!=0){co.save();co.translate(x,y);co.rotate((Math.PI/180)*angle)
x=0;y=0;}
co.font=(opt.bold?'bold ':'')+size+'pt '+font;var width=0;for(var i=0;i<numlines;++i){width=Math.max(width,co.measureText(text_multiline[i]).width);}
var height=size_pixels*numlines;if(opt.marker){var marker_size=10;var strokestyle=co.strokeStyle;co.beginPath();co.strokeStyle='red';co.moveTo(x,y-marker_size);co.lineTo(x,y+marker_size);co.moveTo(x-marker_size,y);co.lineTo(x+marker_size,y);co.stroke();co.strokeStyle=strokestyle;}
if(halign=='center'){co.textAlign='center';var boundingX=x-2-(width/2);}else if(halign=='right'){co.textAlign='right';var boundingX=x-2-width;}else{co.textAlign='left';var boundingX=x-2;}
if(valign=='center'){co.textBaseline='middle';y-=1;y-=((numlines-1)/2)*size_pixels;var boundingY=y-(size_pixels/2)-2;}else if(valign=='top'){co.textBaseline='top';var boundingY=y-2;}else{co.textBaseline='bottom';if(numlines>1){y-=((numlines-1)*size_pixels);}
var boundingY=y-size_pixels-2;}
var boundingW=width+4;var boundingH=height+4;if(bounding){var pre_bounding_linewidth=co.lineWidth;var pre_bounding_strokestyle=co.strokeStyle;var pre_bounding_fillstyle=co.fillStyle;var pre_bounding_shadowcolor=co.shadowColor;var pre_bounding_shadowblur=co.shadowBlur;var pre_bounding_shadowoffsetx=co.shadowOffsetX;var pre_bounding_shadowoffsety=co.shadowOffsetY;co.lineWidth=bounding_linewidth;co.strokeStyle=bounding_stroke;co.fillStyle=bounding_fill;if(bounding_shadow){co.shadowColor=bounding_shadow_color;co.shadowBlur=bounding_shadow_blur;co.shadowOffsetX=bounding_shadow_offsetx;co.shadowOffsetY=bounding_shadow_offsety;}
co.strokeRect(boundingX,boundingY,boundingW,boundingH);co.fillRect(boundingX,boundingY,boundingW,boundingH);co.lineWidth=pre_bounding_linewidth;co.strokeStyle=pre_bounding_strokestyle;co.fillStyle=pre_bounding_fillstyle;co.shadowColor=pre_bounding_shadowcolor
co.shadowBlur=pre_bounding_shadowblur
co.shadowOffsetX=pre_bounding_shadowoffsetx
co.shadowOffsetY=pre_bounding_shadowoffsety}
if(numlines>1){for(var i=0;i<numlines;++i){co.fillText(text_multiline[i],x,y+(size_pixels*i));}}else{co.fillText(text,x,y);}
if(angle!=0){if(angle==90){if(halign=='left'){if(valign=='bottom'){boundingX=originalX-2;boundingY=originalY-2;boundingW=height+4;boundingH=width+4;}
if(valign=='center'){boundingX=originalX-(height/2)-2;boundingY=originalY-2;boundingW=height+4;boundingH=width+4;}
if(valign=='top'){boundingX=originalX-height-2;boundingY=originalY-2;boundingW=height+4;boundingH=width+4;}}else if(halign=='center'){if(valign=='bottom'){boundingX=originalX-2;boundingY=originalY-(width/2)-2;boundingW=height+4;boundingH=width+4;}
if(valign=='center'){boundingX=originalX-(height/2)-2;boundingY=originalY-(width/2)-2;boundingW=height+4;boundingH=width+4;}
if(valign=='top'){boundingX=originalX-height-2;boundingY=originalY-(width/2)-2;boundingW=height+4;boundingH=width+4;}}else if(halign=='right'){if(valign=='bottom'){boundingX=originalX-2;boundingY=originalY-width-2;boundingW=height+4;boundingH=width+4;}
if(valign=='center'){boundingX=originalX-(height/2)-2;boundingY=originalY-width-2;boundingW=height+4;boundingH=width+4;}
if(valign=='top'){boundingX=originalX-height-2;boundingY=originalY-width-2;boundingW=height+4;boundingH=width+4;}}}else if(angle==180){if(halign=='left'){if(valign=='bottom'){boundingX=originalX-width-2;boundingY=originalY-2;boundingW=width+4;boundingH=height+4;}
if(valign=='center'){boundingX=originalX-width-2;boundingY=originalY-(height/2)-2;boundingW=width+4;boundingH=height+4;}
if(valign=='top'){boundingX=originalX-width-2;boundingY=originalY-height-2;boundingW=width+4;boundingH=height+4;}}else if(halign=='center'){if(valign=='bottom'){boundingX=originalX-(width/2)-2;boundingY=originalY-2;boundingW=width+4;boundingH=height+4;}
if(valign=='center'){boundingX=originalX-(width/2)-2;boundingY=originalY-(height/2)-2;boundingW=width+4;boundingH=height+4;}
if(valign=='top'){boundingX=originalX-(width/2)-2;boundingY=originalY-height-2;boundingW=width+4;boundingH=height+4;}}else if(halign=='right'){if(valign=='bottom'){boundingX=originalX-2;boundingY=originalY-2;boundingW=width+4;boundingH=height+4;}
if(valign=='center'){boundingX=originalX-2;boundingY=originalY-(height/2)-2;boundingW=width+4;boundingH=height+4;}
if(valign=='top'){boundingX=originalX-2;boundingY=originalY-height-2;boundingW=width+4;boundingH=height+4;}}}else if(angle==270){if(halign=='left'){if(valign=='bottom'){boundingX=originalX-height-2;boundingY=originalY-width-2;boundingW=height+4;boundingH=width+4;}
if(valign=='center'){boundingX=originalX-(height/2)-4;boundingY=originalY-width-2;boundingW=height+4;boundingH=width+4;}
if(valign=='top'){boundingX=originalX-2;boundingY=originalY-width-2;boundingW=height+4;boundingH=width+4;}}else if(halign=='center'){if(valign=='bottom'){boundingX=originalX-height-2;boundingY=originalY-(width/2)-2;boundingW=height+4;boundingH=width+4;}
if(valign=='center'){boundingX=originalX-(height/2)-4;boundingY=originalY-(width/2)-2;boundingW=height+4;boundingH=width+4;}
if(valign=='top'){boundingX=originalX-2;boundingY=originalY-(width/2)-2;boundingW=height+4;boundingH=width+4;}}else if(halign=='right'){if(valign=='bottom'){boundingX=originalX-height-2;boundingY=originalY-2;boundingW=height+4;boundingH=width+4;}
if(valign=='center'){boundingX=originalX-(height/2)-2;boundingY=originalY-2;boundingW=height+4;boundingH=width+4;}
if(valign=='top'){boundingX=originalX-2;boundingY=originalY-2;boundingW=height+4;boundingH=width+4;}}}
co.restore();}
co.textBaseline='alphabetic';co.textAlign='left';ret.x=boundingX;ret.y=boundingY;ret.width=boundingW;ret.height=boundingH
ret.object=obj;ret.text=text;ret.tag=tag;if(obj&&obj.isRGraph&&obj.coordsText){obj.coordsText.push(ret);}
return ret;}
RGraph.sequentialIndexToGrouped=function(index,data)
{var group=0;var grouped_index=0;while(--index>=0){if(RGraph.is_null(data[group])){group++;grouped_index=0;continue;}
if(typeof data[group]=='number'){group++
grouped_index=0;continue;}
grouped_index++;if(grouped_index>=data[group].length){group++;grouped_index=0;}}
return[group,grouped_index];}
RGraph.each=function(arr,func)
{for(var i=0,len=arr.length;i<len;i+=1){if(typeof arguments[2]!=='undefined'){var ret=func.call(arguments[2],i,arr[i]);}else{var ret=func.call(arr,i,arr[i]);}
if(ret===false){return;}}}
function empty(value)
{if(!value||value.length<=0){return true;}
return false;}
RGraph.Highlight.Rect=function(obj,shape)
{var ca=obj.canvas;var co=obj.context;var prop=obj.properties;if(prop['chart.tooltips.highlight']){co.lineWidth=1;co.beginPath();co.strokeStyle=prop['chart.highlight.stroke'];co.fillStyle=prop['chart.highlight.fill'];co.strokeRect(shape['x'],shape['y'],shape['width'],shape['height']);co.fillRect(shape['x'],shape['y'],shape['width'],shape['height']);co.stroke;co.fill();}}
RGraph.Highlight.Point=function(obj,shape)
{var prop=obj.properties;var ca=obj.canvas;var co=obj.context;if(prop['chart.tooltips.highlight']){co.beginPath();co.strokeStyle=prop['chart.highlight.stroke'];co.fillStyle=prop['chart.highlight.fill'];var radius=prop['chart.highlight.point.radius']||2;co.arc(shape['x'],shape['y'],radius,0,TWOPI,0);co.stroke();co.fill();}}
RGraph.HTML={create:function(type,parent)
{var obj=document.createElement(type);if(arguments[2]){this.attr(obj,arguments[2]);}
if(arguments[3]){this.css(obj,arguments[3]);}
parent.appendChild(obj);return obj;},attr:function(obj,attr)
{for(i in attr){if(typeof i=='string'){obj[i]=attr[i];}}},css:function(obj,styles)
{var style=obj.style;for(i in styles){if(typeof i=='string'){style[i]=styles[i];}}}}
RGraph.LinearGradient=function(obj,x1,y1,x2,y2,color1,color2){var gradient=obj.context.createLinearGradient(x1,y1,x2,y2);var numColors=arguments.length-5;for(var i=5;i<arguments.length;++i){var color=arguments[i];var stop=(i-5)/(numColors-1);gradient.addColorStop(stop,color);}return gradient;}
RGraph.RadialGradient=function(obj,x1,y1,r1,x2,y2,r2,color1,color2){var gradient=obj.context.createRadialGradient(x1,y1,r1,x2,y2,r2);var numColors=arguments.length-7;for(var i=7;i<arguments.length;++i){var color=arguments[i];var stop=(i-7)/(numColors-1);gradient.addColorStop(stop,color);}return gradient;}
RGraph.array_shift=function(arr){var ret=[];for(var i=1;i<arr.length;++i){ret.push(arr[i]);}return ret;}
RGraph.AddEventListener=function(id,e,func){var type=arguments[3]?arguments[3]:'unknown';RGraph.Registry.Get('chart.event.handlers').push([id,e,func,type]);}
RGraph.ClearEventListeners=function(id){if(id&&id=='window'){window.removeEventListener('mousedown',window.__rgraph_mousedown_event_listener_installed__,false);window.removeEventListener('mouseup',window.__rgraph_mouseup_event_listener_installed__,false);}else{var canvas=document.getElementById(id);canvas.removeEventListener('mouseup',canvas.__rgraph_mouseup_event_listener_installed__,false);canvas.removeEventListener('mousemove',canvas.__rgraph_mousemove_event_listener_installed__,false);canvas.removeEventListener('mousedown',canvas.__rgraph_mousedown_event_listener_installed__,false);canvas.removeEventListener('click',canvas.__rgraph_click_event_listener_installed__,false);}}
RGraph.HidePalette=function(){var div=RGraph.Registry.Get('palette');if(typeof(div)=='object'&&div){div.style.visibility='hidden';div.style.display='none';RGraph.Registry.Set('palette',null);}}
RGraph.random=function(min,max){var dp=arguments[2]?arguments[2]:0;var r=Math.random();return Number((((max-min)*r)+min).toFixed(dp));}
RGraph.random.array=function(num,min,max){var arr=[];for(var i=0;i<num;i++)arr.push(RGraph.random(min,max));return arr;}
RGraph.NoShadow=function(obj){obj.context.shadowColor='rgba(0,0,0,0)';obj.context.shadowBlur=0;obj.context.shadowOffsetX=0;obj.context.shadowOffsetY=0;}
RGraph.SetShadow=function(obj,color,offsetx,offsety,blur){obj.context.shadowColor=color;obj.context.shadowOffsetX=offsetx;obj.context.shadowOffsetY=offsety;obj.context.shadowBlur=blur;}
RGraph.array_reverse=function(arr){var newarr=[];for(var i=arr.length-1;i>=0;i--){newarr.push(arr[i]);}return newarr;}
RGraph.Registry.Set=function(name,value){RGraph.Registry.store[name]=value;return value;}
RGraph.Registry.Get=function(name){return RGraph.Registry.store[name];}
RGraph.degrees2Radians=function(degrees){return degrees*(PI/180);}
RGraph.log=(function(n,base){var log=Math.log;return function(n,base){return log(n)/(base?log(base):1);};})();RGraph.is_array=function(obj){return obj!=null&&obj.constructor.toString().indexOf('Array')!=-1;}
RGraph.trim=function(str){return RGraph.ltrim(RGraph.rtrim(str));}
RGraph.ltrim=function(str){return str.replace(/^(\s|\0)+/,'');}
RGraph.rtrim=function(str){return str.replace(/(\s|\0)+$/,'');}
RGraph.GetHeight=function(obj){return obj.canvas.height;}
RGraph.GetWidth=function(obj){return obj.canvas.width;}
RGraph.is_null=function(arg){if(arg==null||(typeof(arg))=='object'&&!arg){return true;}return false;}
RGraph.Timer=function(label){if(typeof(RGraph.TIMER_LAST_CHECKPOINT)=='undefined'){RGraph.TIMER_LAST_CHECKPOINT=Date.now();}var now=Date.now();console.log(label+': '+(now-RGraph.TIMER_LAST_CHECKPOINT).toString());RGraph.TIMER_LAST_CHECKPOINT=now;}
RGraph.Async=function(func){return setTimeout(func,arguments[1]?arguments[1]:1);}
RGraph.isIE=function(){return navigator.userAgent.indexOf('MSIE')>0;};ISIE=RGraph.isIE();RGraph.isIE6=function(){return navigator.userAgent.indexOf('MSIE 6')>0;};ISIE6=RGraph.isIE6();RGraph.isIE7=function(){return navigator.userAgent.indexOf('MSIE 7')>0;};ISIE7=RGraph.isIE7();RGraph.isIE8=function(){return navigator.userAgent.indexOf('MSIE 8')>0;};ISIE8=RGraph.isIE8();RGraph.isIE9=function(){return navigator.userAgent.indexOf('MSIE 9')>0;};ISIE9=RGraph.isIE9();RGraph.isIE10=function(){return navigator.userAgent.indexOf('MSIE 10')>0;};ISIE10=RGraph.isIE10();RGraph.isIE9up=function(){navigator.userAgent.match(/MSIE (\d+)/);return Number(RegExp.$1)>=9;};ISIE9UP=RGraph.isIE9up();RGraph.isIE10up=function(){navigator.userAgent.match(/MSIE (\d+)/);return Number(RegExp.$1)>=10;};ISIE10UP=RGraph.isIE10up();RGraph.isOld=function(){return ISIE6||ISIE7||ISIE8;};ISOLD=RGraph.isOld();RGraph.Reset=function(canvas){canvas.width=canvas.width;RGraph.ObjectRegistry.Clear(canvas);canvas.__rgraph_aa_translated__=false;}
function pd(variable){RGraph.pr(variable);}
function p(variable){RGraph.pr(arguments[0],arguments[1],arguments[3]);}
function a(variable){alert(variable);}
function cl(variable){return console.log(variable);}
if(typeof(RGraph)=='undefined')RGraph={isRGraph:true,type:'common'};RGraph.InstallWindowMousedownListener=function(obj)
{if(!window.__rgraph_mousedown_event_listener_installed__){var func=function(e)
{if(navigator.userAgent.indexOf('Firefox')>=0)window.event=e;e=RGraph.FixEventObject(e);if(typeof(window.onmousedown_rgraph)=='function'){window.onmousedown_rgraph(e);}
if(RGraph.HideTooltip&&RGraph.Registry.Get('chart.tooltip')){RGraph.Clear(RGraph.Registry.Get('chart.tooltip').__canvas__);RGraph.Redraw();RGraph.HideTooltip();}}
window.addEventListener('mousedown',func,false);window.__rgraph_mousedown_event_listener_installed__=func;}}
RGraph.InstallWindowMouseupListener=function(obj)
{if(!window.__rgraph_mouseup_event_listener_installed__){var func=function(e)
{if(navigator.userAgent.indexOf('Firefox')>=0)window.event=e;e=RGraph.FixEventObject(e);if(RGraph.Annotating_window_onmouseup){RGraph.Annotating_window_onmouseup(e);return;}
if(typeof(window.onmouseup_rgraph)=='function'){window.onmouseup_rgraph(e);}
if(RGraph.Registry.Get('chart.adjusting')||RGraph.Registry.Get('chart.adjusting.gantt')){RGraph.FireCustomEvent(RGraph.Registry.Get('chart.adjusting'),'onadjustend');}
RGraph.Registry.Set('chart.adjusting',null);RGraph.Registry.Set('chart.adjusting.shape',null);RGraph.Registry.Set('chart.adjusting.gantt',null);var tags=document.getElementsByTagName('canvas');for(var i=0;i<tags.length;++i){if(tags[i].__object__&&tags[i].__object__.isRGraph){if(!tags[i].__object__.Get('chart.annotatable')){if(!tags[i].__rgraph_trace_cover__&&!noredraw){RGraph.Clear(tags[i]);}else{var noredraw=true;}}}}
if(!noredraw){RGraph.Redraw();}}
window.addEventListener('mouseup',func,false);window.__rgraph_mouseup_event_listener_installed__=func;}}
RGraph.InstallCanvasMouseupListener=function(obj)
{if(!obj.canvas.__rgraph_mouseup_event_listener_installed__){var func=function(e)
{if(navigator.userAgent.indexOf('Firefox')>=0)window.event=e;e=RGraph.FixEventObject(e);if(typeof(e.target.onmouseup_rgraph)=='function'){e.target.onmouseup_rgraph(e);}
var objects=RGraph.ObjectRegistry.getObjectsByXY(e);if(objects){for(var i=0;i<objects.length;++i){var obj=objects[i];var id=objects[i].id;if(!RGraph.is_null(obj)&&RGraph.Tooltip){var shape=obj.getShape(e);if(shape&&shape['tooltip']){var text=shape['tooltip'];if(text){var type=shape['object'].type;if(type=='line'||type=='rscatter'||(type=='scatter'&&!obj.Get('chart.boxplot'))||type=='radar'){var canvasXY=RGraph.getCanvasXY(obj.canvas);var x=canvasXY[0]+shape['x'];var y=canvasXY[1]+shape['y'];}else{var x=e.pageX;var y=e.pageY;}
RGraph.Clear(obj.canvas);RGraph.Redraw();obj.Highlight(shape);RGraph.Registry.Set('chart.tooltip.shape',shape);RGraph.Tooltip(obj,text,x,y,shape['index'],e);if(RGraph.Registry.Get('chart.tooltip')){RGraph.Registry.Get('chart.tooltip').__shape__=shape;RGraph.EvaluateCursor(e);}
e.cancelBubble=true;e.stopPropagation();return false;}}}
if(RGraph.Registry.Get('chart.adjusting')||RGraph.Registry.Get('chart.adjusting.gantt')){RGraph.FireCustomEvent(RGraph.Registry.Get('chart.adjusting'),'onadjustend');}
RGraph.Registry.Set('chart.adjusting',null);RGraph.Registry.Set('chart.adjusting.shape',null);RGraph.Registry.Set('chart.adjusting.gantt',null);if(shape||(obj.overChartArea&&obj.overChartArea(e))){break;}}}}
obj.canvas.addEventListener('mouseup',func,false);obj.canvas.__rgraph_mouseup_event_listener_installed__=func;}}
RGraph.InstallCanvasMousemoveListener=function(obj)
{if(!obj.canvas.__rgraph_mousemove_event_listener_installed__){var func=function(e)
{if(navigator.userAgent.indexOf('Firefox')>=0)window.event=e;e=RGraph.FixEventObject(e);if(typeof(e.target.onmousemove_rgraph)=='function'){e.target.onmousemove_rgraph(e);}
var objects=RGraph.ObjectRegistry.getObjectsByXY(e);if(objects&&objects.length){for(var i=0;i<objects.length;++i){var obj=objects[i];var id=obj.id;if(!obj.getShape){continue;}
var shape=obj.getShape(e);var func=obj.Get('chart.events.mousemove');if(!func&&typeof(obj.onmousemove)=='function'){var func=obj.onmousemove;}
if(shape){var index=shape['object'].type=='scatter'?shape['index_adjusted']:shape['index'];if(typeof(obj['$'+index])=='object'&&typeof(obj['$'+index].onmousemove)=='function'){var func2=obj['$'+index].onmousemove;}}
if(shape&&(typeof(func)=='function'||typeof(func2)=='function')){if(obj.Get('chart.events.mousemove.revertto')==null){obj.Set('chart.events.mousemove.revertto',e.target.style.cursor);}
if(typeof(func)=='function')func(e,shape);if(typeof(func2)=='function')func2(e,shape);}else if(typeof(obj.Get('chart.events.mousemove.revertto'))=='string'){RGraph.cursor.push('default');obj.Set('chart.events.mousemove.revertto',null);}
if(shape&&(obj.Get('chart.tooltips')&&obj.Get('chart.tooltips')[shape['index']]||shape['tooltip'])&&(obj.Get('chart.tooltips.event')=='onmousemove'||obj.Get('chart.tooltips.event')=='mousemove')&&(RGraph.is_null(RGraph.Registry.Get('chart.tooltip'))||RGraph.Registry.Get('chart.tooltip').__index__!=shape['index']||(typeof(shape['dataset'])=='number'&&shape['dataset']!=RGraph.Registry.Get('chart.tooltip').__shape__['dataset'])||obj.uid!=RGraph.Registry.Get('chart.tooltip').__object__.uid)){RGraph.Clear(obj.canvas);RGraph.Redraw();obj.canvas.__rgraph_mouseup_event_listener_installed__(e);return;}
if(obj&&obj.Get('chart.adjustable')){obj.Adjusting_mousemove(e);}
if(shape||(obj.overChartArea&&obj.overChartArea(e))){break;}}}
if(e.target&&e.target.__object__&&e.target.__object__.Get('chart.crosshairs')){RGraph.DrawCrosshairs(e,e.target.__object__);}
if(typeof(InteractiveKey_line_mousemove)=='function')InteractiveKey_line_mousemove(e);if(typeof(InteractiveKey_pie_mousemove)=='function')InteractiveKey_pie_mousemove(e);if(e.target.__object__&&e.target.__object__.Get('chart.annotatable')&&RGraph.Annotating_canvas_onmousemove){RGraph.Annotating_canvas_onmousemove(e);}
RGraph.EvaluateCursor(e);}
obj.canvas.addEventListener('mousemove',func,false);obj.canvas.__rgraph_mousemove_event_listener_installed__=func;}}
RGraph.InstallCanvasMousedownListener=function(obj)
{if(!obj.canvas.__rgraph_mousedown_event_listener_installed__){var func=function(e)
{if(navigator.userAgent.indexOf('Firefox')>=0)window.event=e;e=RGraph.FixEventObject(e);if(typeof(e.target.onmousedown_rgraph)=='function'){e.target.onmousedown_rgraph(e);}
if(e.target.__object__&&e.target.__object__.Get('chart.annotatable')&&RGraph.Annotating_canvas_onmousedown){RGraph.Annotating_canvas_onmousedown(e);return;}
var obj=RGraph.ObjectRegistry.getObjectByXY(e);if(obj){var id=obj.id;if(obj&&obj.isRGraph&&obj.Get('chart.adjustable')){var obj=RGraph.ObjectRegistry.getObjectByXY(e);if(obj&&obj.isRGraph){switch(obj.type){case'bar':var shape=obj.getShapeByX(e);break;case'gantt':var shape=obj.getShape(e);if(shape){var mouseXY=RGraph.getMouseXY(e);RGraph.Registry.Set('chart.adjusting.gantt',{'index':shape['index'],'object':obj,'mousex':mouseXY[0],'mousey':mouseXY[1],'event_start':obj.data[shape['index']][0],'event_duration':obj.data[shape['index']][1],'mode':(mouseXY[0]>(shape['x']+shape['width']-5)?'resize':'move'),'shape':shape});}
break;case'line':var shape=obj.getShape(e);break;default:var shape=null;}
RGraph.Registry.Set('chart.adjusting.shape',shape);RGraph.FireCustomEvent(obj,'onadjustbegin');RGraph.Registry.Set('chart.adjusting',obj);RGraph.Clear(obj.canvas);RGraph.Redraw();obj.canvas.__rgraph_mousemove_event_listener_installed__(e);}}
RGraph.Clear(obj.canvas);RGraph.Redraw();}}
obj.canvas.addEventListener('mousedown',func,false);obj.canvas.__rgraph_mousedown_event_listener_installed__=func;}}
RGraph.InstallCanvasClickListener=function(obj)
{if(!obj.canvas.__rgraph_click_event_listener_installed__){var func=function(e)
{if(navigator.userAgent.indexOf('Firefox')>=0)window.event=e;e=RGraph.FixEventObject(e);if(typeof(e.target.onclick_rgraph)=='function'){e.target.onclick_rgraph(e);}
var objects=RGraph.ObjectRegistry.getObjectsByXY(e);for(var i=0;i<objects.length;++i){var obj=objects[i];var id=obj.id;var shape=obj.getShape(e);var func=obj.Get('chart.events.click');if(!func&&typeof(obj.onclick)=='function'){func=obj.onclick;}
if(shape&&typeof(func)=='function'){func(e,shape);return;}
if(shape){var index=shape['object'].type=='scatter'?shape['index_adjusted']:shape['index'];if(typeof(index)=='number'&&obj['$'+index]){var func=obj['$'+index].onclick;if(typeof(func)=='function'){func(e,shape);return;}}}
if(shape||(obj.overChartArea&&obj.overChartArea(e))){break;}}}
obj.canvas.addEventListener('click',func,false);obj.canvas.__rgraph_click_event_listener_installed__=func;}}
RGraph.EvaluateCursor=function(e)
{var mouseXY=RGraph.getMouseXY(e);var mouseX=mouseXY[0];var mouseY=mouseXY[1];var canvas=e.target;var objects=RGraph.ObjectRegistry.getObjectsByCanvasID(canvas.id);for(var i=0;i<objects.length;++i){if((objects[i].getShape&&objects[i].getShape(e))||(objects[i].overChartArea&&objects[i].overChartArea(e))){var obj=objects[i];var id=obj.id;}}
if(!RGraph.is_null(obj)){if(obj.getShape&&obj.getShape(e)){var shape=obj.getShape(e);if(obj.Get('chart.tooltips')){var text=RGraph.parseTooltipText(obj.Get('chart.tooltips'),shape['index']);if(!text&&shape['object'].type=='scatter'&&shape['index_adjusted']){text=RGraph.parseTooltipText(obj.Get('chart.tooltips'),shape['index_adjusted']);}
if(text){var pointer=true;}}}
if(!RGraph.is_null(obj)&&obj.Get('chart.key.interactive')){for(var j=0;j<obj.coords.key.length;++j){if(mouseX>obj.coords.key[j][0]&&mouseX<(obj.coords.key[j][0]+obj.coords.key[j][2])&&mouseY>obj.coords.key[j][1]&&mouseY<(obj.coords.key[j][1]+obj.coords.key[j][3])){var pointer=true;}}}}
if(!RGraph.is_null(shape)&&!RGraph.is_null(obj)){if(!RGraph.is_null(obj.Get('chart.events.mousemove'))&&typeof(obj.Get('chart.events.mousemove'))=='function'){var str=(obj.Get('chart.events.mousemove')).toString();if(str.match(/pointer/)&&str.match(/cursor/)&&str.match(/style/)){var pointer=true;}}
if(!RGraph.is_null(obj.onmousemove)&&typeof(obj.onmousemove)=='function'){var str=(obj.onmousemove).toString();if(str.match(/pointer/)&&str.match(/cursor/)&&str.match(/style/)){var pointer=true;}}
var index=shape['object'].type=='scatter'?shape['index_adjusted']:shape['index'];if(!RGraph.is_null(obj['$'+index])&&typeof(obj['$'+index].onmousemove)=='function'){var str=(obj['$'+index].onmousemove).toString();if(str.match(/pointer/)&&str.match(/cursor/)&&str.match(/style/)){var pointer=true;}}}
var objects=RGraph.ObjectRegistry.objects.byCanvasID;for(var i=0;i<objects.length;++i){if(objects[i]&&objects[i][1].Get('chart.resizable')){var resizable=true;}}
if(resizable&&mouseX>(e.target.width-32)&&mouseY>(e.target.height-16)){pointer=true;}
if(pointer){e.target.style.cursor='pointer';}else if(e.target.style.cursor=='pointer'){e.target.style.cursor='default';}else{e.target.style.cursor=null;}
if(resizable&&mouseX>=(e.target.width-15)&&mouseY>=(e.target.height-15)){e.target.style.cursor='move';}
if(typeof(mouse_over_key)=='boolean'&&mouse_over_key){e.target.style.cursor='pointer';}
if(obj&&obj.type=='gantt'&&obj.Get('chart.adjustable')){if(obj.getShape&&obj.getShape(e)){e.target.style.cursor='ew-resize';}else{e.target.style.cursor='default';}}
if(obj&&obj.type=='line'&&obj.Get('chart.adjustable')){if(obj.getShape&&obj.getShape(e)){e.target.style.cursor='ns-resize';}else{e.target.style.cursor='default';}}
if(e.target.__object__&&e.target.__object__.Get('chart.annotatable')){e.target.style.cursor='crosshair';}}
RGraph.parseTooltipText=function(tooltips,idx)
{if(!tooltips){return null;}
if(typeof(tooltips)=='function'){var text=tooltips(idx);}else if(typeof(tooltips)=='string'){var text=tooltips;}else if(typeof(tooltips)=='object'&&typeof(tooltips)[idx]=='function'){var text=tooltips[idx](idx);}else if(typeof(tooltips)[idx]=='string'&&tooltips[idx]){var text=tooltips[idx];}else{var text='';}
if(text=='undefined'){text='';}else if(text=='null'){text='';}
return RGraph.getTooltipTextFromDIV?RGraph.getTooltipTextFromDIV(text):text;}
RGraph.DrawCrosshairs=function(e,obj)
{var e=RGraph.FixEventObject(e);var width=obj.canvas.width;var height=obj.canvas.height;var mouseXY=RGraph.getMouseXY(e);var x=mouseXY[0];var y=mouseXY[1];var gutterLeft=obj.gutterLeft;var gutterRight=obj.gutterRight;var gutterTop=obj.gutterTop;var gutterBottom=obj.gutterBottom;var prop=obj.properties;RGraph.RedrawCanvas(obj.canvas);if(x>=gutterLeft&&y>=gutterTop&&x<=(width-gutterRight)&&y<=(height-gutterBottom)){var linewidth=prop['chart.crosshairs.linewidth']?prop['chart.crosshairs.linewidth']:1;obj.context.lineWidth=linewidth?linewidth:1;obj.context.beginPath();obj.context.strokeStyle=prop['chart.crosshairs.color'];if(prop['chart.crosshairs.snap']){var point=null;var dist=null;var len=null;if(obj.type=='line'){for(var i=0;i<obj.coords.length;++i){var len=RGraph.getHypLength(obj.coords[i][0],obj.coords[i][1],x,y);if(typeof(dist)!='number'||len<dist){var point=i;var dist=len;}}
x=obj.coords[point][0];y=obj.coords[point][1];for(var dataset=0;dataset<obj.coords2.length;++dataset){for(var point=0;point<obj.coords2[dataset].length;++point){if(obj.coords2[dataset][point][0]==x&&obj.coords2[dataset][point][1]==y){obj.canvas.__crosshairs_snap_dataset__=dataset;obj.canvas.__crosshairs_snap_point__=point;}}}}else{for(var i=0;i<obj.coords.length;++i){for(var j=0;j<obj.coords[i].length;++j){var len=RGraph.getHypLength(obj.coords[i][j][0],obj.coords[i][j][1],x,y);if(typeof(dist)!='number'||len<dist){var dataset=i;var point=j;var dist=len;}}}
obj.canvas.__crosshairs_snap_dataset__=dataset;obj.canvas.__crosshairs_snap_point__=point;x=obj.coords[dataset][point][0];y=obj.coords[dataset][point][1];}}
if(prop['chart.crosshairs.vline']){obj.context.moveTo(Math.round(x),Math.round(gutterTop));obj.context.lineTo(Math.round(x),Math.round(height-gutterBottom));}
if(prop['chart.crosshairs.hline']){obj.context.moveTo(Math.round(gutterLeft),Math.round(y));obj.context.lineTo(Math.round(width-gutterRight),Math.round(y));}
obj.context.stroke();if(obj.type=='scatter'&&prop['chart.crosshairs.coords']){var xCoord=(((x-gutterLeft)/(width-gutterLeft-gutterRight))*(prop['chart.xmax']-prop['chart.xmin']))+prop['chart.xmin'];xCoord=xCoord.toFixed(prop['chart.scale.decimals']);var yCoord=obj.max-(((y-prop['chart.gutter.top'])/(height-gutterTop-gutterBottom))*obj.max);if(obj.type=='scatter'&&obj.properties['chart.xaxispos']=='center'){yCoord=(yCoord-(obj.max/2))*2;}
yCoord=yCoord.toFixed(prop['chart.scale.decimals']);var div=RGraph.Registry.Get('chart.coordinates.coords.div');var mouseXY=RGraph.getMouseXY(e);var canvasXY=RGraph.getCanvasXY(obj.canvas);if(!div){var div=document.createElement('DIV');div.__object__=obj;div.style.position='absolute';div.style.backgroundColor='white';div.style.border='1px solid black';div.style.fontFamily='Arial, Verdana, sans-serif';div.style.fontSize='10pt'
div.style.padding='2px';div.style.opacity=1;div.style.WebkitBorderRadius='3px';div.style.borderRadius='3px';div.style.MozBorderRadius='3px';document.body.appendChild(div);RGraph.Registry.Set('chart.coordinates.coords.div',div);}
div.style.opacity=1;div.style.display='inline';if(!prop['chart.crosshairs.coords.fixed']){div.style.left=Math.max(2,(e.pageX-div.offsetWidth-3))+'px';div.style.top=Math.max(2,(e.pageY-div.offsetHeight-3))+'px';}else{div.style.left=canvasXY[0]+gutterLeft+3+'px';div.style.top=canvasXY[1]+gutterTop+3+'px';}
div.innerHTML='<span style="color: #666">'+prop['chart.crosshairs.coords.labels.x']+':</span> '+xCoord+'<br><span style="color: #666">'+prop['chart.crosshairs.coords.labels.y']+':</span> '+yCoord;obj.canvas.addEventListener('mouseout',RGraph.HideCrosshairCoords,false);obj.canvas.__crosshairs_labels__=div;obj.canvas.__crosshairs_x__=xCoord;obj.canvas.__crosshairs_y__=yCoord;}else if(prop['chart.crosshairs.coords']){alert('[RGRAPH] Showing crosshair coordinates is only supported on the Scatter chart');}
RGraph.FireCustomEvent(obj,'oncrosshairs');}else{RGraph.HideCrosshairCoords();}}
0
if(typeof(RGraph)=='undefined')RGraph={isRGraph:true,type:'common'};RGraph.tooltips={};RGraph.tooltips.padding='3px';RGraph.tooltips.font_face='Tahoma';RGraph.tooltips.font_size='10pt';RGraph.Tooltip=function(obj,text,x,y,idx,e)
{if(typeof(obj.Get('chart.tooltips.override'))=='function'){return obj.Get('chart.tooltips.override')(obj,text,x,y,idx);}
var originalX=x;var originalY=y;text=RGraph.getTooltipTextFromDIV(text);var timers=RGraph.Registry.Get('chart.tooltip.timers');if(timers&&timers.length){for(i=0;i<timers.length;++i){clearTimeout(timers[i]);}}
RGraph.Registry.Set('chart.tooltip.timers',[]);if(obj.Get('chart.contextmenu')){RGraph.HideContext();}
var effect=obj.Get('chart.tooltips.effect')?obj.Get('chart.tooltips.effect').toLowerCase():'fade';var tooltipObj=document.createElement('DIV');tooltipObj.className=obj.Get('chart.tooltips.css.class');tooltipObj.style.display='none';tooltipObj.style.position=RGraph.isFixed(obj.canvas)?'fixed':'absolute';tooltipObj.style.left=0;tooltipObj.style.top=0;tooltipObj.style.backgroundColor='rgb(255,255,239)';tooltipObj.style.color='black';if(!document.all)tooltipObj.style.border='';tooltipObj.style.visibility='visible';tooltipObj.style.paddingLeft=RGraph.tooltips.padding;tooltipObj.style.paddingRight=RGraph.tooltips.padding;tooltipObj.style.fontFamily=RGraph.tooltips.font_face;tooltipObj.style.fontSize=RGraph.tooltips.font_size;tooltipObj.style.zIndex=3;if(RGraph.trim(text).length>0){tooltipObj.style.border='1px #bbb solid';}
tooltipObj.style.borderRadius='5px';tooltipObj.style.MozBorderRadius='5px';tooltipObj.style.WebkitBorderRadius='5px';tooltipObj.style.WebkitBoxShadow='rgba(96,96,96,0.5) 0 0 15px';tooltipObj.style.MozBoxShadow='rgba(96,96,96,0.5) 0 0 15px';tooltipObj.style.boxShadow='rgba(96,96,96,0.5) 0 0 15px';tooltipObj.style.filter='progid:DXImageTransform.Microsoft.Shadow(color=#666666,direction=135)';tooltipObj.style.opacity=0;tooltipObj.innerHTML=text;tooltipObj.__text__=text;tooltipObj.__canvas__=obj.canvas;tooltipObj.style.display='inline';tooltipObj.id='__rgraph_tooltip_'+obj.canvas.id+'_'+obj.uid+'_'+idx;tooltipObj.__event__=obj.Get('chart.tooltips.event')||'click';tooltipObj.__object__=obj;if(typeof(idx)=='number'){tooltipObj.__index__=idx;origIdx=idx;}
if(obj.type=='line'||obj.type=='radar'){for(var ds=0;ds<obj.data.length;++ds){if(idx>=obj.data[ds].length){idx-=obj.data[ds].length;}else{break;}}
tooltipObj.__dataset__=ds;tooltipObj.__index2__=idx;}
document.body.appendChild(tooltipObj);var width=tooltipObj.offsetWidth;var height=tooltipObj.offsetHeight;tooltipObj.style.width=width+'px';tooltipObj.style.top=(y-height-2)+'px';if(typeof(obj.positionTooltip)=='function'){if(tooltipObj.innerHTML.length>0){obj.positionTooltip(obj,x,y,tooltipObj,origIdx?origIdx:idx);if(obj.Get('chart.tooltips.coords.page')){tooltipObj.style.left=e.pageX-(width/2)-4.25+'px';tooltipObj.style.top=e.pageY-height-10+'px';document.getElementById('__rgraph_tooltip_pointer__').style.left=(parseInt(tooltipObj.offsetWidth)/2)-8.5+'px';}}}else{tooltipObj.style.left=e.pageX-(width/2)-4.25+'px';tooltipObj.style.top=e.pageY-height-7+'px';}
if(effect=='fade'||effect=='expand'||effect=='contract'||effect=='snap'){setTimeout(function(){tooltipObj.style.opacity=0.1;},25);setTimeout(function(){tooltipObj.style.opacity=0.2;},50);setTimeout(function(){tooltipObj.style.opacity=0.3;},75);setTimeout(function(){tooltipObj.style.opacity=0.4;},100);setTimeout(function(){tooltipObj.style.opacity=0.5;},125);setTimeout(function(){tooltipObj.style.opacity=0.6;},150);setTimeout(function(){tooltipObj.style.opacity=0.7;},175);setTimeout(function(){tooltipObj.style.opacity=0.8;},200);setTimeout(function(){tooltipObj.style.opacity=0.9;},225);if(effect=='expand'||effect=='contract'||effect=='snap'){console.log('[RGRAPH] The snap, expand and contract tooltip effects are deprecated. Available effects now are fade and none');}}
setTimeout("if (RGraph.Registry.Get('chart.tooltip')) { RGraph.Registry.Get('chart.tooltip').style.opacity = 1;}",effect=='none'?50:250);tooltipObj.onmousedown=function(e){e.stopPropagation();}
tooltipObj.onmouseup=function(e){e.stopPropagation();}
tooltipObj.onclick=function(e){if(e.button==0){e.stopPropagation();}}
RGraph.Registry.Set('chart.tooltip',tooltipObj);RGraph.FireCustomEvent(obj,'ontooltip');}
RGraph.getTooltipTextFromDIV=function(text)
{var result=/^id:(.*)/.exec(text);if(result&&result[1]&&document.getElementById(result[1])){text=document.getElementById(result[1]).innerHTML;}else if(result&&result[1]){text='';}
return text;}
RGraph.getTooltipWidth=function(text,obj)
{var div=document.createElement('DIV');div.className=obj.Get('chart.tooltips.css.class');div.style.paddingLeft=RGraph.tooltips.padding;div.style.paddingRight=RGraph.tooltips.padding;div.style.fontFamily=RGraph.tooltips.font_face;div.style.fontSize=RGraph.tooltips.font_size;div.style.visibility='hidden';div.style.position='absolute';div.style.top='300px';div.style.left=0;div.style.display='inline';div.innerHTML=RGraph.getTooltipTextFromDIV(text);document.body.appendChild(div);return div.offsetWidth;}
RGraph.HideTooltip=function()
{var tooltip=RGraph.Registry.Get('chart.tooltip');var uid=arguments[0]&&arguments[0].uid?arguments[0].uid:null;if(tooltip&&tooltip.parentNode&&(!uid||uid==tooltip.__canvas__.uid)){tooltip.parentNode.removeChild(tooltip);tooltip.style.display='none';tooltip.style.visibility='hidden';RGraph.Registry.Set('chart.tooltip',null);}}
RGraph.PreLoadTooltipImages=function(obj)
{var tooltips=obj.Get('chart.tooltips');if(RGraph.hasTooltips(obj)){if(obj.type=='rscatter'){tooltips=[];for(var i=0;i<obj.data.length;++i){tooltips.push(obj.data[3]);}}
for(var i=0;i<tooltips.length;++i){var div=document.createElement('DIV');div.style.position='absolute';div.style.opacity=0;div.style.top='-100px';div.style.left='-100px';div.innerHTML=tooltips[i];document.body.appendChild(div);var img_tags=div.getElementsByTagName('IMG');for(var j=0;j<img_tags.length;++j){if(img_tags&&img_tags[i]){var img=document.createElement('IMG');img.style.position='absolute';img.style.opacity=0;img.style.top='-100px';img.style.left='-100px';img.src=img_tags[i].src
document.body.appendChild(img);setTimeout(function(){document.body.removeChild(img);},250);}}
document.body.removeChild(div);}}}
RGraph.Tooltips_mousemove=function(obj,e)
{var shape=obj.getShape(e);var changeCursor_tooltips=false
if(shape&&typeof(shape['index'])=='number'&&obj.Get('chart.tooltips')[shape['index']]){var text=RGraph.parseTooltipText(obj.Get('chart.tooltips'),shape['index']);if(text){changeCursor_tooltips=true;if(obj.Get('chart.tooltips.event')=='onmousemove'){if(!RGraph.Registry.Get('chart.tooltip')||RGraph.Registry.Get('chart.tooltip').__object__.uid!=obj.uid||RGraph.Registry.Get('chart.tooltip').__index__!=shape['index']){RGraph.HideTooltip();RGraph.Clear(obj.canvas);RGraph.Redraw();RGraph.Tooltip(obj,text,e.pageX,e.pageY,shape['index']);obj.Highlight(shape);}}}}else if(shape&&typeof(shape['index'])=='number'){var text=RGraph.parseTooltipText(obj.Get('chart.tooltips'),shape['index']);if(text){changeCursor_tooltips=true}}
return changeCursor_tooltips;}
if(typeof(RGraph)=='undefined')RGraph={isRGraph:true,type:'common'};RGraph.Effects={};RGraph.Effects.Fade={};RGraph.Effects.jQuery={}
RGraph.Effects.jQuery.HBlinds={};RGraph.Effects.jQuery.VBlinds={}
RGraph.Effects.jQuery.Slide={};RGraph.Effects.Pie={}
RGraph.Effects.Bar={};RGraph.Effects.Line={}
RGraph.Effects.Line.jQuery={};RGraph.Effects.Fuel={}
RGraph.Effects.Rose={};RGraph.Effects.Odo={}
RGraph.Effects.Gauge={};RGraph.Effects.Meter={}
RGraph.Effects.HBar={};RGraph.Effects.HProgress={}
RGraph.Effects.VProgress={};RGraph.Effects.Radar={}
RGraph.Effects.Waterfall={};RGraph.Effects.Gantt={}
RGraph.Effects.Thermometer={};RGraph.Effects.Scatter={}
RGraph.Effects.Scatter.jQuery={};RGraph.Effects.CornerGauge={}
RGraph.Effects.jQuery.HScissors={};RGraph.Effects.jQuery.VScissors={}
RGraph.Effects.Fade.In=function(obj)
{var canvas=obj.canvas;var duration=(arguments[1]&&arguments[1].duration?arguments[1].duration:250);var frames=(arguments[1]&&arguments[1].frames?arguments[1].frames:5);canvas.style.opacity=0;RGraph.Clear(obj.canvas);RGraph.RedrawCanvas(obj.canvas);for(var i=1;i<=frames;++i){setTimeout('document.getElementById("'+canvas.id+'").style.opacity = '+(i*(1/frames)),i*(duration/frames));}
if(typeof(arguments[2])=='function'){setTimeout(arguments[2],duration);}}
RGraph.Effects.Fade.Out=function(obj)
{var canvas=obj.canvas;var duration=(arguments[1]&&arguments[1].duration?arguments[1].duration:250);var frames=(arguments[1]&&arguments[1].frames?arguments[1].frames:5);RGraph.Clear(obj.canvas);RGraph.RedrawCanvas(obj.canvas);for(var i=frames;i>=0;--i){setTimeout('document.getElementById("'+canvas.id+'").style.opacity = '+(i*(1/frames)),(frames-i)*(duration/frames));}
if(typeof(arguments[2])=='function'){setTimeout(arguments[2],duration);}}
RGraph.Effects.jQuery.Expand=function(obj)
{if(typeof(jQuery)=='undefined'){alert('[ERROR] Could not find jQuery object - have you included the jQuery file?');}
var bounce=(!arguments[1]||(arguments[1]&&(arguments[1].bounce||typeof(arguments[1].bounce)=='undefined')))?true:false;var canvas=obj.canvas;if(!canvas.__rgraph_div_placeholder__){var div=RGraph.Effects.ReplaceCanvasWithDIV(canvas);canvas.__rgraph_div_placeholder__=div;}else{div=canvas.__rgraph_div_placeholder__;}
div.style.position='relative';canvas.style.position='absolute';canvas.style.top=(canvas.height/2)+'px';canvas.style.left=(canvas.width/2)+'px';canvas.style.width=0;canvas.style.height=0;canvas.style.opacity=0;RGraph.Clear(obj.canvas);RGraph.RedrawCanvas(obj.canvas);if(bounce){jQuery('#'+obj.id).animate({opacity:1,width:'120%',height:'120%',left:(canvas.width*-0.1)+'px',top:(canvas.height*-0.1)+'px'},500,function(){jQuery('#'+obj.id).animate({width:'90%',height:'90%',top:(canvas.height*0.05)+'px',left:(canvas.width*0.05)+'px'},250,function()
{jQuery('#'+obj.id).animate({width:'101%',height:'101%',top:(canvas.height*-0.005)+'px',left:(canvas.width*-0.005)+'px'},250,function()
{jQuery('#'+obj.id).animate({width:'100%',height:'100%',top:0,left:0},250);});});});}else{jQuery('#'+obj.id).animate({opacity:1,width:'100%',height:'100%',left:0,top:0},1000)}
if(typeof(arguments[2])=='function'){setTimeout(arguments[2],1000);}}
RGraph.Effects.jQuery.Contract=function(obj)
{if(typeof(jQuery)=='undefined'){alert('[ERROR] Could not find jQuery object - have you included the jQuery file?');}
var canvas=obj.canvas;if(!canvas.__rgraph_div_placeholder__){var div=RGraph.Effects.ReplaceCanvasWithDIV(canvas);canvas.__rgraph_div_placeholder__=div;}else{div=canvas.__rgraph_div_placeholder__;}
div.style.position='relative';canvas.style.position='absolute';canvas.style.top=0;canvas.style.left=0;jQuery('#'+obj.id).animate({width:(canvas.width*1.2)+'px',height:(canvas.height*1.2)+'px',left:(canvas.width*-0.1)+'px',top:(canvas.height*-0.1)+'px'},250,function()
{jQuery('#'+obj.id).animate({opacity:0,width:0,height:0,left:(canvas.width*0.5)+'px',top:(canvas.height*0.5)+'px'},750)});if(typeof(arguments[2])=='function'){setTimeout(arguments[2],1000);}}
RGraph.Effects.ReplaceCanvasWithDIV=function(canvas)
{if(!canvas.replacementDIV){var div=document.createElement('DIV');div.style.width=canvas.width+'px';div.style.height=canvas.height+'px';div.style.cssFloat=canvas.style.cssFloat;div.style.left=canvas.style.left;div.style.top=canvas.style.top;div.style.display='inline-block';canvas.parentNode.insertBefore(div,canvas);canvas.parentNode.removeChild(canvas);div.appendChild(canvas);canvas.style.position='relative';canvas.style.left=(div.offsetWidth/2)+'px';canvas.style.top=(div.offsetHeight/2)+'px';canvas.style.cssFloat='';canvas.replacementDIV=div;}else{var div=canvas.replacementDIV;}
return div;}
RGraph.Effects.jQuery.Snap=function(obj)
{var delay=500;var div=RGraph.Effects.ReplaceCanvasWithDIV(obj.canvas);obj.canvas.style.position='absolute';obj.canvas.style.top=0;obj.canvas.style.left=0;obj.canvas.style.width=0;obj.canvas.style.height=0;obj.canvas.style.opacity=0;var targetLeft=div.offsetLeft;var targetTop=div.offsetTop;var targetWidth=div.offsetWidth;var targetHeight=div.offsetHeight;RGraph.Clear(obj.canvas);RGraph.RedrawCanvas(obj.canvas);jQuery('#'+obj.id).animate({opacity:1,width:targetWidth+'px',height:targetHeight+'px',left:targetLeft+'px',top:targetTop+'px'},delay);if(typeof(arguments[2])=='function'){setTimeout(arguments[2],delay+50);}}
RGraph.Effects.jQuery.Reveal=function(obj)
{var opts=arguments[1]?arguments[1]:null;var delay=1000;var canvas=obj.canvas;var xy=RGraph.getCanvasXY(obj.canvas);obj.canvas.style.visibility='hidden';RGraph.Clear(obj.canvas);RGraph.RedrawCanvas(obj.canvas);var divs=[['reveal_left',xy[0],xy[1],obj.canvas.width/2,obj.canvas.height],['reveal_right',(xy[0]+(obj.canvas.width/2)),xy[1],(obj.canvas.width/2),obj.canvas.height],['reveal_top',xy[0],xy[1],obj.canvas.width,(obj.canvas.height/2)],['reveal_bottom',xy[0],(xy[1]+(obj.canvas.height/2)),obj.canvas.width,(obj.canvas.height/2)]];for(var i=0;i<divs.length;++i){var div=document.createElement('DIV');div.id=divs[i][0];div.style.width=divs[i][3]+'px';div.style.height=divs[i][4]+'px';div.style.left=divs[i][1]+'px';div.style.top=divs[i][2]+'px';div.style.position='absolute';div.style.backgroundColor=opts&&typeof(opts['color'])=='string'?opts['color']:'white';document.body.appendChild(div);}
obj.canvas.style.visibility='visible';jQuery('#reveal_left').animate({width:0},delay);jQuery('#reveal_right').animate({left:'+='+(obj.canvas.width/2),width:0},delay);jQuery('#reveal_top').animate({height:0},delay);jQuery('#reveal_bottom').animate({top:'+='+(obj.canvas.height/2),height:0},delay);setTimeout(function()
{document.body.removeChild(document.getElementById("reveal_top"))
document.body.removeChild(document.getElementById("reveal_bottom"))
document.body.removeChild(document.getElementById("reveal_left"))
document.body.removeChild(document.getElementById("reveal_right"))},delay);if(typeof(arguments[2])=='function'){setTimeout(arguments[2],delay);}}
RGraph.Effects.RevealCircular=function(obj)
{var opts=arguments[1]?arguments[1]:null;var callback=arguments[2]?arguments[2]:null;var frames=30;var RG=RGraph;var ca=obj.canvas;var co=obj.context;var ra=0;var cx=ca.width/2;var cy=ca.height/2;var target_ra=Math.max(ca.height,ca.width);function Grow()
{RG.Clear(ca);co.save();co.beginPath();co.arc(cx,cy,ra,0,TWOPI,false);co.clip();obj.Draw();co.restore();if(ra<target_ra){ra+=target_ra/30;RG.Effects.UpdateCanvas(Grow);}else if(typeof(callback)=='function'){callback(obj);}}
Grow();}
RGraph.Effects.jQuery.Conceal=function(obj)
{var opts=arguments[1]?arguments[1]:null;var delay=1000;var canvas=obj.canvas;var xy=RGraph.getCanvasXY(obj.canvas);var divs=[['conceal_left',xy[0],xy[1],0,obj.canvas.height],['conceal_right',(xy[0]+obj.canvas.width),xy[1],0,obj.canvas.height],['conceal_top',xy[0],xy[1],obj.canvas.width,0],['conceal_bottom',xy[0],(xy[1]+obj.canvas.height),obj.canvas.width,0]];for(var i=0;i<divs.length;++i){var div=document.createElement('DIV');div.id=divs[i][0];div.style.width=divs[i][3]+'px';div.style.height=divs[i][4]+'px';div.style.left=divs[i][1]+'px';div.style.top=divs[i][2]+'px';div.style.position='absolute';div.style.backgroundColor=opts&&typeof(opts['color'])=='string'?opts['color']:'white';document.body.appendChild(div);}
jQuery('#conceal_left').animate({width:'+='+(obj.canvas.width/2)},delay);jQuery('#conceal_right').animate({left:'-='+(obj.canvas.width/2),width:(obj.canvas.width/2)},delay);jQuery('#conceal_top').animate({height:'+='+(obj.canvas.height/2)},delay);jQuery('#conceal_bottom').animate({top:'-='+(obj.canvas.height/2),height:(obj.canvas.height/2)},delay);setTimeout(function()
{document.body.removeChild(document.getElementById("conceal_top"))
document.body.removeChild(document.getElementById("conceal_bottom"))
document.body.removeChild(document.getElementById("conceal_left"))
document.body.removeChild(document.getElementById("conceal_right"))},delay);setTimeout(function(){RGraph.Clear(obj.canvas);},delay);if(typeof(arguments[2])=='function'){setTimeout(arguments[2],delay);}}
RGraph.Effects.jQuery.HBlinds.Open=function(obj)
{var canvas=obj.canvas;var opts=arguments[1]?arguments[1]:[];var delay=1000;var color=opts['color']?opts['color']:'white';var xy=RGraph.getCanvasXY(canvas);var height=canvas.height/5;RGraph.Clear(obj.canvas);RGraph.RedrawCanvas(obj.canvas);for(var i=0;i<5;++i){var div=document.createElement('DIV');div.id='blinds_'+i;div.style.width=canvas.width+'px';div.style.height=height+'px';div.style.left=xy[0]+'px';div.style.top=(xy[1]+(canvas.height*(i/5)))+'px';div.style.position='absolute';div.style.backgroundColor=color;document.body.appendChild(div);jQuery('#blinds_'+i).animate({height:0},delay);}
setTimeout(function(){document.body.removeChild(document.getElementById('blinds_0'));},delay);setTimeout(function(){document.body.removeChild(document.getElementById('blinds_1'));},delay);setTimeout(function(){document.body.removeChild(document.getElementById('blinds_2'));},delay);setTimeout(function(){document.body.removeChild(document.getElementById('blinds_3'));},delay);setTimeout(function(){document.body.removeChild(document.getElementById('blinds_4'));},delay);if(typeof(arguments[2])=='function'){setTimeout(arguments[2],delay);}}
RGraph.Effects.jQuery.HBlinds.Close=function(obj)
{var canvas=obj.canvas;var opts=arguments[1]?arguments[1]:[];var delay=1000;var color=opts['color']?opts['color']:'white';var xy=RGraph.getCanvasXY(canvas);var height=canvas.height/5;for(var i=0;i<5;++i){var div=document.createElement('DIV');div.id='blinds_'+i;div.style.width=canvas.width+'px';div.style.height=0;div.style.left=xy[0]+'px';div.style.top=(xy[1]+(canvas.height*(i/5)))+'px';div.style.position='absolute';div.style.backgroundColor=color;document.body.appendChild(div);jQuery('#blinds_'+i).animate({height:height+'px'},delay);}
setTimeout(function(){RGraph.Clear(obj.canvas);},delay+100);setTimeout(function(){document.body.removeChild(document.getElementById('blinds_0'));},delay+100);setTimeout(function(){document.body.removeChild(document.getElementById('blinds_1'));},delay+100);setTimeout(function(){document.body.removeChild(document.getElementById('blinds_2'));},delay+100);setTimeout(function(){document.body.removeChild(document.getElementById('blinds_3'));},delay+100);setTimeout(function(){document.body.removeChild(document.getElementById('blinds_4'));},delay+100);if(typeof(arguments[2])=='function'){setTimeout(arguments[2],delay);}}
RGraph.Effects.jQuery.VBlinds.Open=function(obj)
{var canvas=obj.canvas;var opts=arguments[1]?arguments[1]:[];var delay=1000;var color=opts['color']?opts['color']:'white';var xy=RGraph.getCanvasXY(canvas);var width=canvas.width/10;RGraph.Clear(obj.canvas);RGraph.RedrawCanvas(obj.canvas);for(var i=0;i<10;++i){var div=document.createElement('DIV');div.id='blinds_'+i;div.style.width=width+'px';div.style.height=canvas.height+'px';div.style.left=(xy[0]+(canvas.width*(i/10)))+'px';div.style.top=(xy[1])+'px';div.style.position='absolute';div.style.backgroundColor=color;document.body.appendChild(div);jQuery('#blinds_'+i).animate({width:0},delay);}
setTimeout(function(){document.body.removeChild(document.getElementById('blinds_0'));},delay+100);setTimeout(function(){document.body.removeChild(document.getElementById('blinds_1'));},delay+100);setTimeout(function(){document.body.removeChild(document.getElementById('blinds_2'));},delay+100);setTimeout(function(){document.body.removeChild(document.getElementById('blinds_3'));},delay+100);setTimeout(function(){document.body.removeChild(document.getElementById('blinds_4'));},delay+100);setTimeout(function(){document.body.removeChild(document.getElementById('blinds_5'));},delay+100);setTimeout(function(){document.body.removeChild(document.getElementById('blinds_6'));},delay+100);setTimeout(function(){document.body.removeChild(document.getElementById('blinds_7'));},delay+100);setTimeout(function(){document.body.removeChild(document.getElementById('blinds_8'));},delay+100);setTimeout(function(){document.body.removeChild(document.getElementById('blinds_9'));},delay+100);if(typeof(arguments[2])=='function'){setTimeout(arguments[2],delay);}}
RGraph.Effects.jQuery.VBlinds.Close=function(obj)
{var canvas=obj.canvas;var opts=arguments[1]?arguments[1]:[];var delay=1000;var color=opts['color']?opts['color']:'white';var xy=RGraph.getCanvasXY(canvas);var width=canvas.width/10;for(var i=0;i<10;++i){var div=document.createElement('DIV');div.id='blinds_'+i;div.style.width=0;div.style.height=canvas.height+'px';div.style.left=(xy[0]+(canvas.width*(i/10)))+'px';div.style.top=(xy[1])+'px';div.style.position='absolute';div.style.backgroundColor=color;document.body.appendChild(div);jQuery('#blinds_'+i).animate({width:width},delay);}
setTimeout(function(){RGraph.Clear(obj.canvas,color);},delay+100);if(opts['remove']){setTimeout(function(){document.body.removeChild(document.getElementById('blinds_0'));},delay+100);setTimeout(function(){document.body.removeChild(document.getElementById('blinds_1'));},delay+100);setTimeout(function(){document.body.removeChild(document.getElementById('blinds_2'));},delay+100);setTimeout(function(){document.body.removeChild(document.getElementById('blinds_3'));},delay+100);setTimeout(function(){document.body.removeChild(document.getElementById('blinds_4'));},delay+100);setTimeout(function(){document.body.removeChild(document.getElementById('blinds_5'));},delay+100);setTimeout(function(){document.body.removeChild(document.getElementById('blinds_6'));},delay+100);setTimeout(function(){document.body.removeChild(document.getElementById('blinds_7'));},delay+100);setTimeout(function(){document.body.removeChild(document.getElementById('blinds_8'));},delay+100);setTimeout(function(){document.body.removeChild(document.getElementById('blinds_9'));},delay+100);}
if(typeof(arguments[2])=='function'){setTimeout(arguments[2],delay);}}
RGraph.Effects.Pie.Grow=function(obj)
{var canvas=obj.canvas;var opts=arguments[1]?arguments[1]:[];var color=opts['color']?opts['color']:'white';var xy=RGraph.getCanvasXY(canvas);canvas.style.visibility='hidden';RGraph.RedrawCanvas(canvas);var radius=obj.getRadius();if(typeof(obj.Get('chart.radius'))=='number'){radius=obj.Get('chart.radius');}
canvas.style.visibility='visible';obj.Set('chart.radius',0);RGraph.Effects.Animate(obj,{'chart.radius':radius},arguments[2]);}
RGraph.Effects.Bar.Grow=function(obj)
{var callback=arguments[2];obj.original_data=RGraph.array_clone(obj.data);obj.__animation_frame__=0;if(obj.Get('chart.ymax')==null){var ymax=0;for(var i=0;i<obj.data.length;++i){if(RGraph.is_array(obj.data[i])&&obj.Get('chart.grouping')=='stacked'){ymax=Math.max(ymax,Math.abs(RGraph.array_sum(obj.data[i])));}else if(RGraph.is_array(obj.data[i])&&obj.Get('chart.grouping')=='grouped'){ymax=Math.max(ymax,Math.abs(RGraph.array_max(obj.data[i])));}else{ymax=Math.max(ymax,Math.abs(obj.data[i]));}}
var scale=RGraph.getScale2(obj,{'max':ymax});obj.Set('chart.ymax',scale.max);}
function Grow()
{var numFrames=30;if(!obj.__animation_frame__){obj.__animation_frame__=0;obj.__original_hmargin__=obj.Get('chart.hmargin');obj.__hmargin__=((obj.canvas.width-obj.Get('chart.gutter.left')-obj.Get('chart.gutter.right'))/obj.data.length)/2;obj.Set('chart.hmargin',obj.__hmargin__);}
for(var j=0;j<obj.original_data.length;++j){if(typeof(obj.data[j])=='object'){for(var k=0;k<obj.data[j].length;++k){obj.data[j][k]=(obj.__animation_frame__/numFrames)*obj.original_data[j][k];}}else{obj.data[j]=(obj.__animation_frame__/numFrames)*obj.original_data[j];}}
obj.Set('chart.hmargin',((1-(obj.__animation_frame__/numFrames))*(obj.__hmargin__-obj.__original_hmargin__))+obj.__original_hmargin__);RGraph.Clear(obj.canvas);RGraph.RedrawCanvas(obj.canvas);if(obj.__animation_frame__<numFrames){obj.__animation_frame__+=1;RGraph.Effects.UpdateCanvas(Grow);}else{if(callback){callback(obj);}}}
RGraph.Effects.UpdateCanvas(Grow);}
RGraph.Effects.UpdateCanvas=function(func)
{window.requestAnimationFrame=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.amozRequestAnimationFrame||(function(func){setTimeout(func,16.666);});window.requestAnimationFrame(func);}
RGraph.Effects.Fuel.Grow=function(obj)
{var callback=arguments[2];var numFrames=30;var frame=0;var origValue=Number(obj.currentValue);if(obj.currentValue==null){obj.currentValue=obj.min;origValue=obj.min;}
var newValue=obj.value;var diff=newValue-origValue;var step=(diff/numFrames);var frame=0;function Grow()
{frame++;obj.value=((frame/numFrames)*diff)+origValue
if(obj.value>obj.max)obj.value=obj.max;if(obj.value<obj.min)obj.value=obj.min;RGraph.Clear(obj.canvas);RGraph.RedrawCanvas(obj.canvas);if(frame<numFrames){RGraph.Effects.UpdateCanvas(Grow);}else if(typeof(callback)=='function'){callback(obj);}}
Grow();}
RGraph.Effects.Animate=function(obj,map)
{RGraph.RedrawCanvas(obj.canvas);RGraph.Effects.__total_frames__=(map&&map['frames'])?map['frames']:30;function Animate_Iterator(func)
{var id=[obj.id+'_'+obj.type];if(typeof(RGraph.Effects.__current_frame__)=='undefined'){RGraph.Effects.__current_frame__=new Array();RGraph.Effects.__original_values__=new Array();RGraph.Effects.__diffs__=new Array();RGraph.Effects.__steps__=new Array();RGraph.Effects.__callback__=new Array();}
if(!RGraph.Effects.__current_frame__[id]){RGraph.Effects.__current_frame__[id]=RGraph.Effects.__total_frames__;RGraph.Effects.__original_values__[id]={};RGraph.Effects.__diffs__[id]={};RGraph.Effects.__steps__[id]={};RGraph.Effects.__callback__[id]=func;}
for(var i in map){if(typeof(map[i])=='string'||typeof(map[i])=='number'){if(RGraph.Effects.__current_frame__[id]==RGraph.Effects.__total_frames__){RGraph.Effects.__original_values__[id][i]=obj.Get(i);RGraph.Effects.__diffs__[id][i]=map[i]-RGraph.Effects.__original_values__[id][i];RGraph.Effects.__steps__[id][i]=RGraph.Effects.__diffs__[id][i]/RGraph.Effects.__total_frames__;}
obj.Set(i,obj.Get(i)+RGraph.Effects.__steps__[id][i]);RGraph.RedrawCanvas(obj.canvas);}}
if(--RGraph.Effects.__current_frame__[id]>0){RGraph.Effects.UpdateCanvas(Animate_Iterator);}else{if(typeof(RGraph.Effects.__callback__[id])=='function'){(RGraph.Effects.__callback__[id])(obj);}
RGraph.Effects.__current_frame__[id]=null;RGraph.Effects.__original_values__[id]=null;RGraph.Effects.__diffs__[id]=null;RGraph.Effects.__steps__[id]=null;RGraph.Effects.__callback__[id]=null;}}
Animate_Iterator(arguments[2]);}
RGraph.Effects.jQuery.Slide.In=function(obj)
{RGraph.Clear(obj.canvas);RGraph.RedrawCanvas(obj.canvas);var canvas=obj.canvas;var div=RGraph.Effects.ReplaceCanvasWithDIV(obj.canvas);var delay=1000;div.style.overflow='hidden';var from=typeof(arguments[1])=='object'&&typeof(arguments[1]['from'])=='string'?arguments[1]['from']:'left';canvas.style.position='relative';if(from=='left'){canvas.style.left=(0-div.offsetWidth)+'px';canvas.style.top=0;}else if(from=='top'){canvas.style.left=0;canvas.style.top=(0-div.offsetHeight)+'px';}else if(from=='bottom'){canvas.style.left=0;canvas.style.top=div.offsetHeight+'px';}else{canvas.style.left=div.offsetWidth+'px';canvas.style.top=0;}
jQuery('#'+obj.id).animate({left:0,top:0},delay);if(typeof(arguments[2])=='function'){setTimeout(arguments[2],delay);}}
RGraph.Effects.jQuery.Slide.Out=function(obj)
{var canvas=obj.canvas;var div=RGraph.Effects.ReplaceCanvasWithDIV(obj.canvas);var delay=1000;div.style.overflow='hidden';var to=typeof(arguments[1])=='object'&&arguments[1]&&typeof(arguments[1]['to'])=='string'?arguments[1]['to']:'left';canvas.style.position='relative';canvas.style.left=0;canvas.style.top=0;if(to=='left'){jQuery('#'+obj.id).animate({left:(0-canvas.width)+'px'},delay);}else if(to=='top'){jQuery('#'+obj.id).animate({left:0,top:(0-div.offsetHeight)+'px'},delay);}else if(to=='bottom'){jQuery('#'+obj.id).animate({top:(0+div.offsetHeight)+'px'},delay);}else{jQuery('#'+obj.id).animate({left:(0+canvas.width)+'px'},delay);}
if(typeof(arguments[2])=='function'){setTimeout(arguments[2],delay);}}
RGraph.Effects.Line.Unfold=function(obj)
{obj.Set('chart.animation.factor',obj.Get('chart.animation.unfold.initial'));RGraph.Effects.Animate(obj,{'chart.animation.factor':1},arguments[2]);}
RGraph.Effects.Rose.RoundRobin=function(obj)
{var numFrames=60;var currentFrame=0;var original_margin=obj.Get('chart.margin');var margin=(360/obj.data.length)/2;var callback=arguments[2];obj.Set('chart.margin',margin);obj.Set('chart.animation.roundrobin.factor',0);function RoundRobin_inner()
{if(currentFrame++<numFrames){obj.Set('chart.animation.roundrobin.factor',currentFrame/numFrames);obj.Set('chart.margin',(currentFrame/numFrames)*original_margin);RGraph.Clear(obj.canvas);RGraph.RedrawCanvas(obj.canvas);RGraph.Effects.UpdateCanvas(RoundRobin_inner);}else{obj.Set('chart.animation.roundrobin.factor',1);obj.Set('chart.margin',original_margin);RGraph.Clear(obj.canvas);RGraph.RedrawCanvas(obj.canvas);if(typeof(callback)=='function'){callback(obj);}}}
RGraph.Effects.UpdateCanvas(RoundRobin_inner);}
RGraph.Effects.Line.UnfoldFromCenter=function(obj)
{var numFrames=30;var original_opacity=obj.canvas.style.opacity;obj.canvas.style.opacity=0;obj.Draw();RGraph.RedrawCanvas(obj.canvas);var center_value=obj.Get('chart.xaxispos')=='center'?obj.Get('chart.ymin'):((obj.max-obj.min)/2)+obj.min;obj.Set('chart.ymax',obj.scale2.max);RGraph.Clear(obj.canvas);obj.canvas.style.opacity=original_opacity;var original_data=RGraph.array_clone(obj.original_data);var callback=arguments[2];if(!obj.__increments__){obj.__increments__=new Array();for(var dataset=0;dataset<original_data.length;++dataset){obj.__increments__[dataset]=new Array();for(var i=0;i<original_data[dataset].length;++i){if(obj.Get('chart.filled')&&obj.Get('chart.filled.accumulative')&&dataset>0){obj.__increments__[dataset][i]=original_data[dataset][i]/numFrames;obj.original_data[dataset][i]=0;}else{obj.__increments__[dataset][i]=(original_data[dataset][i]-center_value)/numFrames;obj.original_data[dataset][i]=center_value;}}}}
function UnfoldFromCenter()
{RGraph.Clear(obj.canvas);RGraph.RedrawCanvas(obj.canvas);for(var dataset=0;dataset<original_data.length;++dataset){for(var i=0;i<original_data[dataset].length;++i){obj.original_data[dataset][i]+=obj.__increments__[dataset][i];}}
if(--numFrames>0){RGraph.Effects.UpdateCanvas(UnfoldFromCenter);}else{obj.original_data=RGraph.array_clone(original_data);obj.__increments__=null;RGraph.Clear(obj.canvas);RGraph.RedrawCanvas(obj.canvas);if(typeof(callback)=='function'){callback(obj);}}}
UnfoldFromCenter();}
RGraph.Effects.Line.jQuery.UnfoldFromCenterTrace=function(obj)
{obj.canvas.style.visibility='hidden';setTimeout(function(){obj.canvas.style.visibility='visible';},10);obj.Draw();RGraph.Clear(obj.canvas);var data=RGraph.array_clone(obj.original_data);var callback=arguments[2];function Unfold_callback()
{obj.original_data=data;RGraph.Effects.Line.UnfoldFromCenter(obj,null,callback);}
var half=obj.Get('chart.xaxispos')=='center'?obj.min:((obj.max-obj.min)/2)+obj.min;obj.Set('chart.ymax',obj.max);for(var i=0;i<obj.original_data.length;++i){for(var j=0;j<obj.original_data[i].length;++j){obj.original_data[i][j]=(obj.Get('chart.filled')&&obj.Get('chart.filled.accumulative')&&i>0)?0:half;}}
RGraph.Effects.Line.jQuery.Trace(obj,{'duration':1000},Unfold_callback);}
RGraph.Effects.Line.FoldToCenter=function(obj)
{var totalFrames=30;var numFrame=totalFrames;RGraph.RedrawCanvas(obj.canvas);var center_value=obj.scale2.max/2;obj.Set('chart.ymax',obj.scale2.max);RGraph.Clear(obj.canvas);var original_data=RGraph.array_clone(obj.original_data);obj.Set('chart.shadow.blur',0);var callback=arguments[2];function FoldToCenter()
{for(var i=0;i<obj.data.length;++i){if(obj.data[i].length){for(var j=0;j<obj.data[i].length;++j){if(obj.original_data[i][j]>center_value){obj.original_data[i][j]=((original_data[i][j]-center_value)*(numFrame/totalFrames))+center_value;}else{obj.original_data[i][j]=center_value-((center_value-original_data[i][j])*(numFrame/totalFrames));}}}}
RGraph.Clear(obj.canvas);RGraph.RedrawCanvas(obj.canvas)
if(numFrame-->0){RGraph.Effects.UpdateCanvas(FoldToCenter);}else if(typeof(callback)=='function'){callback(obj);}}
RGraph.Effects.UpdateCanvas(FoldToCenter);}
RGraph.Effects.Odo.Grow=function(obj)
{var numFrames=30;var curFrame=0;var origValue=Number(obj.currentValue);var newValue=obj.value;var diff=newValue-origValue;var step=(diff/numFrames);var callback=arguments[2];function Grow_inner()
{obj.value=origValue+(curFrame*step);RGraph.Clear(obj.canvas);RGraph.RedrawCanvas(obj.canvas);if(++curFrame<=numFrames){RGraph.Effects.UpdateCanvas(Grow_inner);}else if(callback){callback(obj);}}
Grow_inner();}
RGraph.Effects.Meter.Grow=function(obj)
{if(!obj.currentValue){obj.currentValue=obj.min;}
var totalFrames=60;var numFrame=0;var diff=obj.value-obj.currentValue;var step=diff/totalFrames
var callback=arguments[2];var initial=obj.currentValue;function Grow_meter_inner()
{obj.value=initial+(numFrame++*step);RGraph.Clear(obj.canvas);RGraph.RedrawCanvas(obj.canvas);if(numFrame++<=totalFrames){RGraph.Effects.UpdateCanvas(Grow_meter_inner);}else if(typeof(callback)=='function'){callback(obj);}}
Grow_meter_inner();}
RGraph.Effects.HBar.Grow=function(obj)
{obj.original_data=RGraph.array_clone(obj.data);obj.__animation_frame__=0;if(obj.Get('chart.xmax')==0){var xmax=0;for(var i=0;i<obj.data.length;++i){if(RGraph.is_array(obj.data[i])&&obj.Get('chart.grouping')=='stacked'){xmax=Math.max(xmax,RGraph.array_sum(obj.data[i]));}else if(RGraph.is_array(obj.data[i])&&obj.Get('chart.grouping')=='grouped'){xmax=Math.max(xmax,RGraph.array_max(obj.data[i]));}else{xmax=Math.max(xmax,RGraph.array_max(obj.data[i]));}}
var scale2=RGraph.getScale2(obj,{'max':xmax});obj.Set('chart.xmax',scale2.max);}
if(obj.Get('chart.shadow.blur')>0){var __original_shadow_blur__=obj.Get('chart.shadow.blur');obj.Set('chart.shadow.blur',0);}
function Grow()
{var numFrames=30;if(!obj.__animation_frame__){obj.__animation_frame__=0;obj.__original_vmargin__=obj.Get('chart.vmargin');obj.__vmargin__=((obj.canvas.height-obj.Get('chart.gutter.top')-obj.Get('chart.gutter.bottom'))/obj.data.length)/2;obj.Set('chart.vmargin',obj.__vmargin__);}
for(var j=0;j<obj.original_data.length;++j){var easing=Math.pow(Math.sin((obj.__animation_frame__*(90/numFrames))/(180/PI)),4);if(typeof(obj.data[j])=='object'){for(var k=0;k<obj.data[j].length;++k){obj.data[j][k]=(obj.__animation_frame__/numFrames)*obj.original_data[j][k]*easing;}}else{obj.data[j]=(obj.__animation_frame__/numFrames)*obj.original_data[j]*easing;}}
obj.Set('chart.vmargin',((1-(obj.__animation_frame__/numFrames))*(obj.__vmargin__-obj.__original_vmargin__))+obj.__original_vmargin__);RGraph.Clear(obj.canvas);RGraph.RedrawCanvas(obj.canvas);if(obj.__animation_frame__<numFrames){obj.__animation_frame__+=1;RGraph.Effects.UpdateCanvas(Grow);}else{if(typeof(__original_shadow_blur__)=='number'&&__original_shadow_blur__>0){obj.Set('chart.shadow.blur',__original_shadow_blur__);RGraph.Clear(obj.canvas);RGraph.RedrawCanvas(obj.canvas);}}}
RGraph.Effects.UpdateCanvas(Grow);}
RGraph.Effects.Line.jQuery.Trace=function(obj)
{var callback=typeof(arguments[2])=='function'?arguments[2]:function(){};var opt=arguments[1]||[];if(!opt['duration']){opt['duration']=1000;}
RGraph.Clear(obj.canvas);RGraph.RedrawCanvas(obj.canvas);var div=document.createElement('DIV');var xy=RGraph.getCanvasXY(obj.canvas);div.id='__rgraph_trace_animation_'+RGraph.random(0,4351623)+'__';div.style.left=xy[0]+'px';div.style.top=xy[1]+'px';div.style.width=obj.Get('chart.gutter.left');div.style.height=obj.canvas.height+'px';div.style.position='absolute';div.style.overflow='hidden';document.body.appendChild(div);obj.canvas.__rgraph_trace_div__=div;var id='__rgraph_line_trace_animation_'+RGraph.random(0,99999999)+'__';var canvas2=document.createElement('CANVAS');var properties=['WebkitTransform','MozTransform','OTransform','MSTransform','transform'];for(i in properties){var name=properties[i];if(typeof(obj.canvas.style[name])=='string'&&obj.canvas.style[name]){canvas2.style[name]=obj.canvas.style[name];}}
obj.canvas.__rgraph_line_canvas2__=canvas2;canvas2.width=obj.canvas.width;canvas2.height=obj.canvas.height;canvas2.style.position='absolute';canvas2.style.left=0;canvas2.style.top=0;canvas2.noclear=true;canvas2.id=id;div.appendChild(canvas2);var reposition_canvas2=function(e)
{var xy=RGraph.getCanvasXY(obj.canvas);div.style.left=xy[0]+'px';div.style.top=xy[1]+'px';}
window.addEventListener('resize',reposition_canvas2,false)
var obj2=new RGraph.Line(id,RGraph.array_clone(obj.original_data));RGraph.ObjectRegistry.Remove(obj2);for(i in obj.properties){if(typeof(i)=='string'){obj2.Set(i,obj.properties[i]);}}
obj2.Set('chart.labels',[]);obj2.Set('chart.background.grid',false);obj2.Set('chart.background.barcolor1','rgba(0,0,0,0)');obj2.Set('chart.background.barcolor2','rgba(0,0,0,0)');obj2.Set('chart.ylabels',false);obj2.Set('chart.noaxes',true);obj2.Set('chart.title','');obj2.Set('chart.title.xaxis','');obj2.Set('chart.title.yaxis','');obj2.Set('chart.filled.accumulative',obj.Get('chart.filled.accumulative'));obj.Set('chart.key',[]);obj2.Draw();obj.canvas.__rgraph_trace_obj2__=obj2;obj.Set('chart.line.visible',false);obj.Set('chart.colors',['rgba(0,0,0,0)']);if(obj.Get('chart.filled')){var original_fillstyle=obj.Get('chart.fillstyle');obj.Set('chart.fillstyle','rgba(0,0,0,0)');obj.Set('chart.animation.trace.original.fillstyle',original_fillstyle);}
RGraph.Clear(obj.canvas);RGraph.RedrawCanvas(obj.canvas);if(!obj.canvas.__rgraph_trace_cover__){var div2=document.createElement('DIV');div2.id='__rgraph_trace_animation_'+RGraph.random(0,4351623)+'__';div2.style.left=xy[0]+'px';div2.style.top=xy[1]+'px';div2.style.width=obj.canvas.width+'px';div2.style.height=obj.canvas.height+'px';div2.style.position='absolute';div2.style.overflow='hidden';div2.style.backgroundColor='rgba(0,0,0,0)';div.div2=div2;obj.canvas.__rgraph_trace_cover__=div2;document.body.appendChild(div2);}else{div2=obj.canvas.__rgraph_trace_cover__;}
jQuery('#'+div.id).animate({width:obj.canvas.width+'px'},opt['duration'],function(){RGraph.Effects.Line.Trace_callback(obj)});RGraph.Effects.Line.Trace_callback=function(obj)
{var obj2=obj.canvas.__rgraph_trace_obj2__;window.removeEventListener('resize',reposition_canvas2,false);div.style.display='none';div2.style.display='none';obj.Set('chart.line.visible',true);obj.Set('chart.filled',RGraph.array_clone(obj2.Get('chart.filled')));obj.Set('chart.fillstyle',obj.Get('chart.animation.trace.original.fillstyle'));obj.Set('chart.colors',RGraph.array_clone(obj2.Get('chart.colors')));obj.Set('chart.key',RGraph.array_clone(obj2.Get('chart.key')));RGraph.RedrawCanvas(obj.canvas);obj.canvas.__rgraph_trace_div__.style.display='none';obj.canvas.__rgraph_trace_div__=null;obj.canvas.__rgraph_line_canvas2__.style.display='none';obj.canvas.__rgraph_line_canvas2__=null;obj.canvas.__rgraph_trace_cover__.style.display='none';obj.canvas.__rgraph_trace_cover__=null;callback(obj);}}
RGraph.Effects.Line.Trace2=function(obj)
{var callback=arguments[2];var numFrames=(arguments[1]&&arguments[1].frames)?arguments[1].frames:15;var frame=0;obj.Set('animation.trace.clip',0);function Grow()
{if(frame>numFrames){if(callback){callback(obj);}
return;}
obj.Set('animation.trace.clip',frame/numFrames);RGraph.RedrawCanvas(obj.canvas);frame++;RGraph.Effects.UpdateCanvas(Grow);}
Grow();}
RGraph.Effects.Radar.Trace=function(obj)
{var callback=arguments[2];var numFrames=(arguments[1]&&arguments[1].frames)?arguments[1].frames:60;var frame=0;obj.Set('animation.trace.clip',0);function Grow()
{if(frame>numFrames){if(callback){callback(obj);}
return;}
obj.Set('animation.trace.clip',frame/numFrames);RGraph.RedrawCanvas(obj.canvas);frame++;RGraph.Effects.UpdateCanvas(Grow);}
Grow();}
RGraph.Effects.Pie.RoundRobin=function(obj)
{var callback=arguments[2]?arguments[2]:null;var opt=arguments[1];var currentFrame=0;var numFrames=(opt&&opt['frames'])?opt['frames']:90;var targetRadius=obj.getRadius();obj.Set('chart.events',false);if(obj.properties['chart.variant']=='donut'&&typeof(obj.properties['chart.variant.donut.width'])=='number'){if(RGraph.is_null(opt)){var opt={radius:null}}else{opt.radius=null;}}
function RoundRobin_inner()
{obj.Set('chart.effect.roundrobin.multiplier',Math.pow(Math.sin((currentFrame*(90/numFrames))/(180/PI)),2)*(currentFrame/numFrames));if(!opt||typeof(opt['radius'])=='undefined'||opt['radius']==true){obj.Set('chart.radius',targetRadius*obj.Get('chart.effect.roundrobin.multiplier'));}
RGraph.RedrawCanvas(obj.canvas);if(currentFrame++<numFrames){RGraph.Effects.UpdateCanvas(RoundRobin_inner);}else{obj.Set('chart.events',true);RGraph.RedrawCanvas(obj.canvas);if(callback){callback(obj);}}}
RGraph.Effects.UpdateCanvas(RoundRobin_inner);}
RGraph.Effects.Pie.Implode=function(obj)
{var numFrames=90;var distance=Math.min(obj.canvas.width,obj.canvas.height);var exploded=obj.Get('chart.exploded');var callback=arguments[2];function Implode_inner()
{obj.Set('chart.exploded',Math.sin(numFrames/(180/PI))*distance);RGraph.Clear(obj.canvas)
RGraph.RedrawCanvas(obj.canvas);if(numFrames>0){numFrames--;RGraph.Effects.UpdateCanvas(Implode_inner);}else{obj.Set('chart.exploded',exploded);RGraph.Clear(obj.canvas);RGraph.RedrawCanvas(obj.canvas);if(typeof(callback)=='function'){callback(obj);}}}
RGraph.Effects.UpdateCanvas(Implode_inner);}
RGraph.Effects.Pie.Explode=function(obj)
{var canvas=obj.canvas;var opts=arguments[1]?arguments[1]:[];var callback=arguments[2]?arguments[2]:null;var frames=opts['frames']?opts['frames']:60;obj.Set('chart.exploded',0);RGraph.Effects.Animate(obj,{'frames':frames,'chart.exploded':Math.max(canvas.width,canvas.height)},callback);}
RGraph.Effects.Gauge.Grow=function(obj)
{var callback=arguments[2];var numFrames=30;var frame=0;if(typeof(obj.value)=='number'){var origValue=Number(obj.currentValue);if(obj.currentValue==null){obj.currentValue=obj.min;origValue=obj.min;}
var newValue=obj.value;var diff=newValue-origValue;var step=(diff/numFrames);var frame=0;function Grow_single()
{frame++;obj.value=((frame/numFrames)*diff)+origValue;if(obj.value>obj.max)obj.value=obj.max;if(obj.value<obj.min)obj.value=obj.min;RGraph.Clear(obj.canvas);RGraph.RedrawCanvas(obj.canvas);if(frame<30){RGraph.Effects.UpdateCanvas(Grow_single);}else if(typeof(callback)=='function'){callback(obj);}}
Grow_single();}else{if(obj.currentValue==null){obj.currentValue=[];for(var i=0;i<obj.value.length;++i){obj.currentValue[i]=obj.min;}
origValue=RGraph.array_clone(obj.currentValue);}
var origValue=RGraph.array_clone(obj.currentValue);var newValue=RGraph.array_clone(obj.value);var diff=[];var step=[];for(var i=0;i<newValue.length;++i){diff[i]=newValue[i]-Number(obj.currentValue[i]);step[i]=(diff[i]/numFrames);}
function Grow_multiple()
{frame++;for(var i=0;i<obj.value.length;++i){obj.value[i]=((frame/numFrames)*diff[i])+origValue[i];if(obj.value[i]>obj.max)obj.value[i]=obj.max;if(obj.value[i]<obj.min)obj.value[i]=obj.min;RGraph.Clear(obj.canvas);RGraph.RedrawCanvas(obj.canvas);}
if(frame<30){RGraph.Effects.UpdateCanvas(Grow_multiple);}else if(typeof(callback)=='function'){callback(obj);}}
Grow_multiple();}}
RGraph.Effects.Radar.Grow=function(obj)
{var totalframes=30;var framenum=totalframes;var data=RGraph.array_clone(obj.data);var callback=arguments[2];obj.original_data=RGraph.array_clone(obj.original_data);function Grow_inner()
{for(var i=0;i<data.length;++i){if(obj.original_data[i]==null){obj.original_data[i]=[];}
for(var j=0;j<data[i].length;++j){obj.original_data[i][j]=((totalframes-framenum)/totalframes)*data[i][j];}}
RGraph.Clear(obj.canvas);RGraph.RedrawCanvas(obj.canvas);if(framenum>0){framenum--;RGraph.Effects.UpdateCanvas(Grow_inner);}else if(typeof(callback)=='function'){callback(obj);}}
RGraph.Effects.UpdateCanvas(Grow_inner);}
RGraph.Effects.Waterfall.Grow=function(obj)
{var totalFrames=45;var numFrame=0;var data=RGraph.array_clone(obj.data);var callback=arguments[2];for(var i=0;i<obj.data.length;++i){obj.data[i]/=totalFrames;}
if(obj.Get('chart.ymax')==null){var max=obj.getMax(data);var scale2=RGraph.getScale2(obj,{'max':max});obj.Set('chart.ymax',scale2.max);}
function Grow_inner()
{for(var i=0;i<obj.data.length;++i){obj.data[i]=data[i]*(numFrame/totalFrames);}
var multiplier=Math.pow(Math.sin(((numFrame/totalFrames)*90)/(180/PI)),20);RGraph.Clear(obj.canvas);RGraph.RedrawCanvas(obj.canvas);if(numFrame++<totalFrames){RGraph.Effects.UpdateCanvas(Grow_inner);}else if(typeof(callback)=='function'){callback(obj);}}
RGraph.Effects.UpdateCanvas(Grow_inner)}
RGraph.Effects.Bar.Wave2=RGraph.Effects.Bar.Wave=function(obj)
{var totalframes=(arguments[1]&&arguments[1].frames)?arguments[1].frames:15;var original_data=[];obj.Draw();obj.Set('chart.ymax',obj.scale2.max);RGraph.Clear(obj.canvas);for(var i=0;i<obj.data.length;++i){(function(idx)
{original_data[i]=obj.data[i];obj.data[i]=typeof(obj.data[i])=='object'?[]:0;setTimeout(function(){Iterator(idx,totalframes);},100*i)})(i);}
function Iterator(idx,frames)
{if(frames-->0){if(typeof(obj.data[idx])=='number'){obj.data[idx]=((totalframes-frames)/totalframes)*original_data[idx]}else if(typeof(obj.data[idx])=='object'){for(var k=0;k<original_data[idx].length;++k){obj.data[idx][k]=((totalframes-frames)/totalframes)*original_data[idx][k];}}
RGraph.Clear(obj.canvas);RGraph.RedrawCanvas(obj.canvas);RGraph.Effects.UpdateCanvas(function(){Iterator(idx,frames);});}}}
RGraph.Effects.VProgress.Grow=RGraph.Effects.HProgress.Grow=function(obj)
{var canvas=obj.canvas;var context=obj.context;var initial_value=obj.currentValue;var numFrames=30;var currentFrame=0
if(typeof(obj.value)=='object'){if(RGraph.is_null(obj.currentValue)){obj.currentValue=[];for(var i=0;i<obj.value.length;++i){obj.currentValue[i]=0;}}
var diff=[];var increment=[];for(var i=0;i<obj.value.length;++i){diff[i]=obj.value[i]-Number(obj.currentValue[i]);increment[i]=diff[i]/numFrames;}
if(initial_value==null){initial_value=[];for(var i=0;i<obj.value.length;++i){initial_value[i]=0;}}}else{var diff=obj.value-Number(obj.currentValue);var increment=diff/numFrames;}
var callback=arguments[2]?arguments[2]:null;function Grow()
{currentFrame++;if(currentFrame<=numFrames){if(typeof(obj.value)=='object'){obj.value=[];for(var i=0;i<initial_value.length;++i){obj.value[i]=initial_value[i]+(increment[i]*currentFrame);}}else{obj.value=initial_value+(increment*currentFrame);}
RGraph.Clear(obj.canvas);RGraph.RedrawCanvas(obj.canvas);RGraph.Effects.UpdateCanvas(Grow);}else if(callback){callback(obj);}}
RGraph.Effects.UpdateCanvas(Grow);}
RGraph.Effects.Gantt.Grow=function(obj)
{var canvas=obj.canvas;var context=obj.context;var numFrames=30;var currentFrame=0;var callback=arguments[2]?arguments[2]:null;var events=obj.data;var original_events=RGraph.array_clone(events);function Grow_gantt_inner()
{if(currentFrame<=numFrames){for(var i=0;i<events.length;++i){if(typeof(events[i][0])=='object'){for(var j=0;j<events[i].length;++j){events[i][j][1]=(currentFrame/numFrames)*original_events[i][j][1];}}else{events[i][1]=(currentFrame/numFrames)*original_events[i][1];}}
obj.data=events;RGraph.Clear(obj.canvas);RGraph.RedrawCanvas(obj.canvas);currentFrame++;RGraph.Effects.UpdateCanvas(Grow_gantt_inner);}else if(callback){callback(obj);}}
RGraph.Effects.UpdateCanvas(Grow_gantt_inner);}
if(!Function.prototype.bind){Function.prototype.bind=function(oThis){if(typeof this!=="function"){if(console&&console.log){console.log('Function.prototype.bind - what is trying to be bound is not callable');}}
var aArgs=Array.prototype.slice.call(arguments,1),fToBind=this,fNOP=function(){},fBound=function(){return fToBind.apply(this instanceof fNOP?this:oThis||window,aArgs.concat(Array.prototype.slice.call(arguments)));};fNOP.prototype=this.prototype;fBound.prototype=new fNOP();return fBound;};}
RGraph.Effects.Rose.Explode=function(obj)
{var canvas=obj.canvas;var opts=arguments[1]?arguments[1]:[];var callback=arguments[2]?arguments[2]:null;var frames=opts['frames']?opts['frames']:60;obj.Set('chart.exploded',0);RGraph.Effects.Animate(obj,{'frames':frames,'chart.exploded':Math.min(canvas.width,canvas.height)},callback);}
RGraph.Effects.Rose.Implode=function(obj)
{var canvas=obj.canvas;var opts=arguments[1]?arguments[1]:[];var callback=arguments[2]?arguments[2]:null;var frames=opts['frames']?opts['frames']:60;obj.Set('chart.exploded',Math.min(canvas.width,canvas.height));RGraph.Effects.Animate(obj,{'frames':frames,'chart.exploded':0},callback);}
RGraph.Effects.Thermometer.Grow=function(obj)
{var callback=arguments[2];var numFrames=30;var origValue=Number(obj.currentValue);if(obj.currentValue==null){obj.currentValue=0
origValue=0;}
var newValue=obj.value;var diff=newValue-origValue;var step=(diff/numFrames);var frame=0;function Grow()
{frame++
obj.value=v=((frame/numFrames)*diff)+origValue
RGraph.Clear(obj.canvas);RGraph.RedrawCanvas(obj.canvas);if(frame<30){RGraph.Effects.UpdateCanvas(Grow);}else if(typeof(callback)=='function'){callback(obj);}}
RGraph.Effects.UpdateCanvas(Grow);}
RGraph.Effects.Scatter.jQuery.Trace=function(obj)
{var callback=typeof(arguments[2])=='function'?arguments[2]:function(){};var opt=arguments[1]||[];if(!opt['duration']){opt['duration']=1500;}
RGraph.Clear(obj.canvas);RGraph.RedrawCanvas(obj.canvas);var div=document.createElement('DIV');var xy=RGraph.getCanvasXY(obj.canvas);div.id='__rgraph_trace_animation_'+RGraph.random(0,4351623)+'__';div.style.left=xy[0]+'px';div.style.top=xy[1]+'px';div.style.width=obj.Get('chart.gutter.left');div.style.height=obj.canvas.height+'px';div.style.position='absolute';div.style.overflow='hidden';document.body.appendChild(div);var id='__rgraph_scatter_trace_animation_'+RGraph.random(0,99999999)+'__';var canvas2=document.createElement('CANVAS');canvas2.width=obj.canvas.width;canvas2.height=obj.canvas.height;canvas2.style.position='absolute';canvas2.style.left=0;canvas2.style.top=0;canvas2.noclear=true;canvas2.id=id;div.appendChild(canvas2);var reposition_canvas2=function(e)
{var xy=RGraph.getCanvasXY(obj.canvas);div.style.left=xy[0]+'px';div.style.top=xy[1]+'px';}
window.addEventListener('resize',reposition_canvas2,false)
var obj2=new RGraph.Scatter(id,RGraph.array_clone(obj.data));RGraph.ObjectRegistry.Remove(obj2);for(i in obj.properties){if(typeof(i)=='string'){obj2.Set(i,obj.properties[i]);}}
obj2.Set('chart.labels',[]);obj2.Set('chart.background.grid',false);obj2.Set('chart.background.barcolor1','rgba(0,0,0,0)');obj2.Set('chart.background.barcolor2','rgba(0,0,0,0)');obj2.Set('chart.ylabels',false);obj2.Set('chart.noaxes',true);obj2.Set('chart.title','');obj2.Set('chart.title.xaxis','');obj2.Set('chart.title.yaxis','');obj.Set('chart.key',[]);obj2.Draw();obj.Set('chart.line.visible',false);RGraph.Clear(obj.canvas);RGraph.RedrawCanvas(obj.canvas);if(!obj.canvas.__rgraph_scatter_trace_cover__){var div2=document.createElement('DIV');div2.id='__rgraph_trace_animation_'+RGraph.random(0,4351623)+'__';div2.style.left=xy[0]+'px';div2.style.top=xy[1]+'px';div2.style.width=obj.canvas.width+'px';div2.style.height=obj.canvas.height+'px';div2.style.position='absolute';div2.style.overflow='hidden';div2.style.backgroundColor='rgba(0,0,0,0)';div.div2=div2;obj.canvas.__rgraph_scatter_trace_cover__=div2
document.body.appendChild(div2);}else{div2=obj.canvas.__rgraph_scatter_trace_cover__;}
jQuery('#'+div.id).animate({width:obj.canvas.width+'px'},opt['duration'],function(){window.removeEventListener('resize',reposition_canvas2,false);div.style.display='none';div2.style.display='none';obj.Set('chart.line.visible',true);obj.Set('chart.colors',RGraph.array_clone(obj2.Get('chart.colors')));obj.Set('chart.key',RGraph.array_clone(obj2.Get('chart.key')));RGraph.RedrawCanvas(obj.canvas);obj.canvas.__rgraph_trace_cover__=null;callback(obj);});}
RGraph.Effects.CornerGauge.Grow=function(obj)
{var callback=arguments[2];var numFrames=30;var frame=0;if(typeof(obj.value)=='number'){var origValue=Number(obj.currentValue);if(obj.currentValue==null){obj.currentValue=obj.min;origValue=obj.min;}
var newValue=obj.value;var diff=newValue-origValue;var step=(diff/numFrames);var frame=0;function Grow_single()
{frame++;obj.value=((frame/numFrames)*diff)+origValue
if(obj.value>obj.max)obj.value=obj.max;if(obj.value<obj.min)obj.value=obj.min;RGraph.Clear(obj.canvas);RGraph.RedrawCanvas(obj.canvas);if(frame<30){RGraph.Effects.UpdateCanvas(Grow_single);}else if(typeof(callback)=='function'){callback(obj);}}
Grow_single();}else{if(obj.currentValue==null){obj.currentValue=[];for(var i=0;i<obj.value.length;++i){obj.currentValue[i]=obj.min;}
origValue=RGraph.array_clone(obj.currentValue);}
var origValue=RGraph.array_clone(obj.currentValue);var newValue=RGraph.array_clone(obj.value);var diff=[];var step=[];for(var i=0;i<newValue.length;++i){diff[i]=newValue[i]-Number(obj.currentValue[i]);step[i]=(diff[i]/numFrames);}
function Grow_multiple()
{frame++;for(var i=0;i<obj.value.length;++i){obj.value[i]=((frame/numFrames)*diff[i])+origValue[i];if(obj.value[i]>obj.max)obj.value[i]=obj.max;if(obj.value[i]<obj.min)obj.value[i]=obj.min;RGraph.Clear(obj.canvas);RGraph.RedrawCanvas(obj.canvas);}
if(frame<30){RGraph.Effects.UpdateCanvas(Grow_multiple);}else if(typeof(callback)=='function'){callback(obj);}}
Grow_multiple();}}
RGraph.Effects.Rose.Grow=function(obj)
{var callback=arguments[2];var numFrames=60;var frame=0;function Grow()
{frame++;obj.Set('chart.animation.grow.multiplier',frame/numFrames);RGraph.Clear(obj.canvas);RGraph.RedrawCanvas(obj.canvas);if(frame<numFrames){++frame;RGraph.Effects.UpdateCanvas(Grow);}else{obj.Set('chart.animation.grow.multiplier',1);RGraph.Clear(obj.canvas);RGraph.RedrawCanvas(obj.canvas);if(typeof(callback)=='function'){callback(obj);}}}
RGraph.Effects.UpdateCanvas(Grow);}
RGraph.Effects.jQuery.HScissors.Open=function(obj)
{var canvas=obj.isRGraph?obj.canvas:obj;;var id=canvas.id;var opts=arguments[1]?arguments[1]:[];var delay=1000;var color=opts['color']?opts['color']:'white';var xy=RGraph.getCanvasXY(canvas);var height=canvas.height/5;RGraph.Clear(canvas);RGraph.RedrawCanvas(canvas);for(var i=0;i<5;++i){var div=document.getElementById(id+"scissors_"+i)
if(!div){var div=document.createElement('DIV');div.id=id+'scissors_'+i;div.style.width=canvas.width+'px';div.style.height=height+'px';div.style.left=xy[0]+'px';div.style.top=(xy[1]+(canvas.height*(i/5)))+'px';div.style.position='absolute';div.style.backgroundColor=color;document.body.appendChild(div);}
if(i%2==0){jQuery('#'+id+'scissors_'+i).animate({left:canvas.width+'px',width:0},delay);}else{jQuery('#'+id+'scissors_'+i).animate({width:0},delay);}}
setTimeout(function(){document.body.removeChild(document.getElementById(id+'scissors_0'));},delay);setTimeout(function(){document.body.removeChild(document.getElementById(id+'scissors_1'));},delay);setTimeout(function(){document.body.removeChild(document.getElementById(id+'scissors_2'));},delay);setTimeout(function(){document.body.removeChild(document.getElementById(id+'scissors_3'));},delay);setTimeout(function(){document.body.removeChild(document.getElementById(id+'scissors_4'));},delay);if(typeof(arguments[2])=='function'){setTimeout(arguments[2],delay);}}
RGraph.Effects.jQuery.HScissors.Close=function(obj)
{var canvas=obj.isRGraph?obj.canvas:obj;var id=canvas.id;var opts=arguments[1]?arguments[1]:[];var delay=1000;var color=opts['color']?opts['color']:'white';var xy=RGraph.getCanvasXY(canvas);var height=canvas.height/5;RGraph.Clear(canvas);RGraph.RedrawCanvas(canvas);for(var i=0;i<5;++i){var div=document.createElement('DIV');div.id=id+'_scissors_'+i;div.style.width=0;div.style.height=height+'px';div.style.left=(i%2==0?xy[0]+canvas.width:xy[0])+'px';div.style.top=(xy[1]+(canvas.height*(i/5)))+'px';div.style.position='absolute';div.style.backgroundColor=color;document.body.appendChild(div);if(i%2==0){jQuery('#'+id+'_scissors_'+i).animate({left:xy[0]+'px',width:canvas.width+'px'},delay);}else{jQuery('#'+id+'_scissors_'+i).animate({width:canvas.width+'px'},delay);}}
if(typeof(arguments[2])=='function'){setTimeout(arguments[2],delay);}}
RGraph.Effects.jQuery.VScissors.Open=function(obj)
{var canvas=obj.isRGraph?obj.canvas:obj;;var id=canvas.id;var opts=arguments[1]?arguments[1]:[];var delay=1000;var color=opts['color']?opts['color']:'white';var xy=RGraph.getCanvasXY(canvas);var width=canvas.width/5;RGraph.Clear(canvas);RGraph.RedrawCanvas(canvas);for(var i=0;i<5;++i){var div=document.getElementById(id+"_vscissors_"+i)
if(!div){var div=document.createElement('DIV');div.id=id+'_vscissors_'+i;div.style.width=width+'px';div.style.height=canvas.height+'px';div.style.left=xy[0]+(canvas.width*(i/5))+'px';div.style.top=xy[1]+'px';div.style.position='absolute';div.style.backgroundColor=color;document.body.appendChild(div);}
if(i%2==0){jQuery('#'+id+'_vscissors_'+i).animate({top:xy[1]+canvas.height+'px',height:0},delay);}else{jQuery('#'+id+'_vscissors_'+i).animate({height:0},delay);}}
setTimeout(function(){document.body.removeChild(document.getElementById(id+'_vscissors_0'));},delay);setTimeout(function(){document.body.removeChild(document.getElementById(id+'_vscissors_1'));},delay);setTimeout(function(){document.body.removeChild(document.getElementById(id+'_vscissors_2'));},delay);setTimeout(function(){document.body.removeChild(document.getElementById(id+'_vscissors_3'));},delay);setTimeout(function(){document.body.removeChild(document.getElementById(id+'_vscissors_4'));},delay);if(typeof(arguments[2])=='function'){setTimeout(arguments[2],delay);}}
RGraph.Effects.jQuery.VScissors.Close=function(obj)
{var canvas=obj.isRGraph?obj.canvas:obj;var id=canvas.id;var opts=arguments[1]?arguments[1]:[];var delay=1000;var color=opts['color']?opts['color']:'white';var xy=RGraph.getCanvasXY(canvas);var width=canvas.width/5;RGraph.Clear(canvas);RGraph.RedrawCanvas(canvas);for(var i=0;i<5;++i){var div=document.getElementById(id+"_vscissors_"+i)
if(!div){var div=document.createElement('DIV');div.id=id+'_vscissors_'+i;div.style.width=width+'px';div.style.height=0;div.style.left=xy[0]+(width*i)+'px';div.style.top=(i%2==0?xy[1]+canvas.height:xy[1])+'px';div.style.position='absolute';div.style.backgroundColor=color;document.body.appendChild(div);}
if(i%2==0){jQuery('#'+id+'_vscissors_'+i).animate({top:xy[1]+'px',height:canvas.height+'px'},delay);}else{jQuery('#'+id+'_vscissors_'+i).animate({height:canvas.height+'px'},delay);}}
if(typeof(arguments[2])=='function'){setTimeout(arguments[2],delay);}}
if(typeof(RGraph)=='undefined')RGraph={};RGraph.DrawKey=function(obj,key,colors)
{if(!key){return;}
var RG=RGraph,ca=obj.canvas,co=obj.context,prop=obj.properties,keypos=prop['chart.key.position'],textsize=prop['chart.text.size'],key_non_null=[],colors_non_null=[];co.lineWidth=1;co.beginPath();if(typeof(prop['chart.key.vpos'])=='number'){obj.Set('chart.key.position.y',prop['chart.key.vpos']*prop['chart.gutter.top']);}
for(var i=0;i<key.length;++i){if(key[i]!=null){colors_non_null.push(colors[i]);key_non_null.push(key[i]);}}
key=key_non_null;colors=colors_non_null;function DrawKey_graph(obj,key,colors)
{var text_size=typeof(prop['chart.key.text.size'])=='number'?prop['chart.key.text.size']:prop['chart.text.size'];var text_font=prop['chart.text.font'];var gutterLeft=obj.gutterLeft;var gutterRight=obj.gutterRight;var gutterTop=obj.gutterTop;var gutterBottom=obj.gutterBottom;var hpos=prop['chart.yaxispos']=='right'?gutterLeft+10:ca.width-gutterRight-10;var vpos=gutterTop+10;var title=prop['chart.title'];var blob_size=text_size;var hmargin=8;var vmargin=4;var fillstyle=prop['chart.key.background'];var text_color=prop['chart.key.text.color'];var strokestyle='#333';var height=0;var width=0;if(!obj.coords)obj.coords={};obj.coords.key=[];co.font=text_size+'pt '+prop['chart.text.font'];for(i=0;i<key.length;++i){width=Math.max(width,co.measureText(key[i]).width);}
width+=5;width+=blob_size;width+=5;width+=5;width+=5;if(prop['chart.yaxispos']=='left'||(obj.type=='pie'&&!prop['chart.yaxispos'])||(obj.type=='hbar'&&!prop['chart.yaxispos'])||(obj.type=='hbar'&&prop['chart.yaxispos']=='center')||(obj.type=='rscatter'&&!prop['chart.yaxispos'])||(obj.type=='radar'&&!prop['chart.yaxispos'])||(obj.type=='rose'&&!prop['chart.yaxispos'])||(obj.type=='funnel'&&!prop['chart.yaxispos'])||(obj.type=='vprogress'&&!prop['chart.yaxispos'])||(obj.type=='hprogress'&&!prop['chart.yaxispos'])){hpos-=width;}
if(typeof(prop['chart.key.halign'])=='string'){if(prop['chart.key.halign']=='left'){hpos=gutterLeft+10;}else if(prop['chart.key.halign']=='right'){hpos=ca.width-gutterRight-width;}}
if(typeof(prop['chart.key.position.x'])=='number'){hpos=prop['chart.key.position.x'];}
if(typeof(prop['chart.key.position.y'])=='number'){vpos=prop['chart.key.position.y'];}
if(prop['chart.key.shadow']){co.shadowColor=prop['chart.key.shadow.color'];co.shadowBlur=prop['chart.key.shadow.blur'];co.shadowOffsetX=prop['chart.key.shadow.offsetx'];co.shadowOffsetY=prop['chart.key.shadow.offsety'];}
co.beginPath();co.fillStyle=prop['chart.key.background'];co.strokeStyle='black';if(typeof(prop['chart.key.position.graph.boxed'])=='undefined'||(typeof(prop['chart.key.position.graph.boxed'])=='boolean'&&prop['chart.key.position.graph.boxed'])){if(arguments[3]!=false){co.lineWidth=typeof(prop['chart.key.linewidth'])=='number'?prop['chart.key.linewidth']:1;if(prop['chart.key.rounded']==true){co.beginPath();co.strokeStyle=strokestyle;RG.strokedCurvyRect(co,Math.round(hpos),Math.round(vpos),width-5,5+((text_size+5)*RG.getKeyLength(key)),4);co.stroke();co.fill();RG.NoShadow(obj);}else{co.strokeRect(Math.round(hpos),Math.round(vpos),width-5,5+((text_size+5)*RG.getKeyLength(key)));co.fillRect(Math.round(hpos),Math.round(vpos),width-5,5+((text_size+5)*RG.getKeyLength(key)));}}}
RG.NoShadow(obj);co.beginPath();if(prop['chart.key.colors']){colors=prop['chart.key.colors'];}
for(var i=key.length-1;i>=0;i--){var j=Number(i)+1;if(typeof(prop['chart.key.color.shape'])=='object'&&typeof(prop['chart.key.color.shape'][i])=='string'){var blob_shape=prop['chart.key.color.shape'][i];}else if(typeof(prop['chart.key.color.shape'])=='string'){var blob_shape=prop['chart.key.color.shape'];}else{var blob_shape='square';}
if(blob_shape=='circle'){co.beginPath();co.fillStyle=colors[i];co.arc(hpos+5+(blob_size/2),vpos+(5*j)+(text_size*j)-text_size+(blob_size/2),blob_size/2,0,6.26,0);co.fill();}else if(blob_shape=='line'){co.beginPath();co.strokeStyle=colors[i];co.moveTo(hpos+5,vpos+(5*j)+(text_size*j)-text_size+(blob_size/2));co.lineTo(hpos+blob_size+5,vpos+(5*j)+(text_size*j)-text_size+(blob_size/2));co.stroke();}else if(blob_shape=='triangle'){co.beginPath();co.strokeStyle=colors[i];co.moveTo(hpos+5,vpos+(5*j)+(text_size*j)-text_size+blob_size);co.lineTo(hpos+(blob_size/2)+5,vpos+(5*j)+(text_size*j)-text_size);co.lineTo(hpos+blob_size+5,vpos+(5*j)+(text_size*j)-text_size+blob_size);co.closePath();co.fillStyle=colors[i];co.fill();}else{co.fillStyle=colors[i];co.fillRect(hpos+5,vpos+(5*j)+(text_size*j)-text_size,text_size,text_size+1);}
co.beginPath();co.fillStyle=typeof text_color=='object'?text_color[i]:text_color;ret=RG.Text2(obj,{'font':text_font,'size':text_size,'x':hpos+blob_size+5+5,'y':vpos+(5*j)+(text_size*j)+3,'text':key[i]});obj.coords.key[i]=[ret.x,ret.y,ret.width,ret.height,key[i],colors[i],obj];}
co.fill();}
function DrawKey_gutter(obj,key,colors)
{var text_size=typeof(prop['chart.key.text.size'])=='number'?prop['chart.key.text.size']:prop['chart.text.size'],text_font=prop['chart.text.font'],text_color=prop['chart.key.text.color'],gutterLeft=obj.gutterLeft,gutterRight=obj.gutterRight,gutterTop=obj.gutterTop,gutterBottom=obj.gutterBottom,hpos=((ca.width-gutterLeft-gutterRight)/2)+obj.gutterLeft,vpos=gutterTop-text_size-5,title=prop['chart.title'],blob_size=text_size,hmargin=8,vmargin=4,fillstyle=prop['chart.key.background'],strokestyle='#999',length=0;if(!obj.coords)obj.coords={};obj.coords.key=[];co.font=text_size+'pt '+text_font;for(i=0;i<key.length;++i){length+=hmargin;length+=blob_size;length+=hmargin;length+=co.measureText(key[i]).width;}
length+=hmargin;if(obj.type=='pie'){if(prop['chart.align']=='left'){var hpos=obj.radius+gutterLeft;}else if(prop['chart.align']=='right'){var hpos=ca.width-obj.radius-gutterRight;}else{hpos=ca.width/2;}}
hpos-=(length/2);if(typeof(prop['chart.key.position.x'])=='number'){hpos=prop['chart.key.position.x'];}
if(typeof(prop['chart.key.position.y'])=='number'){vpos=prop['chart.key.position.y'];}
if(obj.Get('chart.key.position.gutter.boxed')){if(prop['chart.key.shadow']){co.shadowColor=prop['chart.key.shadow.color'];co.shadowBlur=prop['chart.key.shadow.blur'];co.shadowOffsetX=prop['chart.key.shadow.offsetx'];co.shadowOffsetY=prop['chart.key.shadow.offsety'];}
co.beginPath();co.fillStyle=fillstyle;co.strokeStyle=strokestyle;if(prop['chart.key.rounded']){RG.strokedCurvyRect(co,hpos,vpos-vmargin,length,text_size+vmargin+vmargin)}else{co.rect(hpos,vpos-vmargin,length,text_size+vmargin+vmargin);}
co.stroke();co.fill();RG.NoShadow(obj);}
if(prop['chart.key.colors']){colors=prop['chart.key.colors'];}
for(var i=0,pos=hpos;i<key.length;++i){pos+=hmargin;if(typeof(prop['chart.key.color.shape'])=='object'&&typeof(prop['chart.key.color.shape'][i])=='string'){var blob_shape=prop['chart.key.color.shape'][i];}else if(typeof(prop['chart.key.color.shape'])=='string'){var blob_shape=prop['chart.key.color.shape'];}else{var blob_shape='square';}
if(blob_shape=='line'){co.beginPath();co.strokeStyle=colors[i];co.moveTo(pos,vpos+(blob_size/2));co.lineTo(pos+blob_size,vpos+(blob_size/2));co.stroke();}else if(blob_shape=='circle'){co.beginPath();co.fillStyle=colors[i];co.moveTo(pos,vpos+(blob_size/2));co.arc(pos+(blob_size/2),vpos+(blob_size/2),(blob_size/2),0,6.28,0);co.fill();}else if(blob_shape=='triangle'){co.fillStyle=colors[i];co.beginPath();co.strokeStyle=colors[i];co.moveTo(pos,vpos+blob_size);co.lineTo(pos+(blob_size/2),vpos);co.lineTo(pos+blob_size,vpos+blob_size);co.closePath();co.fill();}else{co.beginPath();co.fillStyle=colors[i];co.rect(pos,vpos,blob_size,blob_size);co.fill();}
pos+=blob_size;pos+=hmargin;co.beginPath();co.fillStyle=typeof text_color=='object'?text_color[i]:text_color;;var ret=RG.Text2(obj,{'font':text_font,'size':text_size,'x':pos,'y':vpos+text_size+3,'text':key[i]});co.fill();pos+=co.measureText(key[i]).width;obj.coords.key[i]=[ret.x,ret.y,ret.width,ret.height,key[i],colors[i],obj];}}
if(keypos&&keypos=='gutter'){DrawKey_gutter(obj,key,colors);}else if(keypos&&keypos=='graph'){DrawKey_graph(obj,key,colors);}else{alert('[COMMON] ('+obj.id+') Unknown key position: '+keypos);}
if(prop['chart.key.interactive']){if(!RGraph.Drawing||!RGraph.Drawing.Rect){alert('[INTERACTIVE KEY] The drawing API Rect library does not appear to have been included (which the interactive key uses)');}
if(!RGraph.InstallWindowMousedownListener){alert('[INTERACTIVE KEY] The dynamic library does not appear to have been included');}
for(var i=0,len=obj.coords.key.length,maxlen=0;i<len;i+=1){maxlen=Math.max(maxlen,obj.coords.key[i][2]);}
obj.coords.key.forEach(function(value,index,arr)
{var rect=new RGraph.Drawing.Rect(obj.id,value[0],value[1],prop['chart.key.position']=='gutter'?value[2]:maxlen,value[3]).Set('fillstyle','rgba(0,0,0,0)').Draw();rect.onclick=function(e,shape)
{var co=rect.context;co.fillStyle=prop['chart.key.interactive.highlight.label'];co.fillRect(shape.x,shape.y,shape.width,shape.height);if(typeof obj.interactiveKeyHighlight=='function'){obj.Set('chart.key.interactive.index',index);RG.FireCustomEvent(obj,'onbeforeinteractivekey');obj.interactiveKeyHighlight(index);RG.FireCustomEvent(obj,'onafterinteractivekey');}}
rect.onmousemove=function(e,shape)
{e.target.style.cursor='pointer';}});}}
RGraph.getKeyLength=function(key)
{var len=0;for(var i=0;i<key.length;++i){if(key[i]!=null){++len;}}
return len;}
if(typeof(RGraph)=='undefined')RGraph={};RGraph.HBar=function(id,data)
{this.id=id;this.canvas=document.getElementById(typeof id==='object'?id.id:id);this.context=this.canvas.getContext?this.canvas.getContext("2d"):null;this.canvas.__object__=this;this.data=data;this.type='hbar';this.isRGraph=true;this.uid=RGraph.CreateUID();this.canvas.uid=this.canvas.uid?this.canvas.uid:RGraph.CreateUID();this.colorsParsed=false;this.coords=[];this.coords2=[];this.coordsText=[];RGraph.OldBrowserCompat(this.context);this.max=0;this.stackedOrGrouped=false;this.properties={'chart.gutter.left':75,'chart.gutter.right':25,'chart.gutter.top':25,'chart.gutter.bottom':25,'chart.background.grid':true,'chart.background.grid.color':'#ddd','chart.background.grid.width':1,'chart.background.grid.hsize':25,'chart.background.grid.vsize':25,'chart.background.barcolor1':'rgba(0,0,0,0)','chart.background.barcolor2':'rgba(0,0,0,0)','chart.background.grid.hlines':true,'chart.background.grid.vlines':true,'chart.background.grid.border':true,'chart.background.grid.autofit':true,'chart.background.grid.autofit.numhlines':14,'chart.background.grid.autofit.numvlines':20,'chart.background.grid.dashed':false,'chart.background.grid.dotted':false,'chart.linewidth':1,'chart.title':'','chart.title.background':null,'chart.title.xaxis':'','chart.title.xaxis.bold':true,'chart.title.xaxis.size':null,'chart.title.xaxis.font':null,'chart.title.yaxis':'','chart.title.yaxis.bold':true,'chart.title.yaxis.size':null,'chart.title.yaxis.font':null,'chart.title.yaxis.color':null,'chart.title.xaxis.pos':null,'chart.title.yaxis.pos':0.8,'chart.title.yaxis.x':null,'chart.title.yaxis.y':null,'chart.title.xaxis.x':null,'chart.title.xaxis.y':null,'chart.title.hpos':null,'chart.title.vpos':null,'chart.title.bold':true,'chart.title.font':null,'chart.title.x':null,'chart.title.y':null,'chart.title.halign':null,'chart.title.valign':null,'chart.text.size':10,'chart.text.color':'black','chart.text.font':'Arial','chart.colors':['Gradient(white:red)','Gradient(white:blue)','Gradient(white:green)','Gradient(white:pink)','Gradient(white:yellow)','Gradient(white:cyan)','Gradient(white:navy)','Gradient(white:gray)','Gradient(white:black)'],'chart.colors.sequential':false,'chart.xlabels.specific':null,'chart.labels':[],'chart.labels.above':false,'chart.labels.above.decimals':0,'chart.labels.above.specific':null,'chart.xlabels':true,'chart.xlabels.count':5,'chart.contextmenu':null,'chart.key':null,'chart.key.background':'white','chart.key.position':'graph','chart.key.halign':'right','chart.key.shadow':false,'chart.key.shadow.color':'#666','chart.key.shadow.blur':3,'chart.key.shadow.offsetx':2,'chart.key.shadow.offsety':2,'chart.key.position.gutter.boxed':false,'chart.key.position.x':null,'chart.key.position.y':null,'chart.key.color.shape':'square','chart.key.rounded':true,'chart.key.linewidth':1,'chart.key.colors':null,'chart.key.interactive':false,'chart.key.interactive.highlight.chart.stroke':'black','chart.key.interactive.highlight.chart.fill':'rgba(255,255,255,0.7)','chart.key.interactive.highlight.label':'rgba(255,0,0,0.2)','chart.key.text.color':'black','chart.units.pre':'','chart.units.post':'','chart.units.ingraph':false,'chart.strokestyle':'rgba(0,0,0,0)','chart.xmin':0,'chart.xmax':0,'chart.axis.color':'black','chart.shadow':false,'chart.shadow.color':'#666','chart.shadow.blur':3,'chart.shadow.offsetx':3,'chart.shadow.offsety':3,'chart.vmargin':2,'chart.vmargin.grouped':2,'chart.grouping':'grouped','chart.tooltips':null,'chart.tooltips.event':'onclick','chart.tooltips.effect':'fade','chart.tooltips.css.class':'RGraph_tooltip','chart.tooltips.highlight':true,'chart.highlight.fill':'rgba(255,255,255,0.7)','chart.highlight.stroke':'rgba(0,0,0,0)','chart.annotatable':false,'chart.annotate.color':'black','chart.zoom.factor':1.5,'chart.zoom.fade.in':true,'chart.zoom.fade.out':true,'chart.zoom.hdir':'right','chart.zoom.vdir':'down','chart.zoom.frames':25,'chart.zoom.delay':16.666,'chart.zoom.shadow':true,'chart.zoom.background':true,'chart.zoom.action':'zoom','chart.resizable':false,'chart.resize.handle.adjust':[0,0],'chart.resize.handle.background':null,'chart.scale.point':'.','chart.scale.thousand':',','chart.scale.decimals':null,'chart.noredraw':false,'chart.events.click':null,'chart.events.mousemove':null,'chart.noxaxis':false,'chart.noyaxis':false,'chart.noaxes':false,'chart.noxtickmarks':false,'chart.noytickmarks':false,'chart.numyticks':data.length,'chart.numxticks':10}
if(!this.canvas){alert('[HBAR] No canvas support');return;}
for(i=0;i<this.data.length;++i){if(typeof(this.data[i])=='object'){this.stackedOrGrouped=true;}}
var linear_data=RGraph.array_linearize(data);for(var i=0;i<linear_data.length;++i){this['$'+i]={};}
this.data_arr=RGraph.array_linearize(this.data);if(!this.canvas.__rgraph_aa_translated__){this.context.translate(0.5,0.5);this.canvas.__rgraph_aa_translated__=true;}
var RG=RGraph;var ca=this.canvas;var co=ca.getContext('2d');var prop=this.properties;this.Set=function(name,value)
{name=name.toLowerCase();if(name.substr(0,6)!='chart.'){name='chart.'+name;}
if(name=='chart.labels.abovebar'){name='chart.labels.above';}
prop[name]=value;return this;}
this.Get=function(name)
{if(name.substr(0,6)!='chart.'){name='chart.'+name;}
if(name=='chart.labels.abovebar'){name='chart.labels.above';}
return prop[name];}
this.Draw=function()
{RG.FireCustomEvent(this,'onbeforedraw');if(!this.colorsParsed){this.parseColors();this.colorsParsed=true;}
this.gutterLeft=prop['chart.gutter.left'];this.gutterRight=prop['chart.gutter.right'];this.gutterTop=prop['chart.gutter.top'];this.gutterBottom=prop['chart.gutter.bottom'];this.coords=[];this.coords2=[];this.max=0;if(prop['chart.xmin']>0&&prop['chart.grouping']=='stacked'){alert('[HBAR] Using chart.xmin is not supported with stacked charts, resetting chart.xmin to zero');this.Set('chart.xmin',0);}
this.graphwidth=ca.width-this.gutterLeft-this.gutterRight;this.graphheight=ca.height-this.gutterTop-this.gutterBottom;this.halfgrapharea=this.grapharea/2;this.halfTextHeight=prop['chart.text.size']/2;RG.background.Draw(this);this.Drawbars();this.DrawAxes();this.DrawLabels();if(prop['chart.key']&&prop['chart.key'].length){RG.DrawKey(this,prop['chart.key'],prop['chart.colors']);}
if(prop['chart.contextmenu']){RG.ShowContext(this);}
RG.DrawInGraphLabels(this);if(prop['chart.resizable']){RG.AllowResizing(this);}
RG.InstallEventListeners(this);RG.FireCustomEvent(this,'ondraw');return this;}
this.DrawAxes=function()
{var halfway=Math.round((this.graphwidth/2)+this.gutterLeft);co.beginPath();co.lineWidth=prop['chart.axis.linewidth']?prop['chart.axis.linewidth']+0.001:1.001;co.strokeStyle=prop['chart.axis.color'];if(prop['chart.noyaxis']==false&&prop['chart.noaxes']==false){if(prop['chart.yaxispos']=='center'){co.moveTo(halfway,this.gutterTop);co.lineTo(halfway,ca.height-this.gutterBottom);}else{co.moveTo(this.gutterLeft,this.gutterTop);co.lineTo(this.gutterLeft,ca.height-this.gutterBottom);}}
if(prop['chart.noxaxis']==false&&prop['chart.noaxes']==false){co.moveTo(this.gutterLeft+0.001,ca.height-this.gutterBottom+0.001);co.lineTo(ca.width-this.gutterRight+0.001,ca.height-this.gutterBottom+0.001);}
if(prop['chart.noytickmarks']==false&&prop['chart.noyaxis']==false&&prop['chart.numyticks']>0&&prop['chart.noaxes']==false){var yTickGap=(ca.height-this.gutterTop-this.gutterBottom)/(prop['chart.numyticks']>0?prop['chart.numyticks']:this.data.length);for(y=this.gutterTop;y<(ca.height-this.gutterBottom-1);y+=yTickGap){if(prop['chart.yaxispos']=='center'){co.moveTo(halfway+3,Math.round(y));co.lineTo(halfway-3,Math.round(y));}else{co.moveTo(this.gutterLeft,Math.round(y));co.lineTo(this.gutterLeft-3,Math.round(y));}}
if(prop['chart.noxaxis']==true){if(prop['chart.yaxispos']=='center'){co.moveTo(halfway+3,Math.round(y));co.lineTo(halfway-3,Math.round(y));}else{co.moveTo(this.gutterLeft,Math.round(y));co.lineTo(this.gutterLeft-3,Math.round(y));}}}
if(prop['chart.noxtickmarks']==false&&prop['chart.noxaxis']==false&&prop['chart.numxticks']>0&&prop['chart.noaxes']==false){xTickGap=(ca.width-this.gutterLeft-this.gutterRight)/prop['chart.numxticks'];yStart=ca.height-this.gutterBottom;yEnd=(ca.height-this.gutterBottom)+3;for(x=(ca.width-this.gutterRight),i=0;prop['chart.yaxispos']=='center'?x>=this.gutterLeft:x>this.gutterLeft;x-=xTickGap){if(prop['chart.yaxispos']!='center'||i!=5){co.moveTo(Math.round(x),yStart);co.lineTo(Math.round(x),yEnd);}
i++;}
if(prop['chart.noyaxis']==true){co.moveTo(this.gutterLeft,Math.round(yStart));co.lineTo(this.gutterLeft,Math.round(yEnd));}}
co.stroke();co.lineWidth=1;}
this.DrawLabels=function()
{var units_pre=prop['chart.units.pre'];var units_post=prop['chart.units.post'];var text_size=prop['chart.text.size'];var font=prop['chart.text.font'];if(prop['chart.units.ingraph']){units_pre='';units_post='';}
if(prop['chart.xlabels']){if(RGraph.is_array(prop['chart.xlabels.specific'])){if(prop['chart.yaxispos']=='center'){var halfGraphWidth=this.graphwidth/2;var labels=prop['chart.xlabels.specific'];var interval=(this.graphwidth/2)/(labels.length-1);co.fillStyle=prop['chart.text.color'];for(var i=0;i<labels.length;i+=1){RG.Text2(this,{'font':font,'size':text_size,'x':this.gutterLeft+halfGraphWidth+(interval*i),'y':ca.height-this.gutterBottom,'text':labels[i],'valign':'top','halign':'center','tag':'scale'});}
for(var i=(labels.length-1);i>0;i-=1){RG.Text2(this,{'font':font,'size':text_size,'x':this.gutterLeft+(interval*(labels.length-i-1)),'y':ca.height-this.gutterBottom,'text':labels[i],'valign':'top','halign':'center','tag':'scale'});}}else{var labels=prop['chart.xlabels.specific'];var interval=this.graphwidth/(labels.length-1);co.fillStyle=prop['chart.text.color'];for(var i=0;i<labels.length;i+=1){RG.Text2(this,{'font':font,'size':text_size,'x':this.gutterLeft+(interval*i),'y':ca.height-this.gutterBottom,'text':labels[i],'valign':'top','halign':'center','tag':'scale'});}}}else{var gap=7;co.beginPath();co.fillStyle=prop['chart.text.color'];if(prop['chart.yaxispos']=='center'){for(var i=0;i<this.scale2.labels.length;++i){RG.Text2(this,{'font':font,'size':text_size,'x':this.gutterLeft+(this.graphwidth/2)-((this.graphwidth/2)*((i+1)/this.scale2.labels.length)),'y':this.gutterTop+this.halfTextHeight+this.graphheight+gap,'text':this.scale2.labels[i],'valign':'center','halign':'center','tag':'scale'});}
for(var i=0;i<this.scale2.labels.length;++i){RG.Text2(this,{'font':font,'size':text_size,'x':this.gutterLeft+((this.graphwidth/2)*((i+1)/this.scale2.labels.length))+(this.graphwidth/2),'y':this.gutterTop+this.halfTextHeight+this.graphheight+gap,'text':this.scale2.labels[i],'valign':'center','halign':'center','tag':'scale'});}}else{for(var i=0;i<this.scale2.labels.length;++i){RG.Text2(this,{'font':font,'size':text_size,'x':this.gutterLeft+(this.graphwidth*((i+1)/this.scale2.labels.length)),'y':this.gutterTop+this.halfTextHeight+this.graphheight+gap,'text':this.scale2.labels[i],'valign':'center','halign':'center','tag':'scale'});}}
if(prop['chart.xmin']>0||prop['chart.noyaxis']==true){var x=prop['chart.yaxispos']=='center'?this.gutterLeft+(this.graphwidth/2):this.gutterLeft;RG.Text2(this,{'font':font,'size':text_size,'x':x,'y':this.gutterTop+this.halfTextHeight+this.graphheight+gap,'text':RG.number_format(this,prop['chart.xmin'].toFixed(prop['chart.scale.decimals']),units_pre,units_post),'valign':'center','halign':'center','tag':'scale'});}
co.fill();co.stroke();}}
if(typeof(prop['chart.labels'])=='object'){var xOffset=5;var font=prop['chart.text.font'];co.fillStyle=prop['chart.text.color'];var barHeight=(ca.height-this.gutterTop-this.gutterBottom)/prop['chart.labels'].length;yTickGap=(ca.height-this.gutterTop-this.gutterBottom)/prop['chart.labels'].length
var i=0;for(y=this.gutterTop+(yTickGap/2);y<=ca.height-this.gutterBottom;y+=yTickGap){RG.Text2(this,{'font':font,'size':prop['chart.text.size'],'x':this.gutterLeft-xOffset,'y':y,'text':String(prop['chart.labels'][i++]),'halign':'right','valign':'center','tag':'labels'});}}}
this.Drawbars=function()
{co.lineWidth=prop['chart.linewidth'];co.strokeStyle=prop['chart.strokestyle'];co.fillStyle=prop['chart.colors'][0];var prevX=0;var prevY=0;if(prop['chart.xmax']){this.scale2=RG.getScale2(this,{'max':prop['chart.xmax'],'min':prop['chart.xmin'],'scale.decimals':Number(prop['chart.scale.decimals']),'scale.point':prop['chart.scale.point'],'scale.thousand':prop['chart.scale.thousand'],'scale.round':prop['chart.scale.round'],'units.pre':prop['chart.units.pre'],'units.post':prop['chart.units.post'],'ylabels.count':prop['chart.xlabels.count'],'strict':true});this.max=this.scale2.max;}else{var grouping=prop['chart.grouping'];for(i=0;i<this.data.length;++i){if(typeof(this.data[i])=='object'){var value=grouping=='grouped'?Number(RG.array_max(this.data[i],true)):Number(RG.array_sum(this.data[i]));}else{var value=Number(Math.abs(this.data[i]));}
this.max=Math.max(Math.abs(this.max),Math.abs(value));}
this.scale2=RG.getScale2(this,{'max':this.max,'min':prop['chart.xmin'],'scale.decimals':Number(prop['chart.scale.decimals']),'scale.point':prop['chart.scale.point'],'scale.thousand':prop['chart.scale.thousand'],'scale.round':prop['chart.scale.round'],'units.pre':prop['chart.units.pre'],'units.post':prop['chart.units.post'],'ylabels.count':prop['chart.xlabels.count']});this.max=this.scale2.max;this.min=this.scale2.min;}
if(prop['chart.scale.decimals']==null&&Number(this.max)==1){this.Set('chart.scale.decimals',1);}
var colorIdx=0;var graphwidth=(ca.width-this.gutterLeft-this.gutterRight);var halfwidth=graphwidth/2;for(i=0;i<this.data.length;++i){var width=(this.data[i]/this.max)*graphwidth;var height=this.graphheight/this.data.length;var orig_height=height;var x=this.gutterLeft;var y=this.gutterTop+(i*height);var vmargin=prop['chart.vmargin'];if(width<0){x-=width;width=Math.abs(width);}
if(prop['chart.shadow']){co.shadowColor=prop['chart.shadow.color'];co.shadowBlur=prop['chart.shadow.blur'];co.shadowOffsetX=prop['chart.shadow.offsetx'];co.shadowOffsetY=prop['chart.shadow.offsety'];}
co.beginPath();if(typeof(this.data[i])=='number'){var barHeight=height-(2*vmargin);var barWidth=((this.data[i]-prop['chart.xmin'])/(this.max-prop['chart.xmin']))*this.graphwidth;var barX=this.gutterLeft;if(prop['chart.yaxispos']=='center'){barWidth/=2;barX+=halfwidth;if(this.data[i]<0){barWidth=(Math.abs(this.data[i])-prop['chart.xmin'])/(this.max-prop['chart.xmin']);barWidth=barWidth*(this.graphwidth/2);barX=((this.graphwidth/2)+this.gutterLeft)-barWidth;}}
co.strokeStyle=prop['chart.strokestyle'];co.fillStyle=prop['chart.colors'][0];if(prop['chart.colors.sequential']){co.fillStyle=prop['chart.colors'][colorIdx++];}
co.strokeRect(barX,this.gutterTop+(i*height)+prop['chart.vmargin'],barWidth,barHeight);co.fillRect(barX,this.gutterTop+(i*height)+prop['chart.vmargin'],barWidth,barHeight);this.coords.push([barX,y+vmargin,barWidth,height-(2*vmargin),co.fillStyle,this.data[i],true]);}else if(typeof(this.data[i])=='object'&&prop['chart.grouping']=='stacked'){if(prop['chart.yaxispos']=='center'){alert('[HBAR] You can\'t have a stacked chart with the Y axis in the center, change it to grouped');}
var barHeight=height-(2*vmargin);if(typeof this.coords2[i]=='undefined'){this.coords2[i]=[];}
for(j=0;j<this.data[i].length;++j){co.strokeStyle=prop['chart.strokestyle'];co.fillStyle=prop['chart.colors'][j];if(prop['chart.colors.sequential']){co.fillStyle=prop['chart.colors'][colorIdx++];}
var width=(((this.data[i][j])/(this.max)))*this.graphwidth;var totalWidth=(RG.array_sum(this.data[i])/this.max)*this.graphwidth;co.strokeRect(x,this.gutterTop+prop['chart.vmargin']+(this.graphheight/this.data.length)*i,width,height-(2*vmargin));co.fillRect(x,this.gutterTop+prop['chart.vmargin']+(this.graphheight/this.data.length)*i,width,height-(2*vmargin));this.coords.push([x,y+vmargin,width,height-(2*vmargin),co.fillStyle,RG.array_sum(this.data[i]),j==(this.data[i].length-1)]);this.coords2[i].push([x,y+vmargin,width,height-(2*vmargin),co.fillStyle,RG.array_sum(this.data[i]),j==(this.data[i].length-1)]);x+=width;}}else if(typeof(this.data[i])=='object'&&prop['chart.grouping']=='grouped'){var vmarginGrouped=prop['chart.vmargin.grouped'];var individualBarHeight=((height-(2*vmargin)-((this.data[i].length-1)*vmarginGrouped))/this.data[i].length)
if(typeof this.coords2[i]=='undefined'){this.coords2[i]=[];}
for(j=0;j<this.data[i].length;++j){if(prop['chart.shadow']){RG.SetShadow(this,prop['chart.shadow.color'],prop['chart.shadow.offsetx'],prop['chart.shadow.offsety'],prop['chart.shadow.blur']);}
co.strokeStyle=prop['chart.strokestyle'];co.fillStyle=prop['chart.colors'][j];if(prop['chart.colors.sequential']){co.fillStyle=prop['chart.colors'][colorIdx++];}
var startY=this.gutterTop+(height*i)+(individualBarHeight*j)+vmargin+(vmarginGrouped*j);var width=((this.data[i][j]-prop['chart.xmin'])/(this.max-prop['chart.xmin']))*(ca.width-this.gutterLeft-this.gutterRight);var startX=this.gutterLeft;if(prop['chart.yaxispos']=='center'){width/=2;startX+=halfwidth;}
if(width<0){startX+=width;width*=-1;}
co.strokeRect(startX,startY,width,individualBarHeight);co.fillRect(startX,startY,width,individualBarHeight);this.coords.push([startX,startY,width,individualBarHeight,co.fillStyle,this.data[i][j],true]);this.coords2[i].push([startX,startY,width,individualBarHeight,co.fillStyle,this.data[i][j],true]);}
startY+=vmargin;}
co.closePath();}
co.stroke();co.fill();RG.NoShadow(this);this.RedrawBars();}
this.RedrawBars=function()
{if(prop['chart.noredraw']){return;}
var coords=this.coords;var font=prop['chart.text.font'];var size=prop['chart.text.size'];var color=prop['chart.text.color'];RG.NoShadow(this);co.strokeStyle=prop['chart.strokestyle'];for(var i=0;i<coords.length;++i){if(prop['chart.shadow']){co.beginPath();co.strokeStyle=prop['chart.strokestyle'];co.fillStyle=coords[i][4];co.lineWidth=prop['chart.linewidth'];co.strokeRect(coords[i][0],coords[i][1],coords[i][2],coords[i][3]);co.fillRect(coords[i][0],coords[i][1],coords[i][2],coords[i][3]);co.fill();co.stroke();}
if(prop['chart.labels.above']&&coords[i][6]){co.fillStyle=prop['chart.text.color'];co.strokeStyle='black';RG.NoShadow(this);var border=(coords[i][0]+coords[i][2]+7+co.measureText(prop['chart.units.pre']+this.coords[i][5]+prop['chart.units.post']).width)>ca.width?true:false;var text=RG.number_format(this,(this.coords[i][5]).toFixed(prop['chart.labels.above.decimals']),prop['chart.units.pre'],prop['chart.units.post']);if(typeof prop['chart.labels.above.specific']=='object'&&prop['chart.labels.above.specific']&&prop['chart.labels.above.specific'][i]){text=prop['chart.labels.above.specific'][i];}
RG.Text2(this,{'font':font,'size':size,'x':coords[i][0]+coords[i][2]+5,'y':coords[i][1]+(coords[i][3]/2),'text':text,'valign':'center','halign':'left','tag':'labels.above'});}}}
this.getShape=this.getBar=function(e)
{var mouseCoords=RG.getMouseXY(e);for(var i=0,len=this.coords.length;i<len;i++){var mouseX=mouseCoords[0];var mouseY=mouseCoords[1];var left=this.coords[i][0];var top=this.coords[i][1];var width=this.coords[i][2];var height=this.coords[i][3];var idx=i;if(mouseX>=left&&mouseX<=(left+width)&&mouseY>=top&&mouseY<=(top+height)){var tooltip=RG.parseTooltipText(prop['chart.tooltips'],i);return{0:this,'object':this,1:left,'x':left,2:top,'y':top,3:width,'width':width,4:height,'height':height,5:idx,'index':idx,'tooltip':tooltip};}}}
this.getValue=function(arg)
{if(arg.length==2){var mouseX=arg[0];var mouseY=arg[1];}else{var mouseCoords=RG.getMouseXY(arg);var mouseX=mouseCoords[0];var mouseY=mouseCoords[1];}
if(mouseY<this.gutterTop||mouseY>(ca.height-this.gutterBottom)||mouseX<this.gutterLeft||mouseX>(ca.width-this.gutterRight)){return null;}
if(prop['chart.yaxispos']=='center'){var value=((mouseX-this.gutterLeft)/(this.graphwidth/2))*(this.max-prop['chart.xmin']);value=value-this.max
if(prop['chart.xmin']>0){value=((mouseX-this.gutterLeft-(this.graphwidth/2))/(this.graphwidth/2))*(this.max-prop['chart.xmin']);value+=prop['chart.xmin'];if(mouseX<(this.gutterLeft+(this.graphwidth/2))){value-=(2*prop['chart.xmin']);}}}else{var value=((mouseX-this.gutterLeft)/this.graphwidth)*(this.max-prop['chart.xmin']);value+=prop['chart.xmin'];}
return value;}
this.Highlight=function(shape)
{RG.Highlight.Rect(this,shape);}
this.getObjectByXY=function(e)
{var mouseXY=RG.getMouseXY(e);if(mouseXY[0]>this.gutterLeft&&mouseXY[0]<(ca.width-this.gutterRight)&&mouseXY[1]>this.gutterTop&&mouseXY[1]<(ca.height-this.gutterBottom)){return this;}}
this.positionTooltip=function(obj,x,y,tooltip,idx)
{var coordX=obj.coords[tooltip.__index__][0];var coordY=obj.coords[tooltip.__index__][1];var coordW=obj.coords[tooltip.__index__][2];var coordH=obj.coords[tooltip.__index__][3];var canvasXY=RG.getCanvasXY(obj.canvas);var gutterLeft=obj.gutterLeft;var gutterTop=obj.gutterTop;var width=tooltip.offsetWidth;var height=tooltip.offsetHeight;tooltip.style.left=0;tooltip.style.top=canvasXY[1]+coordY+(coordH/2)-height+'px';tooltip.style.overflow='';var img=new Image();img.src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAFCAYAAACjKgd3AAAARUlEQVQYV2NkQAN79+797+RkhC4M5+/bd47B2dmZEVkBCgcmgcsgbAaA9GA1BCSBbhAuA/AagmwQPgMIGgIzCD0M0AMMAEFVIAa6UQgcAAAAAElFTkSuQmCC';img.style.position='absolute';img.id='__rgraph_tooltip_pointer__';img.style.top=(tooltip.offsetHeight-2)+'px';tooltip.appendChild(img);if((canvasXY[0]+coordX+(coordW/2)-(width/2))<10){tooltip.style.left=(canvasXY[0]+coordX-(width*0.1))+(coordW/2)+'px';img.style.left=((width*0.1)-8.5)+'px';}else if((canvasXY[0]+(coordW/2)+coordX+(width/2))>document.body.offsetWidth){tooltip.style.left=canvasXY[0]+coordX-(width*0.9)+(coordW/2)+'px';img.style.left=((width*0.9)-8.5)+'px';}else{tooltip.style.left=(canvasXY[0]+coordX+(coordW/2)-(width*0.5))+'px';img.style.left=((width*0.5)-8.5)+'px';}}
this.getXCoord=function(value)
{if(prop['chart.yaxispos']=='center'){if(value>this.max||value<(-1*this.max)){return null;}
var width=(ca.width-prop['chart.gutter.left']-prop['chart.gutter.right'])/2;var coord=(((value-prop['chart.xmin'])/(this.max-prop['chart.xmin']))*width)+width;coord=prop['chart.gutter.left']+coord;}else{if(value>this.max||value<0){return null;}
var width=ca.width-prop['chart.gutter.left']-prop['chart.gutter.right'];var coord=((value-prop['chart.xmin'])/(this.max-prop['chart.xmin']))*width;coord=prop['chart.gutter.left']+coord;}
return coord;}
this.parseColors=function()
{var colors=prop['chart.colors'];for(var i=0;i<colors.length;++i){colors[i]=this.parseSingleColorForGradient(colors[i]);}
prop['chart.background.grid.color']=this.parseSingleColorForGradient(prop['chart.background.grid.color']);prop['chart.background.barcolor1']=this.parseSingleColorForGradient(prop['chart.background.barcolor1']);prop['chart.background.barcolor2']=this.parseSingleColorForGradient(prop['chart.background.barcolor2']);prop['chart.text.color']=this.parseSingleColorForGradient(prop['chart.text.color']);prop['chart.labels.colors']=this.parseSingleColorForGradient(prop['chart.labels.colors']);prop['chart.strokestyle']=this.parseSingleColorForGradient(prop['chart.strokestyle']);prop['chart.axis.color']=this.parseSingleColorForGradient(prop['chart.axis.color']);prop['chart.highlight.fill']=this.parseSingleColorForGradient(prop['chart.highlight.fill']);prop['chart.highlight.stroke']=this.parseSingleColorForGradient(prop['chart.highlight.stroke']);}
this.parseSingleColorForGradient=function(color)
{if(!color||typeof(color)!='string'){return color;}
if(color.match(/^gradient\((.*)\)$/i)){var parts=RegExp.$1.split(':');var grad=co.createLinearGradient(prop['chart.gutter.left'],0,ca.width-prop['chart.gutter.right'],0);var diff=1/(parts.length-1);grad.addColorStop(0,RG.trim(parts[0]));for(var j=1;j<parts.length;++j){grad.addColorStop(j*diff,RG.trim(parts[j]));}}
return grad?grad:color;}
this.interactiveKeyHighlight=function(index)
{var obj=this;this.coords2.forEach(function(value,idx,arr)
{var shape=obj.coords2[idx][index]
var pre_linewidth=co.lineWidth;co.lineWidth=2;co.fillStyle=prop['chart.key.interactive.highlight.chart.fill'];co.strokeStyle=prop['chart.key.interactive.highlight.chart.stroke'];co.fillRect(shape[0],shape[1],shape[2],shape[3]);co.strokeRect(shape[0],shape[1],shape[2],shape[3]);co.lineWidth=pre_linewidth;});}
RG.Register(this);}
if(typeof(RGraph)=='undefined')RGraph={};RGraph.Bar=function(id,data)
{this.id=id;this.canvas=document.getElementById(typeof id==='object'?id.id:id);this.context=this.canvas.getContext?this.canvas.getContext("2d"):null;this.canvas.__object__=this;this.type='bar';this.max=0;this.stackedOrGrouped=false;this.isRGraph=true;this.uid=RGraph.CreateUID();this.canvas.uid=this.canvas.uid?this.canvas.uid:RGraph.CreateUID();this.colorsParsed=false;RGraph.OldBrowserCompat(this.context);this.properties={'chart.background.barcolor1':'rgba(0,0,0,0)','chart.background.barcolor2':'rgba(0,0,0,0)','chart.background.grid':true,'chart.background.grid.color':'#ddd','chart.background.grid.width':1,'chart.background.grid.hsize':20,'chart.background.grid.vsize':20,'chart.background.grid.vlines':true,'chart.background.grid.hlines':true,'chart.background.grid.border':true,'chart.background.grid.autofit':true,'chart.background.grid.autofit.numhlines':5,'chart.background.grid.autofit.numvlines':20,'chart.background.grid.dashed':false,'chart.background.grid.dotted':false,'chart.background.image.stretch':true,'chart.background.image.x':null,'chart.background.image.y':null,'chart.background.image.w':null,'chart.background.image.h':null,'chart.background.image.align':null,'chart.numyticks':10,'chart.hmargin':5,'chart.hmargin.grouped':1,'chart.strokecolor':'rgba(0,0,0,0)','chart.axis.color':'black','chart.axis.linewidth':1,'chart.gutter.top':25,'chart.gutter.bottom':25,'chart.gutter.left':25,'chart.gutter.right':25,'chart.labels':null,'chart.labels.ingraph':null,'chart.labels.above':false,'chart.labels.above.decimals':0,'chart.labels.above.size':null,'chart.labels.above.color':null,'chart.labels.above.angle':null,'chart.ylabels':true,'chart.ylabels.count':5,'chart.ylabels.inside':false,'chart.xlabels.offset':0,'chart.xaxispos':'bottom','chart.yaxispos':'left','chart.text.angle':0,'chart.text.color':'black','chart.text.size':10,'chart.text.font':'Arial','chart.ymin':0,'chart.ymax':null,'chart.title':'','chart.title.font':null,'chart.title.background':null,'chart.title.hpos':null,'chart.title.vpos':null,'chart.title.bold':true,'chart.title.xaxis':'','chart.title.xaxis.bold':true,'chart.title.xaxis.size':null,'chart.title.xaxis.font':null,'chart.title.yaxis':'','chart.title.yaxis.bold':true,'chart.title.yaxis.size':null,'chart.title.yaxis.font':null,'chart.title.yaxis.color':null,'chart.title.xaxis.pos':null,'chart.title.yaxis.pos':null,'chart.title.yaxis.x':null,'chart.title.yaxis.y':null,'chart.title.xaxis.x':null,'chart.title.xaxis.y':null,'chart.title.x':null,'chart.title.y':null,'chart.title.halign':null,'chart.title.valign':null,'chart.colors':['#01B4FF','#0f0','#00f','#ff0','#0ff','#0f0'],'chart.colors.sequential':false,'chart.colors.reverse':false,'chart.grouping':'grouped','chart.variant':'bar','chart.variant.sketch.verticals':true,'chart.shadow':false,'chart.shadow.color':'#999','chart.shadow.offsetx':3,'chart.shadow.offsety':3,'chart.shadow.blur':3,'chart.tooltips':null,'chart.tooltips.effect':'fade','chart.tooltips.css.class':'RGraph_tooltip','chart.tooltips.event':'onclick','chart.tooltips.highlight':true,'chart.highlight.stroke':'rgba(0,0,0,0)','chart.highlight.fill':'rgba(255,255,255,0.7)','chart.background.hbars':null,'chart.key':null,'chart.key.background':'white','chart.key.position':'graph','chart.key.shadow':false,'chart.key.shadow.color':'#666','chart.key.shadow.blur':3,'chart.key.shadow.offsetx':2,'chart.key.shadow.offsety':2,'chart.key.position.gutter.boxed':false,'chart.key.position.x':null,'chart.key.position.y':null,'chart.key.interactive':false,'chart.key.interactive.highlight.chart.stroke':'black','chart.key.interactive.highlight.chart.fill':'rgba(255,255,255,0.7)','chart.key.interactive.highlight.label':'rgba(255,0,0,0.2)','chart.key.halign':'right','chart.key.color.shape':'square','chart.key.rounded':true,'chart.key.text.size':10,'chart.key.linewidth':1,'chart.key.colors':null,'chart.key.text.color':'black','chart.contextmenu':null,'chart.units.pre':'','chart.units.post':'','chart.scale.decimals':0,'chart.scale.point':'.','chart.scale.thousand':',','chart.crosshairs':false,'chart.crosshairs.color':'#333','chart.crosshairs.hline':true,'chart.crosshairs.vline':true,'chart.linewidth':1,'chart.annotatable':false,'chart.annotate.color':'black','chart.zoom.factor':1.5,'chart.zoom.fade.in':true,'chart.zoom.fade.out':true,'chart.zoom.hdir':'right','chart.zoom.vdir':'down','chart.zoom.frames':25,'chart.zoom.delay':16.666,'chart.zoom.shadow':true,'chart.zoom.background':true,'chart.resizable':false,'chart.resize.handle.background':null,'chart.adjustable':false,'chart.noaxes':false,'chart.noxaxis':false,'chart.noyaxis':false,'chart.events.click':null,'chart.events.mousemove':null,'chart.numxticks':null,'chart.bevel':false}
if(!this.canvas){alert('[BAR] No canvas support');return;}
for(var i=0;i<data.length;++i){if(typeof(data[i])=='object'&&!RGraph.is_null(data[i])){this.stackedOrGrouped=true;}}
var linear_data=RGraph.array_linearize(data);for(var i=0;i<linear_data.length;++i){this['$'+i]={};}
this.data=data;this.coords=[];this.coords2=[];this.coordsText=[];this.data_arr=RGraph.array_linearize(this.data);if(!this.canvas.__rgraph_aa_translated__){this.context.translate(0.5,0.5);this.canvas.__rgraph_aa_translated__=true;}
var RG=RGraph;var ca=this.canvas;var co=ca.getContext('2d');var prop=this.properties;this.Set=function(name,value)
{name=name.toLowerCase();if(name.substr(0,6)!='chart.'){name='chart.'+name;}
if(name=='chart.labels.abovebar'){name='chart.labels.above';}
if(name=='chart.strokestyle'){name='chart.strokecolor';}
if(name=='chart.xaxispos'){if(value!='bottom'&&value!='center'&&value!='top'){alert('[BAR] ('+this.id+') chart.xaxispos should be top, center or bottom. Tried to set it to: '+value+' Changing it to center');value='center';}
if(value=='top'){for(var i=0;i<this.data.length;++i){if(typeof(this.data[i])=='number'&&this.data[i]>0){alert('[BAR] The data element with index '+i+' should be negative');}}}}
if(name.toLowerCase()=='chart.linewidth'&&value==0){value=0.0001;}
prop[name]=value;return this;}
this.Get=function(name)
{if(name.substr(0,6)!='chart.'){name='chart.'+name;}
return prop[name];}
this.Draw=function()
{if(typeof(prop['chart.background.image'])=='string'){RG.DrawBackgroundImage(this);}
RG.FireCustomEvent(this,'onbeforedraw');if(!this.colorsParsed){this.parseColors();this.colorsParsed=true;}
this.gutterLeft=prop['chart.gutter.left'];this.gutterRight=prop['chart.gutter.right'];this.gutterTop=prop['chart.gutter.top'];this.gutterBottom=prop['chart.gutter.bottom'];if((prop['chart.variant']=='pyramid'||prop['chart.variant']=='dot')&&typeof(prop['chart.tooltips'])=='object'&&prop['chart.tooltips']&&prop['chart.tooltips'].length>0){alert('[BAR] ('+this.id+') Sorry, tooltips are not supported with dot or pyramid charts');}
this.coords=[];this.coords2=[];this.coordsText=[];this.max=0;this.grapharea=ca.height-this.gutterTop-this.gutterBottom;this.halfgrapharea=this.grapharea/2;this.halfTextHeight=prop['chart.text.size']/2;RG.background.Draw(this);if(prop['chart.variant']=='sketch'){this.DrawAxes();this.Drawbars();}else{this.Drawbars();this.DrawAxes();}
this.DrawLabels();if(prop['chart.bevel']||prop['chart.bevelled']){this.DrawBevel();}
if(prop['chart.key']&&prop['chart.key'].length){RG.DrawKey(this,prop['chart.key'],prop['chart.colors']);}
if(prop['chart.contextmenu']){RG.ShowContext(this);}
if(prop['chart.labels.ingraph']){RG.DrawInGraphLabels(this);}
if(prop['chart.resizable']){RG.AllowResizing(this);}
RG.InstallEventListeners(this);RG.FireCustomEvent(this,'ondraw');return this;}
this.DrawAxes=function()
{if(prop['chart.noaxes']){return;}
var xaxispos=prop['chart.xaxispos'];var yaxispos=prop['chart.yaxispos'];var isSketch=prop['chart.variant']=='sketch';co.beginPath();co.strokeStyle=prop['chart.axis.color'];co.lineWidth=prop['chart.axis.linewidth']+0.001;if(ISSAFARI==-1){co.lineCap='square';}
if(prop['chart.noyaxis']==false){if(yaxispos=='right'){co.moveTo(ca.width-this.gutterRight+(isSketch?3:0),this.gutterTop-(isSketch?3:0));co.lineTo(ca.width-this.gutterRight-(isSketch?2:0),ca.height-this.gutterBottom+(isSketch?5:0));}else{co.moveTo(this.gutterLeft-(isSketch?2:0),this.gutterTop-(isSketch?5:0));co.lineTo(this.gutterLeft-(isSketch?1:0),ca.height-this.gutterBottom+(isSketch?5:0));}}
if(prop['chart.noxaxis']==false){if(xaxispos=='center'){co.moveTo(this.gutterLeft-(isSketch?5:0),Math.round(((ca.height-this.gutterTop-this.gutterBottom)/2)+this.gutterTop+(isSketch?2:0)));co.lineTo(ca.width-this.gutterRight+(isSketch?5:0),Math.round(((ca.height-this.gutterTop-this.gutterBottom)/2)+this.gutterTop-(isSketch?2:0)));}else if(xaxispos=='top'){co.moveTo(this.gutterLeft-(isSketch?3:0),this.gutterTop-(isSketch?3:0));co.lineTo(ca.width-this.gutterRight+(isSketch?5:0),this.gutterTop+(isSketch?2:0));}else{co.moveTo(this.gutterLeft-(isSketch?5:0),ca.height-this.gutterBottom-(isSketch?2:0));co.lineTo(ca.width-this.gutterRight+(isSketch?8:0),ca.height-this.gutterBottom+(isSketch?2:0));}}
var numYTicks=prop['chart.numyticks'];if(prop['chart.noyaxis']==false&&!isSketch){var yTickGap=(ca.height-this.gutterTop-this.gutterBottom)/numYTicks;var xpos=yaxispos=='left'?this.gutterLeft:ca.width-this.gutterRight;if(this.properties['chart.numyticks']>0){for(y=this.gutterTop;xaxispos=='center'?y<=(ca.height-this.gutterBottom):y<(ca.height-this.gutterBottom+(xaxispos=='top'?1:0));y+=yTickGap){if(xaxispos=='center'&&y==(this.gutterTop+(this.grapharea/2)))continue;if(xaxispos=='top'&&y==this.gutterTop)continue;co.moveTo(xpos+(yaxispos=='left'?0:0),Math.round(y));co.lineTo(xpos+(yaxispos=='left'?-3:3),Math.round(y));}}
if(prop['chart.noxaxis']){if(xaxispos=='center'){co.moveTo(xpos+(yaxispos=='left'?-3:3),Math.round(ca.height/2));co.lineTo(xpos,Math.round(ca.height/2));}else if(xaxispos=='top'){co.moveTo(xpos+(yaxispos=='left'?-3:3),Math.round(this.gutterTop));co.lineTo(xpos,Math.round(this.gutterTop));}else{co.moveTo(xpos+(yaxispos=='left'?-3:3),Math.round(ca.height-this.gutterBottom));co.lineTo(xpos,Math.round(ca.height-this.gutterBottom));}}}
if(prop['chart.noxaxis']==false&&!isSketch){if(typeof(prop['chart.numxticks'])=='number'){var xTickGap=(ca.width-this.gutterLeft-this.gutterRight)/prop['chart.numxticks'];}else{var xTickGap=(ca.width-this.gutterLeft-this.gutterRight)/this.data.length;}
if(xaxispos=='bottom'){yStart=ca.height-this.gutterBottom;yEnd=(ca.height-this.gutterBottom)+3;}else if(xaxispos=='top'){yStart=this.gutterTop-3;yEnd=this.gutterTop;}else if(xaxispos=='center'){yStart=((ca.height-this.gutterTop-this.gutterBottom)/2)+this.gutterTop+3;yEnd=((ca.height-this.gutterTop-this.gutterBottom)/2)+this.gutterTop-3;}
yStart=yStart;yEnd=yEnd;var noEndXTick=prop['chart.noendxtick'];for(x=this.gutterLeft+(yaxispos=='left'?xTickGap:0),len=(ca.width-this.gutterRight+(yaxispos=='left'?5:0));x<len;x+=xTickGap){if(yaxispos=='left'&&!noEndXTick&&x>this.gutterLeft){co.moveTo(Math.round(x),yStart);co.lineTo(Math.round(x),yEnd);}else if(yaxispos=='left'&&noEndXTick&&x>this.gutterLeft&&x<(ca.width-this.gutterRight)){co.moveTo(Math.round(x),yStart);co.lineTo(Math.round(x),yEnd);}else if(yaxispos=='right'&&x<(ca.width-this.gutterRight)&&!noEndXTick){co.moveTo(Math.round(x),yStart);co.lineTo(Math.round(x),yEnd);}else if(yaxispos=='right'&&x<(ca.width-this.gutterRight)&&x>(this.gutterLeft)&&noEndXTick){co.moveTo(Math.round(x),yStart);co.lineTo(Math.round(x),yEnd);}}
if(prop['chart.noyaxis']||prop['chart.numxticks']==null){if(typeof(prop['chart.numxticks'])=='number'&&prop['chart.numxticks']>0){co.moveTo(Math.round(this.gutterLeft),yStart);co.lineTo(Math.round(this.gutterLeft),yEnd);}}}
if(prop['chart.noyaxis']&&prop['chart.noxaxis']==false&&prop['chart.numxticks']==null){if(xaxispos=='center'){co.moveTo(Math.round(this.gutterLeft),(ca.height/2)-3);co.lineTo(Math.round(this.gutterLeft),(ca.height/2)+3);}else{co.moveTo(Math.round(this.gutterLeft),ca.height-this.gutterBottom);co.lineTo(Math.round(this.gutterLeft),ca.height-this.gutterBottom+3);}}
co.stroke();}
this.Drawbars=function()
{var ca=this.canvas;var co=this.context;var prop=this.properties;co.lineWidth=prop['chart.linewidth'];co.strokeStyle=prop['chart.strokecolor'];co.fillStyle=prop['chart.colors'][0];var prevX=0;var prevY=0;var decimals=prop['chart.scale.decimals'];if(prop['chart.ymax']){this.scale2=RGraph.getScale2(this,{'max':prop['chart.ymax'],'strict':true,'min':prop['chart.ymin'],'scale.thousand':prop['chart.scale.thousand'],'scale.point':prop['chart.scale.point'],'scale.decimals':prop['chart.scale.decimals'],'ylabels.count':prop['chart.ylabels.count'],'scale.round':prop['chart.scale.round'],'units.pre':prop['chart.units.pre'],'units.post':prop['chart.units.post']});}else{for(i=0;i<this.data.length;++i){if(typeof(this.data[i])=='object'){var value=prop['chart.grouping']=='grouped'?Number(RGraph.array_max(this.data[i],true)):Number(RGraph.array_sum(this.data[i]));}else{var value=Number(this.data[i]);}
this.max=Math.max(Math.abs(this.max),Math.abs(value));}
this.scale2=RGraph.getScale2(this,{'max':this.max,'min':prop['chart.ymin'],'scale.thousand':prop['chart.scale.thousand'],'scale.point':prop['chart.scale.point'],'scale.decimals':prop['chart.scale.decimals'],'ylabels.count':prop['chart.ylabels.count'],'scale.round':prop['chart.scale.round'],'units.pre':prop['chart.units.pre'],'units.post':prop['chart.units.post']});this.max=this.scale2.max;}
if(prop['chart.adjustable']&&!prop['chart.ymax']){this.Set('chart.ymax',this.scale2.max);}
if(prop['chart.background.hbars']&&prop['chart.background.hbars'].length>0){RGraph.DrawBars(this);}
var variant=prop['chart.variant'];if(variant=='3d'){RG.Draw3DAxes(this);}
var xaxispos=prop['chart.xaxispos'];var width=(ca.width-this.gutterLeft-this.gutterRight)/this.data.length;var orig_height=height;var hmargin=prop['chart.hmargin'];var shadow=prop['chart.shadow'];var shadowColor=prop['chart.shadow.color'];var shadowBlur=prop['chart.shadow.blur'];var shadowOffsetX=prop['chart.shadow.offsetx'];var shadowOffsetY=prop['chart.shadow.offsety'];var strokeStyle=prop['chart.strokecolor'];var colors=prop['chart.colors'];var sequentialColorIndex=0;for(i=0,len=this.data.length;i<len;i+=1){var height=((RGraph.array_sum(this.data[i])<0?RGraph.array_sum(this.data[i])+this.scale2.min:RGraph.array_sum(this.data[i])-this.scale2.min)/(this.scale2.max-this.scale2.min))*(ca.height-this.gutterTop-this.gutterBottom);if(xaxispos=='center'){height/=2;}
var x=(i*width)+this.gutterLeft;var y=xaxispos=='center'?((ca.height-this.gutterTop-this.gutterBottom)/2)+this.gutterTop-height:ca.height-height-this.gutterBottom;if(xaxispos=='top'){y=this.gutterTop+Math.abs(height);}
if(height<0){y+=height;height=Math.abs(height);}
if(shadow){co.shadowColor=shadowColor;co.shadowBlur=shadowBlur;co.shadowOffsetX=shadowOffsetX;co.shadowOffsetY=shadowOffsetY;}
co.beginPath();if(typeof(this.data[i])=='number'){var barWidth=width-(2*hmargin);if(barWidth<0){alert('[RGRAPH] Warning: you have a negative bar width. This may be caused by the chart.hmargin being too high or the width of the canvas not being sufficient.');}
co.strokeStyle=strokeStyle;co.fillStyle=colors[0];if(prop['chart.colors.sequential']){co.fillStyle=colors[i];}
if(variant=='sketch'){co.lineCap='round';var sketchOffset=3;co.beginPath();co.strokeStyle=colors[0];if(prop['chart.colors.sequential']){co.strokeStyle=colors[i];}
co.moveTo(x+hmargin+2,y+height-2);co.lineTo(x+hmargin-1,y-4);co.moveTo(x+hmargin-3,y+-2+(this.data[i]<0?height:0));co.bezierCurveTo(x+((hmargin+width)*0.33),y+15+(this.data[i]<0?height-10:0),x+((hmargin+width)*0.66),y+5+(this.data[i]<0?height-10:0),x+hmargin+width+-1,y+0+(this.data[i]<0?height:0));co.moveTo(x+hmargin+width-5,y-5);co.lineTo(x+hmargin+width-3,y+height-3);if(prop['chart.variant.sketch.verticals']){for(var r=0.2;r<=0.8;r+=0.2){co.moveTo(x+hmargin+width+(r>0.4?-1:3)-(r*width),y-1);co.lineTo(x+hmargin+width-(r>0.4?1:-1)-(r*width),y+height+(r==0.2?1:-2));}}
co.stroke();}else if(variant=='bar'||variant=='3d'||variant=='glass'||variant=='bevel'){if(RGraph.isOld()&&shadow){this.DrawIEShadow([x+hmargin,y,barWidth,height]);}
if(variant=='glass'){RGraph.filledCurvyRect(co,x+hmargin,y,barWidth,height,3,this.data[i]>0,this.data[i]>0,this.data[i]<0,this.data[i]<0);RGraph.strokedCurvyRect(co,x+hmargin,y,barWidth,height,3,this.data[i]>0,this.data[i]>0,this.data[i]<0,this.data[i]<0);}else{co.beginPath();co.rect(x+hmargin,y,barWidth,height);co.fill();RG.NoShadow(this);co.beginPath();co.rect(x+hmargin,y,barWidth,height);co.stroke();}
if(variant=='3d'){var prevStrokeStyle=co.strokeStyle;var prevFillStyle=co.fillStyle;co.beginPath();co.moveTo(x+hmargin,y);co.lineTo(x+hmargin+10,y-5);co.lineTo(x+hmargin+10+barWidth,y-5);co.lineTo(x+hmargin+barWidth,y);co.closePath();co.stroke();co.fill();co.beginPath();co.moveTo(x+hmargin+barWidth,y);co.lineTo(x+hmargin+barWidth+10,y-5);co.lineTo(x+hmargin+barWidth+10,y+height-5);co.lineTo(x+hmargin+barWidth,y+height);co.closePath();co.stroke();co.fill();co.beginPath();co.fillStyle='rgba(255,255,255,0.3)';co.moveTo(x+hmargin,y);co.lineTo(x+hmargin+10,y-5);co.lineTo(x+hmargin+10+barWidth,y-5);co.lineTo(x+hmargin+barWidth,y);co.lineTo(x+hmargin,y);co.closePath();co.stroke();co.fill();co.beginPath();co.fillStyle='rgba(0,0,0,0.4)';co.moveTo(x+hmargin+barWidth,y);co.lineTo(x+hmargin+barWidth+10,y-5);co.lineTo(x+hmargin+barWidth+10,y-5+height);co.lineTo(x+hmargin+barWidth,y+height);co.lineTo(x+hmargin+barWidth,y);co.closePath();co.stroke();co.fill();co.strokeStyle=prevStrokeStyle;co.fillStyle=prevFillStyle;}else if(variant=='glass'){var grad=co.createLinearGradient(x+hmargin,y,x+hmargin+(barWidth/2),y);grad.addColorStop(0,'rgba(255,255,255,0.9)');grad.addColorStop(1,'rgba(255,255,255,0.5)');co.beginPath();co.fillStyle=grad;co.fillRect(x+hmargin+2,y+(this.data[i]>0?2:0),(barWidth/2)-2,height-2);co.fill();}
if(prop['chart.labels.above']){if(shadow){RGraph.NoShadow(this);}
var yPos=y-3;var xPos=x+hmargin+(barWidth/2);if(this.data[i]<0){yPos+=height+6+(prop['chart.text.size']);}
if(prop['chart.xaxispos']=='top'){yPos=this.gutterTop+height+6+(typeof(prop['chart.labels.above.size'])=='number'?prop['chart.labels.above.size']:prop['chart.text.size']-4);}
if(prop['chart.variant']=='3d'){yPos-=3;xPos+=5;}
if(this.properties['chart.labels.above.angle']){var angle=-45;var halign='left';var valign='center';}else{var angle=0;var halign='center';var valign='bottom';}
if(typeof this.properties['chart.labels.above.color']=='string'){co.fillStyle=prop['chart.labels.above.color'];}else{co.fillStyle=prop['chart.text.color'];}
RGraph.Text2(this,{'font':prop['chart.text.font'],'size':typeof(prop['chart.labels.above.size'])=='number'?prop['chart.labels.above.size']:prop['chart.text.size']-3,'x':xPos,'y':yPos,'text':RGraph.number_format(this,Number(this.data[i]).toFixed(prop['chart.labels.above.decimals']),prop['chart.units.pre'],prop['chart.units.post']),'halign':halign,'marker':false,'valign':valign,'angle':angle,'tag':'labels.above'});}}else if(variant=='dot'){co.beginPath();co.moveTo(x+(width/2),y);co.lineTo(x+(width/2),y+height);co.stroke();co.beginPath();co.fillStyle=this.properties['chart.colors'][i];co.arc(x+(width/2),y+(this.data[i]>0?0:height),2,0,6.28,0);co.fillStyle=prop['chart.colors'][0];if(prop['chart.colors.sequential']){co.fillStyle=colors[i];}
co.stroke();co.fill();}else{alert('[BAR] Warning! Unknown chart.variant: '+variant);}
this.coords.push([x+hmargin,y,width-(2*hmargin),height]);if(typeof this.coords2[i]=='undefined'){this.coords2[i]=[];}
this.coords2[i].push([x+hmargin,y,width-(2*hmargin),height]);}else if(this.data[i]&&typeof(this.data[i])=='object'&&prop['chart.grouping']=='stacked'){if(this.scale2.min){alert("[ERROR] Stacked Bar charts with a Y min are not supported");}
var barWidth=width-(2*hmargin);var redrawCoords=[];var startY=0;var dataset=this.data[i];if(barWidth<0){alert('[RGRAPH] Warning: you have a negative bar width. This may be caused by the chart.hmargin being too high or the width of the canvas not being sufficient.');}
for(j=0;j<dataset.length;++j){if(xaxispos=='center'){alert("[BAR] It's pointless having the X axis position at the center on a stacked bar chart.");return;}
if(this.data[i][j]<0){alert('[BAR] Negative values are not permitted with a stacked bar chart. Try a grouped one instead.');return;}
co.strokeStyle=strokeStyle
co.fillStyle=colors[j];if(prop['chart.colors.reverse']){co.fillStyle=colors[this.data[i].length-j-1];}
if(prop['chart.colors.sequential']&&colors[sequentialColorIndex]){co.fillStyle=colors[sequentialColorIndex++];}else if(prop['chart.colors.sequential']){co.fillStyle=colors[sequentialColorIndex-1];}
var height=(dataset[j]/this.scale2.max)*(ca.height-this.gutterTop-this.gutterBottom);if(xaxispos=='center'){height/=2;}
var totalHeight=(RGraph.array_sum(dataset)/this.scale2.max)*(ca.height-hmargin-this.gutterTop-this.gutterBottom);this.coords.push([x+hmargin,y,width-(2*hmargin),height]);if(typeof this.coords2[i]=='undefined'){this.coords2[i]=[];}
this.coords2[i].push([x+hmargin,y,width-(2*hmargin),height]);if(RGraph.isOld()&&shadow){this.DrawIEShadow([x+hmargin,y,width-(2*hmargin),height+1]);}
if(height>0){co.strokeRect(x+hmargin,y,width-(2*hmargin),height);co.fillRect(x+hmargin,y,width-(2*hmargin),height);}
if(j==0){var startY=y;var startX=x;}
if(shadow){redrawCoords.push([x+hmargin,y,width-(2*hmargin),height,co.fillStyle]);}
if(variant=='3d'){var prevFillStyle=co.fillStyle;var prevStrokeStyle=co.strokeStyle;if(j==0){co.beginPath();co.moveTo(startX+hmargin,y);co.lineTo(startX+10+hmargin,y-5);co.lineTo(startX+10+barWidth+hmargin,y-5);co.lineTo(startX+barWidth+hmargin,y);co.closePath();co.fill();co.stroke();}
co.beginPath();co.moveTo(startX+barWidth+hmargin,y);co.lineTo(startX+barWidth+hmargin+10,y-5);co.lineTo(startX+barWidth+hmargin+10,y-5+height);co.lineTo(startX+barWidth+hmargin,y+height);co.closePath();co.fill();co.stroke();if(j==0){co.fillStyle='rgba(255,255,255,0.3)';co.beginPath();co.moveTo(startX+hmargin,y);co.lineTo(startX+10+hmargin,y-5);co.lineTo(startX+10+barWidth+hmargin,y-5);co.lineTo(startX+barWidth+hmargin,y);co.closePath();co.fill();co.stroke();}
co.fillStyle='rgba(0,0,0,0.4)';co.beginPath();co.moveTo(startX+barWidth+hmargin,y);co.lineTo(startX+barWidth+hmargin+10,y-5);co.lineTo(startX+barWidth+hmargin+10,y-5+height);co.lineTo(startX+barWidth+hmargin,y+height);co.closePath();co.fill();co.stroke();co.strokeStyle=prevStrokeStyle;co.fillStyle=prevFillStyle;}
y+=height;}
if(prop['chart.labels.above']){RG.NoShadow(this);if(typeof this.properties['chart.labels.above.color']=='string'){co.fillStyle=prop['chart.labels.above.color'];}else{co.fillStyle=prop['chart.text.color'];}
if(prop['chart.labels.above.angle']){var angle=-45;var halign='left';var valign='center';}else{var angle=0;var halign='center';var valign='bottom';}
RGraph.Text2(this,{'font':prop['chart.text.font'],'size':typeof(prop['chart.labels.above.size'])=='number'?prop['chart.labels.above.size']:prop['chart.text.size']-3,'x':startX+(barWidth/2)+prop['chart.hmargin'],'y':startY-(prop['chart.shadow']&&prop['chart.shadow.offsety']<0?7:4)-(prop['chart.variant']=='3d'?5:0),'text':String(prop['chart.units.pre']+RGraph.array_sum(this.data[i]).toFixed(prop['chart.labels.above.decimals'])+prop['chart.units.post']),'angle':angle,'valign':valign,'halign':halign,'tag':'labels.above'});if(shadow){co.shadowColor=shadowColor;co.shadowBlur=shadowBlur;co.shadowOffsetX=shadowOffsetX;co.shadowOffsetY=shadowOffsetY;}}
if(shadow){RGraph.NoShadow(this);for(k=0;k<redrawCoords.length;++k){co.strokeStyle=strokeStyle;co.fillStyle=redrawCoords[k][4];co.strokeRect(redrawCoords[k][0],redrawCoords[k][1],redrawCoords[k][2],redrawCoords[k][3]);co.fillRect(redrawCoords[k][0],redrawCoords[k][1],redrawCoords[k][2],redrawCoords[k][3]);co.stroke();co.fill();}
redrawCoords=[];}}else if(this.data[i]&&typeof(this.data[i])=='object'&&prop['chart.grouping']=='grouped'){var redrawCoords=[];co.lineWidth=prop['chart.linewidth'];for(j=0;j<this.data[i].length;++j){co.strokeStyle=strokeStyle;co.fillStyle=colors[j];if(prop['chart.colors.sequential']&&colors[sequentialColorIndex]){co.fillStyle=colors[sequentialColorIndex++];}else if(prop['chart.colors.sequential']){co.fillStyle=colors[sequentialColorIndex-1];}
var individualBarWidth=(width-(2*hmargin))/this.data[i].length;var height=((this.data[i][j]+(this.data[i][j]<0?this.scale2.min:(-1*this.scale2.min)))/(this.scale2.max-this.scale2.min))*(ca.height-this.gutterTop-this.gutterBottom);var groupedMargin=prop['chart.hmargin.grouped'];var startX=x+hmargin+(j*individualBarWidth);if(individualBarWidth<0){alert('[RGRAPH] Warning: you have a negative bar width. This may be caused by the chart.hmargin being too high or the width of the canvas not being sufficient.');}
if(xaxispos=='center'){height/=2;}
if(xaxispos=='top'){var startY=this.gutterTop;var height=Math.abs(height);}else if(xaxispos=='center'){var startY=this.gutterTop+(this.grapharea/2)-height;}else{var startY=ca.height-this.gutterBottom-height;var height=Math.abs(height);}
if(RGraph.isOld()&&shadow){this.DrawIEShadow([startX,startY,individualBarWidth,height]);}
co.strokeRect(startX+groupedMargin,startY,individualBarWidth-(2*groupedMargin),height);co.fillRect(startX+groupedMargin,startY,individualBarWidth-(2*groupedMargin),height);y+=height;if(variant=='3d'){var prevFillStyle=co.fillStyle;var prevStrokeStyle=co.strokeStyle;co.beginPath();co.moveTo(startX,startY);co.lineTo(startX+10,startY-5);co.lineTo(startX+10+individualBarWidth,startY-5);co.lineTo(startX+individualBarWidth,startY);co.closePath();co.fill();co.stroke();co.beginPath();co.moveTo(startX+individualBarWidth,startY);co.lineTo(startX+individualBarWidth+10,startY-5);co.lineTo(startX+individualBarWidth+10,startY-5+height);co.lineTo(startX+individualBarWidth,startY+height);co.closePath();co.fill();co.stroke();co.fillStyle='rgba(255,255,255,0.3)';co.beginPath();co.moveTo(startX,startY);co.lineTo(startX+10,startY-5);co.lineTo(startX+10+individualBarWidth,startY-5);co.lineTo(startX+individualBarWidth,startY);co.closePath();co.fill();co.stroke();co.fillStyle='rgba(0,0,0,0.4)';co.beginPath();co.moveTo(startX+individualBarWidth,startY);co.lineTo(startX+individualBarWidth+10,startY-5);co.lineTo(startX+individualBarWidth+10,startY-5+height);co.lineTo(startX+individualBarWidth,startY+height);co.closePath();co.fill();co.stroke();co.strokeStyle=prevStrokeStyle;co.fillStyle=prevFillStyle;}
if(height<0){height=Math.abs(height);startY=startY-height;}
this.coords.push([startX+groupedMargin,startY,individualBarWidth-(2*groupedMargin),height]);if(typeof this.coords2[i]=='undefined'){this.coords2[i]=[];}
this.coords2[i].push([startX+groupedMargin,startY,individualBarWidth-(2*groupedMargin),height]);if(prop['chart.shadow']){redrawCoords.push([startX+groupedMargin,startY,individualBarWidth-(2*groupedMargin),height,co.fillStyle]);}
if(prop['chart.labels.above']){co.strokeStyle='rgba(0,0,0,0)';if(shadow){RGraph.NoShadow(this);}
var yPos=y-3;if(prop['chart.labels.above.angle']){var angle=-45;var halign='left';var valign='center';}else{var angle=0;var halign='center';var valign='bottom';if(this.data[i][j]<0||prop['chart.xaxispos']=='top'){yPos=startY+height+6;var valign='top';}else{yPos=startY;}}
if(typeof this.properties['chart.labels.above.color']=='string'){co.fillStyle=prop['chart.labels.above.color'];}else{co.fillStyle=prop['chart.text.color'];}
RGraph.Text2(this,{'font':prop['chart.text.font'],'size':typeof(prop['chart.labels.above.size'])=='number'?prop['chart.labels.above.size']:prop['chart.text.size']-3,'x':startX+(individualBarWidth/2),'y':yPos-3,'text':RGraph.number_format(this,this.data[i][j].toFixed(prop['chart.labels.above.decimals'])),'halign':halign,'valign':valign,'angle':angle,'tag':'labels.above'});if(shadow){co.shadowColor=shadowColor;co.shadowBlur=shadowBlur;co.shadowOffsetX=shadowOffsetX;co.shadowOffsetY=shadowOffsetY;}}}
if(redrawCoords.length){RGraph.NoShadow(this);co.lineWidth=prop['chart.linewidth'];co.beginPath();for(var j=0;j<redrawCoords.length;++j){co.fillStyle=redrawCoords[j][4];co.strokeStyle=prop['chart.strokecolor'];co.fillRect(redrawCoords[j][0],redrawCoords[j][1],redrawCoords[j][2],redrawCoords[j][3]);co.strokeRect(redrawCoords[j][0],redrawCoords[j][1],redrawCoords[j][2],redrawCoords[j][3]);}
co.fill();co.stroke();redrawCoords=[];}}else{this.coords.push([]);}
co.closePath();}
RGraph.NoShadow(this);}
this.DrawLabels=function()
{var ca=this.canvas;var co=this.context;var prop=this.properties;var context=co;var text_angle=prop['chart.text.angle'];var text_size=prop['chart.text.size'];var labels=prop['chart.labels'];if(prop['chart.ylabels']){if(prop['chart.xaxispos']=='top')this.Drawlabels_top();if(prop['chart.xaxispos']=='center')this.Drawlabels_center();if(prop['chart.xaxispos']=='bottom')this.Drawlabels_bottom();}
if(typeof(labels)=='object'&&labels){var yOffset=Number(prop['chart.xlabels.offset']);if(prop['chart.text.angle']!=0){var valign='center';var halign='right';var angle=0-prop['chart.text.angle'];}else{var valign='top';var halign='center';var angle=0;}
co.fillStyle=prop['chart.text.color'];var barWidth=(ca.width-this.gutterRight-this.gutterLeft)/labels.length;xTickGap=(ca.width-this.gutterRight-this.gutterLeft)/labels.length
var i=0;var font=prop['chart.text.font'];for(x=this.gutterLeft+(xTickGap/2);x<=ca.width-this.gutterRight;x+=xTickGap){RGraph.Text2(this,{'font':font,'size':text_size,'x':x,'y':prop['chart.xaxispos']=='top'?this.gutterTop-yOffset-5:(ca.height-this.gutterBottom)+yOffset+3,'text':String(labels[i++]),'valign':prop['chart.xaxispos']=='top'?'bottom':valign,'halign':halign,'tag':'label','marker':false,'angle':angle,'tag':'labels'});}}
if(prop['chart.labels.above.specific']){var labels=prop['chart.labels.above.specific'];for(var i=0;i<this.coords.length;++i){var xaxispos=prop['chart.xaxispos'];var coords=this.coords[i];var value=this.data_arr[i];var valign=(value>=0&&xaxispos!='top')?'bottom':'top';var halign='center';var text=labels[i];if(text&&text.toString().length>0){RGraph.Text2(this,{'font':prop['chart.text.font'],'size':prop['chart.labels.above.size']?prop['chart.labels.above.size']:prop['chart.text.size'],'x':coords[0]+(coords[2]/2),'y':(value>=0&&xaxispos!='top')?coords[1]-5:coords[1]+coords[3]+3,'text':String(labels[i]),'valign':valign,'halign':halign,'tag':'labels.above'});}}}}
this.Drawlabels_top=function()
{var ca=this.canvas;var co=this.context;var prop=this.properties;co.beginPath();co.fillStyle=prop['chart.text.color'];co.strokeStyle='black';if(prop['chart.xaxispos']=='top'){var context=co;var text_size=prop['chart.text.size'];var units_pre=prop['chart.units.pre'];var units_post=prop['chart.units.post'];var align=prop['chart.yaxispos']=='left'?'right':'left';var font=prop['chart.text.font'];var numYLabels=prop['chart.ylabels.count'];var ymin=prop['chart.ymin'];if(prop['chart.ylabels.inside']==true){var xpos=prop['chart.yaxispos']=='left'?this.gutterLeft+5:ca.width-this.gutterRight-5;var align=prop['chart.yaxispos']=='left'?'left':'right';var boxed=true;}else{var xpos=prop['chart.yaxispos']=='left'?this.gutterLeft-5:ca.width-this.gutterRight+5;var boxed=false;}
if(typeof(prop['chart.ylabels.specific'])=='object'&&prop['chart.ylabels.specific']){var labels=RGraph.array_reverse(prop['chart.ylabels.specific']);var grapharea=ca.height-this.gutterTop-this.gutterBottom;for(var i=0;i<labels.length;++i){var y=this.gutterTop+(grapharea*(i/labels.length))+(grapharea/labels.length);RGraph.Text2(this,{'font':font,'size':text_size,'x':xpos,'y':y,'text':String(labels[i]),'valign':'center','halign':align,'bordered':boxed,'tag':'scale'});}
return;}
var labels=this.scale2.labels;for(var i=0;i<labels.length;++i){RGraph.Text2(this,{'font':font,'size':text_size,'x':xpos,'y':this.gutterTop+((this.grapharea/labels.length)*(i+1)),'text':'-'+labels[i],'valign':'center','halign':align,'bordered':boxed,'tag':'scale'});}
if(prop['chart.ymin']!=0||prop['chart.noxaxis']){RGraph.Text2(this,{'font':font,'size':text_size,'x':xpos,'y':this.gutterTop,'text':(this.scale2.min!=0?'-':'')+RGraph.number_format(this,(this.scale2.min.toFixed((prop['chart.scale.decimals']))),units_pre,units_post),'valign':'center','halign':align,'bordered':boxed,'tag':'scale'});}}
co.fill();}
this.Drawlabels_center=function()
{var ca=this.canvas;var co=this.context;var prop=this.properties;var font=prop['chart.text.font'];var numYLabels=prop['chart.ylabels.count'];co.fillStyle=prop['chart.text.color'];if(prop['chart.xaxispos']=='center'){var text_size=prop['chart.text.size'];var units_pre=prop['chart.units.pre'];var units_post=prop['chart.units.post'];var context=co;var align='';var xpos=0;var boxed=false;var ymin=prop['chart.ymin'];co.fillStyle=prop['chart.text.color'];co.strokeStyle='black';if(prop['chart.ylabels.inside']==true){var xpos=prop['chart.yaxispos']=='left'?this.gutterLeft+5:ca.width-this.gutterRight-5;var align=prop['chart.yaxispos']=='left'?'left':'right';var boxed=true;}else{var xpos=prop['chart.yaxispos']=='left'?this.gutterLeft-5:ca.width-this.gutterRight+5;var align=prop['chart.yaxispos']=='left'?'right':'left';var boxed=false;}
if(typeof(prop['chart.ylabels.specific'])=='object'&&prop['chart.ylabels.specific']){var labels=prop['chart.ylabels.specific'];var grapharea=ca.height-this.gutterTop-this.gutterBottom;for(var i=0;i<labels.length;++i){var y=this.gutterTop+((grapharea/2)/(labels.length-1))*i;RGraph.Text2(this,{'font':font,'size':text_size,'x':xpos,'y':y,'text':String(labels[i]),'valign':'center','halign':align,'bordered':boxed,'tag':'scale'});}
for(var i=labels.length-1;i>=1;--i){var y=this.gutterTop+(grapharea*(i/((labels.length-1)*2)))+(grapharea/2);RG.Text2(this,{'font':font,'size':text_size,'x':xpos,'y':y,'text':String(labels[labels.length-i-1]),'valign':'center','halign':align,'bordered':boxed,'tag':'scale'});}
return;}
for(var i=0;i<this.scale2.labels.length;++i){var y=this.gutterTop+this.halfgrapharea-((this.halfgrapharea/numYLabels)*(i+1));var text=this.scale2.labels[i];RG.Text2(this,{'font':font,'size':text_size,'x':xpos,'y':y,'text':text,'valign':'center','halign':align,'bordered':boxed,'tag':'scale'});}
for(var i=(this.scale2.labels.length-1);i>=0;--i){var y=this.gutterTop+((this.halfgrapharea/numYLabels)*(i+1))+this.halfgrapharea;var text=this.scale2.labels[i];RG.Text2(this,{'font':font,'size':text_size,'x':xpos,'y':y,'text':'-'+text,'valign':'center','halign':align,'bordered':boxed,'tag':'scale'});}
if(this.scale2.min!=0){RG.Text2(this,{'font':font,'size':text_size,'x':xpos,'y':this.gutterTop+this.halfgrapharea,'text':RGraph.number_format(this,(this.scale2.min.toFixed((prop['chart.scale.decimals']))),units_pre,units_post),'valign':'center','valign':'center','halign':align,'bordered':boxed,'tag':'scale'});}}}
this.Drawlabels_bottom=function()
{var co=this.context;var ca=this.canvas;var prop=this.properties;var text_size=prop['chart.text.size'];var units_pre=prop['chart.units.pre'];var units_post=prop['chart.units.post'];var context=this.context;var align=prop['chart.yaxispos']=='left'?'right':'left';var font=prop['chart.text.font'];var numYLabels=prop['chart.ylabels.count'];var ymin=prop['chart.ymin'];co.beginPath();co.fillStyle=prop['chart.text.color'];co.strokeStyle='black';if(prop['chart.ylabels.inside']==true){var xpos=prop['chart.yaxispos']=='left'?this.gutterLeft+5:ca.width-this.gutterRight-5;var align=prop['chart.yaxispos']=='left'?'left':'right';var boxed=true;}else{var xpos=prop['chart.yaxispos']=='left'?this.gutterLeft-5:ca.width-this.gutterRight+5;var boxed=false;}
if(prop['chart.ylabels.specific']&&typeof(prop['chart.ylabels.specific'])=='object'){var labels=prop['chart.ylabels.specific'];var grapharea=ca.height-this.gutterTop-this.gutterBottom;for(var i=0;i<labels.length;++i){var y=this.gutterTop+(grapharea*(i/(labels.length-1)));RGraph.Text2(this,{'font':font,'size':text_size,'x':xpos,'y':y,'text':labels[i],'valign':'center','halign':align,'bordered':boxed,'tag':'scale'});}
return;}
var gutterTop=this.gutterTop;var halfTextHeight=this.halfTextHeight;var scale=this.scale;for(var i=0;i<numYLabels;++i){var text=this.scale2.labels[i];RGraph.Text2(this,{'font':font,'size':text_size,'x':xpos,'y':this.gutterTop+this.grapharea-((this.grapharea/numYLabels)*(i+1)),'text':text,'valign':'center','halign':align,'bordered':boxed,'tag':'scale'});}
if(prop['chart.ymin']!=0||prop['chart.noxaxis']){RG.Text2(this,{'font':font,'size':text_size,'x':xpos,'y':ca.height-this.gutterBottom,'text':RG.number_format(this,(this.scale2.min.toFixed((prop['chart.scale.decimals']))),units_pre,units_post),'valign':'center','halign':align,'bordered':boxed,'tag':'scale'});}
co.fill();}
this.DrawIEShadow=function(coords)
{var co=this.context;var ca=this.canvas;var prop=this.properties;var prevFillStyle=co.fillStyle;var offsetx=prop['chart.shadow.offsetx'];var offsety=prop['chart.shadow.offsety'];co.lineWidth=prop['chart.linewidth'];co.fillStyle=prop['chart.shadow.color'];co.beginPath();co.fillRect(coords[0]+offsetx,coords[1]+offsety,coords[2],coords[3]);co.fill();co.fillStyle=prevFillStyle;}
this.getShape=this.getBar=function(e)
{var obj=arguments[1]?arguments[1]:this;var mouseXY=RGraph.getMouseXY(e);var mouseX=mouseXY[0];var mouseY=mouseXY[1];var canvas=obj.canvas;var context=obj.context;var coords=obj.coords
for(var i=0,len=coords.length;i<len;i+=1){if(obj.coords[i].length==0){continue;}
var left=coords[i][0];var top=coords[i][1];var width=coords[i][2];var height=coords[i][3];var prop=obj.properties;if(mouseX>=left&&mouseX<=(left+width)&&mouseY>=top&&mouseY<=(top+height)){if(prop['chart.tooltips']){var tooltip=RGraph.parseTooltipText?RGraph.parseTooltipText(prop['chart.tooltips'],i):prop['chart.tooltips'][i];}
var dataset=0;var idx=i;while(idx>=(typeof(obj.data[dataset])=='object'&&obj.data[dataset]?obj.data[dataset].length:1)){if(typeof(obj.data[dataset])=='number'){idx-=1;}else if(obj.data[dataset]){idx-=obj.data[dataset].length;}else{idx-=1;}
dataset++;}
if(typeof(obj.data[dataset])=='number'){idx=null;}
return{0:obj,1:left,2:top,3:width,4:height,5:i,'object':obj,'x':left,'y':top,'width':width,'height':height,'index':i,'tooltip':tooltip,'index_adjusted':idx,'dataset':dataset};}}
return null;}
this.getShapeByX=function(e)
{var canvas=e.target;var mouseCoords=RGraph.getMouseXY(e);var obj=arguments[1]?arguments[1]:this;for(var i=0,len=obj.coords.length;i<len;i++){if(obj.coords[i].length==0){continue;}
var mouseX=mouseCoords[0];var mouseY=mouseCoords[1];var left=obj.coords[i][0];var top=obj.coords[i][1];var width=obj.coords[i][2];var height=obj.coords[i][3];var prop=obj.properties;if(mouseX>=left&&mouseX<=(left+width)){if(prop['chart.tooltips']){var tooltip=RGraph.parseTooltipText?RGraph.parseTooltipText(prop['chart.tooltips'],i):prop['chart.tooltips'][i];}
return{0:obj,1:left,2:top,3:width,4:height,5:i,'object':obj,'x':left,'y':top,'width':width,'height':height,'index':i,'tooltip':tooltip};}}
return null;}
this.getValue=function(arg)
{var co=this.context;var ca=this.canvas;var prop=this.properties;if(arg.length==2){var mouseX=arg[0];var mouseY=arg[1];}else{var mouseCoords=RGraph.getMouseXY(arg);var mouseX=mouseCoords[0];var mouseY=mouseCoords[1];}
if(mouseY<prop['chart.gutter.top']||mouseY>(ca.height-prop['chart.gutter.bottom'])||mouseX<prop['chart.gutter.left']||mouseX>(ca.width-prop['chart.gutter.right'])){return null;}
if(prop['chart.xaxispos']=='center'){var value=(((this.grapharea/2)-(mouseY-prop['chart.gutter.top']))/this.grapharea)*(this.scale2.max-this.scale2.min)
value*=2;if(value>=0){value+=this.scale2.min;}else{value-=this.scale2.min;}}else if(prop['chart.xaxispos']=='top'){var value=((this.grapharea-(mouseY-prop['chart.gutter.top']))/this.grapharea)*(this.scale2.max-this.scale2.min)
value=this.scale2.max-value;value=Math.abs(value)*-1;}else{var value=((this.grapharea-(mouseY-prop['chart.gutter.top']))/this.grapharea)*(this.scale2.max-this.scale2.min)
value+=this.scale2.min;}
return value;}
this.getYCoord=function(value)
{if(value>this.scale2.max){return null;}
var co=this.context;var ca=this.canvas;var prop=this.properties;var y;var xaxispos=prop['chart.xaxispos'];if(xaxispos=='top'){if(value<0){value=Math.abs(value);}
y=((value-this.scale2.min)/(this.scale2.max-this.scale2.min))*this.grapharea;y=y+this.gutterTop}else if(xaxispos=='center'){y=((value-this.scale2.min)/(this.scale2.max-this.scale2.min))*(this.grapharea/2);y=(this.grapharea/2)-y;y+=this.gutterTop;}else{if(value<this.scale2.min){value=this.scale2.min;}
y=((value-this.scale2.min)/(this.scale2.max-this.scale2.min))*this.grapharea;y=ca.height-this.gutterBottom-y;}
return y;}
this.Highlight=function(shape)
{RGraph.Highlight.Rect(this,shape);}
this.getObjectByXY=function(e)
{var ca=this.canvas;var prop=this.properties;var mouseXY=RGraph.getMouseXY(e);if(mouseXY[0]>=prop['chart.gutter.left']&&mouseXY[0]<=(ca.width-prop['chart.gutter.right'])&&mouseXY[1]>=prop['chart.gutter.top']&&mouseXY[1]<=(ca.height-prop['chart.gutter.bottom'])){return this;}}
this.Adjusting_mousemove=function(e)
{if(prop['chart.adjustable']&&RG.Registry.Get('chart.adjusting')&&RG.Registry.Get('chart.adjusting').uid==this.uid){var value=Number(this.getValue(e));var shape=this.getShapeByX(e);if(shape){RG.Registry.Set('chart.adjusting.shape',shape);if(this.stackedOrGrouped&&prop['chart.grouping']=='grouped'){var indexes=RG.sequentialIndexToGrouped(shape['index'],this.data);if(typeof this.data[indexes[0]]=='number'){this.data[indexes[0]]=Number(value);}else if(!RG.is_null(this.data[indexes[0]])){this.data[indexes[0]][indexes[1]]=Number(value);}}else if(typeof this.data[shape['index']]=='number'){this.data[shape['index']]=Number(value);}
RG.RedrawCanvas(e.target);RG.FireCustomEvent(this,'onadjust');}}}
this.positionTooltip=function(obj,x,y,tooltip,idx)
{var prop=obj.properties;var coordX=obj.coords[tooltip.__index__][0];var coordY=obj.coords[tooltip.__index__][1];var coordW=obj.coords[tooltip.__index__][2];var coordH=obj.coords[tooltip.__index__][3];var canvasXY=RGraph.getCanvasXY(obj.canvas);var gutterLeft=prop['chart.gutter.left'];var gutterTop=prop['chart.gutter.top'];var width=tooltip.offsetWidth;var height=tooltip.offsetHeight;var value=obj.data_arr[tooltip.__index__];tooltip.style.left=0;tooltip.style.top=canvasXY[1]+coordY-height-7+'px';if(value<0){tooltip.style.top=canvasXY[1]+coordY+coordH+7+'px';}
tooltip.style.overflow='';var img=new Image();img.style.position='absolute';img.id='__rgraph_tooltip_pointer__';if(value>=0){img.src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAFCAYAAACjKgd3AAAARUlEQVQYV2NkQAN79+797+RkhC4M5+/bd47B2dmZEVkBCgcmgcsgbAaA9GA1BCSBbhAuA/AagmwQPgMIGgIzCD0M0AMMAEFVIAa6UQgcAAAAAElFTkSuQmCC';img.style.top=(tooltip.offsetHeight-2)+'px';}else{img.src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAFCAMAAACkeOZkAAAAK3RFWHRDcmVhdGlvbiBUaW1lAFNhdCA2IE9jdCAyMDEyIDEyOjQ5OjMyIC0wMDAw2S1RlgAAAAd0SU1FB9wKBgszM4Ed2k4AAAAJcEhZcwAACxIAAAsSAdLdfvwAAAAEZ0FNQQAAsY8L/GEFAAAACVBMVEX/AAC9vb3//+92Pom0AAAAAXRSTlMAQObYZgAAAB1JREFUeNpjYAABRgY4YGRiRDCZYBwQE8qBMEEcAANCACqByy1sAAAAAElFTkSuQmCC';img.style.top='-5px';}
tooltip.appendChild(img);if((canvasXY[0]+coordX+(coordW/2)-(width/2))<10){tooltip.style.left=(canvasXY[0]+coordX-(width*0.1))+(coordW/2)+'px';img.style.left=((width*0.1)-8.5)+'px';}else if((canvasXY[0]+coordX+(width/2))>document.body.offsetWidth){tooltip.style.left=canvasXY[0]+coordX-(width*0.9)+(coordW/2)+'px';img.style.left=((width*0.9)-8.5)+'px';}else{tooltip.style.left=(canvasXY[0]+coordX+(coordW/2)-(width*0.5))+'px';img.style.left=((width*0.5)-8.5)+'px';}}
this.parseColors=function()
{var prop=this.properties;var colors=prop['chart.colors'];if(colors){for(var i=0;i<colors.length;++i){colors[i]=this.parseSingleColorForGradient(colors[i]);}}
var colors=prop['chart.key.colors'];if(colors){for(var i=0;i<colors.length;++i){colors[i]=this.parseSingleColorForGradient(colors[i]);}}
prop['chart.crosshairs.color']=this.parseSingleColorForGradient(prop['chart.crosshairs.color']);prop['chart.highlight.stroke']=this.parseSingleColorForGradient(prop['chart.highlight.stroke']);prop['chart.highlight.fill']=this.parseSingleColorForGradient(prop['chart.highlight.fill']);prop['chart.text.color']=this.parseSingleColorForGradient(prop['chart.text.color']);prop['chart.background.barcolor1']=this.parseSingleColorForGradient(prop['chart.background.barcolor1']);prop['chart.background.barcolor2']=this.parseSingleColorForGradient(prop['chart.background.barcolor2']);prop['chart.background.grid.color']=this.parseSingleColorForGradient(prop['chart.background.grid.color']);prop['chart.strokecolor']=this.parseSingleColorForGradient(prop['chart.strokecolor']);prop['chart.axis.color']=this.parseSingleColorForGradient(prop['chart.axis.color']);}
this.parseSingleColorForGradient=function(color)
{if(!color||typeof(color)!='string'){return color;}
if(color.match(/^gradient\((.*)\)$/i)){var parts=RegExp.$1.split(':');var grad=co.createLinearGradient(0,ca.height-prop['chart.gutter.bottom'],0,prop['chart.gutter.top']);var diff=1/(parts.length-1);grad.addColorStop(0,RG.trim(parts[0]));for(var j=1,len=parts.length;j<len;++j){grad.addColorStop(j*diff,RGraph.trim(parts[j]));}}
return grad?grad:color;}
this.DrawBevel=function()
{var coords=this.coords;var coords2=this.coords2;var prop=this.properties;var co=this.context;var ca=this.canvas;if(prop['chart.grouping']=='stacked'){for(var i=0;i<coords2.length;++i){if(coords2[i]&&coords2[i][0]&&coords2[i][0][0]){var x=coords2[i][0][0];var y=coords2[i][0][1];var w=coords2[i][0][2];var arr=[];for(var j=0;j<coords2[i].length;++j){arr.push(coords2[i][j][3]);}
var h=RGraph.array_sum(arr);co.save();co.strokeStyle='black';co.beginPath();co.rect(x,y,w,h);co.clip();co.shadowColor='black';co.shadowOffsetX=0;co.shadowOffsetY=0;co.shadowBlur=20;co.beginPath();co.rect(x-3,y-3,w+6,h+100);co.lineWidth=5;co.stroke();co.restore();}}}else{for(var i=0;i<coords.length;++i){if(coords[i]){var x=coords[i][0];var y=coords[i][1];var w=coords[i][2];var h=coords[i][3];var xaxispos=prop['chart.xaxispos'];var xaxis_ycoord=((ca.height-this.gutterTop-this.gutterBottom)/2)+this.gutterTop;co.save();co.strokeStyle='black';co.beginPath();co.rect(x,y,w,h);co.clip();co.shadowColor='black';co.shadowOffsetX=0;co.shadowOffsetY=0;co.shadowBlur=20;if(xaxispos=='top'||(xaxispos=='center'&&(y+h)>xaxis_ycoord)){y=y-100;h=h+100;}else{y=y;h=h+100;}
co.beginPath();co.rect(x-3,y-3,w+6,h+6);co.lineWidth=5;co.stroke();co.restore();}}}}
this.interactiveKeyHighlight=function(index)
{this.coords2.forEach(function(value,idx,arr)
{if(typeof value[index]=='object'&&value[index]){var x=value[index][0]
var y=value[index][1]
var w=value[index][2]
var h=value[index][3]
co.fillStyle=prop['chart.key.interactive.highlight.chart.fill'];co.strokeStyle=prop['chart.key.interactive.highlight.chart.stroke'];co.lineWidth=2;co.fillRect(x,y,w,h);co.strokeRect(x,y,w,h);}});}
RGraph.Register(this);}
RGraph.CombinedChart=function()
{this.objects=[];var objects=arguments;if(RGraph.is_array(arguments[0])){objects=arguments[0];}
for(var i=0;i<objects.length;++i){this.objects[i]=objects[i];this.objects[i].Set('chart.gutter.left',this.objects[0].Get('chart.gutter.left'));this.objects[i].Set('chart.gutter.right',this.objects[0].Get('chart.gutter.right'));this.objects[i].Set('chart.gutter.top',this.objects[0].Get('chart.gutter.top'));this.objects[i].Set('chart.gutter.bottom',this.objects[0].Get('chart.gutter.bottom'));if(this.objects[i].type=='line'){this.objects[i].Set('chart.hmargin',((this.objects[0].canvas.width-this.objects[0].Get('chart.gutter.right')-this.objects[0].Get('chart.gutter.left'))/this.objects[0].data.length)/2);this.objects[i].Set('chart.noaxes',true);this.objects[i].Set('chart.background.grid',false);this.objects[i].Set('chart.ylabels',false);}
if(this.objects[i].Get('chart.resizable')){var resizable_object=this.objects[i];}}
if(resizable_object){function myOnresizebeforedraw(obj)
{var gutterLeft=obj.Get('chart.gutter.left');var gutterRight=obj.Get('chart.gutter.right');obj.Set('chart.hmargin',(obj.canvas.width-gutterLeft-gutterRight)/(obj.original_data[0].length*2));}
RGraph.AddCustomEventListener(resizable_object,'onresizebeforedraw',myOnresizebeforedraw);}}
RGraph.CombinedChart.prototype.Add=function(obj)
{this.objects.push(obj);}
RGraph.CombinedChart.prototype.Draw=function()
{for(var i=0;i<this.objects.length;++i){if(typeof(arguments[i])=='function'){arguments[i](this.objects[i]);}else{this.objects[i].Draw();}}}
if(typeof(RGraph)=='undefined')RGraph={};RGraph.Line=function(id)
{this.id=id;this.canvas=document.getElementById(typeof id==='object'?id.id:id);this.context=this.canvas.getContext?this.canvas.getContext("2d"):null;this.canvas.__object__=this;this.type='line';this.max=0;this.coords=[];this.coords2=[];this.coords.key=[];this.coordsText=[];this.coordsSpline=[];this.hasnegativevalues=false;this.isRGraph=true;this.uid=RGraph.CreateUID();this.canvas.uid=this.canvas.uid?this.canvas.uid:RGraph.CreateUID();this.colorsParsed=false;RGraph.OldBrowserCompat(this.context);this.properties={'chart.background.barcolor1':'rgba(0,0,0,0)','chart.background.barcolor2':'rgba(0,0,0,0)','chart.background.grid':1,'chart.background.grid.width':1,'chart.background.grid.hsize':25,'chart.background.grid.vsize':25,'chart.background.grid.color':'#ddd','chart.background.grid.vlines':true,'chart.background.grid.hlines':true,'chart.background.grid.border':true,'chart.background.grid.autofit':true,'chart.background.grid.autofit.align':false,'chart.background.grid.autofit.numhlines':5,'chart.background.grid.autofit.numvlines':20,'chart.background.grid.dashed':false,'chart.background.grid.dotted':false,'chart.background.hbars':null,'chart.background.image':null,'chart.background.image.stretch':true,'chart.background.image.x':null,'chart.background.image.y':null,'chart.background.image.w':null,'chart.background.image.h':null,'chart.background.image.align':null,'chart.labels':null,'chart.labels.ingraph':null,'chart.labels.above':false,'chart.labels.above.size':8,'chart.xtickgap':20,'chart.smallxticks':3,'chart.largexticks':5,'chart.ytickgap':20,'chart.smallyticks':3,'chart.largeyticks':5,'chart.numyticks':10,'chart.linewidth':1.01,'chart.colors':['red','#0f0','#00f','#f0f','#ff0','#0ff','green','pink','blue','black'],'chart.hmargin':0,'chart.tickmarks.dot.color':'white','chart.tickmarks':null,'chart.tickmarks.linewidth':null,'chart.ticksize':3,'chart.gutter.left':25,'chart.gutter.right':25,'chart.gutter.top':25,'chart.gutter.bottom':25,'chart.tickdirection':-1,'chart.yaxispoints':5,'chart.fillstyle':null,'chart.xaxispos':'bottom','chart.yaxispos':'left','chart.xticks':null,'chart.text.size':10,'chart.text.angle':0,'chart.text.color':'black','chart.text.font':'Arial','chart.ymin':0,'chart.ymax':null,'chart.title':'','chart.title.background':null,'chart.title.hpos':null,'chart.title.vpos':null,'chart.title.bold':true,'chart.title.font':null,'chart.title.xaxis':'','chart.title.xaxis.bold':true,'chart.title.xaxis.size':null,'chart.title.xaxis.font':null,'chart.title.yaxis':'','chart.title.yaxis.bold':true,'chart.title.yaxis.size':null,'chart.title.yaxis.font':null,'chart.title.yaxis.color':null,'chart.title.xaxis.pos':null,'chart.title.yaxis.pos':null,'chart.title.yaxis.x':null,'chart.title.yaxis.y':null,'chart.title.xaxis.x':null,'chart.title.xaxis.y':null,'chart.title.x':null,'chart.title.y':null,'chart.title.halign':null,'chart.title.valign':null,'chart.shadow':false,'chart.shadow.offsetx':2,'chart.shadow.offsety':2,'chart.shadow.blur':3,'chart.shadow.color':'rgba(0,0,0,0.5)','chart.tooltips':null,'chart.tooltips.hotspot.xonly':false,'chart.tooltips.hotspot.size':5,'chart.tooltips.effect':'fade','chart.tooltips.css.class':'RGraph_tooltip','chart.tooltips.event':'onmousemove','chart.tooltips.highlight':true,'chart.tooltips.coords.page':false,'chart.highlight.stroke':'gray','chart.highlight.fill':'white','chart.stepped':false,'chart.key':null,'chart.key.background':'white','chart.key.position':'graph','chart.key.halign':null,'chart.key.shadow':false,'chart.key.shadow.color':'#666','chart.key.shadow.blur':3,'chart.key.shadow.offsetx':2,'chart.key.shadow.offsety':2,'chart.key.position.gutter.boxed':false,'chart.key.position.x':null,'chart.key.position.y':null,'chart.key.color.shape':'square','chart.key.rounded':true,'chart.key.linewidth':1,'chart.key.colors':null,'chart.key.interactive':false,'chart.key.interactive.highlight.chart.stroke':'rgba(255,0,0,0.3)','chart.key.interactive.highlight.label':'rgba(255,0,0,0.2)','chart.key.text.color':'black','chart.contextmenu':null,'chart.ylabels':true,'chart.ylabels.count':5,'chart.ylabels.inside':false,'chart.scale.invert':false,'chart.xlabels.inside':false,'chart.xlabels.inside.color':'rgba(255,255,255,0.5)','chart.noaxes':false,'chart.noyaxis':false,'chart.noxaxis':false,'chart.noendxtick':false,'chart.noendytick':false,'chart.units.post':'','chart.units.pre':'','chart.scale.decimals':null,'chart.scale.point':'.','chart.scale.thousand':',','chart.crosshairs':false,'chart.crosshairs.color':'#333','chart.crosshairs.hline':true,'chart.crosshairs.vline':true,'chart.annotatable':false,'chart.annotate.color':'black','chart.axesontop':false,'chart.filled':false,'chart.filled.range':false,'chart.filled.range.threshold':null,'chart.filled.range.threshold.colors':['red','green'],'chart.filled.accumulative':true,'chart.variant':null,'chart.axis.color':'black','chart.axis.linewidth':1,'chart.numxticks':(arguments[1]&&typeof(arguments[1][0])=='number'?arguments[1].length:20),'chart.numyticks':10,'chart.zoom.factor':1.5,'chart.zoom.fade.in':true,'chart.zoom.fade.out':true,'chart.zoom.hdir':'right','chart.zoom.vdir':'down','chart.zoom.frames':25,'chart.zoom.delay':16.666,'chart.zoom.shadow':true,'chart.zoom.background':true,'chart.zoom.action':'zoom','chart.backdrop':false,'chart.backdrop.size':30,'chart.backdrop.alpha':0.2,'chart.resizable':false,'chart.resize.handle.adjust':[0,0],'chart.resize.handle.background':null,'chart.adjustable':false,'chart.noredraw':false,'chart.outofbounds':false,'chart.chromefix':true,'chart.animation.factor':1,'chart.animation.unfold.x':false,'chart.animation.unfold.y':true,'chart.animation.unfold.initial':2,'chart.animation.trace.clip':1,'chart.curvy':false,'chart.line.visible':true,'chart.events.click':null,'chart.events.mousemove':null}
for(var i=1;i<arguments.length;++i){if(typeof(arguments[i])=='null'||!arguments[i]){arguments[i]=[];}}
this.original_data=[];for(var i=1;i<arguments.length;++i){if(arguments[1]&&typeof(arguments[1])=='object'&&arguments[1][0]&&typeof(arguments[1][0])=='object'&&arguments[1][0].length){var tmp=[];for(var i=0;i<arguments[1].length;++i){tmp[i]=RGraph.array_clone(arguments[1][i]);}
for(var j=0;j<tmp.length;++j){this.original_data[j]=RGraph.array_clone(tmp[j]);}}else{this.original_data[i-1]=RGraph.array_clone(arguments[i]);}}
if(!this.canvas){alert('[LINE] Fatal error: no canvas support');return;}
this.data_arr=RGraph.array_linearize(this.original_data);for(var i=0;i<this.data_arr.length;++i){this['$'+i]={};}
if(!this.canvas.__rgraph_aa_translated__){this.context.translate(0.5,0.5);this.canvas.__rgraph_aa_translated__=true;}
var RG=RGraph;var ca=this.canvas;var co=ca.getContext('2d');var prop=this.properties;this.Set=function(name,value)
{name=name.toLowerCase();if(name.substr(0,6)!='chart.'){name='chart.'+name;}
if(name=='chart.tooltips'&&typeof value=='object'&&value){var tooltips=[];for(var i=1;i<arguments.length;i++){if(typeof(arguments[i])=='object'&&arguments[i][0]){for(var j=0;j<arguments[i].length;j++){tooltips.push(arguments[i][j]);}}else if(typeof(arguments[i])=='function'){tooltips=arguments[i];}else{tooltips.push(arguments[i]);}}
value=tooltips;}
if(name=='chart.linewidth'&&navigator.userAgent.match(/Chrome/)){if(value==1){value=1.01;}else if(RGraph.is_array(value)){for(var i=0;i<value.length;++i){if(typeof(value[i])=='number'&&value[i]==1){value[i]=1.01;}}}}
if(name=='chart.xaxispos'){if(value!='bottom'&&value!='center'&&value!='top'){alert('[LINE] ('+this.id+') chart.xaxispos should be top, center or bottom. Tried to set it to: '+value+' Changing it to center');value='center';}}
if(name=='chart.xticks'){name='chart.numxticks';}
if(name=='chart.spline'){name='chart.curvy';}
if(name=='chart.ylabels.invert'){name='chart.scale.invert';}
this.properties[name]=value;return this;}
this.Get=function(name)
{if(name.substr(0,6)!='chart.'){name='chart.'+name;}
if(name=='chart.spline'){name='chart.curvy';}
return prop[name];}
this.Draw=function()
{if(typeof(prop['chart.background.image'])=='string'){RG.DrawBackgroundImage(this);}
RG.FireCustomEvent(this,'onbeforedraw');if(!this.colorsParsed){this.parseColors();this.colorsParsed=true;}
this.gutterLeft=prop['chart.gutter.left'];this.gutterRight=prop['chart.gutter.right'];this.gutterTop=prop['chart.gutter.top'];this.gutterBottom=prop['chart.gutter.bottom'];if(prop['chart.shadow']&&ISCHROME&&prop['chart.linewidth']<=1&&prop['chart.chromefix']&&prop['chart.shadow.blur']>0){alert('[RGRAPH WARNING] Chrome has a shadow bug, meaning you should increase the linewidth to at least 1.01');}
this.data=RG.array_clone(this.original_data);this.max=0;if(prop['chart.filled']&&!prop['chart.filled.range']&&this.data.length>1&&prop['chart.filled.accumulative']){var accumulation=[];for(var set=0;set<this.data.length;++set){for(var point=0;point<this.data[set].length;++point){this.data[set][point]=Number(accumulation[point]?accumulation[point]:0)+this.data[set][point];accumulation[point]=this.data[set][point];}}}
if(prop['chart.ymax']){this.max=prop['chart.ymax'];this.min=prop['chart.ymin']?prop['chart.ymin']:0;this.scale2=RG.getScale2(this,{'max':this.max,'min':prop['chart.ymin'],'strict':true,'scale.thousand':prop['chart.scale.thousand'],'scale.point':prop['chart.scale.point'],'scale.decimals':prop['chart.scale.decimals'],'ylabels.count':prop['chart.ylabels.count'],'scale.round':prop['chart.scale.round'],'units.pre':prop['chart.units.pre'],'units.post':prop['chart.units.post']});this.max=this.scale2.max?this.scale2.max:0;if(!prop['chart.outofbounds']){for(dataset=0;dataset<this.data.length;++dataset){for(var datapoint=0;datapoint<this.data[dataset].length;datapoint++){this.hasnegativevalues=(this.data[dataset][datapoint]<0)||this.hasnegativevalues;}}}}else{this.min=prop['chart.ymin']?prop['chart.ymin']:0;for(dataset=0;dataset<this.data.length;++dataset){for(var datapoint=0;datapoint<this.data[dataset].length;datapoint++){this.max=Math.max(this.max,this.data[dataset][datapoint]?Math.abs(parseFloat(this.data[dataset][datapoint])):0);if(!prop['chart.outofbounds']){this.hasnegativevalues=(this.data[dataset][datapoint]<0)||this.hasnegativevalues;}}}
this.scale2=RG.getScale2(this,{'max':this.max,'min':prop['chart.ymin'],'scale.thousand':prop['chart.scale.thousand'],'scale.point':prop['chart.scale.point'],'scale.decimals':prop['chart.scale.decimals'],'ylabels.count':prop['chart.ylabels.count'],'scale.round':prop['chart.scale.round'],'units.pre':prop['chart.units.pre'],'units.post':prop['chart.units.post']});this.max=this.scale2.max?this.scale2.max:0;}
if(prop['chart.contextmenu']){RG.ShowContext(this);}
this.coords=[];this.coordsText=[];this.grapharea=ca.height-this.gutterTop-this.gutterBottom;this.halfgrapharea=this.grapharea/2;this.halfTextHeight=prop['chart.text.size']/2;if(prop['chart.xaxispos']=='bottom'&&this.hasnegativevalues&&!ISOPERA){alert('[LINE] You have negative values and the X axis is at the bottom. This is not good...');}
if(prop['chart.variant']=='3d'){RG.Draw3DAxes(this);}
RG.background.Draw(this);if(prop['chart.background.hbars']&&prop['chart.background.hbars'].length>0){RG.DrawBars(this);}
if(prop['chart.axesontop']==false){this.DrawAxes();}
co.save()
co.beginPath();co.rect(0,0,ca.width*prop['chart.animation.trace.clip'],ca.height);co.clip();for(var i=0,j=0,len=this.data.length;i<len;i++,j++){co.beginPath();if(!prop['chart.filled']){this.SetShadow(i);}
if(prop['chart.fillstyle']){if(typeof(prop['chart.fillstyle'])=='object'&&prop['chart.fillstyle'][j]){var fill=prop['chart.fillstyle'][j];}else if(typeof(prop['chart.fillstyle'])=='object'&&prop['chart.fillstyle'].toString().indexOf('Gradient')>0){var fill=prop['chart.fillstyle'];}else if(typeof(prop['chart.fillstyle'])=='string'){var fill=prop['chart.fillstyle'];}}else if(prop['chart.filled']){var fill=prop['chart.colors'][j];}else{var fill=null;}
if(prop['chart.tickmarks']&&typeof(prop['chart.tickmarks'])=='object'){var tickmarks=prop['chart.tickmarks'][i];}else if(prop['chart.tickmarks']&&typeof(prop['chart.tickmarks'])=='string'){var tickmarks=prop['chart.tickmarks'];}else if(prop['chart.tickmarks']&&typeof(prop['chart.tickmarks'])=='function'){var tickmarks=prop['chart.tickmarks'];}else{var tickmarks=null;}
this.DrawLine(this.data[i],prop['chart.colors'][j],fill,this.GetLineWidth(j),tickmarks,i);co.stroke();}
if(prop['chart.filled']&&prop['chart.filled.accumulative']&&!prop['chart.curvy']){for(var i=0;i<this.coords2.length;++i){co.beginPath();co.lineWidth=this.GetLineWidth(i);co.strokeStyle=prop['chart.colors'][i];for(var j=0,len=this.coords2[i].length;j<len;++j){if(j==0||this.coords2[i][j][1]==null||(this.coords2[i][j-1]&&this.coords2[i][j-1][1]==null)){co.moveTo(this.coords2[i][j][0],this.coords2[i][j][1]);}else{if(prop['chart.stepped']){co.lineTo(this.coords2[i][j][0],this.coords2[i][j-1][1]);}
co.lineTo(this.coords2[i][j][0],this.coords2[i][j][1]);}}
co.stroke();}
if(prop['chart.tickmarks']){co.beginPath();co.fillStyle='white';for(var i=0,len=this.coords2.length;i<len;++i){co.beginPath();co.strokeStyle=prop['chart.colors'][i];for(var j=0;j<this.coords2[i].length;++j){if(typeof(this.coords2[i][j])=='object'&&typeof(this.coords2[i][j][0])=='number'&&typeof(this.coords2[i][j][1])=='number'){var tickmarks=typeof(prop['chart.tickmarks'])=='object'?prop['chart.tickmarks'][i]:prop['chart.tickmarks'];this.DrawTick(this.coords2[i],this.coords2[i][j][0],this.coords2[i][j][1],co.strokeStyle,false,j==0?0:this.coords2[i][j-1][0],j==0?0:this.coords2[i][j-1][1],tickmarks,j);}}}
co.stroke();co.fill();}}else if(prop['chart.filled']&&prop['chart.filled.accumulative']&&prop['chart.curvy']){for(var i=0;i<this.coordsSpline.length;i+=1){co.beginPath();co.strokeStyle=prop['chart.colors'][i];co.lineWidth=this.GetLineWidth(i);for(var j=0,len=this.coordsSpline[i].length;j<len;j+=1){var point=this.coordsSpline[i][j];j==0?co.moveTo(point[0],point[1]):co.lineTo(point[0],point[1]);}
co.stroke();}
for(var i=0,len=this.coords2.length;i<len;i+=1){for(var j=0,len2=this.coords2[i].length;j<len2;++j){if(typeof(this.coords2[i][j])=='object'&&typeof(this.coords2[i][j][0])=='number'&&typeof(this.coords2[i][j][1])=='number'){var tickmarks=typeof prop['chart.tickmarks']=='object'&&!RGraph.is_null(prop['chart.tickmarks'])?prop['chart.tickmarks'][i]:prop['chart.tickmarks'];co.strokeStyle=prop['chart.colors'][i];this.DrawTick(this.coords2[i],this.coords2[i][j][0],this.coords2[i][j][1],prop['chart.colors'][i],false,j==0?0:this.coords2[i][j-1][0],j==0?0:this.coords2[i][j-1][1],tickmarks,j);}}}}
co.restore();co.beginPath();if(prop['chart.axesontop']){this.DrawAxes();}
this.DrawLabels();this.DrawRange();if(prop['chart.key']&&prop['chart.key'].length&&RG.DrawKey){RG.DrawKey(this,prop['chart.key'],prop['chart.colors']);}
if(prop['chart.labels.above']){this.DrawAboveLabels();}
RG.DrawInGraphLabels(this);if(prop['chart.filled']&&prop['chart.filled.range']&&this.data.length==2){co.beginPath();var len=this.coords.length/2;co.lineWidth=prop['chart.linewidth'];co.strokeStyle=prop['chart.colors'][0];for(var i=0;i<len;++i){if(!RG.is_null(this.coords[i][1])){if(i==0){co.moveTo(this.coords[i][0],this.coords[i][1]);}else{co.lineTo(this.coords[i][0],this.coords[i][1]);}}}
co.stroke();co.beginPath();if(prop['chart.colors'][1]){co.strokeStyle=prop['chart.colors'][1];}
for(var i=this.coords.length-1;i>=len;--i){if(!RG.is_null(this.coords[i][1])){if(i==(this.coords.length-1)){co.moveTo(this.coords[i][0],this.coords[i][1]);}else{co.lineTo(this.coords[i][0],this.coords[i][1]);}}}
co.stroke();}else if(prop['chart.filled']&&prop['chart.filled.range']){alert('[LINE] You must have only two sets of data for a filled range chart');}
if(prop['chart.resizable']){RG.AllowResizing(this);}
RG.InstallEventListeners(this);RG.FireCustomEvent(this,'ondraw');return this;}
this.DrawAxes=function()
{var RG=RGraph;var ca=this.canvas;var co=this.context;var prop=this.properties;if(prop['chart.noaxes']){return;}
RG.NoShadow(this);co.lineWidth=prop['chart.axis.linewidth']+0.001;co.lineCap='butt';co.strokeStyle=prop['chart.axis.color'];co.beginPath();if(prop['chart.noxaxis']==false){if(prop['chart.xaxispos']=='center'){co.moveTo(this.gutterLeft,Math.round((this.grapharea/2)+this.gutterTop));co.lineTo(ca.width-this.gutterRight,Math.round((this.grapharea/2)+this.gutterTop));}else if(prop['chart.xaxispos']=='top'){co.moveTo(this.gutterLeft,this.gutterTop);co.lineTo(ca.width-this.gutterRight,this.gutterTop);}else{co.moveTo(this.gutterLeft,ca.height-this.gutterBottom);co.lineTo(ca.width-this.gutterRight,ca.height-this.gutterBottom);}}
if(prop['chart.noyaxis']==false){if(prop['chart.yaxispos']=='left'){co.moveTo(this.gutterLeft,this.gutterTop);co.lineTo(this.gutterLeft,ca.height-this.gutterBottom);}else{co.moveTo(ca.width-this.gutterRight,this.gutterTop);co.lineTo(ca.width-this.gutterRight,ca.height-this.gutterBottom);}}
if(prop['chart.noxaxis']==false&&prop['chart.numxticks']>0){var xTickInterval=(ca.width-this.gutterLeft-this.gutterRight)/prop['chart.numxticks'];if(!xTickInterval||xTickInterval<=0){xTickInterval=(ca.width-this.gutterLeft-this.gutterRight)/(prop['chart.labels']&&prop['chart.labels'].length?prop['chart.labels'].length-1:10);}
for(x=this.gutterLeft+(prop['chart.yaxispos']=='left'?xTickInterval:0);x<=(ca.width-this.gutterRight+1);x+=xTickInterval){if(prop['chart.yaxispos']=='right'&&x>=(ca.width-this.gutterRight-1)){break;}
if(prop['chart.noendxtick']){if(prop['chart.yaxispos']=='left'&&x>=(ca.width-this.gutterRight-1)){break;}else if(prop['chart.yaxispos']=='right'&&x==this.gutterLeft){continue;}}
var yStart=prop['chart.xaxispos']=='center'?(this.gutterTop+(this.grapharea/2))-3:ca.height-this.gutterBottom;var yEnd=prop['chart.xaxispos']=='center'?yStart+6:ca.height-this.gutterBottom-(x%60==0?prop['chart.largexticks']*prop['chart.tickdirection']:prop['chart.smallxticks']*prop['chart.tickdirection']);if(prop['chart.xaxispos']=='center'){var yStart=Math.round((this.gutterTop+(this.grapharea/2)))-3;var yEnd=yStart+6;}else if(prop['chart.xaxispos']=='bottom'){var yStart=ca.height-this.gutterBottom;var yEnd=ca.height-this.gutterBottom-(x%60==0?prop['chart.largexticks']*prop['chart.tickdirection']:prop['chart.smallxticks']*prop['chart.tickdirection']);yEnd+=0;}else if(prop['chart.xaxispos']=='top'){yStart=this.gutterTop-3;yEnd=this.gutterTop;}
co.moveTo(Math.round(x),yStart);co.lineTo(Math.round(x),yEnd);}}else if(prop['chart.noyaxis']==false&&prop['chart.numyticks']>0){if(!prop['chart.noendytick']){if(prop['chart.yaxispos']=='left'){co.moveTo(this.gutterLeft,Math.round(ca.height-this.gutterBottom));co.lineTo(this.gutterLeft-prop['chart.smallyticks'],Math.round(ca.height-this.gutterBottom));}else{co.moveTo(ca.width-this.gutterRight,Math.round(ca.height-this.gutterBottom));co.lineTo(ca.width-this.gutterRight+prop['chart.smallyticks'],Math.round(ca.height-this.gutterBottom));}}}
var numyticks=prop['chart.numyticks'];if(prop['chart.noyaxis']==false&&numyticks>0){var counter=0;var adjustment=0;if(prop['chart.yaxispos']=='right'){adjustment=(ca.width-this.gutterLeft-this.gutterRight);}
if(prop['chart.xaxispos']=='center'){var interval=(this.grapharea/numyticks);var lineto=(prop['chart.yaxispos']=='left'?this.gutterLeft:ca.width-this.gutterRight+prop['chart.smallyticks']);for(y=this.gutterTop;y<(this.grapharea/2)+this.gutterTop;y+=interval){if(y<(this.grapharea/2)+this.gutterTop){co.moveTo((prop['chart.yaxispos']=='left'?this.gutterLeft-prop['chart.smallyticks']:ca.width-this.gutterRight),Math.round(y));co.lineTo(lineto,Math.round(y));}}
for(y=this.gutterTop+(this.halfgrapharea)+interval;y<=this.grapharea+this.gutterTop;y+=interval){co.moveTo((prop['chart.yaxispos']=='left'?this.gutterLeft-prop['chart.smallyticks']:ca.width-this.gutterRight),Math.round(y));co.lineTo(lineto,Math.round(y));}}else if(prop['chart.xaxispos']=='top'){var interval=(this.grapharea/numyticks);var lineto=(prop['chart.yaxispos']=='left'?this.gutterLeft:ca.width-this.gutterRight+prop['chart.smallyticks']);for(y=this.gutterTop+interval;y<=this.grapharea+this.gutterTop;y+=interval){co.moveTo((prop['chart.yaxispos']=='left'?this.gutterLeft-prop['chart.smallyticks']:ca.width-this.gutterRight),Math.round(y));co.lineTo(lineto,Math.round(y));}
if(prop['chart.noxaxis']&&prop['chart.noendytick']==false){co.moveTo((prop['chart.yaxispos']=='left'?this.gutterLeft-prop['chart.smallyticks']:ca.width-this.gutterRight),this.gutterTop);co.lineTo(lineto,this.gutterTop);}}else{var lineto=(prop['chart.yaxispos']=='left'?this.gutterLeft-prop['chart.smallyticks']:ca.width-this.gutterRight+prop['chart.smallyticks']);for(y=this.gutterTop;y<(ca.height-this.gutterBottom)&&counter<numyticks;y+=((ca.height-this.gutterTop-this.gutterBottom)/numyticks)){co.moveTo(this.gutterLeft+adjustment,Math.round(y));co.lineTo(lineto,Math.round(y));var counter=counter+1;}}}else if(prop['chart.noxaxis']==false&&prop['chart.numxticks']>0){if(prop['chart.yaxispos']=='left'){co.moveTo(this.gutterLeft,prop['chart.xaxispos']=='top'?this.gutterTop:ca.height-this.gutterBottom);co.lineTo(this.gutterLeft,prop['chart.xaxispos']=='top'?this.gutterTop-prop['chart.smallxticks']:ca.height-this.gutterBottom+prop['chart.smallxticks']);}else{co.moveTo(ca.width-this.gutterRight,ca.height-this.gutterBottom);co.lineTo(ca.width-this.gutterRight,ca.height-this.gutterBottom+prop['chart.smallxticks']);}}
co.stroke();}
this.DrawLabels=function()
{co.strokeStyle='black';co.fillStyle=prop['chart.text.color'];co.lineWidth=1;RG.NoShadow(this);var font=prop['chart.text.font'];var text_size=prop['chart.text.size'];var decimals=prop['chart.scale.decimals'];var context=co;var canvas=ca;var ymin=prop['chart.ymin'];if(prop['chart.ylabels']&&prop['chart.ylabels.specific']==null){var units_pre=prop['chart.units.pre'];var units_post=prop['chart.units.post'];var xpos=prop['chart.yaxispos']=='left'?this.gutterLeft-5:ca.width-this.gutterRight+5;var align=prop['chart.yaxispos']=='left'?'right':'left';var numYLabels=this.scale2.labels.length;var bounding=false;var bgcolor=prop['chart.ylabels.inside']?prop['chart.ylabels.inside.color']:null;if(prop['chart.ylabels.inside']==true&&align=='left'){xpos-=10;align='right';bounding=true;}else if(prop['chart.ylabels.inside']==true&&align=='right'){xpos+=10;align='left';bounding=true;}
if(prop['chart.xaxispos']=='center'){var half=this.grapharea/2;for(var i=0;i<this.scale2.labels.length;++i){RG.Text2(this,{'font':font,'size':text_size,'x':xpos,'y':this.gutterTop+half-(((i+1)/numYLabels)*half),'valign':'center','halign':align,'bounding':bounding,'boundingFill':bgcolor,'text':this.scale2.labels[i],'tag':'scale'});}
for(var i=0;i<this.scale2.labels.length;++i){RG.Text2(this,{'font':font,'size':text_size,'x':xpos,'y':this.gutterTop+half+(((i+1)/numYLabels)*half),'valign':'center','halign':align,'bounding':bounding,'boundingFill':bgcolor,'text':'-'+this.scale2.labels[i],'tag':'scale'});}
if(prop['chart.noxaxis']==true||ymin!=0){RG.Text2(this,{'font':font,'size':text_size,'x':xpos,'y':this.gutterTop+half,'text':prop['chart.units.pre']+ymin.toFixed(decimals)+prop['chart.units.post'],'bounding':bounding,'boundingFill':bgcolor,'valign':'center','halign':align,'tag':'scale'});}}else if(prop['chart.xaxispos']=='top'){var half=this.grapharea/2;if(prop['chart.scale.invert']){for(var i=0;i<this.scale2.labels.length;++i){RG.Text2(this,{'font':font,'size':text_size,'x':xpos,'y':this.gutterTop+((i/this.scale2.labels.length)*this.grapharea),'valign':'center','halign':align,'bounding':bounding,'boundingFill':bgcolor,'text':'-'+this.scale2.labels[this.scale2.labels.length-(i+1)],'tag':'scale'});}}else{for(var i=0;i<this.scale2.labels.length;++i){RG.Text2(this,{'font':font,'size':text_size,'x':xpos,'y':this.gutterTop+(((i+1)/numYLabels)*this.grapharea),'valign':'center','halign':align,'bounding':bounding,'boundingFill':bgcolor,'text':'-'+this.scale2.labels[i],'tag':'scale'});}}
if((prop['chart.ymin']!=0||prop['chart.noxaxis'])||prop['chart.scale.invert']){RG.Text2(this,{'font':font,'size':text_size,'x':xpos,'y':prop['chart.scale.invert']?ca.height-this.gutterBottom:this.gutterTop,'text':(prop['chart.ymin']!=0?'-':'')+RG.number_format(this,prop['chart.ymin'].toFixed(decimals),units_pre,units_post),'valign':'center','halign':align,'bounding':bounding,'boundingFill':bgcolor,'tag':'scale'});}}else{if(prop['chart.scale.invert']){RG.Text2(this,{'font':font,'size':text_size,'x':xpos,'y':this.gutterTop,'valign':'center','halign':align,'bounding':bounding,'boundingFill':bgcolor,'text':RG.number_format(this,this.min.toFixed(prop['chart.scale.decimals']),units_pre,units_post),'tag':'scale'});for(var i=0,len=this.scale2.labels.length;i<len;++i){RG.Text2(this,{'font':font,'size':text_size,'x':xpos,'y':this.gutterTop+(((i+1)/this.scale2.labels.length)*this.grapharea),'valign':'center','halign':align,'bounding':bounding,'boundingFill':bgcolor,'text':this.scale2.labels[i],'tag':'scale'});}}else{for(var i=0,len=this.scale2.labels.length;i<len;++i){RG.Text2(this,{'font':font,'size':text_size,'x':xpos,'y':this.gutterTop+((i/this.scale2.labels.length)*this.grapharea),'valign':'center','halign':align,'bounding':bounding,'boundingFill':bgcolor,'text':this.scale2.labels[this.scale2.labels.length-(i+1)],'tag':'scale'});}}
if((prop['chart.ymin']!=0&&!prop['chart.scale.invert'])||prop['chart.noxaxis']){RG.Text2(this,{'font':font,'size':text_size,'x':xpos,'y':prop['chart.scale.invert']?this.gutterTop:ca.height-this.gutterBottom,'text':RG.number_format(this,prop['chart.ymin'].toFixed(prop['chart.scale.decimals']),units_pre,units_post),'valign':'center','halign':align,'bounding':bounding,'boundingFill':bgcolor,'tag':'scale'});}}
if(prop['chart.noxaxis']==true&&prop['chart.ymin']==null&&prop['chart.xaxispos']!='center'&&prop['chart.noendytick']==false){RG.Text2(this,{'font':font,'size':text_size,'x':xpos,'y':prop['chart.xaxispos']=='top'?this.gutterTop:(ca.height-this.gutterBottom),'text':prop['chart.units.pre']+(0).toFixed(prop['chart.scale.decimals'])+prop['chart.units.post'],'valign':'center','halign':align,'bounding':bounding,'boundingFill':bgcolor,'tag':'scale'});}}else if(prop['chart.ylabels']&&typeof(prop['chart.ylabels.specific'])=='object'){var gap=this.grapharea/prop['chart.ylabels.specific'].length;var halign=prop['chart.yaxispos']=='left'?'right':'left';var bounding=false;var bgcolor=null;var ymin=prop['chart.ymin']!=null&&prop['chart.ymin'];if(prop['chart.yaxispos']=='left'){var x=this.gutterLeft-5;if(prop['chart.ylabels.inside']){x+=10;halign='left';bounding=true;bgcolor='rgba(255,255,255,0.5)';}}else if(prop['chart.yaxispos']=='right'){var x=ca.width-this.gutterRight+5;if(prop['chart.ylabels.inside']){x-=10;halign='right';bounding=true;bgcolor='rgba(255,255,255,0.5)';}}
if(prop['chart.xaxispos']=='center'){for(var i=0;i<prop['chart.ylabels.specific'].length;++i){var y=this.gutterTop+(this.grapharea/(((prop['chart.ylabels.specific'].length-1))*2)*i);if(ymin&&ymin>0){var y=((this.grapharea/2)/(prop['chart.ylabels.specific'].length-(ymin?1:0)))*i;y+=this.gutterTop;}
RG.Text2(this,{'font':font,'size':text_size,'x':x,'y':y,'text':String(prop['chart.ylabels.specific'][i]),'valign':'center','halign':halign,'bounding':bounding,'boundingFill':bgcolor,'tag':'ylabels.specific'});}
var reversed_labels=RG.array_reverse(prop['chart.ylabels.specific']);for(var i=0;i<reversed_labels.length;++i){var y=(this.grapharea/2)+this.gutterTop+((this.grapharea/((reversed_labels.length-1)*2))*i);RG.Text2(this,{'font':font,'size':text_size,'x':x,'y':y,'text':i==0?'':String(reversed_labels[i]),'valign':'center','halign':halign,'bounding':bounding,'boundingFill':bgcolor,'tag':'ylabels.specific'});}}else if(prop['chart.xaxispos']=='top'){var reversed_labels=RG.array_reverse(prop['chart.ylabels.specific']);for(var i=0;i<reversed_labels.length;++i){var y=(this.grapharea/(reversed_labels.length-1))*i;y=y+this.gutterTop;RG.Text2(this,{'font':font,'size':text_size,'x':x,'y':y,'text':String(reversed_labels[i]),'valign':'center','halign':halign,'bounding':bounding,'boundingFill':bgcolor,'tag':'ylabels.specific'});}}else{for(var i=0;i<prop['chart.ylabels.specific'].length;++i){var y=this.gutterTop+((this.grapharea/(prop['chart.ylabels.specific'].length-1))*i);RG.Text2(this,{'font':font,'size':text_size,'x':x,'y':y,'text':String(prop['chart.ylabels.specific'][i]),'valign':'center','halign':halign,'bounding':bounding,'boundingFill':bgcolor,'tag':'ylabels.specific'});}}}
if(prop['chart.labels']&&prop['chart.labels'].length>0){var yOffset=5;var bordered=false;var bgcolor=null;var angle=0;var valign='top';var halign='center';if(prop['chart.xlabels.inside']){yOffset=-5;bordered=true;bgcolor=prop['chart.xlabels.inside.color'];valign='bottom';}
if(prop['chart.xaxispos']=='top'){valign='bottom';yOffset+=2;}
if(typeof(prop['chart.text.angle'])=='number'&&prop['chart.text.angle']>0){angle=-1*prop['chart.text.angle'];valign='center';halign='right';yOffset=10;if(prop['chart.xaxispos']=='top'){yOffset=10;}}
co.fillStyle=prop['chart.text.color'];var numLabels=prop['chart.labels'].length;for(i=0;i<numLabels;++i){if(prop['chart.labels'][i]){var labelX=((ca.width-this.gutterLeft-this.gutterRight-(2*prop['chart.hmargin']))/(numLabels-1))*i;labelX+=this.gutterLeft+prop['chart.hmargin'];if(prop['chart.labels'].length!=this.data[0].length){labelX=this.gutterLeft+prop['chart.hmargin']+((ca.width-this.gutterLeft-this.gutterRight-(2*prop['chart.hmargin']))*(i/(prop['chart.labels'].length-1)));}
if(!labelX){labelX=this.gutterLeft+prop['chart.hmargin'];}
if(prop['chart.xaxispos']=='top'&&prop['chart.text.angle']>0){halign='left';}
if(prop['chart.text.angle']!=0){halign='right';}
RG.Text2(this,{'font':font,'size':text_size,'x':labelX,'y':(prop['chart.xaxispos']=='top')?this.gutterTop-yOffset-(prop['chart.xlabels.inside']?-22:0):(ca.height-this.gutterBottom)+yOffset,'text':String(prop['chart.labels'][i]),'valign':valign,'halign':halign,'bounding':bordered,'boundingFill':bgcolor,'angle':angle,'tag':'labels'});}}}
co.stroke();co.fill();}
this.DrawLine=function(lineData,color,fill,linewidth,tickmarks,index)
{var ca=this.canvas;var co=this.context;var prop=this.properties;if(prop['chart.animation.unfold.y']&&prop['chart.animation.factor']!=1){for(var i=0;i<lineData.length;++i){lineData[i]*=prop['chart.animation.factor'];}}
var penUp=false;var yPos=null;var xPos=0;co.lineWidth=1;var lineCoords=[];if(index>0){var prevLineCoords=this.coords2[index-1];}
var xInterval=(ca.width-(2*prop['chart.hmargin'])-this.gutterLeft-this.gutterRight)/(lineData.length-1);for(i=0;i<lineData.length;i++){var data_point=lineData[i];var yPos=this.getYCoord(data_point);if(lineData[i]==null||(prop['chart.xaxispos']=='bottom'&&lineData[i]<this.min&&!prop['chart.outofbounds'])||(prop['chart.xaxispos']=='center'&&lineData[i]<(-1*this.max)&&!prop['chart.outofbounds'])){yPos=null;}
co.lineCap='round';co.lineJoin='round';if(i>0){xPos=xPos+xInterval;}else{xPos=prop['chart.hmargin']+this.gutterLeft;}
if(prop['chart.animation.unfold.x']){xPos*=prop['chart.animation.factor'];if(xPos<prop['chart.gutter.left']){xPos=prop['chart.gutter.left'];}}
this.coords.push([xPos,yPos]);lineCoords.push([xPos,yPos]);}
co.stroke();this.coords2[index]=lineCoords;if(ISOLD&&prop['chart.shadow']){this.DrawIEShadow(lineCoords,co.shadowColor);}
co.beginPath();co.strokeStyle='rgba(0,0,0,0)';if(fill){co.fillStyle=fill;}
var isStepped=prop['chart.stepped'];var isFilled=prop['chart.filled'];if(prop['chart.xaxispos']=='top'){var xAxisPos=this.gutterTop;}else if(prop['chart.xaxispos']=='center'){var xAxisPos=this.gutterTop+(this.grapharea/2);}else if(prop['chart.xaxispos']=='bottom'){var xAxisPos=ca.height-this.gutterBottom;}
for(var i=0;i<lineCoords.length;++i){xPos=lineCoords[i][0];yPos=lineCoords[i][1];var set=index;var prevY=(lineCoords[i-1]?lineCoords[i-1][1]:null);var isLast=(i+1)==lineCoords.length;if(prevY<this.gutterTop||prevY>(ca.height-this.gutterBottom)){penUp=true;}
if(i==0||penUp||!yPos||!prevY||prevY<this.gutterTop){if(prop['chart.filled']&&!prop['chart.filled.range']){co.moveTo(xPos+1,xAxisPos);if(prop['chart.xaxispos']=='top'){co.moveTo(xPos+1,xAxisPos);}
co.lineTo(xPos,yPos);}else{if(ISOLD&&yPos==null){}else{co.moveTo(xPos+1,yPos);}}
if(yPos==null){penUp=true;}else{penUp=false;}}else{if(isStepped){co.lineTo(xPos,lineCoords[i-1][1]);}
if((yPos>=this.gutterTop&&yPos<=(ca.height-this.gutterBottom))||prop['chart.outofbounds']){if(isLast&&prop['chart.filled']&&!prop['chart.filled.range']&&prop['chart.yaxispos']=='right'){xPos-=1;}
if(!isStepped||!isLast){co.lineTo(xPos,yPos);if(isFilled&&lineCoords[i+1]&&lineCoords[i+1][1]==null){co.lineTo(xPos,xAxisPos);}}else if(isStepped&&isLast){co.lineTo(xPos,yPos);}
penUp=false;}else{penUp=true;}}}
if(prop['chart.filled']&&!prop['chart.filled.range']&&!prop['chart.curvy']){var fillStyle=prop['chart.fillstyle'];if(index>0&&prop['chart.filled.accumulative']){co.lineTo(xPos,prevLineCoords?prevLineCoords[i-1][1]:(ca.height-this.gutterBottom-1+(prop['chart.xaxispos']=='center'?(ca.height-this.gutterTop-this.gutterBottom)/2:0)));for(var k=(i-1);k>=0;--k){co.lineTo(k==0?prevLineCoords[k][0]+1:prevLineCoords[k][0],prevLineCoords[k][1]);}}else{if(prop['chart.xaxispos']=='top'){co.lineTo(xPos,prop['chart.gutter.top']+1);co.lineTo(lineCoords[0][0],prop['chart.gutter.top']+1);}else if(typeof(lineCoords[i-1][1])=='number'){var yPosition=prop['chart.xaxispos']=='center'?((ca.height-this.gutterTop-this.gutterBottom)/2)+this.gutterTop:ca.height-this.gutterBottom;co.lineTo(xPos,yPosition);co.lineTo(lineCoords[0][0],yPosition);}}
co.fillStyle=fill;co.fill();co.beginPath();}
if(ISCHROME&&prop['chart.shadow']&&prop['chart.chromefix']&&prop['chart.shadow.blur']>0){for(var i=lineCoords.length-1;i>=0;--i){if(typeof(lineCoords[i][1])!='number'||(typeof(lineCoords[i+1])=='object'&&typeof(lineCoords[i+1][1])!='number')){co.moveTo(lineCoords[i][0],lineCoords[i][1]);}else{co.lineTo(lineCoords[i][0],lineCoords[i][1]);}}}
co.stroke();if(prop['chart.backdrop']){this.DrawBackdrop(lineCoords,color);}
co.save();co.beginPath();co.rect(0,0,ca.width*prop['chart.animation.trace.clip'],ca.height);co.clip();this.SetShadow(index);this.RedrawLine(lineCoords,color,linewidth,index);co.stroke();RG.NoShadow(this);for(var i=0;i<lineCoords.length;++i){i=Number(i);co.strokeStyle=color;if(isStepped&&i==(lineCoords.length-1)){co.beginPath();}
if((tickmarks!='endcircle'&&tickmarks!='endsquare'&&tickmarks!='filledendsquare'&&tickmarks!='endtick'&&tickmarks!='endtriangle'&&tickmarks!='arrow'&&tickmarks!='filledarrow')||(i==0&&tickmarks!='arrow'&&tickmarks!='filledarrow')||i==(lineCoords.length-1)){var prevX=(i<=0?null:lineCoords[i-1][0]);var prevY=(i<=0?null:lineCoords[i-1][1]);this.DrawTick(lineData,lineCoords[i][0],lineCoords[i][1],color,false,prevX,prevY,tickmarks,i);}}
co.restore();co.beginPath();co.arc(ca.width+50000,ca.height+50000,2,0,6.38,1);}
this.DrawTick=function(lineData,xPos,yPos,color,isShadow,prevX,prevY,tickmarks,index)
{if(!prop['chart.line.visible']){return;}else if(RG.is_null(yPos)){return;}else if((yPos>(ca.height-this.gutterBottom))&&!prop['chart.outofbounds']){return;}else if((yPos<this.gutterTop)&&!prop['chart.outofbounds']){return;}
co.beginPath();var offset=0;co.lineWidth=prop['chart.tickmarks.linewidth']?prop['chart.tickmarks.linewidth']:prop['chart.linewidth'];co.strokeStyle=isShadow?prop['chart.shadow.color']:co.strokeStyle;co.fillStyle=isShadow?prop['chart.shadow.color']:co.strokeStyle;if(tickmarks=='circle'||tickmarks=='filledcircle'||tickmarks=='endcircle'){if(tickmarks=='circle'||tickmarks=='filledcircle'||(tickmarks=='endcircle'&&(index==0||index==(lineData.length-1)))){co.beginPath();co.arc(xPos+offset,yPos+offset,prop['chart.ticksize'],0,360/(180/PI),false);if(tickmarks=='filledcircle'){co.fillStyle=isShadow?prop['chart.shadow.color']:co.strokeStyle;}else{co.fillStyle=isShadow?prop['chart.shadow.color']:'white';}
co.stroke();co.fill();}}else if(tickmarks=='halftick'){co.beginPath();co.moveTo(Math.round(xPos),yPos);co.lineTo(Math.round(xPos),yPos+prop['chart.ticksize']);co.stroke();}else if(tickmarks=='tick'){co.beginPath();co.moveTo(Math.round(xPos),yPos-prop['chart.ticksize']);co.lineTo(Math.round(xPos),yPos+prop['chart.ticksize']);co.stroke();}else if(tickmarks=='endtick'&&(index==0||index==(lineData.length-1))){co.beginPath();co.moveTo(Math.round(xPos),yPos-prop['chart.ticksize']);co.lineTo(Math.round(xPos),yPos+prop['chart.ticksize']);co.stroke();}else if(tickmarks=='cross'){co.beginPath();var ticksize=prop['chart.ticksize'];co.moveTo(xPos-ticksize,yPos-ticksize);co.lineTo(xPos+ticksize,yPos+ticksize);co.moveTo(xPos+ticksize,yPos-ticksize);co.lineTo(xPos-ticksize,yPos+ticksize);co.stroke();}else if(tickmarks=='triangle'||tickmarks=='filledtriangle'||(tickmarks=='endtriangle'&&(index==0||index==(lineData.length-1)))){co.beginPath();if(tickmarks=='filledtriangle'){co.fillStyle=isShadow?prop['chart.shadow.color']:co.strokeStyle;}else{co.fillStyle='white';}
co.moveTo(Math.round(xPos-prop['chart.ticksize']),yPos+prop['chart.ticksize']);co.lineTo(Math.round(xPos),yPos-prop['chart.ticksize']);co.lineTo(Math.round(xPos+prop['chart.ticksize']),yPos+prop['chart.ticksize']);co.closePath();co.stroke();co.fill();}else if(tickmarks=='borderedcircle'||tickmarks=='dot'){co.lineWidth=1;co.strokeStyle=prop['chart.tickmarks.dot.color'];co.fillStyle=prop['chart.tickmarks.dot.color'];co.beginPath();co.arc(xPos,yPos,prop['chart.ticksize'],0,360/(180/PI),false);co.closePath();co.fill();co.stroke();co.beginPath();co.fillStyle=color;co.strokeStyle=color;co.arc(xPos,yPos,prop['chart.ticksize']-2,0,360/(180/PI),false);co.closePath();co.fill();co.stroke();}else if(tickmarks=='square'||tickmarks=='filledsquare'||(tickmarks=='endsquare'&&(index==0||index==(lineData.length-1)))||(tickmarks=='filledendsquare'&&(index==0||index==(lineData.length-1)))){co.fillStyle='white';co.strokeStyle=co.strokeStyle;co.beginPath();co.rect(Math.round(xPos-prop['chart.ticksize']),Math.round(yPos-prop['chart.ticksize']),prop['chart.ticksize']*2,prop['chart.ticksize']*2);if(tickmarks=='filledsquare'||tickmarks=='filledendsquare'){co.fillStyle=isShadow?prop['chart.shadow.color']:co.strokeStyle;co.rect(Math.round(xPos-prop['chart.ticksize']),Math.round(yPos-prop['chart.ticksize']),prop['chart.ticksize']*2,prop['chart.ticksize']*2);}else if(tickmarks=='square'||tickmarks=='endsquare'){co.fillStyle=isShadow?prop['chart.shadow.color']:'white';co.rect(Math.round((xPos-prop['chart.ticksize'])+1),Math.round((yPos-prop['chart.ticksize'])+1),(prop['chart.ticksize']*2)-2,(prop['chart.ticksize']*2)-2);}
co.stroke();co.fill();}else if(tickmarks=='filledarrow'){var x=Math.abs(xPos-prevX);var y=Math.abs(yPos-prevY);if(yPos<prevY){var a=Math.atan(x/y)+1.57;}else{var a=Math.atan(y/x)+3.14;}
co.beginPath();co.moveTo(Math.round(xPos),Math.round(yPos));co.arc(Math.round(xPos),Math.round(yPos),7,a-0.5,a+0.5,false);co.closePath();co.stroke();co.fill();}else if(tickmarks=='arrow'){var orig_linewidth=co.lineWidth;var x=Math.abs(xPos-prevX);var y=Math.abs(yPos-prevY);co.lineWidth;if(yPos<prevY){var a=Math.atan(x/y)+1.57;}else{var a=Math.atan(y/x)+3.14;}
co.beginPath();co.moveTo(Math.round(xPos),Math.round(yPos));co.arc(Math.round(xPos),Math.round(yPos),7,a-0.5-(document.all?0.1:0.01),a-0.4,false);co.moveTo(Math.round(xPos),Math.round(yPos));co.arc(Math.round(xPos),Math.round(yPos),7,a+0.5+(document.all?0.1:0.01),a+0.5,true);co.stroke();co.fill();co.lineWidth=orig_linewidth;}else if(typeof(tickmarks)=='function'){tickmarks(this,lineData,lineData[index],index,xPos,yPos,color,prevX,prevY);}}
this.DrawRange=function()
{var RG=RGraph;var ca=this.canvas;var co=this.context;var prop=this.properties;if(prop['chart.filled.range']&&prop['chart.filled']&&prop['chart.line.visible']){if(RG.is_null(prop['chart.filled.range.threshold'])){prop['chart.filled.range.threshold']=this.ymin
prop['chart.filled.range.threshold.colors']=[prop['chart.fillstyle'],prop['chart.fillstyle']]}
for(var idx=0;idx<2;++idx){var threshold_colors=prop['chart.filled.range.threshold.colors'];var y=this.getYCoord(prop['chart.filled.range.threshold'])
co.save();if(idx==0){co.beginPath();co.rect(0,0,ca.width,y);co.clip();}else{co.beginPath();co.rect(0,y,ca.width,ca.height);co.clip();}
co.beginPath();co.fillStyle=(idx==1?prop['chart.filled.range.threshold.colors'][1]:prop['chart.filled.range.threshold.colors'][0]);co.lineWidth=1;var len=(this.coords.length/2);for(var i=0;i<len;++i){if(!RG.is_null(this.coords[i][1])){if(i==0){co.moveTo(this.coords[i][0],this.coords[i][1])}else{co.lineTo(this.coords[i][0],this.coords[i][1])}}}
for(var i=this.coords.length-1;i>=len;--i){if(RG.is_null(this.coords[i][1])){co.moveTo(this.coords[i][0],this.coords[i][1])}else{co.lineTo(this.coords[i][0],this.coords[i][1])}}
co.fill();co.restore();}}}
this.RedrawLine=function(coords,color,linewidth,index)
{var ca=this.canvas;var co=this.context;var prop=this.properties;if(prop['chart.noredraw']||prop['chart.filled.range']){return;}
co.strokeStyle=(typeof(color)=='object'&&color&&color.toString().indexOf('CanvasGradient')==-1?color[0]:color);co.lineWidth=linewidth;if(!prop['chart.line.visible']){co.strokeStyle='rgba(0,0,0,0)';}
if(!ISOLD&&(prop['chart.curvy']||prop['chart.spline'])){this.DrawCurvyLine(coords,!prop['chart.line.visible']?'rgba(0,0,0,0)':color,linewidth,index);return;}
co.beginPath();var len=coords.length;var width=ca.width
var height=ca.height;var penUp=false;for(var i=0;i<len;++i){var xPos=coords[i][0];var yPos=coords[i][1];if(i>0){var prevX=coords[i-1][0];var prevY=coords[i-1][1];}
if(((i==0&&coords[i])||(yPos<this.gutterTop)||(prevY<this.gutterTop)||(yPos>(height-this.gutterBottom))||(i>0&&prevX>(width-this.gutterRight))||(i>0&&prevY>(height-this.gutterBottom))||prevY==null||penUp==true)&&(!prop['chart.outofbounds']||yPos==null||prevY==null)){if(ISOLD&&yPos==null){}else{co.moveTo(coords[i][0],coords[i][1]);}
penUp=false;}else{if(prop['chart.stepped']&&i>0){co.lineTo(coords[i][0],coords[i-1][1]);}
co.lineTo(coords[i][0],coords[i][1]);penUp=false;}}
if(prop['chart.colors.alternate']&&typeof(color)=='object'&&color[0]&&color[1]){for(var i=1;i<len;++i){var prevX=coords[i-1][0];var prevY=coords[i-1][1];if(prevY!=null&&coords[i][1]!=null){co.beginPath();co.strokeStyle=color[coords[i][1]<prevY?0:1];co.lineWidth=prop['chart.linewidth'];co.moveTo(prevX,prevY);co.lineTo(coords[i][0],coords[i][1]);co.stroke();}}}}
this.DrawIEShadow=function(coords,color)
{var ca=this.canvas;var co=this.context;var prop=this.properties;var offsetx=prop['chart.shadow.offsetx'];var offsety=prop['chart.shadow.offsety'];co.lineWidth=prop['chart.linewidth'];co.strokeStyle=color;co.beginPath();for(var i=0;i<coords.length;++i){if(i==0){co.moveTo(coords[i][0]+offsetx,coords[i][1]+offsety);}else{co.lineTo(coords[i][0]+offsetx,coords[i][1]+offsety);}}
co.stroke();}
this.DrawBackdrop=function(coords,color)
{var ca=this.canvas;var co=this.context;var prop=this.properties;var size=prop['chart.backdrop.size'];co.lineWidth=size;co.globalAlpha=prop['chart.backdrop.alpha'];co.strokeStyle=color;var yCoords=[];co.beginPath();if(prop['chart.curvy']&&!ISOLD){for(var i=0;i<coords.length;++i){yCoords.push(coords[i][1])}
this.DrawSpline(co,yCoords,color,null);}else{co.moveTo(coords[0][0],coords[0][1]);for(var j=1;j<coords.length;++j){co.lineTo(coords[j][0],coords[j][1]);}}
co.stroke();co.globalAlpha=1;RG.NoShadow(this);}
this.GetLineWidth=function(i)
{var linewidth=prop['chart.linewidth'];if(typeof(linewidth)=='number'){return linewidth;}else if(typeof(linewidth)=='object'){if(linewidth[i]){return linewidth[i];}else{return linewidth[0];}
alert('[LINE] Error! chart.linewidth should be a single number or an array of one or more numbers');}}
this.getShape=this.getPoint=function(e)
{var obj=this;var RG=RGraph;var ca=canvas=e.target;var co=context=this.context;var prop=this.properties;var mouseXY=RG.getMouseXY(e);var mouseX=mouseXY[0];var mouseY=mouseXY[1];if(arguments[1]){obj=arguments[1];}
for(var i=0;i<obj.coords.length;++i){var x=obj.coords[i][0];var y=obj.coords[i][1];if(mouseX<=(x+prop['chart.tooltips.hotspot.size'])&&mouseX>=(x-prop['chart.tooltips.hotspot.size'])&&mouseY<=(y+prop['chart.tooltips.hotspot.size'])&&mouseY>=(y-prop['chart.tooltips.hotspot.size'])){if(RG.parseTooltipText){var tooltip=RG.parseTooltipText(prop['chart.tooltips'],i);}
var dataset=0;var idx=i;while((idx+1)>this.data[dataset].length){idx-=this.data[dataset].length;dataset++;}
return{0:obj,1:x,2:y,3:i,'object':obj,'x':x,'y':y,'index':i,'tooltip':tooltip,'dataset':dataset,'index_adjusted':idx};}else if(prop['chart.tooltips.hotspot.xonly']==true&&mouseX<=(x+prop['chart.tooltips.hotspot.size'])&&mouseX>=(x-prop['chart.tooltips.hotspot.size'])){var tooltip=RG.parseTooltipText(prop['chart.tooltips'],i);return{0:obj,1:x,2:y,3:i,'object':obj,'x':x,'y':y,'index':i,'tooltip':tooltip};}}}
this.DrawAboveLabels=function()
{var RG=RGraph;var ca=this.canvas;var co=this.context;var prop=this.properties;var context=co;var size=prop['chart.labels.above.size'];var font=prop['chart.text.font'];var units_pre=prop['chart.units.pre'];var units_post=prop['chart.units.post'];co.beginPath();for(var i=0,len=this.coords.length;i<len;++i){var coords=this.coords[i];RG.Text2(this,{'font':font,'size':size,'x':coords[0],'y':coords[1]-5-size,'text':RG.number_format(this,this.data_arr[i],units_pre,units_post),'valign':'center','halign':'center','bounding':true,'boundingFill':'white','tag':'labels.above'});}
co.fill();}
this.DrawCurvyLine=function(coords,color,linewidth,index)
{var ca=this.canvas;var co=this.context;var prop=this.properties;if(ISOLD){return;}
var yCoords=[];for(var i=0;i<coords.length;++i){yCoords.push(coords[i][1])}
if(prop['chart.filled']){co.beginPath();co.moveTo(coords[0][0],ca.height-this.gutterBottom);this.DrawSpline(co,yCoords,color,index);if(prop['chart.filled.accumulative']&&index>0){for(var i=(this.coordsSpline[index-1].length-1);i>=0;i-=1){co.lineTo(this.coordsSpline[index-1][i][0],this.coordsSpline[index-1][i][1]);}}else{co.lineTo(coords[coords.length-1][0],ca.height-this.gutterBottom);}
co.fill();}
co.beginPath();this.DrawSpline(co,yCoords,color,index);co.stroke();}
this.getValue=function(arg)
{if(arg.length==2){var mouseX=arg[0];var mouseY=arg[1];}else{var mouseCoords=RG.getMouseXY(arg);var mouseX=mouseCoords[0];var mouseY=mouseCoords[1];}
var obj=this;var xaxispos=prop['chart.xaxispos'];if(mouseY<prop['chart.gutter.top']){return xaxispos=='bottom'||xaxispos=='center'?this.max:this.min;}else if(mouseY>(ca.height-prop['chart.gutter.bottom'])){return xaxispos=='bottom'?this.min:this.max;}
if(prop['chart.xaxispos']=='center'){var value=(((obj.grapharea/2)-(mouseY-prop['chart.gutter.top']))/obj.grapharea)*(obj.max-obj.min);value*=2;value>0?value+=this.min:value-=this.min;return value;}else if(prop['chart.xaxispos']=='top'){var value=((obj.grapharea-(mouseY-prop['chart.gutter.top']))/obj.grapharea)*(obj.max-obj.min);value=Math.abs(obj.max-value)*-1;return value;}else{var value=((obj.grapharea-(mouseY-prop['chart.gutter.top']))/obj.grapharea)*(obj.max-obj.min)
value+=obj.min;return value;}}
this.Highlight=function(shape)
{if(prop['chart.tooltips.highlight']){RG.Highlight.Point(this,shape);}}
this.getObjectByXY=function(e)
{var ca=this.canvas;var prop=this.properties;var mouseXY=RG.getMouseXY(e);if((mouseXY[0]>prop['chart.gutter.left']-5)&&mouseXY[0]<(ca.width-prop['chart.gutter.right']+5)&&mouseXY[1]>(prop['chart.gutter.top']-5)&&mouseXY[1]<(ca.height-prop['chart.gutter.bottom']+5)){return this;}}
this.Adjusting_mousemove=function(e)
{if(prop['chart.adjustable']&&RG.Registry.Get('chart.adjusting')&&RG.Registry.Get('chart.adjusting').uid==this.uid){var value=Number(this.getValue(e));var shape=RG.Registry.Get('chart.adjusting.shape');if(shape){RG.Registry.Set('chart.adjusting.shape',shape);this.original_data[shape['dataset']][shape['index_adjusted']]=Number(value);RG.RedrawCanvas(e.target);RG.FireCustomEvent(this,'onadjust');}}}
this.getYCoord=function(value)
{var ca=this.canvas;var co=this.context;var prop=this.properties;if(typeof(value)!='number'){return null;}
var y;var xaxispos=prop['chart.xaxispos'];if(xaxispos=='top'){if(value<0){value=Math.abs(value);}
y=((value-this.min)/(this.max-this.min))*this.grapharea;if(prop['chart.scale.invert']){y=this.grapharea-y;}
y=y+this.gutterTop}else if(xaxispos=='center'){y=((value-this.min)/(this.max-this.min))*(this.grapharea/2);y=(this.grapharea/2)-y;y+=this.gutterTop;}else{if((value<this.min||value>this.max)&&prop['chart.outofbounds']==false){return null;}
y=((value-this.min)/(this.max-this.min))*this.grapharea;if(prop['chart.scale.invert']){y=this.grapharea-y;}
y=ca.height-this.gutterBottom-y;}
return y;}
this.positionTooltip=function(obj,x,y,tooltip,idx)
{var ca=obj.canvas;var co=obj.context;var prop=obj.properties;var coordX=obj.coords[tooltip.__index__][0];var coordY=obj.coords[tooltip.__index__][1];var canvasXY=RG.getCanvasXY(obj.canvas);var gutterLeft=prop['chart.gutter.left'];var gutterTop=prop['chart.gutter.top'];var width=tooltip.offsetWidth;tooltip.style.left=0;tooltip.style.top=parseInt(tooltip.style.top)-9+'px';tooltip.style.overflow='';var img=new Image();img.src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAFCAYAAACjKgd3AAAARUlEQVQYV2NkQAN79+797+RkhC4M5+/bd47B2dmZEVkBCgcmgcsgbAaA9GA1BCSBbhAuA/AagmwQPgMIGgIzCD0M0AMMAEFVIAa6UQgcAAAAAElFTkSuQmCC';img.style.position='absolute';img.id='__rgraph_tooltip_pointer__';img.style.top=(tooltip.offsetHeight-2)+'px';tooltip.appendChild(img);if((canvasXY[0]+coordX-(width/2))<10){tooltip.style.left=(canvasXY[0]+coordX-(width*0.2))+'px';img.style.left=((width*0.2)-8.5)+'px';}else if((canvasXY[0]+coordX+(width/2))>document.body.offsetWidth){tooltip.style.left=canvasXY[0]+coordX-(width*0.8)+'px';img.style.left=((width*0.8)-8.5)+'px';}else{tooltip.style.left=(canvasXY[0]+coordX-(width*0.5))+'px';img.style.left=((width*0.5)-8.5)+'px';}}
this.DrawSpline=function(context,coords,color,index)
{var co=context;var ca=co.canvas;var prop=this.properties;this.coordsSpline[index]=[];var xCoords=[];var gutterLeft=prop['chart.gutter.left'];var gutterRight=prop['chart.gutter.right'];var hmargin=prop['chart.hmargin'];var interval=(ca.width-(gutterLeft+gutterRight)-(2*hmargin))/(coords.length-1);co.strokeStyle=color;coords.forEach(function(value,idx,arr)
{if(typeof value=='object'&&value&&value.length==2){arr[idx]=Number(value[1]);}});var P=[coords[0]];for(var i=0;i<coords.length;++i){P.push(coords[i]);}
P.push(coords[coords.length-1]+(coords[coords.length-1]-coords[coords.length-2]));for(var j=1;j<P.length-2;++j){for(var t=0;t<10;++t){var yCoord=Spline(t/10,P[j-1],P[j],P[j+1],P[j+2]);xCoords.push(((j-1)*interval)+(t*(interval/10))+gutterLeft+hmargin);co.lineTo(xCoords[xCoords.length-1],yCoord);if(typeof index=='number'){this.coordsSpline[index].push([xCoords[xCoords.length-1],yCoord]);}}}
co.lineTo(((j-1)*interval)+gutterLeft+hmargin,P[j]);if(typeof index=='number'){this.coordsSpline[index].push([((j-1)*interval)+gutterLeft+hmargin,P[j]]);}
function Spline(t,P0,P1,P2,P3)
{return 0.5*((2*P1)+
((0-P0)+P2)*t+
((2*P0-(5*P1)+(4*P2)-P3)*(t*t)+
((0-P0)+(3*P1)-(3*P2)+P3)*(t*t*t)));}}
this.parseColors=function()
{var prop=this.properties;for(var i=0;i<prop['chart.colors'].length;++i){if(typeof(prop['chart.colors'][i])=='object'&&prop['chart.colors'][i][0]&&prop['chart.colors'][i][1]){prop['chart.colors'][i][0]=this.parseSingleColorForGradient(prop['chart.colors'][i][0]);prop['chart.colors'][i][1]=this.parseSingleColorForGradient(prop['chart.colors'][i][1]);}else{prop['chart.colors'][i]=this.parseSingleColorForGradient(prop['chart.colors'][i]);}}
if(prop['chart.fillstyle']){if(typeof(prop['chart.fillstyle'])=='string'){prop['chart.fillstyle']=this.parseSingleColorForGradient(prop['chart.fillstyle'],'vertical');}else{for(var i=0;i<prop['chart.fillstyle'].length;++i){prop['chart.fillstyle'][i]=this.parseSingleColorForGradient(prop['chart.fillstyle'][i],'vertical');}}}
if(!RG.is_null(prop['chart.key.colors'])){for(var i=0;i<prop['chart.key.colors'].length;++i){prop['chart.key.colors'][i]=this.parseSingleColorForGradient(prop['chart.key.colors'][i]);}}
var properties=['chart.background.barcolor1','chart.background.barcolor2','chart.background.grid.color','chart.text.color','chart.crosshairs.color','chart.annotate.color','chart.title.color','chart.title.yaxis.color','chart.key.background','chart.axis.color','chart.highlight.fill'];for(var i=0;i<properties.length;++i){prop[properties[i]]=this.parseSingleColorForGradient(prop[properties[i]]);}}
this.parseSingleColorForGradient=function(color)
{var RG=RGraph;var ca=this.canvas;var co=this.context;if(!color||typeof(color)!='string'){return color;}
var dir=typeof(arguments[1])=='string'?arguments[1]:'horizontal';if(color.match(/^gradient\((.*)\)$/i)){var parts=RegExp.$1.split(':');if(dir=='horizontal'){var grad=co.createLinearGradient(0,0,ca.width,0);}else{var grad=co.createLinearGradient(0,0,0,ca.height);}
var diff=1/(parts.length-1);grad.addColorStop(0,RG.trim(parts[0]));for(var j=1;j<parts.length;++j){grad.addColorStop(j*diff,RG.trim(parts[j]));}}
return grad?grad:color;}
this.SetShadow=function(i)
{var ca=this.canvas;var co=this.context;var prop=this.properties;if(prop['chart.shadow']){var shadowColor=prop['chart.shadow.color'];if(typeof(shadowColor)=='object'&&shadowColor[i-1]){co.shadowColor=shadowColor[i];}else if(typeof(shadowColor)=='object'){co.shadowColor=shadowColor[0];}else if(typeof(shadowColor)=='string'){co.shadowColor=shadowColor;}
co.shadowBlur=prop['chart.shadow.blur'];co.shadowOffsetX=prop['chart.shadow.offsetx'];co.shadowOffsetY=prop['chart.shadow.offsety'];}}
this.interactiveKeyHighlight=function(index)
{var coords=this.coords2[index];if(coords){var pre_linewidth=co.lineWidth;var pre_linecap=co.lineCap;co.lineWidth=prop['chart.linewidth']+10;co.lineCap='round';co.strokeStyle=prop['chart.key.interactive.highlight.chart.stroke'];co.beginPath();if(prop['chart.curvy']){this.DrawSpline(co,coords,prop['chart.key.interactive.highlight.chart'],null);}else{for(var i=0,len=coords.length;i<len;i+=1){if(i==0||RG.is_null(coords[i][1])||(typeof coords[i-1][1]!=undefined&&RG.is_null(coords[i-1][1]))){co.moveTo(coords[i][0],coords[i][1]);}else{co.lineTo(coords[i][0],coords[i][1]);}}}
co.stroke();co.lineWidth=pre_linewidth;co.lineCap=pre_linecap;}}
RG.Register(this);}
if(typeof(RGraph)=='undefined')RGraph={};RGraph.Pie=function(id,data)
{this.id=id;this.canvas=document.getElementById(typeof id==='object'?id.id:id);this.context=this.canvas.getContext("2d");this.canvas.__object__=this;this.total=0;this.subTotal=0;this.angles=[];this.data=data;this.properties=[];this.type='pie';this.isRGraph=true;this.coords=[];this.coords.key=[];this.uid=RGraph.CreateUID();this.canvas.uid=this.canvas.uid?this.canvas.uid:RGraph.CreateUID();this.colorsParsed=false;RGraph.OldBrowserCompat(this.context);this.properties={'chart.colors':['Gradient(red:#fcc)','Gradient(#ddd:#eee)','Gradient(#0f0:#cfc)','Gradient(blue:#ccf)','Gradient(#FB7BA3:#FCC7EE)','Gradient(yellow:#ffc)','Gradient(#000:#ccc)','Gradient(#EE9D80:#FEE5C8)','Gradient(cyan:#ccf)','Gradient(#9E7BF6:#C7B6D2)','Gradient(#78CAEA:#C5FBFD)','Gradient(#E284E9:#FDC4FF)','Gradient(#7F84EF:#FCC4FD)'],'chart.strokestyle':'#999','chart.linewidth':1,'chart.labels':[],'chart.labels.sticks':false,'chart.labels.sticks.length':7,'chart.labels.sticks.color':'#aaa','chart.labels.ingraph':null,'chart.labels.ingraph.font':null,'chart.labels.ingraph.size':null,'chart.labels.ingraph.specific':null,'chart.gutter.left':25,'chart.gutter.right':25,'chart.gutter.top':25,'chart.gutter.bottom':25,'chart.title':'','chart.title.background':null,'chart.title.hpos':null,'chart.title.vpos':0.5,'chart.title.bold':true,'chart.title.font':null,'chart.title.x':null,'chart.title.y':null,'chart.title.halign':null,'chart.title.valign':null,'chart.shadow':false,'chart.shadow.color':'rgba(0,0,0,0.5)','chart.shadow.offsetx':3,'chart.shadow.offsety':3,'chart.shadow.blur':3,'chart.text.size':10,'chart.text.color':'black','chart.text.font':'Arial','chart.contextmenu':null,'chart.tooltips':null,'chart.tooltips.event':'onclick','chart.tooltips.effect':'fade','chart.tooltips.css.class':'RGraph_tooltip','chart.tooltips.highlight':true,'chart.highlight.style':'2d','chart.highlight.style.2d.fill':'rgba(255,255,255,0.7)','chart.highlight.style.2d.stroke':'rgba(255,255,255,0.7)','chart.centerx':null,'chart.centery':null,'chart.radius':null,'chart.border':false,'chart.border.color':'rgba(255,255,255,0.5)','chart.key':null,'chart.key.background':'white','chart.key.position':'graph','chart.key.halign':'right','chart.key.shadow':false,'chart.key.shadow.color':'#666','chart.key.shadow.blur':3,'chart.key.shadow.offsetx':2,'chart.key.shadow.offsety':2,'chart.key.position.gutter.boxed':false,'chart.key.position.x':null,'chart.key.position.y':null,'chart.key.color.shape':'square','chart.key.rounded':true,'chart.key.linewidth':1,'chart.key.colors':null,'chart.key.interactive':false,'chart.key.interactive.highlight.chart.stroke':'black','chart.key.interactive.highlight.chart.fill':'rgba(255,255,255,0.7)','chart.key.interactive.highlight.label':'rgba(255,0,0,0.2)','chart.key.text.color':'black','chart.annotatable':false,'chart.annotate.color':'black','chart.zoom.factor':1.5,'chart.zoom.fade.in':true,'chart.zoom.fade.out':true,'chart.zoom.hdir':'right','chart.zoom.vdir':'down','chart.zoom.frames':25,'chart.zoom.delay':16.666,'chart.zoom.shadow':true,'chart.zoom.background':true,'chart.zoom.action':'zoom','chart.resizable':false,'chart.resize.handle.adjust':[0,0],'chart.resize.handle.background':null,'chart.variant':'pie','chart.variant.donut.width':null,'chart.exploded':[],'chart.effect.roundrobin.multiplier':1,'chart.events.click':null,'chart.events.mousemove':null,'chart.centerpin':null,'chart.centerpin.fill':'white','chart.centerpin.stroke':null,'chart.origin':0-(Math.PI/2),'chart.events':true,'chart.labels.colors':[]}
for(var i=0,len=data.length;i<len;i++){this.total+=data[i];this['$'+i]={};}
if(!this.canvas.__rgraph_aa_translated__){this.context.translate(0.5,0.5);this.canvas.__rgraph_aa_translated__=true;}
var RG=RGraph;var ca=this.canvas;var co=ca.getContext('2d');var prop=this.properties;this.Set=function(name,value)
{name=name.toLowerCase();if(name.substr(0,6)!='chart.'){name='chart.'+name;}
if(name=='chart.highlight.style.2d.color'){name='chart.highlight.style.2d.fill';}
prop[name]=value;return this;}
this.Get=function(name)
{if(name.substr(0,6)!='chart.'){name='chart.'+name;}
if(name=='chart.highlight.style.2d.color'){name='chart.highlight.style.2d.fill';}
return prop[name];}
this.Draw=function()
{RG.FireCustomEvent(this,'onbeforedraw');this.gutterLeft=prop['chart.gutter.left'];this.gutterRight=prop['chart.gutter.right'];this.gutterTop=prop['chart.gutter.top'];this.gutterBottom=prop['chart.gutter.bottom'];this.radius=this.getRadius();this.centerx=(this.graph.width/2)+this.gutterLeft
this.centery=(this.graph.height/2)+this.gutterTop
this.subTotal=this.properties['chart.origin'];this.angles=[];this.coordsText=[];if(typeof(prop['chart.radius'])=='number')this.radius=prop['chart.radius'];if(typeof(prop['chart.centerx'])=='number')this.centerx=prop['chart.centerx'];if(typeof(prop['chart.centery'])=='number')this.centery=prop['chart.centery'];if(this.radius<=0){return;}
if(!this.colorsParsed){this.parseColors();this.colorsParsed=true;}
if(prop['chart.labels.colors'].length<prop['chart.labels'].length){while(prop['chart.labels.colors'].length<prop['chart.labels'].length){prop['chart.labels.colors'].push(prop['chart.labels.colors'][prop['chart.labels.colors'].length-1]);}}else{if(typeof(prop['chart.labels.colors'])=='undefined'){prop['chart.labels.colors']=[];}
while(prop['chart.labels.colors'].length<prop['chart.labels'].length){prop['chart.labels.colors'].push(prop['chart.text.color']);}}
RG.DrawTitle(this,prop['chart.title'],(ca.height/2)-this.radius-5,this.centerx,prop['chart.title.size']?prop['chart.title.size']:prop['chart.text.size']+2);if(prop['chart.shadow']&&false){var offsetx=document.all?prop['chart.shadow.offsetx']:0;var offsety=document.all?prop['chart.shadow.offsety']:0;co.beginPath();co.fillStyle=prop['chart.shadow.color'];co.shadowColor=prop['chart.shadow.color'];co.shadowBlur=prop['chart.shadow.blur'];co.shadowOffsetX=prop['chart.shadow.offsetx'];co.shadowOffsetY=prop['chart.shadow.offsety'];co.arc(this.centerx+offsetx,this.centery+offsety,this.radius,0,TWOPI,0);co.fill();RG.NoShadow(this);}
this.total=RG.array_sum(this.data);var tot=this.total;var data=this.data;for(var i=0,len=this.data.length;i<len;i++){var angle=((data[i]/tot)*TWOPI);this.DrawSegment(angle,prop['chart.colors'][i],i==(len-1),i);}
RG.NoShadow(this);if(prop['chart.linewidth']>0){this.DrawBorders();}
var len=this.angles.length;var r=this.radius;for(var i=0;i<len;i++){var segment=this.angles[i];co.beginPath();co.strokeStyle=typeof(prop['chart.strokestyle'])=='object'?prop['chart.strokestyle'][i]:prop['chart.strokestyle'];co.fillStyle=prop['chart.colors'][i];co.lineJoin='round';co.arc(segment[2],segment[3],r,(segment[0]),(segment[1]),false);if(prop['chart.variant']=='donut'){co.arc(segment[2],segment[3],typeof(prop['chart.variant.donut.width'])=='number'?r-prop['chart.variant.donut.width']:r/2,(segment[1]),(segment[0]),true);}else{co.lineTo(segment[2],segment[3]);}
co.closePath();co.stroke();co.fill();}
if(prop['chart.labels.sticks']){this.DrawSticks();var strokeStyle=prop['chart.strokestyle'];var isWhite=strokeStyle=='white'||strokeStyle=='#fff'||strokeStyle=='#fffffff'||strokeStyle=='rgb(255,255,255)'||strokeStyle=='rgba(255,255,255,0)';if(!isWhite||(isWhite&&this.properties['chart.shadow'])){this.DrawBorders();}}
if(prop['chart.labels']){this.DrawLabels();}
if(prop['chart.centerpin']){this.DrawCenterpin();}
if(prop['chart.labels.ingraph']){this.DrawInGraphLabels();}
if(prop['chart.contextmenu']){RG.ShowContext(this);}
if(prop['chart.border']){co.beginPath();co.lineWidth=5;co.strokeStyle=prop['chart.border.color'];co.arc(this.centerx,this.centery,this.radius-2,0,TWOPI,0);co.stroke();}
if(prop['chart.key']&&prop['chart.key'].length){RG.DrawKey(this,prop['chart.key'],prop['chart.colors']);}
RG.NoShadow(this);if(prop['chart.resizable']){RG.AllowResizing(this);}
if(prop['chart.events']==true){RG.InstallEventListeners(this);}
RG.FireCustomEvent(this,'ondraw');return this;}
this.DrawSegment=function(radians,color,last,index)
{if(ISOLD&&radians==TWOPI){radians-=0.0001;}else if(ISOLD&&radians==0){radians=0.001;}
var context=co;var canvas=ca;var subTotal=this.subTotal;radians=radians*prop['chart.effect.roundrobin.multiplier'];co.beginPath();co.fillStyle=color;co.strokeStyle=prop['chart.strokestyle'];co.lineWidth=0;if(prop['chart.shadow']){RG.SetShadow(this,prop['chart.shadow.color'],prop['chart.shadow.offsetx'],prop['chart.shadow.offsety'],prop['chart.shadow.blur']);}
if((typeof(prop['chart.exploded'])=='object'&&prop['chart.exploded'][index]>0)||typeof(prop['chart.exploded'])=='number'){var explosion=typeof(prop['chart.exploded'])=='number'?prop['chart.exploded']:prop['chart.exploded'][index];var x=0;var y=0;var h=explosion;var t=subTotal+(radians/2);var x=(Math.cos(t)*explosion);var y=(Math.sin(t)*explosion);var r=this.radius;co.moveTo(this.centerx+x,this.centery+y);}else{var x=0;var y=0;var r=this.radius;}
var startAngle=subTotal;var endAngle=((subTotal+radians));co.arc(this.centerx+x,this.centery+y,r,startAngle,endAngle,0);if(prop['chart.variant']=='donut'){co.arc(this.centerx+x,this.centery+y,typeof(prop['chart.variant.donut.width'])=='number'?r-prop['chart.variant.donut.width']:r/2,endAngle,startAngle,true);}else{co.lineTo(this.centerx+x,this.centery+y);}
co.closePath();this.angles.push([subTotal,subTotal+radians,this.centerx+x,this.centery+y]);co.fill();this.subTotal+=radians;}
this.DrawLabels=function()
{var hAlignment='left';var vAlignment='center';var labels=prop['chart.labels'];var context=co;var font=prop['chart.text.font'];var text_size=prop['chart.text.size'];var cx=this.centerx;var cy=this.centery;var r=this.radius;RG.NoShadow(this);co.fillStyle='black';co.beginPath();if(labels&&labels.length){for(i=0;i<this.angles.length;++i){var segment=this.angles[i];if(typeof(labels[i])!='string'&&typeof(labels[i])!='number'){continue;}
co.moveTo(cx,cy);var a=segment[0]+((segment[1]-segment[0])/2);var angle=((segment[1]-segment[0])/2)+segment[0];if(typeof(prop['chart.exploded'])=='object'&&prop['chart.exploded'][i]||typeof(prop['chart.exploded'])=='number'){var t=((segment[1]-segment[0])/2);var seperation=typeof(prop['chart.exploded'])=='number'?prop['chart.exploded']:prop['chart.exploded'][i];var explosion_offsetx=(Math.cos(angle)*seperation);var explosion_offsety=(Math.sin(angle)*seperation);}else{var explosion_offsetx=0;var explosion_offsety=0;}
if(prop['chart.labels.sticks']){explosion_offsetx+=(Math.cos(angle)*prop['chart.labels.sticks.length']);explosion_offsety+=(Math.sin(angle)*prop['chart.labels.sticks.length']);}
var x=cx+explosion_offsetx+((r+10)*Math.cos(a))+(prop['chart.labels.sticks']?(a<HALFPI||a>(TWOPI+HALFPI)?2:-2):0)
var y=cy+explosion_offsety+(((r+10)*Math.sin(a)));vAlignment='center';hAlignment=x<cx?'right':'left';co.fillStyle=prop['chart.text.color'];if(typeof(prop['chart.labels.colors'])=='object'&&prop['chart.labels.colors']&&prop['chart.labels.colors'][i]){co.fillStyle=prop['chart.labels.colors'][i];}
RG.Text2(this,{'font':font,'size':text_size,'x':x,'y':y,'text':labels[i],'valign':vAlignment,'halign':hAlignment,'tag':'labels'});}
co.fill();}}
this.DrawSticks=function()
{var context=co;var offset=prop['chart.linewidth']/2;var exploded=prop['chart.exploded'];var sticks=prop['chart.labels.sticks'];var len=this.angles.length;var cx=this.centerx;var cy=this.centery;var r=this.radius;for(var i=0;i<len;++i){var segment=this.angles[i];if(typeof(sticks)=='object'&&!sticks[i]){continue;}
var radians=segment[1]-segment[0];co.beginPath();co.strokeStyle=prop['chart.labels.sticks.color'];co.lineWidth=1;var midpoint=(segment[0]+(radians/2));if(typeof(exploded)=='object'&&exploded[i]){var extra=exploded[i];}else if(typeof(exploded)=='number'){var extra=exploded;}else{var extra=0;}
co.lineWidth=1;co.arc(cx,cy,r+prop['chart.labels.sticks.length']+extra,midpoint,midpoint+0.001,0);co.arc(cx,cy,r+extra+offset,midpoint,midpoint+0.001,0);co.stroke();}}
this.getShape=this.getSegment=function(e)
{RG.FixEventObject(e);var accuracy=arguments[1]?arguments[1]:0;var canvas=ca;var context=co;var mouseCoords=RG.getMouseXY(e);var mouseX=mouseCoords[0];var mouseY=mouseCoords[1];var r=this.radius;var angles=this.angles;var ret=[];for(var i=0,len=angles.length;i<len;++i){co.beginPath();co.strokeStyle='rgba(0,0,0,0)';co.arc(angles[i][2],angles[i][3],this.radius,angles[i][0],angles[i][1],false);if(this.type=='pie'&&prop['chart.variant']=='donut'){co.arc(angles[i][2],angles[i][3],(typeof(prop['chart.variant.donut.width'])=='number'?this.radius-prop['chart.variant.donut.width']:this.radius/2),angles[i][1],angles[i][0],true);}else{co.lineTo(angles[i][2],angles[i][3]);}
co.closePath();if(!co.isPointInPath(mouseX,mouseY)){continue;}
ret[0]=angles[i][2];ret[1]=angles[i][3];ret[2]=this.radius;ret[3]=angles[i][0]-TWOPI;ret[4]=angles[i][1];ret[5]=i;if(ret[3]<0)ret[3]+=TWOPI;if(ret[4]>TWOPI)ret[4]-=TWOPI;var tooltip=RG.parseTooltipText?RG.parseTooltipText(prop['chart.tooltips'],ret[5]):null;ret['object']=this;ret['x']=ret[0];ret['y']=ret[1];ret['radius']=ret[2];ret['angle.start']=ret[3];ret['angle.end']=ret[4];ret['index']=ret[5];ret['tooltip']=tooltip;return ret;}
return null;}
this.DrawBorders=function()
{if(prop['chart.linewidth']>0){co.lineWidth=prop['chart.linewidth'];co.strokeStyle=prop['chart.strokestyle'];var r=this.radius;for(var i=0,len=this.angles.length;i<len;++i){var segment=this.angles[i];co.beginPath();co.arc(segment[2],segment[3],r,(segment[0]),(segment[0]+0.001),0);co.arc(segment[2],segment[3],prop['chart.variant']=='donut'?(typeof(prop['chart.variant.donut.width'])=='number'?this.radius-prop['chart.variant.donut.width']:r/2):r,segment[0],segment[0]+0.0001,0);co.closePath();co.stroke();}}}
this.getRadius=function()
{this.graph={width:ca.width-prop['chart.gutter.left']-prop['chart.gutter.right'],height:ca.height-prop['chart.gutter.top']-prop['chart.gutter.bottom']}
if(typeof(prop['chart.radius'])=='number'){this.radius=prop['chart.radius'];}else{this.radius=Math.min(this.graph.width,this.graph.height)/2;}
return this.radius;}
this.Explode=function(index,size)
{if(!prop['chart.exploded']){prop['chart.exploded']=[];}
if(typeof(prop['chart.exploded'])=='number'){var original_explode=prop['chart.exploded'];var exploded=prop['chart.exploded'];prop['chart.exploded']=[];for(var i=0,len=this.data.length;i<len;++i){prop['chart.exploded'][i]=exploded;}}
prop['chart.exploded'][index]=typeof(original_explode)=='number'?original_explode:0;for(var o=0;o<size;++o){setTimeout(function()
{prop['chart.exploded'][index]+=1;RG.Clear(ca);RG.RedrawCanvas(ca);},o*(ISIE&&!ISIE10?25:16.666));}}
this.highlight_segment=function(segment)
{co.beginPath();co.strokeStyle=prop['chart.highlight.style.2d.stroke'];co.fillStyle=prop['chart.highlight.style.2d.fill'];co.moveTo(segment[0],segment[1]);co.arc(segment[0],segment[1],segment[2],this.angles[segment[5]][0],this.angles[segment[5]][1],0);co.lineTo(segment[0],segment[1]);co.closePath();co.stroke();co.fill();}
this.Highlight=function(shape)
{if(prop['chart.tooltips.highlight']){if(prop['chart.highlight.style']=='3d'){co.lineWidth=1;var extent=2;co.beginPath();RG.NoShadow(this);co.fillStyle='rgba(0,0,0,0)';co.arc(shape['x'],shape['y'],shape['radius'],shape['angle.start'],shape['angle.end'],false);if(prop['chart.variant']=='donut'){co.arc(shape['x'],shape['y'],shape['radius']/5,shape['angle.end'],shape['angle.start'],true);}else{co.lineTo(shape['x'],shape['y']);}
co.closePath();co.fill();co.beginPath();co.shadowColor='#666';co.shadowBlur=3;co.shadowOffsetX=3;co.shadowOffsetY=3;co.fillStyle=prop['chart.colors'][shape['index']];co.strokeStyle=prop['chart.strokestyle'];co.arc(shape['x']-extent,shape['y']-extent,shape['radius'],shape['angle.start'],shape['angle.end'],false);if(prop['chart.variant']=='donut'){co.arc(shape['x']-extent,shape['y']-extent,shape['radius']/2,shape['angle.end'],shape['angle.start'],true)}else{co.lineTo(shape['x']-extent,shape['y']-extent);}
co.closePath();co.stroke();co.fill();RG.NoShadow(this);if(prop['chart.border']){co.beginPath();co.strokeStyle=prop['chart.border.color'];co.lineWidth=5;co.arc(shape['x']-extent,shape['y']-extent,shape['radius']-2,shape['angle.start'],shape['angle.end'],false);co.stroke();}}else{co.beginPath();co.strokeStyle=prop['chart.highlight.style.2d.stroke'];co.fillStyle=prop['chart.highlight.style.2d.fill'];if(prop['chart.variant']=='donut'){co.arc(shape['x'],shape['y'],shape['radius'],shape['angle.start'],shape['angle.end'],false);co.arc(shape['x'],shape['y'],typeof(prop['chart.variant.donut.width'])=='number'?this.radius-prop['chart.variant.donut.width']:shape['radius']/2,shape['angle.end'],shape['angle.start'],true);}else{co.arc(shape['x'],shape['y'],shape['radius']+1,shape['angle.start'],shape['angle.end'],false);co.lineTo(shape['x'],shape['y']);}
co.closePath();co.fill();}}}
this.getObjectByXY=function(e)
{if(this.getShape(e)){return this;}}
this.DrawCenterpin=function()
{if(typeof(prop['chart.centerpin'])=='number'&&prop['chart.centerpin']>0){var cx=this.centerx;var cy=this.centery;co.beginPath();co.strokeStyle=prop['chart.centerpin.stroke']?prop['chart.centerpin.stroke']:prop['chart.strokestyle'];co.fillStyle=prop['chart.centerpin.fill']?prop['chart.centerpin.fill']:prop['chart.strokestyle'];co.moveTo(cx,cy);co.arc(cx,cy,prop['chart.centerpin'],0,TWOPI,false);co.stroke();co.fill();}}
this.positionTooltip=function(obj,x,y,tooltip,idx)
{var coordX=obj.angles[idx][2];var coordY=obj.angles[idx][3];var angleStart=obj.angles[idx][0];var angleEnd=obj.angles[idx][1];var angleCenter=((angleEnd-angleStart)/2)+angleStart;var canvasXY=RGraph.getCanvasXY(obj.canvas);var gutterLeft=prop['chart.gutter.left'];var gutterTop=prop['chart.gutter.top'];var width=tooltip.offsetWidth;var height=tooltip.offsetHeight;var x=canvasXY[0]+this.angles[idx][2]+(Math.cos(angleCenter)*(prop['chart.variant']=='donut'&&typeof(prop['chart.variant.donut.width'])=='number'?((this.radius-prop['chart.variant.donut.width'])+(prop['chart.variant.donut.width']/2)):(this.radius*(prop['chart.variant']=='donut'?0.75:0.5))));var y=canvasXY[1]+this.angles[idx][3]+(Math.sin(angleCenter)*(prop['chart.variant']=='donut'&&typeof(prop['chart.variant.donut.width'])=='number'?((this.radius-prop['chart.variant.donut.width'])+(prop['chart.variant.donut.width']/2)):(this.radius*(prop['chart.variant']=='donut'?0.75:0.5))));tooltip.style.overflow='';var img=new Image();img.src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAFCAYAAACjKgd3AAAARUlEQVQYV2NkQAN79+797+RkhC4M5+/bd47B2dmZEVkBCgcmgcsgbAaA9GA1BCSBbhAuA/AagmwQPgMIGgIzCD0M0AMMAEFVIAa6UQgcAAAAAElFTkSuQmCC';img.style.position='absolute';img.id='__rgraph_tooltip_pointer__';img.style.top=(tooltip.offsetHeight-2)+'px';tooltip.appendChild(img);if((x-(width/2))<10){tooltip.style.left=(x-(width*0.1))+'px';tooltip.style.top=(y-height-4)+'px';img.style.left=((width*0.1)-8.5)+'px';}else if((x+(width/2))>(document.body.offsetWidth-10)){tooltip.style.left=(x-(width*0.9))+'px';tooltip.style.top=(y-height-4)+'px';img.style.left=((width*0.9)-8.5)+'px';}else{tooltip.style.left=(x-(width/2))+'px';tooltip.style.top=(y-height-4)+'px';img.style.left=((width*0.5)-8.5)+'px';}}
this.DrawInGraphLabels=function()
{var context=co;var cx=this.centerx;var cy=this.centery;if(prop['chart.variant']=='donut'){var r=this.radius*0.75;if(typeof(prop['chart.variant.donut.width'])=='number'){var r=(this.radius-prop['chart.variant.donut.width'])+(prop['chart.variant.donut.width']/2);}}else{var r=this.radius/2;}
for(var i=0,len=this.angles.length;i<len;++i){if(typeof(prop['chart.exploded'])=='object'&&typeof(prop['chart.exploded'][i])=='number'){var explosion=prop['chart.exploded'][i];}else if(typeof(prop['chart.exploded'])=='number'){var explosion=parseInt(prop['chart.exploded']);}else{var explosion=0;}
var angleStart=this.angles[i][0];var angleEnd=this.angles[i][1];var angleCenter=((angleEnd-angleStart)/2)+angleStart;var coords=RG.getRadiusEndPoint(this.centerx,this.centery,angleCenter,r+(explosion?explosion:0));var x=coords[0];var y=coords[1];var text=prop['chart.labels.ingraph.specific']&&typeof(prop['chart.labels.ingraph.specific'][i])=='string'?prop['chart.labels.ingraph.specific'][i]:RG.number_format(this,this.data[i],prop['chart.labels.ingraph.units.pre'],prop['chart.labels.ingraph.units.post']);if(text){co.beginPath();var font=typeof(prop['chart.labels.ingraph.font'])=='string'?prop['chart.labels.ingraph.font']:prop['chart.text.font'];var size=typeof(prop['chart.labels.ingraph.size'])=='number'?prop['chart.labels.ingraph.size']:prop['chart.text.size']+2;RG.Text2(this,{'font':font,'size':size,'x':x,'y':y,'text':text,'valign':'center','halign':'center','bounding':true,'boundingFill':'white','tag':'labels.ingraph'});co.stroke();}}}
this.getAngle=function(value)
{if(value>this.total){return null;}
var angle=(value/this.total)*TWOPI;angle+=prop['chart.origin'];return angle;}
this.parseColors=function()
{for(var i=0;i<prop['chart.colors'].length;++i){prop['chart.colors'][i]=this.parseSingleColorForGradient(prop['chart.colors'][i]);}
var keyColors=prop['chart.key.colors'];if(keyColors){for(var i=0;i<keyColors.length;++i){keyColors[i]=this.parseSingleColorForGradient(keyColors[i]);}}
prop['chart.chart.strokestyle']=this.parseSingleColorForGradient(prop['chart.strokestyle']);prop['chart.highlight.stroke']=this.parseSingleColorForGradient(prop['chart.highlight.stroke']);prop['chart.highlight.style.2d.fill']=this.parseSingleColorForGradient(prop['chart.highlight.style.2d.fill']);prop['chart.highlight.style.2d.stroke']=this.parseSingleColorForGradient(prop['chart.highlight.style.2d.stroke']);}
this.parseSingleColorForGradient=function(color)
{if(!color||typeof(color)!='string'){return color;}
if(color.match(/^gradient\((.*)\)$/i)){var parts=RegExp.$1.split(':');if(prop['chart.variant']=='donut'){var radius_start=typeof(prop['chart.variant.donut.width'])=='number'?this.radius-prop['chart.variant.donut.width']:this.radius/2;}else{var radius_start=0;}
var grad=co.createRadialGradient(this.centerx,this.centery,radius_start,this.centerx,this.centery,Math.min(ca.width-prop['chart.gutter.left']-prop['chart.gutter.right'],ca.height-prop['chart.gutter.top']-prop['chart.gutter.bottom'])/2);var diff=1/(parts.length-1);grad.addColorStop(0,RG.trim(parts[0]));for(var j=1;j<parts.length;++j){grad.addColorStop(j*diff,RG.trim(parts[j]));}}
return grad?grad:color;}
this.interactiveKeyHighlight=function(index)
{if(this.angles&&this.angles[index]){var segment=this.angles[index];var x=segment[2];var y=segment[3];var start=segment[0];var end=segment[1];co.strokeStyle=prop['chart.key.interactive.highlight.chart.stroke'];co.fillStyle=prop['chart.key.interactive.highlight.chart.fill'];co.lineWidth=2;co.lineJoin='bevel';co.beginPath();co.moveTo(x,y);co.arc(x,y,this.radius,start,end,false);co.closePath();co.fill();co.stroke();}}
RGraph.Register(this);}
var notSupportedBrowsers=[];var displayPoweredBy=false;var noticeLang='professional';var noticeLangCustom=null;var supportedBrowsers=[];var BrowserDetection={init:function(){if(notSupportedBrowsers==null||notSupportedBrowsers.length<1){notSupportedBrowsers=this.defaultNotSupportedBrowsers;}
this.detectBrowser();this.detectOS();if(this.browser==''||this.browser=='Unknown'||this.os==''||this.os=='Unknown'||this.browserVersion==''||this.browserVersion==0)
{return;}
var oldBrowser=false;for(var i=0;i<notSupportedBrowsers.length;i++){if(notSupportedBrowsers[i].os=='Any'||notSupportedBrowsers[i].os==this.os){if(notSupportedBrowsers[i].browser=='Any'||notSupportedBrowsers[i].browser==this.browser){if(notSupportedBrowsers[i].version=="Any"||this.browserVersion<=parseFloat(notSupportedBrowsers[i].version)){oldBrowser=true;break;}}}}
if(oldBrowser){this.displayNotice();}},getEl:function(id){return window.document.getElementById(id);},getElSize:function(id){var el=this.getEl(id);if(el==null){return null;}
return{'width':parseInt(el.offsetWidth),'height':parseInt(el.offsetHeight)};},getWindowSize:function(){if(typeof window.innerWidth!='undefined'){return{'width':parseInt(window.innerWidth),'height':parseInt(window.innerHeight)};}else{if(window.document.documentElement.clientWidth!=0){return{'width':parseInt(window.document.documentElement.clientWidth),'height':parseInt(window.document.documentElement.clientHeight)};}else{return{'width':parseInt(window.document.body.clientWidth),'height':parseInt(window.document.body.clientHeight)};}}},positionNotice:function(){var noticeSize=this.getElSize('browser-detection');var windowSize=this.getWindowSize();var noticeEl=this.getEl('browser-detection');if(noticeEl==null||noticeSize==null||windowSize==null||!windowSize.width||!windowSize.height){return;}
noticeEl.style.left=(windowSize.width-noticeSize.width)/2+"px";var offset=(this.browser=="MSIE"&&this.browserVersion<7)?(window.document.documentElement.scrollTop!=0?window.document.documentElement.scrollTop:window.document.body.scrollTop):0;noticeEl.style.top=(windowSize.height-noticeSize.height-20+offset)+"px";this.noticeHeight=noticeSize.height;},displayNotice:function(){if(this.readCookie('bdnotice')==1){return;}
this.writeNoticeCode();this.positionNotice();var el=this;window.onresize=function(){el.positionNotice();};if(this.browser=="MSIE"&&this.browserVersion<7){window.onscroll=function(){el.positionNotice();};}
this.getEl('browser-detection-close').onclick=function(){el.remindMe(false);};this.getEl('browser-detection-remind-later').onclick=function(){el.remindMe(false);};this.getEl('browser-detection-never-remind').onclick=function(){el.remindMe(true);};},remindMe:function(never){this.writeCookie('bdnotice',1,never==true?365:7);this.getEl('browser-detection').style.display='none';this.getEl('black_overlay').style.display='none';},writeCookie:function(name,value,days){var expiration="";if(parseInt(days)>0){var date=new Date();date.setTime(date.getTime()+parseInt(days)*24*60*60*1000);expiration='; expires='+date.toGMTString();}
document.cookie=name+'='+value+expiration+'; path=/';},readCookie:function(name){if(!document.cookie){return'';}
var searchName=name+'=';var data=document.cookie.split(';');for(var i=0;i<data.length;i++){while(data[i].charAt(0)==' '){data[i]=data[i].substring(1,data[i].length);}
if(data[i].indexOf(searchName)==0){return data[i].substring(searchName.length,data[i].length);}}
return'';},writeNoticeCode:function(){var title='';var notice='';var selectBrowser='';var remindMeLater='';var neverRemindAgain='';var browsersList=null;var code='<div id="black_overlay"></div><div id="browser-detection"><a href="javascript:;" id="browser-detection-close">Close</a>';if(noticeLang=='custom'&&noticeLangCustom!=null){title=noticeLangCustom.title;notice=noticeLangCustom.notice;selectBrowser=noticeLangCustom.selectBrowser;remindMeLater=noticeLangCustom.remindMeLater;neverRemindAgain=noticeLangCustom.neverRemindAgain;}else{var noticeTextObj=null;eval('noticeTextObj = this.noticeText.'+noticeLang+';');if(!noticeTextObj){noticeTextObj=this.noticeText.professional;}
title=noticeTextObj.title;notice=noticeTextObj.notice;selectBrowser=noticeTextObj.selectBrowser;remindMeLater=noticeTextObj.remindMeLater;neverRemindAgain=noticeTextObj.neverRemindAgain;}
notice=notice.replace("\n",'</p><p class="bd-notice">');notice=notice.replace("{browser_name}",(this.browser+" "+this.browserVersion));code+='<p class="bd-title">'+title+'</p><p class="bd-notice">'+notice+'</p><p class="bd-notice"><b>'+selectBrowser+'</b></p>';if(supportedBrowsers.length>0){browsersList=supportedBrowsers;}else{browsersList=this.supportedBrowsers;}
code+='<ul class="bd-browsers-list">';for(var i=0;i<browsersList.length;i++){code+='<li class="'+browsersList[i].cssClass+'"><a href="'+browsersList[i].downloadUrl+'" target="_blank">'+browsersList[i].name+'</a></li>';}
code+='</ul>';if(displayPoweredBy){code+='<div class="bd-poweredby">Powered by <a href="http://www.devslide.com/labs/browser-detection" target="_blank">DevSlide Labs</a></div>';}
code+='<ul class="bd-skip-buttons">';code+='<li><button id="browser-detection-remind-later" type="button">'+remindMeLater+'</button></li>';code+='<li><button id="browser-detection-never-remind" type="button">'+neverRemindAgain+'</button></li>';code+='</ul>';code+='</div>';window.document.body.innerHTML+=code;},detectBrowser:function(){this.browser='';this.browserVersion=0;if(/Opera[\/\s](\d+\.\d+)/.test(navigator.userAgent)){this.browser='Opera';}else if(/MSIE (\d+\.\d+);/.test(navigator.userAgent)){this.browser='MSIE';}else if(/Navigator[\/\s](\d+\.\d+)/.test(navigator.userAgent)){this.browser='Netscape';}else if(/Chrome[\/\s](\d+\.\d+)/.test(navigator.userAgent)){this.browser='Chrome';}else if(/Safari[\/\s](\d+\.\d+)/.test(navigator.userAgent)){this.browser='Safari';/Version[\/\s](\d+\.\d+)/.test(navigator.userAgent);this.browserVersion=new Number(RegExp.$1);}else if(/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent)){this.browser='Firefox';}
if(this.browser==''){this.browser='Unknown';}else if(this.browserVersion==0){this.browserVersion=parseFloat(new Number(RegExp.$1));}},detectOS:function(){for(var i=0;i<this.operatingSystems.length;i++){if(this.operatingSystems[i].searchString.indexOf(this.operatingSystems[i].subStr)!=-1){this.os=this.operatingSystems[i].name;return;}}
this.os="Unknown";},noticeHeight:0,browser:'',os:'',browserVersion:'',supportedBrowsers:[{'cssClass':'firefox','name':'Mozilla Firefox','downloadUrl':'http://www.getfirefox.com/'},{'cssClass':'chrome','name':'Google Chrome','downloadUrl':'http://www.google.com/chrome/'},{'cssClass':'msie','name':'Internet Explorer','downloadUrl':'http://www.getie.com/'}],operatingSystems:[{'searchString':navigator.platform,'name':'Windows','subStr':'Win'},{'searchString':navigator.platform,'name':'Mac','subStr':'Mac'},{'searchString':navigator.platform,'name':'Linux','subStr':'Linux'},{'searchString':navigator.userAgent,'name':'iPhone','subStr':'iPhone/iPod'}],defaultNotSupportedBrowsers:[{'os':'Any','browser':'MSIE','version':8}],noticeText:{'professional':{"title":"Oude browser gedetecteerd","notice":"Wij hebben gedecteerd dat uw browser een te oude versie is. Om onze site goed te kunnen gebruiker adviseren we u om een van de onderste browsers te downloaden.","selectBrowser":"Gebruik een van de onderstaande links om een nieuwe browser te downloaden.","remindMeLater":"Herinner mij later","neverRemindAgain":"Nee, herinner mij niet meer"}}};window.onload=function(){BrowserDetection.init();};
var quickCartLoaded=false;var shoppingcartRequest=null;var cartBackCounter=-1;var addToCartButton=null;function internalSendCartChange(url)
{if(shoppingcartRequest!=null)
shoppingcartRequest.abort();shoppingcartRequest=new XMLHttpRequest();shoppingcartRequest.onreadystatechange=function()
{if(shoppingcartRequest.readyState==4&&shoppingcartRequest.status==200)
{var cartData=eval("("+shoppingcartRequest.responseText+")");$('button.button').each(function(){var myId=$(this).attr('id');if(myId){if(myId.slice(0,5)=="prod_"){var prodId=myId.slice(5)
var selector='.prod_'+prodId+' span';var count=0;for(i=0;i<cartData.items.length;i++)
if(prodId==cartData.items[i].productId)
count=cartData.items[i].count;updateButtonCount(selector,count);}}});if(addToCartButton)
{FancyHoverSetZero();$(".fancyHover").addClass('cartHover');$(".fancyHover .content > h5").show();$(".fancyHover .content > h5").text('nieuw in winkelwagen');$(".fancyHover .content > ul").empty();$(".fancyHover .buttons > button.cartButton").show();var productFound=false;for(i=0;i<cartData.items.length;i++)
{if(cartData.items[i]['new'])
{$(".fancyHover .content > ul").append($('<li>').append($('<img class="icon">').attr('src',cartData.items[i].imageUrl+'/w/35/h/35')).append($('<div class="button">').click(createDeleteCartHandler(cartData.items[i].productId))).append($('<span>').text(cartData.items[i].name)));productFound=true;}}
if(productFound)
{lastCompareHoverElement=addToCartButton;lastCompareHoverPosition='right';PositionFancyHover();}}
if($('#shoppingCart span').text()!=cartData.totalCount)
$('#shoppingCart span').fadeOut(200,function(){$('#shoppingCart span').text(cartData.totalCount).fadeIn(200);});if(document.URL.indexOf("/shoppingcart")>=0){$.get('/shoppingcart',function(data){$('#shoppingCartBig').html($(data).find('#shoppingCartBig').html());initCart();initHoverTip();},'html');}
quickCartLoaded=false;}}
shoppingcartRequest.open("GET",url+"&r="+Math.random());shoppingcartRequest.send();}
function createDeleteCartHandler(productId)
{return function(){changeCart(productId,0);$(".fancyHover").hide();lastCompareHoverElement=null;return;}}
function updateButtonCount(selector,count)
{$(selector).each(function(){if($(this).text()!=count)
$(this).fadeOut(200,function(){$(this).text(count);if(count>0)
$(this).fadeIn(200);});});}
function addToCart(productId,multiProduct,element)
{addToCartButton=element;internalSendCartChange("/shoppingcart.php?action=addItem&product="+productId+"&ismultiproduct="+multiProduct);if(productId.toString().indexOf('WEB')==-1&&productId.toString().indexOf('PCB')==-1&&multiProduct==1){setTimeout(function(){$.get(window.location.href,function(data){$('#MainContent').html($(data).find('#MainContent').html());},'html');},200);}}
function changeCart(productId,count)
{internalSendCartChange("/shoppingcart.php?action=changeItem&product="+productId+"&count="+count);}
function recheckCart()
{internalSendCartChange("/shoppingcart.php?action=recheck");}
function changeSendType(sendType)
{internalSendCartChange("/shoppingcart.php?action=changeSendType&sendType="+sendType);}
function changeCartStep(step)
{internalSendCartChange("/shoppingcart.php?action=setCartStep&step="+step);}
function changePaymentPercentage(paymentPercentage)
{internalSendCartChange("/shoppingcart.php?action=setPaymentPercentage&paymentPercentage="+paymentPercentage);}
function changePaymentMethod(paymentMethod)
{internalSendCartChange("/shoppingcart.php?action=setPaymentMethod&paymentMethod="+paymentMethod);}
function changePaymentIdealSupportJSON(value)
{internalSendCartChange("/shoppingcart.php?action=paymentSupportJSON&idealBank="+value);}
function deleteTegoedKorting(code)
{internalSendCartChange("/shoppingcart.php?action=deleteTegoedKorting&code="+code);}
function addTegoedKorting(code)
{internalSendCartChange("/shoppingcart.php?action=addTegoedKorting&code="+code);}
function mainDelivery(element)
{internalSendCartChange("/shoppingcart.php?action=mainDelivery&to="+$(element).val());}
function productDelivery(element)
{internalSendCartChange("/shoppingcart.php?action=productDelivery&productTo="+$(element).val());}
function convertWishProduct(productId)
{internalSendCartChange("/shoppingcart.php?action=convertWishProd&product="+productId);quickWishLoaded=false;}
$(function(){$("#shoppingCart").hover(function(){$(this).children('a').stop(true,true).switchClass('','hover',200);if(!quickCartLoaded)
$("#shoppingCart_dropdown").load("/shoppingcart.php?action=small",function(data){$("#shoppingCart_dropdown").css('background-image','none');});quickCartLoaded=true;$("#shoppingCart_dropdown").stop(true,true).fadeIn(200);},function(){$(this).children('a').stop(true,true).switchClass('hover','',200);$("#shoppingCart_dropdown").stop(true,true).fadeOut(200);});});function changeCount(control,productId,defaultValue)
{if(control.value=='other')
{lastProductId=productId;control.value=defaultValue;$('#newCount').val(defaultValue);customCountHoverFadeIn();$('#newCount').select();}
else
{customCountHoverFadeOut();changeCart(productId,control.value);}}
function customCountHoverFadeIn()
{$('.customCountHover').fadeIn();$('.customCountHover .window').show();}
function customCountHoverFadeOut()
{$('.customCountHover').fadeOut();$('.customCountHover .window').hide();}
function toggleConfigContainer(button,container){$('#'+container).toggle();}
function toggleMoreKortingen(){$('.moreKortingen').toggle();}
function customizeConfig(id){if(id.toString().indexOf('WEB')>-1){$.ajax({url:'/multiproduct.php?action=openConfig',type:'POST',data:{'multiId':id},success:function(){location.href='/productdetail/product/'+id.split("_")[0];}});}
if(id.toString().indexOf('PCB')>-1){location.href='/pc-builder-configurator/assemblyId/'+id.split("_")[1];}}
function adressEdit(){$('#selectmsg').hide();$('#addressFunctions').fadeOut('slow',function(){$('#addressFunctions').load('/account_func.php?action=addressEdit&addEditFunc=edit',{addressid:$("input[name='addressIdList']:checked").val()},function(){$('#addressFunctions').fadeIn('slow');});});}
function adressNew(){$('#selectmsg').hide();$('#addressFunctions').fadeOut('slow',function(){$('#addressFunctions').load('/account_func.php?action=addressEdit&addEditFunc=new',{addressid:$("input[name='addressIdList']:checked").val()},function(){$('#addressFunctions').fadeIn('slow');});});}
function adressShipping(){$('#addressFunctions').hide();if($("input[name='addressIdList']:checked").val()==undefined)
$('#selectmsg').fadeIn('slow');else
$.ajax({url:'/shoppingcart.php?action=setShippingAddress',type:'POST',data:{'addressid':$("input[name='addressIdList']:checked").val()},success:function(){$("#shoppingCartBig").load("/shoppingcart.php #shoppingCartBig");}});}
function adressInvoice(){$('#addressFunctions').hide();if($("input[name='addressIdList']:checked").val()==undefined)
$('#selectmsg').fadeIn('slow');else
$.ajax({url:'/shoppingcart.php?action=setInvoiceAddress',type:'POST',data:{'addressid':$("input[name='addressIdList']:checked").val()},success:function(){$("#shoppingCartBig").load("/shoppingcart.php #shoppingCartBig");}});}
function finishOrder(getPayLink){$("#newOrderSpinner").parent().css({position:'relative'});$('#newOrderSpinner').fadeIn();$.ajax({url:'/shoppingcart.php?action=finishOrder',type:'GET',success:function(data){if(getPayLink==1){var timer=setInterval(function(){$.ajax({url:'/shoppingcart.php?action=payLink&pl='+data,type:'GET',success:function(data){if(data!='false'&&data!='')
window.location.replace(data);clearInterval(timer);}});},750);}else{window.location.replace('/shoppingcart.php');}}});}
function payOrder(getPayLink){$("#newOrderSpinner").parent().css({position:'relative'});$('#newOrderSpinner').fadeIn();$.ajax({url:'/shoppingcart.php?action=payOrder',type:'GET',success:function(data){if(getPayLink==1){var timer=setInterval(function(){$.ajax({url:'/shoppingcart.php?action=payLink&pl='+data,type:'GET',success:function(data){if(data!='false'&&data!='')
window.location.replace(data);clearInterval(timer);}});},750);}else{window.location.replace('/shoppingcart.php');}}});}
function payStatus(){$('#spinnerPayStatus').show();$('#payStatus').html('');$('#payStatusCheck').hide();var i=0;var payStatusChecker=setInterval(function(){i++;$.ajax({url:'/shoppingcart.php?action=payStatus',type:'GET',success:function(data){obj=jQuery.parseJSON(data);if(obj.Type=='CANCEL'){window.location.replace('/shoppingcart.php');}
$('#payStatus').html(obj.Msg);$('#payStatus').css("color",obj.Color);if(obj.IntervalStop==true){clearInterval(payStatusChecker);$('#spinnerPayStatus').hide();}
if(i>15){$('#payStatus').html('De status van de betaling is nog niet bekend');clearInterval(payStatusChecker);$('#payStatus').css("color",'#FF6600');$('#spinnerPayStatus').hide();$('#payStatusCheck').show();}}});},1500)}
function newCount_keyUp(control){var button=$('#customCountHover .button');/^\d\d?$/.test(control.value)?button.removeAttr('disabled'):button.attr('disabled','true');}
function toCartStep(step)
{changeCartStep(step);}
function sendType_change(control)
{changeSendType(control.value);}
function paymentPercentage_change(control)
{changePaymentPercentage(control.value);}
function paymentMethod_change(control)
{changePaymentMethod(control.value);}
function paymentIdealSupportJSON_change(control)
{changePaymentIdealSupportJSON(control.value);}
function initCart(){if(window.location.hash!='#'+$('#hashToTake').val())
cartBackCounter=cartBackCounter-1;var url=location.href;if(url.search("shoppingcart")>-1){$("#confirmCheck").click(function(){if($("#confirmCheck").is(":checked")){$("#buttonRight").removeAttr("disabled");}else{$("#buttonRight").attr("disabled","disabled");}});if($('#hashToTake').val()!='')
window.location.hash=$('#hashToTake').val();else
window.location.hash='';}}
function ShoppingCartInitialize(){var url=location.href;if(url.search("bookmark")>-1&&url.search("shoppingcart")>-1){$.ajax({url:'/shoppingcart.php?action=addbookmark',type:'POST',data:{'bookmark':window.location.hash.replace("#bookmark=","")},success:function(){$("#shoppingCartBig").load("/shoppingcart.php #shoppingCartBig");}});}
initCart();}
$.fn.defaultText=function(){$(this).focus(function(){if($(this).val().trim()==$(this).attr('defaulttext'))
$(this).val('');}).blur(function(){if($(this).val().trim()=="")
$(this).val($(this).attr('defaulttext'));}).blur();return $(this);};$.fn.defaultTextVal=function(){var value=$(this).val().trim();if(value==$(this).attr('defaulttext'))
return"";return value;};var FancyQuickSearchTimer;var FancyQuickSearchChecksum;$(function(){var specialSearchText="";$(document).keydown(function(event){if(document.activeElement){var lowerTagName=document.activeElement.tagName.toLowerCase();if(lowerTagName=="input"||lowerTagName=="textarea"||lowerTagName=="select")
return;}
if((event.which>=48)&&(event.which<=90))
specialSearchText+=String.fromCharCode(event.which);if(event.which==13&&specialSearchText!=""){location.href='/search/q/'+specialSearchText;specialSearchText="";}});;});$(function(){$('#FancySearchBox input').defaultText().focus(function(){$(this).parent().addClass('active');}).blur(function(){$(this).parent().removeClass('active');}).focus(function(){if(!$('#FancySearchBoxHost').hasClass('active'))this.select()}).keyup(function fancySearchChange(){var newValue=$(this).defaultTextVal();if(newValue!=""){$('#FancySearchBoxHost').addClass('active');clearTimeout(FancyQuickSearchTimer);refreshQuickSearch("");}
else
$('#FancySearchBoxHost').removeClass('active');}).focus(function(){$(this).keyup();}).keypress(function(e){if(e.which==13){value=$(this).defaultTextVal();if(value!="")
window.location.href='/search/q/'+value;}});$('#FancySearchBoxHost .closebutton').click(function(){$('#FancySearchBoxHost').removeClass('active');});$('#FancySearchBoxHost .background ').click(function(){$('#FancySearchBoxHost').removeClass('active');});});function refreshQuickSearch(refreshType){var value=$('#FancySearchBox input').defaultTextVal();var eolSearch=$("#eolsearch").is(':checked');if(FancyQuickSearchChecksum!=(value+eolSearch+refreshType)){$('#searchspinner').fadeIn();FancyQuickSearchTimer=setTimeout(function(){FancyQuickSearchChecksum=value+eolSearch+refreshType;$('#FancySearchBoxHost .searchContent').load("/quickSearch.php?"+$.param({'q':value,'eolsearch':eolSearch})+refreshType,function(){$('#searchspinner').fadeOut();});},250);}else{$('#searchspinner').fadeOut();}}
var socialLoaded=0;var AllowCookie=false;function setAllowCookie(loadAgain,customUrl)
{if(AllowCookie)
loadSocialPage(loadAgain,customUrl);AllowCookie=true;}
function loadSocialPage(loadAgain,customUrl)
{$.ajax({url:'/socialmedia.php?r='+Date.now(),type:'POST',data:{'url':(typeof customUrl==="undefined"||customUrl==="")?document.URL:customUrl},success:function(data){if(socialLoaded==0||loadAgain){AllowCookie=true;(function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(d.getElementById(id))return;js=d.createElement(s);js.id=id;js.src="//connect.facebook.net/en_US/all.js#xfbml=1";fjs.parentNode.insertBefore(js,fjs);}(document,'script','facebook-jssdk'));!function(d,s,id){var js1,tjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js1=d.createElement(s);js1.id=id;js1.src="//platform.twitter.com/widgets.js";tjs.parentNode.insertBefore(js1,tjs);}}(document,"script","twitter-wjs");(function(){var po=document.createElement('script');po.type='text/javascript';po.async=true;po.src='https://apis.google.com/js/plusone.js';var s=document.getElementsByTagName('script')[0];s.parentNode.insertBefore(po,s);})();$('#socialMediaContainer').html(data);if(loadAgain){twttr.widgets.load();FB.XFBML.parse();gapi.plusone.go();}}else{$('#socialMediaContainer').html(data);twttr.widgets.load();FB.XFBML.parse();gapi.plusone.go();}
if(socialLoaded==0)
socialLoaded=1;}});}
function socialMailUrl()
{$('#SocialMailSendButton').attr("disabled","disabled");$('#ErrorMsgMail').hide();$('#InfoMsgMail').hide();$.ajax({url:'/socialmedia.php?action=MailTo',type:'POST',data:{'mailToForm':$('#socialMailTo').serialize()},success:function(data){if(data=='MailSend'){$('#emailFriend').val('');$('#emailOwn').val('');$('#emailMsg').html('');$('#InfoMsgMail').show();}else{$('#ErrorMsgMail').show();}
$('#SocialMailSendButton').removeAttr("disabled");}});}
function socialMediaHoverFadeIn()
{$('.socialMediaHover .window').fadeIn();$('.socialMediaHover').fadeIn();}
function socialMediaHoverFadeOut()
{$('.socialMediaHover').fadeOut();$('.socialMediaHover .window').hide();}
function subReferancePageFadeIn()
{$('.subReferancePage .window').fadeIn();$('.subReferancePage').fadeIn();}
function subReferancePageFadeOut()
{$('.subReferancePage').fadeOut();$('.subReferancePage .window').hide();}
var quickWishLoaded=false;var wishListRequest=null;var wishlistFadeoutTimer;function internalSendWishListChange(url,callback)
{if(wishListRequest!=null)
wishListRequest.abort();wishListRequest=new XMLHttpRequest();wishListRequest.onreadystatechange=function()
{if(wishListRequest.readyState==4&&wishListRequest.status==200)
{var wishListData=eval("("+wishListRequest.responseText+")");for(i=0;i<wishListData.items.length;i++)
{var selector='.prodWish_'+wishListData.items[i].productId+' span';updateButtonWish(selector,wishListData.items[i].active);}
if(document.URL.indexOf("/wishlist")>=0){$.get('/wishlist',function(data){$('#wishListBig').html($(data).find('#wishListBig').html());},'html');}
quickWishLoaded=false;}}
wishListRequest.open("GET",url+"&r="+Math.random());wishListRequest.send();if(callback)
setTimeout(function(){callback()},300);}
function updateButtonWish(selector,active)
{$(selector).each(function(){if(active==true)
$(selector).css('color','#000000');else
$(selector).css('color','#585858');if($(selector).css('display')=='none')
$(selector).fadeOut(200,function(){$(this).fadeIn(200);});});}
function addToWishList(productId,multiProduct)
{internalSendWishListChange("/wishlist.php?action=addItem&product="+productId+"&ismultiproduct="+multiProduct);if(productId.toString().indexOf('WEB')==-1&&productId.toString().indexOf('PCB')==-1&&multiProduct==1){setTimeout(function(){$.get(window.location.href,function(data){$('#MainContent').html($(data).find('#MainContent').html());},'html');},100);}}
$(function(){$("#wishList").hover(function(){clearTimeout(wishlistFadeoutTimer);wishlistFadeoutTimer=false;$(this).children('a').stop(true,true).switchClass('','hover',200);if(!quickWishLoaded){$("#wishList_dropdown").load("/wishlist.php?action=small",function(data){$("#wishList_dropdown").css('background-image','none');});}
quickWishLoaded=true;$("#wishList_dropdown").stop(true,true).fadeIn(200);},function(){if(!$("#wishListActiveselectorSmall").is(":focus")){$(this).children('a').stop(true,true).switchClass('hover','',200);$("#wishList_dropdown").stop(true,true).fadeOut(200);}});});function changeWishList(productId,count)
{internalSendWishListChange("/wishlist.php?action=changeItem&product="+productId+"&count="+count);}
function changeDefaultList(listSelector)
{internalSendWishListChange("/wishlist.php?action=changeDefaultList&listid="+$(listSelector).val());}
function changeDefaultListSmall(listSelector)
{internalSendWishListChange("/wishlist.php?action=changeDefaultList&listid="+$(listSelector).val(),function(){reloadWishListSmall();});}
function newWishList()
{internalSendWishListChange("/wishlist.php?action=new");}
function renameWishList()
{internalSendWishListChange("/wishlist.php?action=rename&name="+$('#newNameWishlist').val());}
function changeWishPrice(control)
{internalSendWishListChange("/wishlist.php?action=changeWishprice&product="+$(control).attr('name').replace("wishprice_","")+"&wishprice="+$(control).val());}
function changeWishPriceNotify(control)
{varchecked=($(control).attr('checked'))?1:0;internalSendWishListChange("/wishlist.php?action=changeWishpriceNotify&product="+$(control).attr('name').replace("wishpricenotify_","")+"&notify="+varchecked);}
function addWishToCart()
{var products='';$('[name="wishListMove[]"]').each(function(){if(this.checked){products+=','+this.value;}});internalSendWishListChange("/wishlist.php?action=addtocart&products="+products,function(){recheckCart();});}
function reloadWishListSmall()
{setTimeout(function(){$("#wishList_dropdown").load("/wishlist.php?action=small");quickWishLoaded=true;$("#wishList").children('a').stop(true,true).switchClass('','hover',200);$("#wishList_dropdown").stop(true,true).fadeIn(200);},500);wishlistFadeoutTimer=setTimeout(function(){$("#wishList").children('a').stop(true,true).switchClass('hover','',200);$("#wishList_dropdown").stop(true,true).fadeOut(200);wishlistFadeoutTimer=false;},3000);}
function checkAllProducts(element)
{if($(element).filter(':checked').length===0){$('[name="wishListMove[]"]').prop('checked',false);}else{$('[name="wishListMove[]"]').prop('checked',true);}}
var filterAdres1Timer;var filterAdres2Timer;var map;var mapdelivery;function adres1_keyup()
{window.clearTimeout(filterAdres1Timer);filterAdres1Timer=setTimeout(function(){findAdress('map_canvas','');},1000);}
function adres2_keyup()
{window.clearTimeout(filterAdres2Timer);filterAdres2Timer=setTimeout(function(){findAdress('deliverymap_canvas','delivery');},1000);}
function setAddressSearch(delivery,change)
{if(change){$('#'+delivery+'postalcode').val('');$('#'+delivery+'number').val('');$('#'+delivery+'numberAdd').val('');$('#'+delivery+'lat').val('');$('#'+delivery+'long').val('');$('#maploader'+delivery).fadeOut();}
if($('#'+delivery+'country').val()=='nl'){if(change){$('#map_canvas'+delivery).show();$('#'+delivery+'street').val('Wordt automatisch gezocht... ');$('#'+delivery+'street').css('color','#B8B8B8');$('#'+delivery+'city').val('Wordt automatisch gezocht...');$('#'+delivery+'city').css('color','#B8B8B8');}
findAdress(delivery+'map_canvas',delivery);}else{if(change){$('#map_canvas'+delivery).hide();$('#'+delivery+'street').val('');$('#'+delivery+'city').val('');}
$('#'+delivery+'street').css('color','#000000');$('#'+delivery+'city').css('color','#000000');$('#'+delivery+'street').attr('readonly',false);$('#'+delivery+'city').attr('readonly',false);}}
function mapsLoader(lati,longt,elementName){$(elementName).empty();var myLatlng=new google.maps.LatLng(lati,longt);var myOptions={zoom:16,center:myLatlng,disableDefaultUI:true,disableDoubleClickZoom:true,scrollwheel:false,draggable:false,mapTypeId:google.maps.MapTypeId.ROADMAP}
map=new google.maps.Map(document.getElementById(elementName),myOptions);}
function findAdress(elementName,delivery){if($('#'+delivery+'country').val()=='nl'){$(".spinnercontainer").css({position:'relative'});$('#maploader'+delivery).fadeIn();$.ajax({url:'/pchntvCheck.php?adress='+delivery+'&postalcode='+$('#'+delivery+'postalcode').val()+'&number='+$('#'+delivery+'number').val()+'&numberadd='+$('#'+delivery+'numberAdd').val(),dataType:'json',success:function(data){if(data.nothing==0){if($('#'+delivery+'postalcode').val()==''||$('#'+delivery+'number').val()==''){$('#map_canvas'+delivery).show();$('#'+delivery+'street').val('Wordt automatisch gezocht... ');$('#'+delivery+'street').css('color','#B8B8B8');$('#'+delivery+'city').val('Wordt automatisch gezocht...');$('#'+delivery+'city').css('color','#B8B8B8');$('#'+delivery+'lat').val('');$('#'+delivery+'long').val('');$('#'+elementName).fadeTo('fast',0);$('#maploader'+delivery).fadeOut();}else{$('#map_canvas'+delivery).hide();$('#'+delivery+'street').val('');$('#'+delivery+'city').val('');$('#'+delivery+'lat').val('');$('#'+delivery+'long').val('');$('#'+delivery+'street').css('color','#000000');$('#'+delivery+'city').css('color','#000000');$('#'+delivery+'street').attr('readonly',false);$('#'+delivery+'city').attr('readonly',false);$('#maploader'+delivery).fadeOut();}}else if(data.nothing==1){$('#maploader'+delivery).fadeOut();}else{$('#map_canvas'+delivery).show();$('#'+elementName).fadeTo('fast',1,function(){$('#'+delivery+'street').val(data.street);$('#'+delivery+'street').css('color','#000000');$('#'+delivery+'city').val(data.city);$('#'+delivery+'city').css('color','#000000');$('#'+delivery+'street').attr('readonly',true);$('#'+delivery+'city').attr('readonly',true);$('#'+delivery+'lat').val(data.latitude);$('#'+delivery+'long').val(data.longitude);$('#maploader'+delivery).fadeOut();mapsLoader(data.latitude,data.longitude,elementName);});}}});}}
function initPasswordChecker(){var strPassword;var charPassword;var minPasswordLength=5;var baseScore=0,score=0;var num={};num.Excess=0;num.Upper=0;num.Numbers=0;num.Symbols=0;var bonus={};bonus.Excess=3;bonus.Upper=4;bonus.Numbers=3;bonus.Symbols=5;bonus.Combo=0;bonus.FlatLower=0;bonus.FlatNumber=0;$("#password1").bind("keyup",checkVal);$("#newPassword1").bind("keyup",checkVal);function checkVal()
{init();if(charPassword.length>=minPasswordLength)
{baseScore=50;analyzeString();calcComplexity();}
else
{baseScore=0;}
outputResult();}
function init()
{strPassword=$("#password1").val();if($("#password1").val()==undefined)
strPassword=$("#newPassword1").val();charPassword=strPassword.split("");num.Excess=0;num.Upper=0;num.Numbers=0;num.Symbols=0;bonus.Combo=0;bonus.FlatLower=0;bonus.FlatNumber=0;baseScore=0;score=0;}
function analyzeString()
{for(i=0;i<charPassword.length;i++)
{if(charPassword[i].match(/[A-Z]/g)){num.Upper++;}
if(charPassword[i].match(/[0-9]/g)){num.Numbers++;}
if(charPassword[i].match(/(.*[!,@,#,$,%,^,&,*,?,_,~])/)){num.Symbols++;}}
num.Excess=charPassword.length-minPasswordLength;if(num.Upper&&num.Numbers&&num.Symbols)
{bonus.Combo=25;}
else if((num.Upper&&num.Numbers)||(num.Upper&&num.Symbols)||(num.Numbers&&num.Symbols))
{bonus.Combo=15;}
if(strPassword.match(/^[\sa-z]+$/))
{bonus.FlatLower=-15;}
if(strPassword.match(/^[\s0-9]+$/))
{bonus.FlatNumber=-35;}}
function calcComplexity()
{score=baseScore+(num.Excess*bonus.Excess)+(num.Upper*bonus.Upper)+(num.Numbers*bonus.Numbers)+(num.Symbols*bonus.Symbols)+bonus.Combo+bonus.FlatLower+bonus.FlatNumber;}
function outputResult()
{if($("#password1").val()==""||$("#newPassword1").val()=="")
{$("#complexity2").removeClass("default");$("#complexity3").removeClass("weak");$("#complexity4").removeClass("strong");$("#complexity5").removeClass("stronger");$("#complexity6").removeClass("strongest");}
else if(charPassword.length<minPasswordLength)
{$("#complexity2").addClass("default");$("#complexity3").removeClass("weak");$("#complexity4").removeClass("strong");$("#complexity5").removeClass("stronger");$("#complexity6").removeClass("strongest");}
else if(score<50)
{$("#complexity2").addClass("default");$("#complexity3").addClass("weak");$("#complexity4").removeClass("strong");$("#complexity5").removeClass("stronger");$("#complexity6").removeClass("strongest");}
else if(score>=50&&score<75)
{$("#complexity2").addClass("default");$("#complexity3").addClass("weak");$("#complexity4").addClass("strong");$("#complexity5").removeClass("stronger");$("#complexity6").removeClass("strongest");}
else if(score>=75&&score<100)
{$("#complexity2").addClass("default");$("#complexity3").addClass("weak");$("#complexity4").addClass("strong");$("#complexity5").addClass("stronger");$("#complexity6").removeClass("strongest");}
else if(score>=100)
{$("#complexity2").addClass("default");$("#complexity3").addClass("weak");$("#complexity4").addClass("strong");$("#complexity5").addClass("stronger");$("#complexity6").addClass("strongest");}}}
var productBackCounter=-1;var productQuickCompareHistory=new Array();var productQuickCompareGetDataTriggered=false;var quickCompareTimeoutHoverOut;var quickCompareTimeoutHoverIn;var drawnGraphPrice=false;var drawnGraphComposite=false;function priceHistoryGraph()
{if(drawnGraphPrice)
return;var chartProductLabels=$('#chartProductLabels').val();var chartProductLine=$('#chartProductLine').val();var chartProductTips=$('#chartProductTips').val();var chartProductMax=$('#chartProductMax').val();var chartProductMin=$('#chartProductMin').val();if(chartProductLine==undefined)
return;var data=chartProductLine.split(',');for(a in data)
data[a]=parseInt(data[a]);drawnGraphPrice=true;var line=new RGraph.Line('cvs',data);line.Set('chart.curvy',false);line.Set('chart.curvy.tickmarks',false);line.Set('chart.curvy.tickmarks.fill',null);line.Set('chart.curvy.tickmarks.stroke','#aaa');line.Set('chart.curvy.tickmarks.stroke.linewidth',2);line.Set('chart.curvy.tickmarks.size',5);line.Set('chart.ymin',parseInt(chartProductMin))
line.Set('chart.ymax',parseInt(chartProductMax))
line.Set('chart.linewidth',3);line.Set('chart.hmargin',5);line.Set('chart.labels',chartProductLabels.split(','));line.Set('chart.tooltips',chartProductTips.split(','));line.Set('chart.tickmarks','circle');line.Set('chart.gutter.left',40);RGraph.Effects.Fade.In(line,{'frames':5,'duration':500});}
function compositeGraph(){if(drawnGraphComposite)
return;var chartAssemblyPrice=$('#chartAssemblyPrice').val();var chartAssemblyLabel=$('#chartAssemblyLabel').val();if(chartAssemblyPrice==undefined)
return;drawnGraphComposite=true;var data=chartAssemblyPrice.split(',');for(a in data)
data[a]=parseInt(data[a]);var pie=new RGraph.Pie('cvsComposite',data);pie.Set('chart.labels',chartAssemblyLabel.split(','));pie.Set('chart.tooltips',chartAssemblyLabel.split(','));pie.Set('chart.tooltips.event','onmousemove');pie.Set('chart.colors',['#EC0033','#A0D300','#FFCD00','#00B869','#999999','#FF7300','#004CB0','#FA58F4','#2EE5E8','#00BFFF','#01DF3A']);pie.Set('chart.strokestyle','white');pie.Set('chart.linewidth',3);pie.Set('chart.shadow',false);pie.Set('chart.exploded',2);pie.Set('chart.gutter.bottom',40);pie.Set('chart.gutter.top',40);var total=0;$.each(data,function(){total+=this;});for(var i=0;i<data.length;++i){pie.Get('chart.tooltips')[i]=pie.Get('chart.labels')[i]+', '+Math.round(data[i]/(total/100))+' %';}
pie.Draw();}
function quickCompareGetData(productId,callback){if(productQuickCompareGetDataTriggered)
return false;if(!productQuickCompareHistory[productId]){productQuickCompareGetDataTriggered=true;$.ajax({url:window.location.href+'/action/quickcompare/id/'+productId,type:'POST',dataType:'json',success:function(data){productQuickCompareHistory[productId]=data;productQuickCompareGetDataTriggered=false;callback(data);}});}else
callback(productQuickCompareHistory[productId]);}
function quickCompareBenchmark(compareScoreData){if($("#performanceCompare").length===0)
return false;var canvas=document.getElementById('cvsScore');RGraph.Reset(canvas);var mainScoreData=JSON.parse(mainScoreJson);var benchmarkKeys=[];var mainBenchmarkValue=[];var mainBenchmarkLabel=[];var compareBenchmark=[];var keyColors=[];var keyGradiant=[];var compareBenchmarkValue=[];var compareBenchmarkLabel=[];for(var i=0;i<mainScoreData.length;i++){benchmarkKeys.push(mainScoreData[i].Type);mainBenchmarkValue.push(parseInt(mainScoreData[i].Score));mainBenchmarkLabel.push(mainScoreData[i].Score);keyColors.push(mainScoreData[i].Color);keyGradiant.push(mainScoreData[i].Gradiant);}
if(compareScoreData){var compareBenchmarkKeys=[];var compareKeyColors=[];var compareKeyGradiant=[];for(var i=0;i<compareScoreData.length;i++){keyIndex=benchmarkKeys.indexOf(compareScoreData[i].Type);if(keyIndex!=-1)
{compareBenchmarkKeys[keyIndex]=compareScoreData[i].Type;compareBenchmarkValue[keyIndex]=parseInt(compareScoreData[i].Score);compareBenchmarkLabel[keyIndex]=compareScoreData[i].Score;compareKeyColors[keyIndex]=compareScoreData[i].Color;compareKeyGradiant[keyIndex]=compareScoreData[i].Gradiant;}
else
{compareBenchmarkValue[keyIndex]=0;}}}
chartLabels=mainBenchmarkLabel.concat(compareBenchmarkLabel);var hbar=new RGraph.Bar('cvsScore',[mainBenchmarkValue,compareBenchmarkValue]).Set('grouping','grouped').Set('key',benchmarkKeys).Set('key.position.x',10).Set('key.position.y',40).Set('chart.gutter.bottom',10).Set('chart.gutter.top',10).Set('chart.gutter.left',120).Set('chart.gutter.right',0).Set('key.position.gutter.boxed',false).Set('chart.hmargin',30).Set('chart.hmargin.grouped',10).Set('key.colors',keyColors).Set('colors',keyGradiant).Set('tooltips',chartLabels).Set('chart.tooltips.event','onmousemove').Draw();hbar.canvas.onmouseout=function(e)
{RGraph.HideTooltip();RGraph.Redraw();}
drawnGraphScore=true;}
function loadkCompareBenchmarkList(){var i;canvasVar=$('[id^="cvsScore_"]');jsonData=$('[id^="cvsScoreJson_"]');for(i=0;i<canvasVar.length;++i){quickCompareBenchmarkList(canvasVar[i],jsonData[i].defaultValue);}}
function quickCompareBenchmarkList(canvasVar,jsonData){var canvas=canvasVar;RGraph.Reset(canvas);var soreData=JSON.parse(jsonData);var benchmarkKeys=[];var mainBenchmarkValue=[];var mainBenchmarkLabel=[];var keyColors=[];var keyGradiant=[];var compareBenchmarkLabel=[];for(var i=0;i<soreData.length;i++){benchmarkKeys.push(soreData[i].Type);mainBenchmarkValue.push(parseInt(soreData[i].Score));mainBenchmarkLabel.push(soreData[i].Score);keyColors.push(soreData[i].Color);keyGradiant.push(soreData[i].Gradiant);}
var hbar=new RGraph.HBar(canvas,[mainBenchmarkValue]).Set('grouping','grouped').Set('key',benchmarkKeys).Set('key.position.x',0).Set('key.position.y',6).Set('chart.gutter.bottom',15).Set('chart.gutter.top',10).Set('chart.gutter.left',60).Set('chart.gutter.right',15).Set('key.position.gutter.boxed',false).Set('chart.hmargin',10).Set('chart.hmargin.grouped',10).Set('key.colors',keyColors).Set('colors',keyGradiant).Set('xmax',2000).Set('chart.text.size',8).Draw();}
function quickCompare(productId){quickCompareGetData(productId,function(data){featureData=data.Feature;benchmarkData=data.Benchmark;if(productId!=$('#productId').val())
quickCompareCleanup();quickCompareBenchmark(benchmarkData);for(var i=0;i<featureData.length;i++){if($('#'+featureData[i].Id).attr("id")!=featureData[i].Id)
$("[id^='"+featureData[i].Id.split("_")[0]+"']").addClass('changedFeature');var compareLabelHost=$(".quickCompare","[id^='"+featureData[i].Id.split("_")[0]+"'].changedFeature");if(featureData[i].Value=='Y'||featureData[i].Value=='N'||featureData[i].Value=='O'){var compareYesNoLabel=compareLabelHost.children("div");if(compareYesNoLabel.length==0)
compareYesNoLabel=$('<div>').appendTo(compareLabelHost);if(featureData[i].Value=='Y'){compareYesNoLabel.removeClass('featureno').addClass('featureyes');}else
compareYesNoLabel.removeClass('featureyes').addClass('featureno');}else{var compareLabel=compareLabelHost.children("label");if(compareLabel.length==0){compareLabel=$('<label>').appendTo(compareLabelHost);}
compareLabel.text(featureData[i].Value);}}
if(productId==$('#productId').val())
quickCompareCleanup();});}
function quickCompareCleanup(){quickCompareBenchmark();$(".quickCompare",".featureRow").html('');$(".featureRow").removeClass('changedFeature');}
function setCompareProduct(e){if(e.checked){$.ajax({url:'/compare.php?action=addProduct',type:'POST',dataType:'json',data:$("input[name='compare[]']").serialize(),success:function(data){ShowFancyHoverCompare(e,data,'right');}});}else{$.ajax({url:'/compare.php?action=deleteProduct',type:'POST',dataType:'json',data:{'deleteCompare':e.value},success:function(data){ShowFancyHoverCompare(e,data,'right');}});}}
function openConfigSelect(id){$('#productSpinner').fadeIn();$.ajax({url:'/multiproduct.php?action=openConfig',type:'POST',data:{'multiId':id},success:function(){$.ajax({url:window.location.href.split('#')[0],type:'GET',dataType:'text',success:function(data){$('#productContainerDetail').html($(data).find('#productContainerDetail').html());ajaxRefreshProductDetail();}});}});}
function openConfigInput(id){$('#productSpinner').fadeIn();$.ajax({url:'/multiproduct.php?action=openConfig',type:'POST',data:{'multiId':id+'_WEB'+$('#MutltiWebIDInput').val()},success:function(){$.ajax({url:window.location.href.split('#')[0],type:'GET',dataType:'text',success:function(data){$('#productContainerDetail').html($(data).find('#productContainerDetail').html());ajaxRefreshProductDetail();}});}});}
function newConfigSelect(mainProductID){$('#productSpinner').fadeIn();$.ajax({url:'/multiproduct.php?action=newConfig',type:'POST',data:{'mainProduct':mainProductID},success:function(){$.ajax({url:window.location.href.split('#')[0],type:'GET',dataType:'text',success:function(data){$('#productContainerDetail').html($(data).find('#productContainerDetail').html());ajaxRefreshProductDetail();}});}});}
function multiProductSelect(element){document.body.style.cursor='wait';$.ajax({url:'/multiproduct.php?action=select',type:'POST',data:{'select':element.value},success:function(){$.ajax({url:window.location.href,type:'GET',dataType:'text',success:function(data){$('#productContainerDetail').html($(data).find('#productContainerDetail').html());ajaxRefreshProductDetail();document.body.style.cursor='auto';ShowFancyHoverTotalPrice($('#'+$(element).attr('id')));}});}});}
function ShowFancyHoverTotalPrice(element){FancyHoverSetZero();$(".fancyHover").addClass('cartHover');$(".fancyHover .content > h5").show();$(".fancyHover .content > h5").text('Totaalbedrag');$(".fancyHover .content > ul").empty();$(".fancyHover .buttons").hide();$(".fancyHover .content > .totalPrice").show();$(".fancyHover .content > .totalPrice > span").text($('#priceLabelMain').text());lastCompareHoverElement=element;lastCompareHoverPosition='left';PositionFancyHover();}
function subGroupClose(e){$.ajax({url:'/multiproduct.php?action=subGroupClose',type:'POST',data:{'subGroupClose':$(e).attr("id")},success:function(){$.ajax({url:window.location.href,type:'GET',dataType:'text',success:function(data){$('#productContainerDetail').html($(data).find('#productContainerDetail').html());ajaxRefreshProductDetail();}});}});}
function subGroupOpen(e){$.ajax({url:'/multiproduct.php?action=subGroupOpen',type:'POST',data:{'subGroupOpen':$(e).attr("id")},success:function(){$.ajax({url:window.location.href,type:'GET',dataType:'text',success:function(data){$('#productContainerDetail').html($(data).find('#productContainerDetail').html());ajaxRefreshProductDetail();}});}});}
function openMainType(e){$.ajax({url:'/multiproduct.php?action=openMainType',type:'POST',data:{'openMainType':$(e).attr("id")}});}
function toggleThumpContainer(e){if($('#imgthumbContainer').height()==120){$('#imgthumbContainer').fadeTo('fast',0.1);$('#imgthumbContainer').height('100%').fadeIn();$(e).html('inklappen..');$('#imgthumbContainer').fadeTo('fast',1);}else{$('#imgthumbContainer').fadeTo('fast',0.1);$('#imgthumbContainer').height(120).fadeIn();$(e).html('meer afbeeldingen..');$('#imgthumbContainer').fadeTo('fast',1);}}
function setReviewPunt(e,puntstring,type){$.ajax({url:'/review.php?action=Punt',type:'POST',data:{'PuntId':$(e).attr("Id"),'PuntString':$(puntstring).val(),'PuntType':type},success:function(){$.ajax({url:window.location.href,type:'GET',success:function(data){$('#reviewRefreshContainer').html($(data).find('#reviewRefreshContainer').html());overlayImgInit();reviewInit();}});}});}
function reviewSave(conc,score,productid){$.ajax({url:'/review.php?action=Save',type:'POST',data:{'Concl':$(conc).val(),'ProductId':productid},success:function(data){var str=window.location.href;if(data=='published'){window.location.href=str.replace("/action/review","");}else{$.ajax({url:window.location.href,type:'GET',success:function(data){$('#tabPageReviewEdit').html($(data).find('#tabPageReviewEdit').html());overlayImgInit();reviewInit();}});}}});}
function reviewNickname(nickname){$.ajax({url:'/review.php?action=Nickname',type:'POST',data:{'Nickname':nickname},success:function(){window.location.href=window.location.href;}});}
function reviewRate(reviewId,type){$.ajax({url:'/review.php?action=Rate',type:'POST',data:{'ReviewId':reviewId,'Type':type},success:function(data){$.ajax({url:window.location.href,type:'GET',success:function(data){$('#tabPageReview').html($(data).find('#tabPageReview').html());reviewInit();overlayImgInit();}});}});}
function reviewInit(){$("#puntenMinAdd").autocomplete({source:"/review.php?action=PuntenMin",minLength:2});$("#puntenPlusAdd").autocomplete({source:"/review.php?action=PuntenPlus",minLength:2});$("#confirmCheck").click(function(){if($("#confirmCheck").is(":checked")){$("#reviewSaveButton").removeAttr("disabled");}else{$("#reviewSaveButton").attr("disabled","disabled");}});$('input[type=radio].star').rating.options={cancel:'Geen meening',cancelValue:'0',split:0,starWidth:16,callback:function(val){$.ajax({url:'/review.php?action=Score',type:'POST',data:{'ScoreIdString':$(this).attr("name"),'ScoreValue':val,'ScoreForm':$('#reviewScore').serialize()}});},};$('input[type=radio].star').rating();}
var zoomtimeout;function zoomPicture()
{clearTimeout(zoomtimeout);$('#zoomspan').html('zoom afbeelding wordt geladen...');zoomtimeout=setTimeout(function(){$('#zoomspan').html('zoom afbeelding wordt geladen...');jQuery('.zoomImg').remove();jQuery('.zoomIcon').remove();$('#zoomedPic').zoom({on:'grab',url:$('#productImageLargeOverlay').attr('src')+'/z/1',duration:300})},1000);}
$(function(){var url=location.href;if(url.search("bookmark")>-1){$.get(url.replace("#bookmark=","/bookmark/"),function(data){$('#productContainerDetail').html($(data).find('#productContainerDetail').html());$('#productImageLarge').val($('#firstlargeimg').val());initProductDetail();},'html');}});function ajaxRefreshProductDetail(){if(window.location.hash!='#'+$('#hashToTake').val())
productBackCounter=productBackCounter-1;window.location.hash=$('#hashToTake').val();initProductDetail();}
var lastFeatureHoverElement=null;var lastFeatureHoverPosition=null;var featureHoverFadeoutTimer=null;var lastScrollTop=0;function featureHover(){$(".hoverFeature").unbind('mouseenter mouseleave');$(".hoverFeature").hover(function(){$(lastFeatureHoverElement).removeClass("hover");$(".featureHover").hide();lastFeatureHoverElement=this;clearTimeout(featureHoverFadeoutTimer);$(lastFeatureHoverElement).addClass("hover");PositionFeatureHover();},function(){clearTimeout(featureHoverFadeoutTimer);featureHoverFadeoutTimer=setTimeout(function(){$(".featureHover").fadeOut();$(lastFeatureHoverElement).removeClass("hover");lastFeatureHoverElement=null;},1500);});$(".featureHover").hover(function(){clearTimeout(featureHoverFadeoutTimer);$(".featureHover").show();$(lastFeatureHoverElement).addClass("hover");},function(){$(".featureHover").hide();$(lastFeatureHoverElement).removeClass("hover");lastFeatureHoverElement=null;});}
function matchContainerPositioner(){var myElement=$('#productMatchContainer');var EndOfMainOnScreen=$('#EndMainContent').isOnScreen();var viewportTop=$(document).scrollTop();var viewportHeight=$(window).height();var viewportBottom=viewportTop+viewportHeight;var _top=myElement.parent().offset().top;var _height=myElement.parent().height();var _bottom=_top+_height;var bodymargin=parseInt($('body').css("margin-right").replace('px',''))
if((_height<viewportHeight))
{if(viewportTop>_top)
{var virtualOffset=(viewportTop-_top)+_height;virtualOffset=Math.min(virtualOffset,myElement.parent().parent().height());if(EndOfMainOnScreen){myElement.css('position','relative');myElement.css('top',(virtualOffset-_height+5)+'px');myElement.css('bottom','');myElement.css("right",'');}else{myElement.css('position','fixed');myElement.css("right",Math.round(($(window).width()-992+bodymargin)/2)+5);myElement.css('top','58px');}}
else
myElement.css('position','');}
else if(viewportBottom>_bottom)
{if(viewportTop>lastScrollTop)
var scrollDown=true;else
var scrollUp=true;if(scrollUp)
{var virtualOffset=(viewportTop-_top)+_height;virtualOffset=Math.min(virtualOffset,myElement.parent().parent().height());if($('#matchingHeader').isOnScreen())
{myElement.css('position','relative');myElement.css('top',(virtualOffset-_height+5+53)+'px');myElement.css('bottom','');myElement.css("right",'');}}
if(scrollDown)
{var bla=(viewportBottom-_bottom)+_height;bla=Math.min(bla,myElement.parent().parent().height());if($('#matchingFooter').isOnScreen())
{myElement.css('position','relative');myElement.css('top','');myElement.css("right",'');myElement.css('bottom',(-(bla-_height+-10))+'px');}}}
else
myElement.css('position','');lastScrollTop=viewportTop;}
var featureFilterData;var featureFilterChecked=[];function getFeatureFilterData(){$.ajax({url:window.location.href+'/action/filterdata',type:'POST',dataType:'json',data:JSON.stringify(featureFilterChecked),success:function(data){featureFilterData=data;featureFilterChecked=[];$('#productMatchContainer').html(featureFilterData.products);quickComparebinder();$('.featHoImg').removeClass('silver');for(var feature in featureFilterData.feature){if(featureFilterData.feature.hasOwnProperty(feature)){var selectedGroup=false;featureFilterData.feature[feature].values.forEach(function(value){if(!selectedGroup)
$('#'+feature).removeClass('gold');$('#'+feature).addClass('silver');if(value.checked){$('#'+feature).addClass('gold');featureFilterChecked.push(feature+'-'+value.valueId);selectedGroup=true;}});}}}});}
function getProductInsurance(option){var selectedinsurance;if(option>=0)
selectedinsurance=$('#insurancePartner').val();if(option>=1)
selectedinsurance=selectedinsurance+':'+$('#insuranceType').val();if(option>=2)
selectedinsurance=selectedinsurance+':'+$('#insurancePeriod').val();if(option==3)
selectedinsurance=selectedinsurance+':'+$('#insurancePayment').val();$.ajax({url:window.location.href+'/action/insurancedata',type:'POST',dataType:'text',data:{'selectedinsurance':selectedinsurance},success:function(data){$('#tabPageInsurance').html(data);}});}
function removeSelectedFeature(element){var reverseFilterId=$(element).attr('id').replace('rem_','');var reverseFilterIndex=featureFilterChecked.indexOf(reverseFilterId);if(reverseFilterIndex>-1)
featureFilterChecked.splice(reverseFilterIndex,1);getFeatureFilterData();}
function PositionFeatureHover(){var element=lastFeatureHoverElement;var position=lastFeatureHoverPosition;var elementId=$(element).attr('id');if(typeof featureFilterData.feature[elementId]==="undefined")
return;if(element!=null)
{var hoverElement=$(".featureHover");var content=$(".featureHover .content");content.empty();content.append("<h5>Filter op "+featureFilterData.feature[elementId].group.name+"</h5>").append("<div>");featureFilterData.feature[elementId].values.forEach(function(value){var reverseFilterId=elementId+'-'+value.valueId;$('<div><input class="reverseFilter"  id="'+reverseFilterId+'" type="checkbox" '+(featureFilterChecked.indexOf(reverseFilterId)>-1?'checked':'')+' /><label for="'+reverseFilterId+'" ><span class="featureValueName" >'+value.name+'</span><span class="featureValueCount">'+value.count+'</span></label></div>').appendTo($('> div',content));});$('.reverseFilter').unbind("click");$('.reverseFilter').click(function(){var reverseFilterId=$(this).attr('id');if($('#'+reverseFilterId).attr('checked')){featureFilterChecked.push(reverseFilterId);}else{var reverseFilterIndex=featureFilterChecked.indexOf(reverseFilterId);if(reverseFilterIndex>-1)
featureFilterChecked.splice(reverseFilterIndex,1);}
getFeatureFilterData();});var myMy=position=='left'?"right+7 top":"left+7 top-7";var myAt=position=='left'?"left top":"right top";hoverElement.show().position({my:myMy,at:myAt,collision:'flip',of:$(element)});var hoverBottom=hoverElement.offset().top+hoverElement.height();var windowBottom=$(window).height()+$(window).scrollTop();if(hoverBottom>windowBottom)
hoverElement.position({my:myMy,at:myAt,collision:'flip',of:$(element)});}}
function quickComparebinder(){$("input[name=quickcompare]:radio").unbind('click');$("input[name=quickcompare]:radio").click(function(){var previousValue=$(this).attr('previousValue');var name=$(this).attr('name');$('.Format5 .Tiles').removeClass('Selected');$('.Format5 .Tiles .Plate').removeClass('Selected');if(previousValue=='checked'){quickCompare($('#productId').val());$(this).removeAttr('checked');$(this).attr('previousValue',false);}else{quickCompare($(this).val());$(this).closest('.Format5').children('.Format5 .Tiles').addClass('Selected');$(this).closest('.Format5').children('.Format5 .Tiles').children('.Format5 .Tiles .Plate').addClass('Selected');$("input[name="+name+"]:radio").attr('previousValue',false);$(this).attr('previousValue','checked');}});}
function initProductDetail(){$('.featureHover .closeButton').click(function(){$(".featureHover").hide();$(lastFeatureHoverElement).removeClass("hover");lastFeatureHoverElement=null;});quickComparebinder();$('#productSpinner').fadeOut();$('#productImageLarge').val($('#firstlargeimg').val());reviewInit();initHoverTip();drawnGraphPrice=false;drawnGraphComposite=false;quickCompareBenchmark();if(document.getElementById('productMatchContainer')!=null){featureHover();getFeatureFilterData();$(window).resize(function(){matchContainerPositioner();});$(window).scroll(function(){matchContainerPositioner();});}}
function changeOrderPaymentMethod()
{$.ajax({url:'/account_func.php?action=paymentMethod',type:'POST',data:{'OrderPaymentMethod':$("#paymentMethod").val()},success:function(){$("#orderPaymentContainer").load(window.location.href+" #orderPaymentContainer");}});}
function changeOrderPaymentMethodSupportJSON()
{$.ajax({url:'/account_func.php?action=paymentSupportJSON',type:'POST',data:{'OrderPaymentSypportJSON':$("#paymentMethodSupportJSON").val()},success:function(){$("#orderPaymentContainer").load(window.location.href+" #orderPaymentContainer");}});}
function orderItemRequest(OrderItemId,Type){$('.tritemfunc').hide();$('#trorderitemfunc_'+OrderItemId).fadeOut('slow',function(){$('#trorderitemfunc_'+OrderItemId).fadeIn('slow');$('#orderitemfunc_'+OrderItemId).load('/account_func.php?action='+Type+'&orderitemid='+OrderItemId,function(){$('#orderitemfunc_'+OrderItemId).fadeIn('slow');});});}
function colliItemRequest(OrderItemId,Type){$('.tritemfunc').hide();$('#trcollifunc_'+OrderItemId).fadeOut('slow',function(){$('#collifunc_'+OrderItemId).fadeIn('slow');$('#collifunc_'+OrderItemId).load('/account_func.php?action='+Type+'&colliid='+OrderItemId,function(){$('#trcollifunc_'+OrderItemId).fadeIn('slow');});});}
function payOrderDetail(getPayLink,OrderId){$('#spinner').fadeIn();$.ajax({url:'/account_func.php?action=payOrder&orderId='+OrderId,type:'GET',success:function(data){if(getPayLink==1){var timer=setInterval(function(){$.ajax({url:'/account_func.php?action=payLink&paymentId='+data,type:'GET',success:function(payLink){if(payLink.trim()!='false'&&payLink!='')
{window.location.replace(payLink);clearInterval(timer);}}});},750)}else{window.location.href=window.location.href;}}});}
var compareBackCounter=-1;function deleteCompareProduct(e){$.ajax({url:'/compare.php?action=deleteProduct',type:'POST',data:{'deleteCompare':e.value},success:function(){$('#compareContainer').load(window.location.href+' #compareContainer',function(){CompareInitialize2();});}});}
function outOfGroupCompareProduct(e){$.ajax({url:'/compare.php?action=outOfGroupProduct',type:'POST',data:{'outOfGroupCompare':e.value},success:function(){$('#compareContainer').load(window.location.href+' #compareContainer',function(){CompareInitialize2();});}});}
function featureImportantAdd(e){$.ajax({url:'/compare.php?action=featureImportantAdd',type:'POST',data:{'featureImportantAdd':$(e).attr("id")},success:function(){$('#compareContainer').load(window.location.href+' #compareContainer',function(){CompareInitialize2();});}});}
function featureImportantDelete(e){$.ajax({url:'/compare.php?action=featureImportantDelete',type:'POST',data:{'featureImportantDelete':$(e).attr("id")},success:function(){$('#compareContainer').load(window.location.href+' #compareContainer',function(){CompareInitialize2();});}});}
function replaceCompareProduct(e){if($("input[name='replace']:checked").val()==undefined){$('#infomsg').fadeIn();}else{var val=$(e).attr("id");if($(e).attr("id")==undefined)
val=e.value;$.ajax({url:'compare.php?action=replaceProduct',type:'POST',data:{'replaceCompare':val+':'+$("input[name='replace']:checked").val()},success:function(){$('#compareContainer').load(window.location.href+' #compareContainer',function(){CompareInitialize2();});}});}}
function shiftGroup(e){$.ajax({url:'compare.php?action=shiftGroup',type:'POST',data:{'shiftGroup':e},success:function(){$('#compareContainer').load(window.location.href+' #compareContainer',function(){CompareInitialize2();});}});}
function deleteCompareList(){$.ajax({url:'/compare.php?action=deleteList',type:'GET',success:function(){history.go(compareBackCounter);}});}
function CompareInitialize2(){compareBenchmark();if(window.location.hash!='#'+$('#hashToTake').val())
compareBackCounter=compareBackCounter-1;initHoverTip();if($('#hashToTake').val()!='')
window.location.hash=$('#hashToTake').val();else
window.location.hash='';}
function compareBenchmark(){if($("#performanceCompare").length===0)
return false;var canvas=document.getElementById('cvsScore');RGraph.Reset(canvas);var benchmarkCompare=new Array();for(var d=0;d<4;d++){benchmarkCompare[d]=[];if($('#benchmarkCompare'+d+'JSON').val()!=""&&$('#benchmarkCompare'+d+'JSON').val()!="null")
benchmarkCompare[d]=JSON.parse($('#benchmarkCompare'+d+'JSON').val());}
var benchmarkKeys=[];var keyColors=[];var keyGradiant=[];var compareBenchmarkValue=new Array();var compareBenchmarkLabel=new Array();for(var i=0;i<benchmarkCompare.length;i++){compareBenchmarkValue[i]=[];compareBenchmarkLabel[i]=[];}
for(var i=0;i<benchmarkCompare[0].length;i++){benchmarkKeys.push(benchmarkCompare[0][i].Type);compareBenchmarkValue[0].push(parseInt(benchmarkCompare[0][i].Score));compareBenchmarkLabel[0].push(benchmarkCompare[0][i].Score);keyColors.push(benchmarkCompare[0][i].Color);keyGradiant.push(benchmarkCompare[0][i].Gradiant);}
for(var d=1;d<benchmarkCompare.length;d++){for(var i=0;i<benchmarkCompare[d].length;i++){keyIndex=benchmarkKeys.indexOf(benchmarkCompare[d][i].Type);if(keyIndex!=-1)
{compareBenchmarkValue[d][keyIndex]=parseInt(benchmarkCompare[d][i].Score);compareBenchmarkLabel[d][keyIndex]=benchmarkCompare[d][i].Score;}
else
{compareBenchmarkValue[keyIndex]=0;}}}
chartLabels=compareBenchmarkLabel[0].concat(compareBenchmarkLabel[1],compareBenchmarkLabel[2],compareBenchmarkLabel[3]);var hbar=new RGraph.Bar('cvsScore',[compareBenchmarkValue[0],compareBenchmarkValue[1],compareBenchmarkValue[2],compareBenchmarkValue[3]]).Set('grouping','grouped').Set('key',benchmarkKeys).Set('key.position.x',10).Set('key.position.y',40).Set('chart.gutter.bottom',10).Set('chart.gutter.top',10).Set('chart.gutter.left',120).Set('chart.gutter.right',0).Set('key.position.gutter.boxed',false).Set('chart.hmargin',30).Set('chart.hmargin.grouped',10).Set('key.colors',keyColors).Set('colors',keyGradiant).Set('tooltips',chartLabels).Set('chart.tooltips.event','onmousemove').Draw();hbar.canvas.onmouseout=function(e)
{RGraph.HideTooltip();RGraph.Redraw();}
drawnGraphScore=true;}
function CompareInitialize(){var url=location.href;if(url.search("bookmark")>-1&&url.search("compare")>-1){$.get(url.replace("#bookmark=","/bookmark/"),function(data){$('#compareContainer').html($(data).find('#compareContainer'));initHoverTip();compareBenchmark();});}else{CompareInitialize2();}}
(function($){var types=['DOMMouseScroll','mousewheel'];if($.event.fixHooks){for(var i=types.length;i;){$.event.fixHooks[types[--i]]=$.event.mouseHooks;}}
$.event.special.mousewheel={setup:function(){if(this.addEventListener){for(var i=types.length;i;){this.addEventListener(types[--i],handler,false);}}else{this.onmousewheel=handler;}},teardown:function(){if(this.removeEventListener){for(var i=types.length;i;){this.removeEventListener(types[--i],handler,false);}}else{this.onmousewheel=null;}}};$.fn.extend({mousewheel:function(fn){return fn?this.bind("mousewheel",fn):this.trigger("mousewheel");},unmousewheel:function(fn){return this.unbind("mousewheel",fn);}});function handler(event){var orgEvent=event||window.event,args=[].slice.call(arguments,1),delta=0,returnValue=true,deltaX=0,deltaY=0;event=$.event.fix(orgEvent);event.type="mousewheel";if(orgEvent.wheelDelta){delta=orgEvent.wheelDelta/120;}
if(orgEvent.detail){delta=-orgEvent.detail/3;}
deltaY=delta;if(orgEvent.axis!==undefined&&orgEvent.axis===orgEvent.HORIZONTAL_AXIS){deltaY=0;deltaX=-1*delta;}
if(orgEvent.wheelDeltaY!==undefined){deltaY=orgEvent.wheelDeltaY/120;}
if(orgEvent.wheelDeltaX!==undefined){deltaX=-1*orgEvent.wheelDeltaX/120;}
args.unshift(event,delta,deltaX,deltaY);return($.event.dispatch||$.event.handle).apply(this,args);}})(jQuery);(function($){$.fn.lofJSidernews=function(settings){return this.each(function(){new $.lofSidernews(this,settings);});}
$.lofSidernews=function(obj,settings){this.settings={direction:'',mainItemSelector:'li',navInnerSelector:'ul',navSelector:'li',navigatorEvent:'click',wapperSelector:'.sliders-wrap-inner',interval:1200,auto:true,maxItemDisplay:3,startItem:0,navPosition:'vertical',navigatorHeight:100,navigatorWidth:310,duration:600,navItemsSelector:'.navigator-wrap-inner li',navOuterSelector:'.navigator-wrapper',isPreloaded:true,easing:'easeInOutQuad',onPlaySlider:function(obj,slider){},onComplete:function(slider,index){}}
$.extend(this.settings,settings||{});this.nextNo=null;this.previousNo=null;this.maxWidth=this.settings.mainWidth||684;this.wrapper=$(obj).find(this.settings.wapperSelector);var wrapOuter=$('<div class="sliders-wrapper"></div>').width(this.maxWidth);this.wrapper.wrap(wrapOuter);this.slides=this.wrapper.find(this.settings.mainItemSelector);if(!this.wrapper.length||!this.slides.length)return;if(this.settings.maxItemDisplay>this.slides.length){this.settings.maxItemDisplay=this.slides.length;}
this.currentNo=isNaN(this.settings.startItem)||this.settings.startItem>this.slides.length?0:this.settings.startItem;this.navigatorOuter=$(obj).find(this.settings.navOuterSelector);this.navigatorItems=$(obj).find(this.settings.navItemsSelector);this.navigatorInner=this.navigatorOuter.find(this.settings.navInnerSelector);if(this.settings.navigatorHeight==null||this.settings.navigatorWidth==null){this.settings.navigatorHeight=this.navigatorItems.eq(0).outerWidth(true);this.settings.navigatorWidth=this.navigatorItems.eq(0).outerHeight(true);}
if(this.settings.navPosition=='horizontal'){this.navigatorInner.width(this.slides.length*(this.settings.navigatorWidth+5));this.navigatorOuter.width(this.settings.maxItemDisplay*(this.settings.navigatorWidth+5));this.navigatorOuter.height(this.settings.navigatorHeight);}else{this.navigatorInner.height(this.slides.length*this.settings.navigatorHeight);this.navigatorOuter.height(this.settings.maxItemDisplay*this.settings.navigatorHeight);this.navigatorOuter.width(this.settings.navigatorWidth+5);}
this.slides.width(this.settings.mainWidth);this.navigratorStep=this.__getPositionMode(this.settings.navPosition);this.directionMode=this.__getDirectionMode();if(this.settings.direction=='opacity'){this.wrapper.addClass('lof-opacity');$(this.slides).css({'opacity':0,'z-index':1}).eq(this.currentNo).css({'opacity':1,'z-index':3});}else{this.wrapper.css({'left':'-'+this.currentNo*this.maxSize+'px','width':(this.maxWidth)*this.slides.length});}
if(this.settings.isPreloaded){this.preLoadImage(this.onComplete);}else{this.onComplete();}
$buttonControl=$(".button-control",obj);if(this.settings.auto){$buttonControl.addClass("action-stop");}else{$buttonControl.addClass("action-start");}
var self=this;$(obj).hover(function(){self.stop();$buttonControl.addClass("action-start").removeClass("action-stop").addClass("hover-stop");},function(){if($buttonControl.hasClass("hover-stop")){if(self.settings.auto){$buttonControl.removeClass("action-start").removeClass("hover-stop").addClass("action-stop");self.play(self.settings.interval,'next',true);}}});$buttonControl.click(function(){if($buttonControl.hasClass("action-start")){self.settings.auto=true;self.play(self.settings.interval,'next',true);$buttonControl.removeClass("action-start").addClass("action-stop");}else{self.settings.auto=false;self.stop();$buttonControl.addClass("action-start").removeClass("action-stop");}});}
$.lofSidernews.fn=$.lofSidernews.prototype;$.lofSidernews.fn.extend=$.lofSidernews.extend=$.extend;$.lofSidernews.fn.extend({startUp:function(obj,wrapper){seft=this;this.navigatorItems.each(function(index,item){$(item).bind(seft.settings.navigatorEvent,(function(){seft.jumping(index,true);seft.setNavActive(index,item);}));$(item).css({'height':seft.settings.navigatorHeight,'width':seft.settings.navigatorWidth});})
this.registerWheelHandler(this.navigatorOuter,this);this.setNavActive(this.currentNo);this.settings.onComplete(this.slides.eq(this.currentNo),this.currentNo);if(this.settings.buttons&&typeof(this.settings.buttons)=="object"){this.registerButtonsControl('click',this.settings.buttons,this);}
if(this.settings.auto)
this.play(this.settings.interval,'next',true);return this;},onComplete:function(){setTimeout(function(){$('.preload').fadeOut(900,function(){$('.preload').remove();});},400);this.startUp();},preLoadImage:function(callback){var self=this;var images=this.wrapper.find('img');if(images.length==0)
self.onComplete();var count=0;images.each(function(index,image){if(!image.complete){image.onload=function(){count++;if(count>=images.length){self.onComplete();}}
image.onerror=function(){count++;if(count>=images.length){self.onComplete();}}}else{count++;if(count>=images.length){self.onComplete();}}});},navivationAnimate:function(currentIndex){if(currentIndex<=this.settings.startItem||currentIndex-this.settings.startItem>=this.settings.maxItemDisplay-1){this.settings.startItem=currentIndex-this.settings.maxItemDisplay+2;if(this.settings.startItem<0)this.settings.startItem=0;if(this.settings.startItem>this.slides.length-this.settings.maxItemDisplay){this.settings.startItem=this.slides.length-this.settings.maxItemDisplay;}}
this.navigatorInner.stop().animate(eval('({'+this.navigratorStep[0]+':-'+this.settings.startItem*this.navigratorStep[1]+'})'),{duration:500,easing:'easeInOutQuad'});},setNavActive:function(index,item){if((this.navigatorItems)){this.navigatorItems.removeClass('active');$(this.navigatorItems.get(index)).addClass('active');this.navivationAnimate(this.currentNo);}},__getPositionMode:function(position){if(position=='horizontal'){return['left',this.settings.navigatorWidth];}
return['top',this.settings.navigatorHeight];},__getDirectionMode:function(){switch(this.settings.direction){case'opacity':this.maxSize=0;return['opacity','opacity'];default:this.maxSize=this.maxWidth;return['left','width'];}},registerWheelHandler:function(element,obj){element.bind('mousewheel',function(event,delta){var dir=delta>0?'Up':'Down',vel=Math.abs(delta);if(delta>0){obj.previous(true);}else{obj.next(true);}
return false;});},registerButtonsControl:function(eventHandler,objects,self){for(var action in objects){switch(action.toString()){case'next':objects[action].click(function(){self.next(true)});break;case'previous':objects[action].click(function(){self.previous(true)});break;}}
return this;},onProcessing:function(manual,start,end){this.previousNo=this.currentNo+(this.currentNo>0?-1:this.slides.length-1);this.nextNo=this.currentNo+(this.currentNo<this.slides.length-1?1:1-this.slides.length);return this;},finishFx:function(manual){if(manual)this.stop();if(manual&&this.settings.auto){this.play(this.settings.interval,'next',true);}
this.setNavActive(this.currentNo);this.settings.onPlaySlider(this,$(this.slides).eq(this.currentNo));},getObjectDirection:function(start,end){return eval("({'"+this.directionMode[0]+"':-"+(this.currentNo*start)+"})");},fxStart:function(index,obj,currentObj){var s=this;if(this.settings.direction=='opacity'){$(this.slides).stop().animate({opacity:0},{duration:this.settings.duration,easing:this.settings.easing,complete:function(){s.slides.css("z-index","1")
s.slides.eq(index).css("z-index","3");}});$(this.slides).eq(index).stop().animate({opacity:1},{duration:this.settings.duration,easing:this.settings.easing,complete:function(){s.settings.onComplete($(s.slides).eq(index),index);}});}else{this.wrapper.stop().animate(obj,{duration:this.settings.duration,easing:this.settings.easing,complete:function(){s.settings.onComplete($(s.slides).eq(index),index)}});}
return this;},jumping:function(no,manual){this.stop();if(this.currentNo==no)return;var obj=eval("({'"+this.directionMode[0]+"':-"+(this.maxSize*no)+"})");this.onProcessing(null,manual,0,this.maxSize).fxStart(no,obj,this).finishFx(manual);this.currentNo=no;},next:function(manual,item){this.currentNo+=(this.currentNo<this.slides.length-1)?1:(1-this.slides.length);this.onProcessing(item,manual,0,this.maxSize).fxStart(this.currentNo,this.getObjectDirection(this.maxSize),this).finishFx(manual);},previous:function(manual,item){this.currentNo+=this.currentNo>0?-1:this.slides.length-1;this.onProcessing(item,manual).fxStart(this.currentNo,this.getObjectDirection(this.maxSize),this).finishFx(manual);},play:function(delay,direction,wait){this.stop();if(!wait){this[direction](false);}
var self=this;this.isRun=setTimeout(function(){self[direction](true);},delay);},stop:function(){if(this.isRun==null)return;clearTimeout(this.isRun);this.isRun=null;}})})(jQuery)
function BannerInitialize(){$('div[id^="banner"]').lofJSidernews({interval:7500,direction:'opacitys',easing:'easeInOutExpo',duration:1200,auto:true,maxItemDisplay:10,navPosition:'horizontal',navigatorHeight:10,navigatorWidth:10,mainWidth:813,buttons:null});}
function DealsInitialize(){$('div[id^="deals"]').lofJSidernews({interval:10000,direction:'opacitys',easing:'easeInOutExpo',duration:750,auto:true,maxItemDisplay:10,navPosition:'horizontal',navigatorHeight:10,navigatorWidth:10,mainWidth:159,buttons:null});}
var lastCompareHoverElement=null;var lastCompareHoverPosition=null;$(function(){$('.fancyHover .closeButton').click(function(){$(".fancyHover").hide();lastCompareHoverElement=null;});$(window).click(function(event){if($(event.target).parents(".fancyHover").size()==0){$(".fancyHover").hide();lastCompareHoverElement=null;}});$(window).scroll(function(){PositionFancyHover();}).resize(function(){PositionFancyHover();});});function createDeleteHandler(productId)
{return function(){$.ajax({url:'/compare.php?action=deleteProduct',type:'POST',dataType:'json',data:{'deleteCompare':productId},success:function(data){$('input[name="compare[]"]').each(function(){if($(this).attr('value')==productId)
$(this).attr('checked',false);});ShowFancyHoverCompare(null,data,null);}});};}
function FancyHoverSetZero(){$(".fancyHover").removeClass('compareHover');$(".fancyHover").removeClass('cartHover');$(".fancyHover").removeClass('assemblyAddHover');$(".fancyHover").removeClass('assemblyInfoHover');$(".fancyHover .buttons > button").hide();$(".fancyHover .content > h5").text('');$(".fancyHover .content > h5").hide();$(".fancyHover .content > ul").empty();$(".fancyHover .content > .totalPrice > span").text('');$(".fancyHover .content > .infoText").text('');$(".fancyHover .content > .totalPrice").hide();$(".fancyHover .content > .infoText").hide();$(".fancyHover .closeButton").show();$(".fancyHover .buttons").show();}
function ShowFancyHoverCompare(element,products,position)
{FancyHoverSetZero();var hoverElement=$(".fancyHover");var arrowElement=$(".fancyHover .arrow");var content=$(".fancyHover .content");$(".fancyHover").addClass('compareHover');$(".fancyHover .content > h5").show();$(".fancyHover .content > h5").text('vergelijk '+products.length+(products.length>1?' artikelen':' artikel'));$(".fancyHover .buttons > button.compareButton").show();if(products.length<1)
{hoverElement.hide();lastCompareHoverElement=null;return;}
for(i=0;i<products.length;i++){$(".fancyHover .content > ul").append($(products[i]['new']?'<li class="new">':'<li>').append($('<img class="icon">').attr('src',products[i].imageUrl+'/w/35/h/35')).append($('<div class="button">').click(createDeleteHandler(products[i].productId))).append($('<span>').text(products[i].name)));}
if(element!=null)
lastCompareHoverElement=element;if(position!=null)
lastCompareHoverPosition=position;PositionFancyHover();}
function PositionFancyHover()
{var element=lastCompareHoverElement;var position=lastCompareHoverPosition;if(element!=null)
{var hoverElement=$(".fancyHover");var arrowElement=$(".fancyHover .arrow");var content=$(".fancyHover .content");$(arrowElement).removeClass('arrowRight').removeClass('arrowLeft');var myMy=position=='left'?"right-10 top-10":"left+10 top-10";var myAt=position=='left'?"left top":"right top";hoverElement.show().position({my:myMy,at:myAt,collision:'flip',of:$(element)});var hoverBottom=hoverElement.offset().top+hoverElement.height();var windowBottom=$(window).height()+$(window).scrollTop();if(hoverBottom>windowBottom)
hoverElement.position({my:myMy,at:myAt,collision:'flip',of:$(element)});if(hoverElement.offset().left<$(element).offset().left)
$(arrowElement).addClass('arrowRight')
else
$(arrowElement).addClass('arrowLeft')
var diff=$(element).offset().top-hoverElement.offset().top;diff+=Math.round(($(element).height()/2)-(arrowElement.height()/2))
arrowElement.css("top",diff);}}
function createAccountSubmit(){$(".spinnercontainer").css({position:'relative'});$('#spinner').fadeIn();$.ajax({url:'createAccount.php?token='+$('#token').val(),type:'POST',data:$('#createAccountform').serialize(),success:function(data){if(data.indexOf('accountCreated')>-1)
location.href='/createAccount/action/accountCreated';$('#createAccountContainer').html($(data).find('#createAccountContainer').html());$('#spinner').fadeOut();initCreateAccount();}});}
function selecttext(e){$(e).select();}
function removeMonth0(){$("#birthmonth option[value='']").remove();}
function birthdatechange(){var date=new Date();date.setMonth(date.getMonth()-216);$('#tooyoung').fadeOut('slow');if(compareDates($('#birthday').val()+'/'+$('#birthmonth').val()+'/'+$('#birthyear').val(),"d/MM/y",formatDate(date,"dd/MM/y"),"dd/MM/y")==1){$('#tooyoung').stop().fadeIn('slow');}}
function deliveryadresscheck(){if($('#deliveryaddress').is(':checked')){$('#deliveryadresscontainer').fadeIn('slow');}else{$('#deliveryadresscontainer').fadeOut('slow');}}
function iscompanycheck(){if($('#iscompany').is(':checked')){$('#iscompanycontainer').fadeIn('slow');}else{$('#iscompanycontainer').fadeOut('slow');}}
function toggleUsernameField(element){if($(element).is(':checked')){$('#username').val('');$('#username').fadeIn('slow');}else{$('#username').val('');$('#username').fadeOut('slow');}}
function initCreateAccount(){$('input').live("keypress",function(e){if(e.keyCode==13){var inputs=$(this).parents("form").eq(0).find(":input");var idx=inputs.index(this);if(idx==inputs.length-1){inputs[0].select()}else{inputs[idx+1].focus();inputs[idx+1].select();}
return false;}});initPasswordChecker();initHoverTip();}
function initAccountCountdown()
{if(!$("#toAccountPage").length==0){var i=5;setInterval(function(){i--;if(i==0){$("#toAccountPage").html('Naar de accountpagina');location.href='/account';}else
$("#toAccountPage").html('Naar de accountpagina ('+i+')');},1000);}}
var MONTH_NAMES=new Array('January','February','March','April','May','June','July','August','September','October','November','December','Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');var DAY_NAMES=new Array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sun','Mon','Tue','Wed','Thu','Fri','Sat');function LZ(x){return(x<0||x>9?"":"0")+x}
function isDate(val,format){var date=getDateFromFormat(val,format);if(date==0){return false;}return true;}
function compareDates(date1,dateformat1,date2,dateformat2){var d1=getDateFromFormat(date1,dateformat1);var d2=getDateFromFormat(date2,dateformat2);if(d1==0||d2==0){return-1;}else if(d1>d2){return 1;}return 0;}
function formatDate(date,format){format=format+"";var result="";var i_format=0;var c="";var token="";var y=date.getYear()+"";var M=date.getMonth()+1;var d=date.getDate();var E=date.getDay();var H=date.getHours();var m=date.getMinutes();var s=date.getSeconds();var yyyy,yy,MMM,MM,dd,hh,h,mm,ss,ampm,HH,H,KK,K,kk,k;var value=new Object();if(y.length<4){y=""+(y-0+1900);}value["y"]=""+y;value["yyyy"]=y;value["yy"]=y.substring(2,4);value["M"]=M;value["MM"]=LZ(M);value["MMM"]=MONTH_NAMES[M-1];value["NNN"]=MONTH_NAMES[M+11];value["d"]=d;value["dd"]=LZ(d);value["E"]=DAY_NAMES[E+7];value["EE"]=DAY_NAMES[E];value["H"]=H;value["HH"]=LZ(H);if(H==0){value["h"]=12;}else if(H>12){value["h"]=H-12;}else{value["h"]=H;}value["hh"]=LZ(value["h"]);if(H>11){value["K"]=H-12;}else{value["K"]=H;}value["k"]=H+1;value["KK"]=LZ(value["K"]);value["kk"]=LZ(value["k"]);if(H>11){value["a"]="PM";}else{value["a"]="AM";}value["m"]=m;value["mm"]=LZ(m);value["s"]=s;value["ss"]=LZ(s);while(i_format<format.length){c=format.charAt(i_format);token="";while((format.charAt(i_format)==c)&&(i_format<format.length)){token+=format.charAt(i_format++);}if(value[token]!=null){result=result+value[token];}else{result=result+token;}}return result;}
function _isInteger(val){var digits="1234567890";for(var i=0;i<val.length;i++){if(digits.indexOf(val.charAt(i))==-1){return false;}}return true;}
function _getInt(str,i,minlength,maxlength){for(var x=maxlength;x>=minlength;x--){var token=str.substring(i,i+x);if(token.length<minlength){return null;}if(_isInteger(token)){return token;}}return null;}
function getDateFromFormat(val,format){val=val+"";format=format+"";var i_val=0;var i_format=0;var c="";var token="";var token2="";var x,y;var now=new Date();var year=now.getYear();var month=now.getMonth()+1;var date=1;var hh=now.getHours();var mm=now.getMinutes();var ss=now.getSeconds();var ampm="";while(i_format<format.length){c=format.charAt(i_format);token="";while((format.charAt(i_format)==c)&&(i_format<format.length)){token+=format.charAt(i_format++);}if(token=="yyyy"||token=="yy"||token=="y"){if(token=="yyyy"){x=4;y=4;}if(token=="yy"){x=2;y=2;}if(token=="y"){x=2;y=4;}year=_getInt(val,i_val,x,y);if(year==null){return 0;}i_val+=year.length;if(year.length==2){if(year>70){year=1900+(year-0);}else{year=2000+(year-0);}}}else if(token=="MMM"||token=="NNN"){month=0;for(var i=0;i<MONTH_NAMES.length;i++){var month_name=MONTH_NAMES[i];if(val.substring(i_val,i_val+month_name.length).toLowerCase()==month_name.toLowerCase()){if(token=="MMM"||(token=="NNN"&&i>11)){month=i+1;if(month>12){month-=12;}i_val+=month_name.length;break;}}}if((month<1)||(month>12)){return 0;}}else if(token=="EE"||token=="E"){for(var i=0;i<DAY_NAMES.length;i++){var day_name=DAY_NAMES[i];if(val.substring(i_val,i_val+day_name.length).toLowerCase()==day_name.toLowerCase()){i_val+=day_name.length;break;}}}else if(token=="MM"||token=="M"){month=_getInt(val,i_val,token.length,2);if(month==null||(month<1)||(month>12)){return 0;}i_val+=month.length;}else if(token=="dd"||token=="d"){date=_getInt(val,i_val,token.length,2);if(date==null||(date<1)||(date>31)){return 0;}i_val+=date.length;}else if(token=="hh"||token=="h"){hh=_getInt(val,i_val,token.length,2);if(hh==null||(hh<1)||(hh>12)){return 0;}i_val+=hh.length;}else if(token=="HH"||token=="H"){hh=_getInt(val,i_val,token.length,2);if(hh==null||(hh<0)||(hh>23)){return 0;}i_val+=hh.length;}else if(token=="KK"||token=="K"){hh=_getInt(val,i_val,token.length,2);if(hh==null||(hh<0)||(hh>11)){return 0;}i_val+=hh.length;}else if(token=="kk"||token=="k"){hh=_getInt(val,i_val,token.length,2);if(hh==null||(hh<1)||(hh>24)){return 0;}i_val+=hh.length;hh--;}else if(token=="mm"||token=="m"){mm=_getInt(val,i_val,token.length,2);if(mm==null||(mm<0)||(mm>59)){return 0;}i_val+=mm.length;}else if(token=="ss"||token=="s"){ss=_getInt(val,i_val,token.length,2);if(ss==null||(ss<0)||(ss>59)){return 0;}i_val+=ss.length;}else if(token=="a"){if(val.substring(i_val,i_val+2).toLowerCase()=="am"){ampm="AM";}else if(val.substring(i_val,i_val+2).toLowerCase()=="pm"){ampm="PM";}else{return 0;}i_val+=2;}else{if(val.substring(i_val,i_val+token.length)!=token){return 0;}else{i_val+=token.length;}}}if(i_val!=val.length){return 0;}if(month==2){if(((year%4==0)&&(year%100!=0))||(year%400==0)){if(date>29){return 0;}}else{if(date>28){return 0;}}}if((month==4)||(month==6)||(month==9)||(month==11)){if(date>30){return 0;}}if(hh<12&&ampm=="PM"){hh=hh-0+12;}else if(hh>11&&ampm=="AM"){hh-=12;}var newdate=new Date(year,month-1,date,hh,mm,ss);return newdate.getTime();}
function parseDate(val){var preferEuro=(arguments.length==2)?arguments[1]:false;generalFormats=new Array('y-M-d','MMM d, y','MMM d,y','y-MMM-d','d-MMM-y','MMM d');monthFirst=new Array('M/d/y','M-d-y','M.d.y','MMM-d','M/d','M-d');dateFirst=new Array('d/M/y','d-M-y','d.M.y','d-MMM','d/M','d-M');var checkList=new Array('generalFormats',preferEuro?'dateFirst':'monthFirst',preferEuro?'monthFirst':'dateFirst');var d=null;for(var i=0;i<checkList.length;i++){var l=window[checkList[i]];for(var j=0;j<l.length;j++){d=getDateFromFormat(val,l[j]);if(d!=0){return new Date(d);}}}return null;}
var activeSliderButton=null;var activeSliderMoved=false;var activeSliders={};var sliderButtonGrabPos=0;var filterNoBackTimer;var filterSearchtextTimer;var filterNoBack;var mainNotFilter=0;function filter_update(hashToAdd){window.clearTimeout(filterNoBackTimer);var filterControls=window['filterControls'];var filterData="";for(var i=0;i<filterControls.length;i++)
{var toggleButton=document.getElementById('filter_'+filterControls[i].id+'_toggle')
var value=null;switch(filterControls[i].type)
{case'checklist':value=filter_checklist_getValue(filterControls[i].id);break;case'slider':value=filter_slider_getValue(filterControls[i].id);break;}
if(value)
{if(toggleButton)
if(toggleButton.className=="toggleButtonOff")
value="!"+value;if(filterData!="")
filterData+="|";filterData+=filterControls[i].id+':'+value;}}
var moreButtonState="|more:0";if($("#frmFilter .optional").is(":visible"))
{var moreButtonState="|more:1";}
var randomItem=Math.round(Math.random()*100);$('#filterResetButton').fadeIn();if(filterData==""){filterData="reset";$('#filterResetButton').fadeOut();}
var newhashToAdd;var hashToTake=document.hashForm.hashToTake.value;if(hashToAdd=="filterreset"){window.location.hash='';return;}else if(!hashToAdd){newhashToAdd=hashToTake;}else{tempHashToTake=hashToTake;tempHashToTake=replacefilter('searchtext:(.*)+',hashToAdd.split("|"),tempHashToTake);tempHashToTake=replacefilter('ink:[0-9]+(,[0-9]+)*',hashToAdd.split("|"),tempHashToTake);tempHashToTake=replacefilter('page:[0-9]+',hashToAdd.split("|"),tempHashToTake);tempHashToTake=replacefilter('perp:[0-9]+',hashToAdd.split("|"),tempHashToTake);tempHashToTake=replacefilter('listtype:[0-9]+',hashToAdd.split("|"),tempHashToTake);tempHashToTake=replacefilter('orderby:[A-z]+',hashToAdd.split("|"),tempHashToTake);newhashToAdd=tempHashToTake
if(newhashToAdd==hashToTake)
newhashToAdd=hashToTake+"|"+hashToAdd;}
filterNoBack=true;window.location.hash='filter='+base64_encode(filterData+moreButtonState+"|"+newhashToAdd);}
function replacefilter(reg,values,str){for(var i in values){var item=values[i];var re1=new RegExp(item.split(":")[0]);if(str.match(re1)&&reg.split(":")[0]==item.split(":")[0]){var re=new RegExp(reg,"g");return str.replace(re,item);}}
return str;}
function searchtext_keyup(control){window.clearTimeout(filterSearchtextTimer);filterSearchtextTimer=setTimeout(function(){changeHash('searchtext:'+$.trim(control.value),0)},1000);}
function changeHash(hashToAdd,noFilter){filter_update(hashToAdd);mainNotFilter=noFilter;}
function changePage(url,element){$('#spinner').fadeIn();if(url.indexOf("#")===-1){window.location.href=url;}else{urlparts=url.split("#");$('#productListHost').load(urlparts[0]+'/refresh/2 #productListHost',{'filter':urlparts[1].replace("filter=","")},function(){if(filterNoBack==true){if(mainNotFilter!=1){filterRefresh(url);}
mainNotFilter=0;filterNoBackTimer=setTimeout(function(){filterNoBack=false;},1500);}else{$.ajax({url:urlparts[0]+'/refresh/1',dataType:'text',type:'POST',data:{'filter':urlparts[1].replace("filter=","")},success:function(data){$('#filterListHost').html($(data));$('#filterListHost .slider').each(function(){slider_updatePos(slider_getElements(this.id));});}});filterNoBack==true;}
$('#productContainer').css('display','relative');repositionProductList(false);NoEditStarsInitialize();$('#spinner').hide();initHoverTip();loadkCompareBenchmarkList();});}}
function FilterInitialize(){$('#filterListHost .slider').each(function(){slider_updatePos(slider_getElements(this.id));});if($('#productContainer').length)
$(window).scroll(function(){repositionProductList(true);}).resize(function(){repositionProductList(true);});$(window).hashchange(function(){changePage(location.href);})
var url=location.href;if(url.search("filter")>-1)
changePage(location.href);$('html').bind('touchstart',function(e){var cancel=false;for(var i=0;i<event.changedTouches.length;i++){var curTouch=event.changedTouches[i];var target=null;if(curTouch.target.className=='startSlider'||curTouch.target.className=='endSlider')
target=curTouch.target;else
$('.slider .startSlider, .slider .endSlider').each(function(){var left=$(this).offset().left;var top=$(this).offset().top;var right=left+$(this).width();var bottom=top+$(this).height();left-=5;top-=5;right+=5;bottom+=5;if(curTouch.pageX>=left&&curTouch.pageX<=right&&curTouch.pageY>=top&&curTouch.pageY<=bottom){target=this;}});if(target!=null){cancel=true;activeSliders[curTouch.identifier]={activeButton:target,offset:curTouch.pageX-target.offsetLeft,moved:false};}}
if(cancel)
event.preventDefault();});$('html').bind('touchmove',function(e){var cancel=false;for(var i=0;i<event.changedTouches.length;i++){var curTouch=event.changedTouches[i];var activeSliderData=activeSliders[curTouch.identifier];if(activeSliderData){cancel=true;var data=slider_handle_drag(activeSliderData.activeButton,activeSliderData.moved,curTouch.pageX-activeSliderData.offset);activeSliderData.activeButton=data.activeButton;activeSliderData.moved=data.moved;}}
if(cancel)
event.preventDefault();});$('html').bind('touchend',function(e){var cancel=false;for(var i=0;i<event.changedTouches.length;i++){var curTouch=event.changedTouches[i];var activeSliderData=activeSliders[curTouch.identifier];if(activeSliderData){cancel=true;activeSliders[curTouch.identifier]=null;filter_update();}}
if(cancel)
event.preventDefault();});}
function prepareReposition(){}
function repositionProductList(scrollAction){if(!scrollAction||($(window).scrollTop()<($('#productContainer').offset().top-53)))
{var table=$('#productContainer').parents('table').first();var top=($(window).scrollTop()-table.offset().top+53);top=Math.max(top,0);top=Math.min(top,table.height()-$('#productContainer').height());$('#productContainer').css('top',top+'px');}}
function filterRefresh(url){$.ajax({url:urlparts[0]+'/refresh/1/filterdata/count',dataType:'json',type:'POST',data:{'filter':urlparts[1].replace("filter=","")},success:function(data){for(var i=0;i<data.length;i++){for(var j=0;j<data[i].Values.length;j++){if(data[i].Values[j].ProductCount!=null)
productCount=data[i].Values[j].ProductCount
else
productCount="";$('#filter_'+data[i].Id+'_'+data[i].Values[j].Id).parent().children('label').children('.filterspanclass').text(productCount)
$('#Group'+data[i].Id+' > .checkboxHost').append($('#filter_'+data[i].Id+'_'+data[i].Values[j].Id).parent());}
if($('#Group'+data[i].Id+' > .checkboxHost > div').length>7){var expanded=$('#Group'+data[i].Id+' > .checkboxHost > div.optionalValue').css('display')!='none';var index=0;$('#Group'+data[i].Id+' > .checkboxHost').children('div').each(function(){var checked=$('> input:checkbox',this).is(':checked');if(index<6)
{$(this).removeClass('optionalValue').show();}
else
{if(!checked)
$(this).addClass('optionalValue');else
$(this).removeClass('optionalValue');if(!expanded&&!checked){$(this).hide();}else
$(this).show();}
index++;});}}}});}
function toggleHiddenValues(element){prepareReposition();$(element).parent().find(".filtervaluetoggle").toggle();$(element).parent().find(".optionalValue").slideToggle('fast',repositionProductList);}
function toggleHiddenFilters(button,hide){prepareReposition();$("#frmFilter .filterButton").toggle();if(hide)
$("#frmFilter .optional").slideUp('fast',repositionProductList);else
$("#frmFilter .optional").slideDown('fast',repositionProductList);}
function toggleGroupFilters(e){if($("#"+e).parents('.optional').length<=0)
return;prepareReposition();$("#"+e).slideToggle('fast',repositionProductList);$('#filterListHost .slider').each(function(){slider_updatePos(slider_getElements(this.id));});}
function filter_checklist_getValue(id){var elements=document.getElementsByName('filter_'+id);var result="";for(var j=0;j<elements.length;j++)
{if(elements[j].checked)
{if(result!="")
result+=",";result+=elements[j].value;}}
return result;}
function filter_slider_getValue(id){var elements=slider_getElements('slider_'+id);if(!elements)
return null;if(!$(elements.start).is(':visible'))
if((elements.start.offsetLeft==0)&&(elements.end.offsetLeft==0))
return null;if((elements.start.offsetLeft==0)&&(elements.end.offsetLeft==122))
{$(elements.base).parent().parent('.defoptional').addClass('optional');return null;}
else
$(elements.base).parent().parent('.optional').removeClass('optional').addClass('defoptional');var startValue=Math.min(elements.data.maxValue,Math.floor((elements.start.offsetLeft/(122/((elements.data.maxValue-elements.data.minValue)+1)))+elements.data.minValue));var endValue=Math.min(elements.data.maxValue,Math.floor((elements.end.offsetLeft/(122/((elements.data.maxValue-elements.data.minValue)+1)))+elements.data.minValue));if(elements.data.valueRange)
{var endValueRange=elements.data.valueRange[Math.floor(endValue)]
if(elements.end.offsetLeft>=122)
endValueRange="null";var result=elements.data.valueRange[Math.floor(startValue)]+":"+endValueRange;result=result+":"+elements.start.offsetLeft+":"+elements.end.offsetLeft;return result;}
if(elements.data.values)
{var result=elements.data.values.slice(Math.floor(startValue),Math.ceil(endValue)+1).join();result=result+":"+elements.start.offsetLeft+":"+elements.end.offsetLeft;return result;}
return""+Math.floor(startValue)+":"+Math.ceil(endValue)+":"+elements.start.offsetLeft+":"+elements.end.offsetLeft;}
function tooglebutton_click(sender,event){sender.className=(sender.className=="toggleButtonOn"?"toggleButtonOff":"toggleButtonOn");filter_update();}
function sliderbutton_mousedown(sender,event){if(!event)event=window.event;sliderButtonGrabPos=event.clientX-sender.offsetLeft;activeSliderButton=sender;activeSliderMoved=false;if(event.preventDefault)
event.preventDefault();}
function sliderbutton_mouseout(event){if(!event)event=window.event;}
var slider_width=133;var slider_handle_width=11;function slider_getElements(id){var baseElement=document.getElementById(id);if(baseElement==null)
return null;var activeSliderStart=null;var activeSliderEnd=null;var activeSliderStartLabel=null;var activeSliderEndLabel=null;var activeSliderFill=null;for(i=0;i<baseElement.childNodes.length;i++)
{var curItem=baseElement.childNodes[i];if(curItem.tagName&&(curItem.tagName.toLowerCase()=="div"))
{if(curItem.className=="startSlider")
activeSliderStart=curItem;if(curItem.className=="endSlider")
activeSliderEnd=curItem;if(curItem.className=="startLabel")
activeSliderStartLabel=curItem;if(curItem.className=="endLabel")
activeSliderEndLabel=curItem;if(curItem.className=="fill")
activeSliderFill=curItem;}}
return{'base':baseElement,'data':window['sliders_'+id],'start':activeSliderStart,'end':activeSliderEnd,'startLabel':activeSliderStartLabel,'endLabel':activeSliderEndLabel,'fill':activeSliderFill};}
function sliderbar_mousedown(sender,event){if(!event)event=window.event;var slider=slider_getElements(sender.parentElement.id);var newPos=event.clientX-slider.base.offsetLeft;var activeSliderButton=slider.start;var flipPoint=((slider.end.offsetLeft-slider.start.offsetLeft)/2)+slider.start.offsetLeft;if(newPos>flipPoint)
activeSliderButton=slider.end;newPos=newPos-(activeSliderButton.offsetWidth/2);if(activeSliderButton==slider.start)
newPos=Math.max(0,Math.min(slider.end.offsetLeft-11,newPos));if(activeSliderButton==slider.end)
newPos=Math.max(slider.start.offsetLeft+11,Math.min(122,newPos));activeSliderButton.style.left=newPos+'px';slider_updatePos(slider);filter_update();}
function sliderbutton_dblclick(sender,event){if(!event)event=window.event;var slider=slider_getElements(sender.parentElement.id);var other=slider.start==sender?slider.end:slider.start;other.style.left=sender.offsetLeft+'px';slider_updatePos(slider);filter_update();}
function sliderbutton_mouseover(event){if(!event)event=window.event;id='slider_price';if(activeSliderButton!=null)
{var newPos=event.clientX-sliderButtonGrabPos;var data=slider_handle_drag(activeSliderButton,activeSliderMoved,newPos);activeSliderButton=data.activeButton;activeSliderMoved=data.moved;}}
function slider_handle_drag(activeSliderButton,activeSliderMoved,newPos){var slider=slider_getElements(activeSliderButton.parentElement.id);if(activeSliderButton==slider.end)
if(!activeSliderMoved)
if(slider.start.offsetLeft==slider.end.offsetLeft)
if(newPos<slider.start.offsetLeft)
activeSliderButton=slider.start;var newPosStart=slider.start.offsetLeft;var newPosEnd=slider.end.offsetLeft;if(activeSliderButton==slider.start)
{newPosStart=Math.max(0,Math.min(122,newPos));if(newPosStart>newPosEnd)
newPosEnd=newPosStart;}
if(activeSliderButton==slider.end)
{newPosEnd=Math.max(0,Math.min(122,newPos));if(newPosStart>newPosEnd)
newPosStart=newPosEnd;}
if(activeSliderButton.offsetLeft!=newPos)
activeSliderMoved=true;slider.start.style.left=newPosStart+'px';slider.end.style.left=newPosEnd+'px';slider_updatePos(slider);return{activeButton:activeSliderButton,moved:activeSliderMoved};}
function slider_getPositionLabel(slider,handle){var value=handle.offsetLeft;var currentValue=Math.min(slider.data.maxValue,Math.floor((value/(122/((slider.data.maxValue-slider.data.minValue)+1)))+slider.data.minValue));if(slider.data.displayValues)
{currentValue=handle==slider.start?Math.floor(currentValue):Math.ceil(currentValue);result=slider.data.displayValues[currentValue];if(slider.data.valueRange&&handle.offsetLeft==122)
result='> '+result;if(slider.data.valueRange&&handle.offsetLeft<122&&slider.start.offsetLeft==slider.end.offsetLeft)
result='+/- '+result;return result;}
var signIndex=0;while(currentValue>=slider.data.signStep)
{currentValue=currentValue/slider.data.signStep;signIndex+=1;}
currentValue=handle==slider.start?Math.floor(currentValue):Math.ceil(currentValue);currentValue=slider.data.sign[signIndex].replace('%s',currentValue);return currentValue;}
function slider_updatePos(slider){currentValue=slider_getPositionLabel(slider,slider.start);$(slider.startLabel).text(currentValue);var startWidth=$(slider.startLabel).width();var startLeft=slider.start.offsetLeft;startLeft-=Math.max(0,((startLeft+startWidth)-133));slider.startLabel.style.left=(startLeft)+'px';currentValue=slider_getPositionLabel(slider,slider.end);$(slider.endLabel).text(currentValue);var endWidth=$(slider.endLabel).width();var endRight=(133-slider.end.offsetLeft)-11;endRight-=Math.max(0,startLeft-((133-endRight)-endWidth));endRight=Math.max(0,endRight);slider.endLabel.style.right=(endRight)+'px';if(slider.start.offsetLeft==slider.end.offsetLeft)
$(slider.startLabel).hide();else
$(slider.startLabel).show();if(slider.fill!=null){slider.fill.style.left=(slider.start.offsetLeft+5)+'px';slider.fill.style.width=(slider.end.offsetLeft-slider.start.offsetLeft)+'px';slider.fill.style.backgroundPosition='-'+(slider.start.offsetLeft+5)+'px -9px';}}
function sliderbutton_mouseup(){if(activeSliderButton!=null)
{activeSliderButton=null;filter_update();}}
function base64_encode(data){var b64="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var o1,o2,o3,h1,h2,h3,h4,bits,i=0,ac=0,enc="",tmp_arr=[];if(!data){return data;}
do{o1=data.charCodeAt(i++);o2=data.charCodeAt(i++);o3=data.charCodeAt(i++);bits=o1<<16|o2<<8|o3;h1=bits>>18&0x3f;h2=bits>>12&0x3f;h3=bits>>6&0x3f;h4=bits&0x3f;tmp_arr[ac++]=b64.charAt(h1)+b64.charAt(h2)+b64.charAt(h3)+b64.charAt(h4);}while(i<data.length);enc=tmp_arr.join('');var r=data.length%3;return(r?enc.slice(0,r-3):enc)+'==='.slice(r||3);}
var map;var markers=[];var timerShopSorter;var noCenterEvent=true;var pinImageUser;var pinImageShop;var markerUser=null;var markerDestination;var directionDisplay;var directionsService;var mapCanvasShopHoverTimer;var mapCanvasRouteHoverTimer;function ShopPageInitialize(){directionsService=new google.maps.DirectionsService();pinImageUser=new google.maps.MarkerImage("http://chart.apis.google.com/chart?chst=d_map_pin_icon&chld=home|"+'FF7E73',new google.maps.Size(21,34),new google.maps.Point(0,0),new google.maps.Point(10,34));pinImageShop=new google.maps.MarkerImage("http://chart.apis.google.com/chart?chst=d_map_pin_icon&chld=shoppingcart|"+'0099FF',new google.maps.Size(21,34),new google.maps.Point(0,0),new google.maps.Point(10,34));var myOptions={center:new google.maps.LatLng(52.132633,5.291266),zoom:7,maxZoom:15,minZoom:6,zoomControl:true,scrollwheel:false,panControl:true,mapTypeId:google.maps.MapTypeId.ROADMAP,disableDefaultUI:true};map=new google.maps.Map(document.getElementById("map_canvas_shops"),myOptions);setMarkers(map,locations);google.maps.event.addListener(map,'drag',function(){if(markerUser)
markerUser.setMap(null);markerUser=null;});google.maps.event.addListener(map,'center_changed',function(){if(markerUser)
geoloca=markerUser.getPosition();else
geoloca=map.getCenter();calcDistance(geoloca.lat(),geoloca.lng());noCenterEvent=false;});map.setCenter(new google.maps.LatLng(52.132633,5.291266));$("#map_canvas_shops").hover(function(){clearTimeout(mapCanvasShopHoverTimer);mapCanvasShopHoverTimer=setTimeout(function(){map.set('scrollwheel',true);},750);},function(){clearTimeout(mapCanvasShopHoverTimer);map.set('scrollwheel',false);});$('#search_address').live("keypress",function(e){if(e.keyCode==13){searchAdress();}});}
function searchAdress(){var addressField=$('#search_address').val();var geocoder=new google.maps.Geocoder();if(addressField!=''&&addressField!='Plaats/Postcode/Straat...')
geocoder.geocode({'address':'netherlands '+addressField},function(results,status){if(status==google.maps.GeocoderStatus.OK){var loc=results[0].geometry.location;if(markerUser)
markerUser.setMap(null);markerUser=new google.maps.Marker({position:loc,map:map,icon:pinImageUser});var closestmarker=find_closest_marker(loc);var newCenterLatLng=[];newCenterLatLng.push(new google.maps.LatLng(loc.lat(),loc.lng()));newCenterLatLng.push(new google.maps.LatLng(markers[closestmarker].position.lat(),markers[closestmarker].position.lng()));var latlngbounds=new google.maps.LatLngBounds();for(var i=0;i<newCenterLatLng.length;i++){latlngbounds.extend(newCenterLatLng[i]);}
map.fitBounds(latlngbounds);}});};function rad(x){return x*Math.PI/180;};function find_closest_marker(latLng){var lat=latLng.lat();var lng=latLng.lng();var R=6371;var distances=[];var closest=-1;for(i=0;i<markers.length;i++){var mlat=markers[i].position.lat();var mlng=markers[i].position.lng();var dLat=rad(mlat-lat);var dLong=rad(mlng-lng);var a=Math.sin(dLat/2)*Math.sin(dLat/2)+
Math.cos(rad(lat))*Math.cos(rad(lat))*Math.sin(dLong/2)*Math.sin(dLong/2);var c=2*Math.atan2(Math.sqrt(a),Math.sqrt(1-a));var d=R*c;distances[i]=d;if(closest==-1||d<distances[closest]){closest=i;}}
return closest;};function calcDistance(lat,lng){if(noCenterEvent)
return false;clearTimeout(timerShopSorter);timerShopSorter=setTimeout(function(){var R=6371;var distances=[];var closest=-1;for(i=0;i<locations.length;i++){var mlat=locations[i]['Lat'];var mlng=locations[i]['Lng'];var dLat=rad(mlat-lat);var dLong=rad(mlng-lng);var a=Math.sin(dLat/2)*Math.sin(dLat/2)+
Math.cos(rad(lat))*Math.cos(rad(lat))*Math.sin(dLong/2)*Math.sin(dLong/2);var c=2*Math.atan2(Math.sqrt(a),Math.sqrt(1-a));var d=R*c;$('.Distant','#shop_'+locations[i]['Id']).html('afstand +/- '+Math.round(d*100)/100+' km');$('#shop_'+locations[i]['Id']).attr('data-sort',Math.round(d*100)/100);}
$('.ShopTilesBig').siblings().removeClass('ShopTilesHidden').addClass('ShopTilesSmall');$('.ShopTilesBig').removeClass('ShopTilesBig').addClass('ShopTilesSmall');var list=$('.ShopList');var listItems=list.find("[class*='ShopTiles']").sort(function(a,b){return $(a).attr('data-sort')-$(b).attr('data-sort');});list.find("[class*='ShopTiles']").remove();list.append(listItems);$('.ShopList').children(':first').removeClass('ShopTilesSmall').addClass('ShopTilesBig');$('.ShopList').children(':nth-child(n+6)').removeClass('ShopTilesSmall').addClass('ShopTilesHidden');},500);}
function subVesMoreInfo(id,zoomTo,scrollTo)
{noCenterEvent=true;$('#shop_'+id).removeClass('ShopTilesSmall').removeClass('ShopTilesHidden').addClass('ShopTilesBig').siblings().removeClass('ShopTilesBig').removeClass('ShopTilesHidden').addClass('ShopTilesSmall');$('#shop_'+id).siblings().find('.Plate').removeClass('Selected');$('#shop_'+id).find('.Plate').addClass('Selected');for(var i=0;i<markers.length-5;i++)
$('.ShopList').children('.ShopTilesSmall:last').removeClass('ShopTilesSmall').addClass('ShopTilesHidden');for(var i=0;i<markers.length;i++){if(markers[i].id==id){if(zoomTo==(zoomTo=typeof zoomTo!=='undefined'?true:zoomTo)){map.setZoom(14);map.panTo(markers[i].position);var infoLocation=markers[i].position;}else
var infoLocation=markers[i].position;break;}}
$.get(document.URL+'/shop/'+id,function(data){$('#tabDetailVestiging').html($(data).find('#tabDetailVestiging').html());initializeRoutePlanner(infoLocation);var addressField=$('#search_address').val();if(addressField!=''&&addressField!='Plaats/Postcode/Straat...'){$("#routeStart").val(addressField);calcRoute()}
var viewport=$('body, html');if(scrollTo){viewport.animate({scrollTop:$('#tabDetailVestiging').offset().top-50},1000);}},'html');}
function setMarkers(map,locations){var marker,i;for(i=0;i<locations.length;i++)
{var lat=locations[i]['Lat']
var long=locations[i]['Lng']
var idVes=locations[i]['Id']
var titleVes=locations[i]['Name']
latlngset=new google.maps.LatLng(lat,long);var marker=new google.maps.Marker({map:map,title:titleVes,position:latlngset,icon:pinImageShop,id:idVes});map.setCenter(marker.getPosition())
google.maps.event.addListener(marker,'click',(function(marker){return function(){subVesMoreInfo(marker.get("id"),false,false);};})(marker));markers.push(marker);}}
function searchBoxShops_focus(control)
{if(control.value=="Plaats/Postcode/Straat...")
control.value="";control.select();}
function searchBoxShops_blur(control)
{if(control.value=="")
control.value="Plaats/Postcode/Straat...";}
function initializeRoutePlanner(infoLocation){var rendererOptions={draggable:true};directionsDisplay=new google.maps.DirectionsRenderer(rendererOptions);var myOptions={zoom:13,maxZoom:17,minZoom:7,center:infoLocation,mapTypeId:google.maps.MapTypeId.ROADMAP,mapTypeControl:false};var map=new google.maps.Map(document.getElementById("map_canvas_route"),myOptions);directionsDisplay.setMap(map);directionsDisplay.setPanel(document.getElementById("directionsPanel"));markerDestination=new google.maps.Marker({position:infoLocation,map:map,title:'test',icon:pinImageShop});$("#map_canvas_route").hover(function(){clearTimeout(mapCanvasRouteHoverTimer);mapCanvasRouteHoverTimer=setTimeout(function(){map.set('scrollwheel',true);},750);},function(){clearTimeout(mapCanvasRouteHoverTimer);map.set('scrollwheel',false);});}
function calcRoute(){var travelMode=$('input[name="travelMode"]:checked').val();var start=$("#routeStart").val();if(travelMode=='TRANSIT'){via='';}
var waypoints=[];var request={origin:'Netherlands '+start,destination:markerDestination.position,waypoints:waypoints,unitSystem:google.maps.UnitSystem.METRIC,travelMode:google.maps.DirectionsTravelMode[travelMode]};directionsService.route(request,function(response,status){if(status==google.maps.DirectionsStatus.OK){$('#directionsPanel').empty();directionsDisplay.setDirections(response);}else{if(status=='ZERO_RESULTS'){alert('No route could be found between the origin and destination.');}else if(status=='UNKNOWN_ERROR'){alert('A directions request could not be processed due to a server error. The request may succeed if you try again.');}else if(status=='REQUEST_DENIED'){alert('This webpage is not allowed to use the directions service.');}else if(status=='OVER_QUERY_LIMIT'){alert('The webpage has gone over the requests limit in too short a period of time.');}else if(status=='INVALID_REQUEST'){alert('The DirectionsRequest provided was invalid.');}}});}
function sendContactMsg(){$('#ShopMailSendButton').attr("disabled","disabled");$.ajax({url:'/shopcontact.php',type:'POST',data:{'mailToForm':$('#shopMailTo').serialize()},success:function(data){if(data=='MailSend'){$('#ErrorMsgMail').hide();$('#customername').val('');$('#customerphone').val('');$('#customeremail').val('');$('#customermsg').html('');$('#InfoMsgMail').show();}else{$('#InfoMsgMail').hide();$('#ErrorMsgMail').show();}
$('#ShopMailSendButton').removeAttr("disabled");}});}
function updateBrandCharacters(){var header=$('.letterBar');var headerSpacer=$('.letterBarSpacer');var a=$(document).scrollTop()+52;{var b=headerSpacer.offset().top;if(a>=b)
header.addClass('floating');else
header.removeClass('floating');}
var character=$('.brandTilesWrapper > div:first-child');character.parent().removeClass('scrolled');$('.letterBar a').removeClass('scrolled');character.css('border','none');var hasScrolled=false;var movedCharacter=null;var newOffset;a=a+header.height();character.each(function(){var offset=$(this).data('offset');if(!offset)
offset=0;var b=$(this).offset().top-offset;var c=Math.max(a-b,0);var d=$(this).parent().position().top+$(this).parent().height()+52;var e=a+$(window).height();if(c!=offset)
{movedCharacter=$(this);newOffset=c;}
if((hasScrolled&&d<e)||(!hasScrolled&&c==0)){$(this).parent().addClass('scrolled');$(".letterBar a:contains('"+$(this).text()+"')").each(function(){$(this).addClass('scrolled');});hasScrolled=true;}});if(movedCharacter)
movedCharacter.css('top',(newOffset)+'px').data('offset',newOffset);}
function scrollToBrandCharacter(){var header=$('.letterBar');window.scrollTo(0,$(this).parent().position().top-(52-1)-header.height());$(this).parent().addClass('lighted');$(this).parent().switchClass('lighted','');}
function BrandsInitialize(){$('.brandTilesWrapper > div:first-child').each(function(){$('.letterBar').append($('<a></a>').text($(this).text()));});$(document).scroll(updateBrandCharacters);updateBrandCharacters();$('.letterBar a').click(function(){$(".brandTilesWrapper > div:first-child:contains('"+$(this).text()+"')").each(scrollToBrandCharacter);});$('.brandTilesWrapper > div:first-child').click(scrollToBrandCharacter);}
var drawnGraphScore=false;var addToAssemblyButton=null;function changeAssmeblyCount(control,productId,defaultValue)
{if(control.value=='other')
{lastProductId=productId;control.value=defaultValue;$('#newCount').val(defaultValue);customCountHoverFadeIn();$('#newCount').select();}
else
{customCountHoverFadeOut();changeAssmebly(productId,control.value);}}
function getProductListOfGroup(group){$.ajax({url:'/pc-builder-configurator/category/'+group,type:'GET',success:function(data){$('#mainPcBuilderModules').html($(data).find('#mainPcBuilderModules').html());}});}
function socialMediaHoverFadeIn()
{$('.socialMediaHover .window').fadeIn();$('.socialMediaHover').fadeIn();}
function socialMediaHoverFadeOut()
{$('.socialMediaHover').fadeOut();$('.socialMediaHover .window').hide();}
function showSubGroups(type,maingroup){$('#groupHover'+type+'Component .window').css('width',$('#hiddenGroupTiles_'+maingroup).css('width'));$('#groupHover'+type+'Component .window .categoryTilesHost').html($('#hiddenGroupTiles_'+maingroup).html());$('#groupHover'+type+'Component .window').fadeIn();$('#groupHover'+type+'Component').fadeIn();initHoverSign();}
function togglePcbuilderManual(){var viewport=$('body, html');if(!$('#pcbuildermanual').isOnScreen()){viewport.animate({scrollTop:$(pcbuildermanual).offset().top-50},1000);}else{$('#pcbuildermanual').toggle();if(!$('#pcbuildermanual').isOnScreen())
viewport.animate({scrollTop:$(pcbuildermanual).offset().top-50},1000);}}
function showPcBuilderPassword(){$('#pcBuilderPasswordHover .window').fadeIn();$('#pcBuilderPasswordHover').fadeIn();}
function updatePcBuilderScreen(){if(window.location.href.indexOf("/pc-builder-configurator/")>0){url='/pc-builder-configurator'
if($('#selectedCategoryId').val()!='')
url=url+'/catsel/'+$('#selectedCategoryId').val();if($('#selectedAssemblyId').val()!='')
url=url+'/assemblyId/'+$('#selectedAssemblyId').val();url=url+'/r/'+Date.now();$.ajax({url:url,type:'GET',success:function(data){$('#mainPcBuilderToolbar').html($(data).find('#mainPcBuilderToolbar').html());$('#mainPcBuilderTabs').html($(data).find('#mainPcBuilderTabs').html());drawnGraphScore=false;drawnGraphPrice=false;drawnGraphComposite=false;compositeGraph();priceHistoryGraph();scoreGraph();initHoverSign();}});}}
function hideModules(){$('#mainPcBuilderModules').hide();}
function showModules(){$('#mainPcBuilderModules').show();}
function changeAssembly(control){window.location.href="/"+$(control).val();}
function setCurrentTab(tab){$.ajax({url:'/pc-builder-configurator/refresh/currenttab/tab/'+tab+'/r/'+Date.now(),type:'GET'});}
function getCompareBenchmark(control){$.ajax({url:'/pc-builder-configurator/refresh/comparebenchmark/compareId/'+$(control).val()+'/r/'+Date.now(),type:'GET',success:function(data){$('#chartBenchmarkScoreCompare').val(data);drawnGraphScore=false;$('#scoreCompositeContainer').html('<canvas id="cvsScore" width="400" height="300">[No canvas support]</canvas>');scoreGraph();}});}
function assemblyHoverHide(){if(window.location.href.indexOf("/productdetail/")>0){window.location.href=$('#selectedAssemblyReferer').val();}else{$('.fancyHover').hide();$('#configTabHeader').click();lastCompareHoverElement=null;}}
function assemblyHoverShow(data){var assemblyData=eval("("+data+")");$('button.button').each(function(){var myId=$(this).attr('id');if(myId){if(myId.slice(0,10)=="prodAssem_"){var prodId=myId.slice(10)
var selector='.prodAssem_'+prodId+' span';var count=0;var maxCount=0;for(i=0;i<assemblyData.items.length;i++)
if(prodId==assemblyData.items[i].productId){count=assemblyData.items[i].count;maxCount=assemblyData.items[i].maxCount;}
updateButtonCountAssembly(selector,count);}}});$('#selectedAssemblyId').val(assemblyData.id);if(addToAssemblyButton)
{FancyHoverSetZero();$(".fancyHover").addClass('assemblyAddHover');$(".fancyHover .content > h5").show();$(".fancyHover .content > h5").text('nieuw in configuratie');$(".fancyHover .content > ul").empty();$(".fancyHover .buttons > button.assemblyButton").show();var productFound=false;for(i=0;i<assemblyData.items.length;i++)
{if(assemblyData.items[i]['new'])
{$(".fancyHover .content > ul").append($('<li>').append($('<img class="icon">').attr('src',assemblyData.items[i].imageUrl+'/w/35/h/35')).append($('<div class="button">').click(createDeleteAssemblyHandler(assemblyData.items[i].productId))).append($('<span>').text(assemblyData.items[i].name)));productFound=true;}}
$(".fancyHover .content > .totalPrice").show();$(".fancyHover .content > .totalPrice > span").text(assemblyData.totalPrice);if(productFound)
{lastCompareHoverElement=addToAssemblyButton;lastCompareHoverPosition='right';PositionFancyHover();addToAssemblyButton=null;}}}
function updateButtonCountAssembly(selector,count){$(selector).each(function(){if($(this).text()!=count||$(this).text()=='&#x2713;')
$(this).fadeOut(200,function(){if(isNumber($(this).text())||$(this).text()=='')
$(this).text(count);if(count>0)
$(this).fadeIn(200);});});}
function isNumber(n){return!isNaN(parseFloat(n))&&isFinite(n);}
function createDeleteAssemblyHandler(productId)
{return function(){changeAssmebly(productId,0);$(".fancyHover").hide();lastCompareHoverElement=null;return;}}
function addToAssembly(productId,element){addToAssemblyButton=element;var assemblyIdAdd='';if($('#selectedAssemblyId').val())
assemblyIdAdd='/assemblyId/'+$('#selectedAssemblyId').val();$.ajax({url:'/pc-builder-configurator'+assemblyIdAdd+'/refresh/addItem/product/'+productId+'/r/'+Date.now(),type:'GET',success:function(data){updatePcBuilderScreen();assemblyHoverShow(data);}});}
function lockAssembly(){var assemblyIdAdd='';if($('#selectedAssemblyId').val())
assemblyIdAdd='/assemblyId/'+$('#selectedAssemblyId').val();$.ajax({url:'/pc-builder-configurator'+assemblyIdAdd+'/refresh/lockassembly/r/'+Date.now(),type:'POST',data:{'password':$('#pcBuilderPassword').val(),'passwordrepeat':$('#pcBuilderPasswordRepeat').val()},success:function(data){if(data.indexOf("set")>-1)
window.location.href='/pc-builder-configurator'+assemblyIdAdd;else{$("#pcBuilderPassword").prop("required",true);$("#pcBuilderPasswordRepeat").prop("required",true);$("#pcBuilderPassword").val('');$("#pcBuilderPasswordRepeat").val('');}}});}
function unlockAssembly(){var assemblyIdAdd='';if($('#selectedAssemblyId').val())
assemblyIdAdd='/assemblyId/'+$('#selectedAssemblyId').val();$.ajax({url:'/pc-builder-configurator'+assemblyIdAdd+'/refresh/unlockassembly/r/'+Date.now(),type:'POST',data:{'password':$('#pcBuilderPassword').val()},success:function(data){if(data.indexOf("unset")>-1)
window.location.href='/pc-builder-configurator'+assemblyIdAdd;else{$("#pcBuilderPassword").prop("required",true);$("#pcBuilderPassword").val('');}}});}
function changeAssmebly(productId,count){$.ajax({url:'/pc-builder-configurator/assemblyId/'+$('#selectedAssemblyId').val()+'/refresh/changeItem/product/'+productId+'/count/'+count+'/r/'+Date.now(),type:'GET',success:function(data){updatePcBuilderScreen();assemblyHoverShow(data);}});}
function scoreGraph(){if(drawnGraphScore)
return;var chartBenchmarkScoreMain=$('#chartBenchmarkScoreMain').val();var chartBenchmarkScoreCompare=$('#chartBenchmarkScoreCompare').val();if(chartBenchmarkScoreMain==undefined)
return;var mainBenchmark=chartBenchmarkScoreMain.split(',');var compareBenchmark=chartBenchmarkScoreCompare.split(',');var chartLabels=mainBenchmark.concat(compareBenchmark);for(a in mainBenchmark)
mainBenchmark[a]=parseInt(mainBenchmark[a]);for(a in compareBenchmark)
compareBenchmark[a]=parseInt(compareBenchmark[a]);if(chartBenchmarkScoreCompare.length==0)
compareBenchmark=[];var maxM=Math.max.apply(null,mainBenchmark);var maxC=Math.max.apply(null,compareBenchmark);var charXmax=(maxM>maxC)?(Math.round((maxM*1.1)/100)*100):(Math.round((maxC*1.1)/100)*100);var hbar=new RGraph.HBar('cvsScore',[mainBenchmark,compareBenchmark]).Set('grouping','grouped').Set('vmargin',20).Set('labels',['Huidige','Vergelijking']).Set('key',['GPU','CPU','Algemeen']).Set('key.position','gutter').Set('key.position.gutter.boxed',false).Set('chart.xmax',charXmax).Set('key.colors',['#DC3912','#3366CC','#FF9900']).Set('colors',['Gradient(#E67459:#DC3912:#DC3912)','Gradient(#85A3E0:#3366CC:#3366CC)','Gradient(#FFB84D:#FF9900:#FF9900)',]).Set('tooltips',chartLabels).Set('chart.tooltips.event','onmousemove').Draw();drawnGraphScore=true;}
function configAssemblyTabActivate(){hideModules();compositeGraph();scoreGraph();priceHistoryGraph();setCurrentTab('CONFIG');}
function test(element,side){FancyHoverSetZero();$(".fancyHover").addClass('assemblyInfoHover');$(".fancyHover .content > h5").show();$(".fancyHover .content > h5").text($(".hoverTitle",element).val());$(".fancyHover .content > ul").empty();$(".fancyHover .closeButton").hide();$(".fancyHover .buttons").hide();var messages=$.parseJSON($(".hoverText",element).val());$(".fancyHover .content > .infoText").show();$(".fancyHover .content > .infoText").append('<ul style=" padding:0px 0px 0px 16px; list-style-image: url(/Images/PropertyBullet.png);" >');$.each(messages,function(index,value){$(".fancyHover .content > .infoText > ul").append($('<li style="margin-bottom:5px;">').text(value));});lastCompareHoverElement=element;lastCompareHoverPosition=side;PositionFancyHover();}
function initHoverSign(){$(".SignsHover").hover(function(){if($(this).hasClass('Warning'))
side='left';else
side='right';test(this,side);},function(){$(".fancyHover").hide();lastCompareHoverElement=null;});}
function newAssembly(){$.ajax({url:window.location.href.split('#')[0]+'/refresh/newassembly/r/'+Date.now(),type:'GET',success:function(data){window.location.href='/pc-builder-configurator/assemblyId/'+data;}});}
function openAssembly(){if($('#pcBuilderIdToOpen').val()=='')
return;$.ajax({url:window.location.href.split('#')[0]+'/refresh/openassembly/assemblyId/PCB'+$('#pcBuilderIdToOpen').val()+'/r/'+Date.now(),type:'GET',success:function(data){if(data!='false')
window.location.href='/pc-builder-configurator/assemblyId/'+data;}});}
function credentialListClick(){var choosenListId=$('input[name="credentialIdList"]:checked').val();if(choosenListId=='credId_local_credential')
$('#credentialPasswordChange').removeAttr("disabled");else
$('#credentialPasswordChange').attr("disabled","disabled");if(choosenListId.indexOf("credId_")>-1)
$('#credentialDelete').removeAttr("disabled");else
$('#credentialDelete').attr("disabled","disabled");if($("input[name='credentialIdList']").length<2)
$('#credentialDelete').attr("disabled","disabled");}
function notificationListClick(){var choosenListId=$('input[name="notificationIdList[]"]:checked').val();if(choosenListId!=undefined){$('#markNotificationsRead').removeAttr("disabled");$('#deleteNotifications').removeAttr("disabled");}else{$('#markNotificationsRead').attr("disabled","disabled");$('#deleteNotifications').attr("disabled","disabled");}}
function selectAllNotifications(element){if($(element).filter(':checked').length===0){$('[name="notificationIdList[]"]').prop('checked',false);}else{$('[name="notificationIdList[]"]').prop('checked',true);}
notificationListClick();}
function deleteAllRememberTokens(){$.ajax({url:'/account_func.php?action=deleteAllRememberTokens',type:'GET',success:function(data){refreshLoginTokenList();initHoverTip();}});}
function submitChangePassword(){$('#credentialFunctions').fadeTo('fast',0.1,function(){$.ajax({url:'/account_func.php?action=changePassword',type:'POST',data:$('#changePasswordForm').serialize(),success:function(data){$('#credentialFunctions').html(data);$('#credentialFunctions').fadeTo('fast',1);initPasswordChecker();initHoverTip();}});});}
function submitCreateLocalCredential(){$('#credentialFunctions').fadeTo('fast',0.1,function(){$.ajax({url:'/account_func.php?action=credentialNew',type:'POST',data:$('#createLocalCredentialForm').serialize(),success:function(data){$('#credentialFunctions').html(data);$('#credentialFunctions').fadeTo('fast',1);refreshUserCredentialsList();initPasswordChecker();initHoverTip();}});});}
function refreshLoginTokenList(){$('#userRememberTokensList').fadeTo('fast',0.1,function(){$('#userRememberTokensList').load(document.URL+' #userRememberTokensList',function(){$('#userRememberTokensList').fadeTo('fast',1);});});}
function refreshUserCredentialsList(){$('#userCredentialsList').fadeTo('fast',0.1,function(){$('#userCredentialsList').load(document.URL+' #userCredentialsList',function(){$('#userCredentialsList').fadeTo('fast',1);});});}
function credentialPasswordChange(){$('#credentialFunctions').fadeTo('fast',0.1,function(){$('#credentialFunctions').load('/account_func.php?action=changePassword',function(){initPasswordChecker();initHoverTip();$('#credentialFunctions').fadeTo('fast',1);});});}
function credentialNew(){$('#credentialFunctions').fadeTo('fast',0.1,function(){$('#credentialFunctions').load('/account_func.php?action=credentialNew',function(){$('#credentialFunctions').fadeTo('fast',1);initPasswordChecker();initHoverTip();});});}
function credentialDelete(){$('#credentialFunctions').fadeTo('fast',0.1,function(){$('#credentialFunctions').load('/account_func.php?action=credentialDelete',{credentialid:$("input[name='credentialIdList']:checked").val()},function(){$('#credentialFunctions').fadeTo('fast',1);});});}
function credentialDeleteOk(value){$('#credentialFunctions').fadeTo('fast',0.1,function(){$('#credentialFunctions').load('/account_func.php?action=credentialDelete',{credentialidok:value},function(){$('#credentialFunctions').fadeTo('fast',1);refreshUserCredentialsList();});});}
function submitInitialUserdata(){$(".spinnercontainer").css({position:'relative'});$('#spinner').fadeIn();$.ajax({url:'/account_func.php?action=initialUserData',type:'POST',data:$('#initialUserDataform').serialize(),success:function(data){if(data.indexOf('InitialUserDataCreated')>-1)
location.href='/account';if(data.indexOf('GoToRepairForm')>-1)
location.href='/casestatus/action/repairForm';$('#initialUserDataContainer').html($(data).find('#initialUserDataContainer').html());$('#spinner').fadeOut();InitializeInitialUserData();}});}
function loadViewMail(notifyId,element){$(element).closest("tr").removeClass("boldLine");$(element).closest("tr").find(".readMailStatus").attr("src","/Images/mailopen.png");$.get("/account_func.php?action=viewMail&mailId="+notifyId,function(data){$('#overlayMaildoc').html(data);});}
function deleteMails(){var choosenListId=new Array();var i=0;$('input[name="notificationIdList[]"]:checked').each(function(){choosenListId[i]=this.value;i++;});$.ajax({url:'/account_func.php?action=deleteNotifications',type:'POST',data:{'selectedNotifications':choosenListId.join(',')},success:function(){$('#notificationList').fadeTo('fast',0.1,function(){$('#notificationList').load(document.URL+' #notificationList',function(){$('#notificationList').fadeTo('fast',1);overlayImgInit();});});}});}
function markReadMails(){var choosenListId=new Array();var i=0;$('input[name="notificationIdList[]"]:checked').each(function(){choosenListId[i]=this.value;i++;});$.ajax({url:'/account_func.php?action=markReadNotifications',type:'POST',data:{'selectedNotifications':choosenListId.join(',')},success:function(){$('#notificationList').fadeTo('fast',0.1,function(){$('#notificationList').load(document.URL+' #notificationList',function(){$('#notificationList').fadeTo('fast',1);overlayImgInit();});});}});}
function InitializeInitialUserData(){$('input').live("keypress",function(e){if(e.keyCode==13){var inputs=$(this).parents("form").eq(0).find(":input");var idx=inputs.index(this);if(idx==inputs.length-1){inputs[0].select()}else{inputs[idx+1].focus();inputs[idx+1].select();}
return false;}});setTimeout(function(){setAddressSearch('',false);},500);setTimeout(function(){setAddressSearch('delivery',false);},1500);deliveryadresscheck();iscompanycheck();initHoverTip();}
function drawDayGraph(canvas,data,keys,colors){var graphData=JSON.parse(data);for(a in graphData['y'])
graphData['y'][a]=parseInt(graphData['y'][a]);var line=new RGraph.Line(canvas,graphData['y']).Set('background.barcolor1','white').Set('background.barcolor2','white').Set('background.grid.color','rgba(238,238,238,1)').Set('key',keys).Set('tooltips',graphData['l']).Set('colors',colors).Set('linewidth',2).Set('filled',false).Set('hmargin',5).Set('labels',graphData['x']).Set('gutter.left',40).Set('gutter.bottom',35).Set('chart.tooltips.event','onmousemove').Draw();line.canvas.onmouseout=function(e)
{RGraph.HideTooltip();RGraph.Redraw();}}
function drawWeekGraph(canvas,data1,data2,keys,colors){var graphData1=JSON.parse(data1);var graphData2=JSON.parse(data2);for(a in graphData1['y'])
graphData1['y'][a]=parseInt(graphData1['y'][a]);for(a in graphData2['y'])
graphData2['y'][a]=parseInt(graphData2['y'][a]);var line=new RGraph.Line(canvas,graphData1['y'],graphData2['y']).Set('background.barcolor1','white').Set('background.barcolor2','white').Set('background.grid.color','rgba(238,238,238,1)').Set('key',keys).Set('key.position.x',45).Set('key.position.y',135).Set('tooltips',graphData1['l'],graphData2['l']).Set('colors',colors).Set('linewidth',2).Set('filled',false).Set('hmargin',5).Set('labels',graphData1['x']).Set('gutter.left',40).Set('gutter.bottom',25).Set('chart.tooltips.event','onmousemove').Draw();line.canvas.onmouseout=function(e)
{RGraph.HideTooltip();RGraph.Redraw();}}
function drawMonthGraph(canvas,data1,data2,keys,colors){var graphData1=JSON.parse(data1);var graphData2=JSON.parse(data2);var data=new Array();var labels=new Array();for(a in graphData1['y'])
{var bar=new Array();bar.push(parseInt(graphData1['y'][a]));bar.push(parseInt(graphData2['y'][a]));data.push(bar);}
for(a in graphData1['l'])
{labels.push(graphData1['l'][a]);labels.push(graphData2['l'][a]);}
var hbar=new RGraph.Bar(canvas,data).Set('grouping','grouped').Set('key',keys).Set('key.position.x',50).Set('key.position.y',30).Set('key.colors',colors).Set('labels',graphData1['x']).Set('colors',colors).Set('hmargin',15).Set('strokestyle','white').Set('chart.hmargin',7).Set('chart.hmargin.grouped',3).Set('shadow',true).Set('shadow.color','#ccc').Set('tooltips',labels).Set('chart.tooltips.event','onmousemove').Set('shadow.offsetx',0).Set('shadow.offsety',0).Set('shadow.blur',10).Set('gutter.left',45).Set('gutter.bottom',25).Draw();hbar.canvas.onmouseout=function(e)
{RGraph.HideTooltip();RGraph.Redraw();}}
function drawMonthGraph3(canvas,data1,data2,data3,keys,colors){var graphData1=JSON.parse(data1);var graphData2=JSON.parse(data2);var graphData3=JSON.parse(data3);var data=new Array();var labels=new Array();for(a in graphData1['y'])
{var bar=new Array();bar.push(parseInt(graphData1['y'][a]));bar.push(parseInt(graphData2['y'][a]));bar.push(parseInt(graphData3['y'][a]));data.push(bar);}
for(a in graphData1['l'])
{labels.push(graphData1['l'][a]);labels.push(graphData2['l'][a]);labels.push(graphData3['l'][a]);}
var hbar=new RGraph.Bar(canvas,data).Set('grouping','grouped').Set('key',keys).Set('key.position.x',50).Set('key.position.y',30).Set('key.colors',colors).Set('labels',graphData1['x']).Set('colors',colors).Set('hmargin',15).Set('strokestyle','white').Set('chart.hmargin',7).Set('chart.hmargin.grouped',3).Set('shadow',true).Set('shadow.color','#ccc').Set('tooltips',labels).Set('chart.tooltips.event','onmousemove').Set('shadow.offsetx',0).Set('shadow.offsety',0).Set('shadow.blur',10).Set('gutter.left',45).Set('gutter.bottom',25).Draw();hbar.canvas.onmouseout=function(e)
{RGraph.HideTooltip();RGraph.Redraw();}}
function drawPieGraph(canvas,data){var graphData=JSON.parse(data);for(a in graphData['y'])
graphData['y'][a]=parseInt(graphData['y'][a]);var pie=new RGraph.Pie(canvas,graphData['y']).Set('labels',graphData['x']).Set('linewidth',3).Set('chart.exploded',2).Set('stroke','white').Set('chart.tooltips',graphData['l']).Set('chart.colors',['#EC0033','#A0D300','#FFCD00','#00B869','#999999','#FF7300','#004CB0','#FA58F4','#2EE5E8','#00BFFF','#01DF3A']).Set('chart.tooltips.event','onmousemove').Set('chart.shadow',false).Draw();}
var chat_expanded=false;var chatIsBeingHovered=false;function updateConversationList(){$.getJSON('/chat.php',{'command':'list',rnd:Date.now()},function(data){for(i=0;i<data.length;i++){openConversationWindow(data[i]);}
$('.conversationsList > div').each(function(){if($(this).hasClass('exists'))
$(this).removeClass('exists');else
$(this).remove();});});}
function openConversationWindow(conversationData){var chatSummary=$('.conversationsummary'+conversationData.id);if(chatSummary.length<=0){var chatSummary=$('<div t="0"><span class="name"></span><span class="lastMessage"></span></div>');chatSummary.addClass('conversationsummary'+conversationData.id)
chatSummary.attr('conversationId',conversationData.id);chatSummary.find('.name').text(conversationData.displayname);$('.conversationsList').append(chatSummary);}
chatSummary.addClass('exists');if(!conversationData.joined)
{chatSummary.addClass('waiting');if($('#chatPartnerAvailability')[0].checked)
jBeep('/chatnotify');return;}
if(conversationData.joined&&conversationData.participantCount==1)
{chatSummary.addClass('abandoned');}
chatSummary.removeClass('waiting');var conversationElement=$('.conversation'+conversationData.id);if(conversationElement.length>=1)
return;var chatDialog=$('<div class="conversation" t="0"><div><div class="toolbar"><button type="button">Send</button><div class="message"><input></input></div></div><div class="messagesHost"><div class="messages"></div></div></div></div>');chatDialog.find('input').keypress(function(e){if(e.keyCode==13){chatDialog.find('button').click();return false;}});chatDialog.find('button').click(function(){var message=$(this).closest('.conversation').find('div.message > input').val();$(this).closest('.conversation').find('div.message > input').val('');$.getJSON("/chat.php",{'command':'sendmessage','conversationId':conversationData.id,'message':message,rnd:Date.now()},function(data){updateConversation(conversationData.id,false);});$(this).closest('.conversation').find('div.message > input').focus();});var cookieData=$.cookie(conversationData.id);cookieData=cookieData==null?new Object():JSON.parse(cookieData);if(typeof cookieData.visible==="undefined")cookieData.visible=true;if(typeof cookieData.left==="undefined")cookieData.left=null;if(typeof cookieData.top==="undefined")cookieData.top=null;if(typeof cookieData.width==="undefined")cookieData.width=400;if(typeof cookieData.height==="undefined")cookieData.height=300;chatDialog.addClass('conversation'+conversationData.id).attr('conversationId',conversationData.id).attr('title',conversationData.displayname).dialog({appendTo:'.chathost',position:[cookieData.left,cookieData.top],autoOpen:cookieData.visible,width:cookieData.width,height:cookieData.height,focus:function(event,ui){$('.ui-dialog').removeClass('active');$(this).closest('.ui-dialog').addClass('active');$('.conversationsList > div').removeClass('active');$('.conversationsummary'+conversationData.id).addClass('active');},beforeClose:function(event,ui){if($('.conversationsListHost').length>0)
return;if(!confirm("Weet u zeker dat u de conversatie wilt beëindigen."))
return false;},close:function(event,ui){var conversationId=$(this).attr('conversationId');var cookieData=$.cookie(conversationId);cookieData=cookieData==null?new Object():JSON.parse(cookieData);cookieData.visible=false;$.cookie(conversationId,JSON.stringify(cookieData),{path:'/'});if($('.conversationsListHost').length>0)
return;$.getJSON("/chat.php",{'command':'leave','conversationId':conversationId,rnd:Date.now()},function(data){if(data==true){$('.conversation'+conversationId).dialog('destroy').remove();$('#ChatWidget').css('display','');}});},open:function(event,ui){var conversationId=$(this).attr('conversationId');var cookieData=$.cookie(conversationId);cookieData=cookieData==null?new Object():JSON.parse(cookieData);cookieData.visible=true;$.cookie(conversationId,JSON.stringify(cookieData),{path:'/'});},resizeStart:function(event,ui){var scrollTop=$(this).find('.messagesHost').get(0).scrollTop;var scrollHeight=$(this).find('.messagesHost').get(0).scrollHeight;var visibleHeight=$(this).find('.messagesHost').height();resizeIsAtBottom=(visibleHeight+scrollTop)>=(scrollHeight-5);},resize:function(event,ui){var scrollTop=$(this).find('.messagesHost').get(0).scrollTop;var scrollHeight=$(this).find('.messagesHost').get(0).scrollHeight;var visibleHeight=$(this).find('.messagesHost').height();if((visibleHeight+scrollTop)>=(scrollHeight-5))
resizeIsAtBottom=true;if(resizeIsAtBottom)
$(this).find('.messagesHost').get(0).scrollTop=scrollHeight;},resizeStop:function(event,ui){var conversationId=$(this).attr('conversationId');var cookieData=$.cookie(conversationId);cookieData=cookieData==null?new Object():JSON.parse(cookieData);cookieData.width=ui.size.width;cookieData.height=ui.size.height;$.cookie(conversationId,JSON.stringify(cookieData).replace(String.fromCharCode(22),''),{path:'/'});var scrollHeight=$(this).find('.messagesHost').get(0).scrollHeight;var scrollTop=$(window).scrollTop();$(this).closest('.ui-dialog').css("position",'fixed');$(this).closest('.ui-dialog').css("top",ui.position.top-scrollTop)},dragStop:function(event,ui){var conversationId=$(this).attr('conversationId');var cookieData=$.cookie(conversationId);cookieData=cookieData==null?new Object():JSON.parse(cookieData);cookieData.left=ui.position.left;cookieData.top=ui.position.top;$.cookie(conversationId,JSON.stringify(cookieData).replace(String.fromCharCode(22),''),{path:'/'});}});updateConversation(conversationData.id,true);window.setInterval('updateConversation("'+conversationData.id+'", false);',4000);}
function updateConversation(conversationId,initialize){var conversationElement=$('.conversation'+conversationId);if(conversationElement.length>0){$.getJSON('/chat.php',{'command':'getmessages','conversationId':conversationId,rnd:Date.now()},function(data){var scrollTop=conversationElement.find('.messagesHost').get(0).scrollTop;var scrollHeight=conversationElement.find('.messagesHost').get(0).scrollHeight;var visibleHeight=conversationElement.find('.messagesHost').height();var isAtBottom=(visibleHeight+scrollTop)>=(scrollHeight-5);var messageReceived=false;for(i=0;i<data.length;i++){messageAlreadyReceived=false;conversationElement.find('div.messages > div.conversationMessage').each(function(){if($(this).attr('t')==data[i].id)
messageAlreadyReceived=true;});if(messageAlreadyReceived)
continue;$('.conversationsummary'+conversationId).find('.lastMessage').text(data[i].messageText);if(!data[i].sender.self)
{$('.conversationsummary'+conversationId).addClass('notify');$('.conversationsummary'+conversationId).parent().prepend($('.conversationsummary'+conversationId));}
else
$('.conversationsummary'+conversationId).removeClass('notify');var messageElement=$('<div>').addClass('conversationMessage').attr('p',data[i].id).attr('t',data[i].id).append($('<span>').css('background-image',"url('"+data[i].sender.avatar+"')").text(data[i].messageText));if(!initialize)
messageElement.addClass('new');if(data[i].sender.self)
messageElement.addClass('self');if(data[i].action)
{if(data[i].showAction)
executeChatAction(data[i].id,eval(data[i].action));messageElement.find('span').click(function(messageId,action){return function(){executeChatAction(messageId,eval(action));}}(data[i].id,data[i].action));messageElement.addClass('action');}
conversationElement.find('div.messages').append(messageElement);conversationElement.attr('t',data[i].id);messageReceived=true;}
if(messageReceived){if(isAtBottom){scrollHeight=conversationElement.find('.messagesHost').get(0).scrollHeight;conversationElement.find('.messagesHost').get(0).scrollTop=scrollHeight;}else{conversationElement.find('div.messagesHost').animate({'background-color':'#ff7'},100).animate({'background-color':'#eee'},100).animate({'background-color':'#ff7'},100).animate({'background-color':'#eee'},100);}}});}}
function executeChatAction(messageId,action){chatConfirm(action.message,action.preview,function(){action.accept();$(this).closest('.overlayWindowHost').fadeOut(function(){$(this).remove();});$.getJSON("/chat.php",{'command':'response','messageId':messageId,response:'true',rnd:Date.now()});},function(){$(this).closest('.overlayWindowHost').fadeOut(function(){$(this).remove();});$.getJSON("/chat.php",{'command':'response','messageId':messageId,response:'false',rnd:Date.now()});});}
function chatConfirm(message,preview,accept,deny){var overlayWindow=$('<div class="overlayWindowHost"><div class="overlayWindow"><span class="content"><span class="preview"></span><span class="message"></span><span><span class="buttons"><button class="button allow" type="button">Toestaan</button><button class="button button4 deny" type="button">Weigeren</button></span></div></div>');overlayWindow.find('.message').append($(message));overlayWindow.find('.preview').load(preview);overlayWindow.find('.allow').click(accept);overlayWindow.find('.deny').click(deny);$('body').append(overlayWindow);overlayWindow.fadeIn();}
function conversationActionAddToCart(productId,partnername){return{'message':'<span>'+partnername+' vraagt uw toestemming om een product aan uw winkelwagen toe te voegen</span>','preview':'/producttile.php?productId='+productId+'&rnd='+Date.now(),'accept':function(){try{addToCart(productId,0,null);}
catch(err){}}};};function conversationShareProduct(productId,partnername,url){return{'message':'<span>'+partnername+' wil een product met u delen</span>','preview':'/producttile.php?productId='+productId+'&rnd='+Date.now(),'accept':function(){location.href=url;}}}
function chatWidgetPositioner(){if(!$('#Footer').isOnScreen()){$('.chatStartWidgetProto').css("position",'fixed');$('.chatStartWidgetProto').css("right",Math.round(($(window).width()-990)/2)-1);$('.chatStartWidgetProto').parent().css({position:'static'});}else{$('.chatStartWidgetProto').parent().css({position:'relative'});$('.chatStartWidgetProto').css("position",'absolute');$('.chatStartWidgetProto').css("right",0);}}
function chatBoxSlideUp(){$('.chatStartWidgetProto').stop().animate({'height':'193px'});$('.chatStartWidgetProto > div').stop(true,true).css("margin-top",'-20px');}
function chatBoxSlideDown(){if(!$('#chat_username').is(":focus")&&!$('#chat_email').is(":focus")&&!$('#chat_message').is(":focus")&&!$('#chat_username').is(":focus")&&!chatIsBeingHovered){$('.chatStartWidgetProto').stop().animate({'height':'25px'});$('.chatStartWidgetProto > div').css("margin-top",'10px');}}
function ChatBoxInitialize(){$(window).resize(function(){chatWidgetPositioner();});$(window).scroll(function(){chatWidgetPositioner();});$('#chat_button').click(function(){var usernameField=$('#chat_username');var emailField=$('#chat_email');var isValid=(usernameField.length=0||!usernameField.is(':visible')||(usernameField.val().length>0))&&(emailField.length=0||!emailField.is(':visible')||validateEmail(emailField.val()));if(isValid){if($('#chat_message').val()=='uw vraag...')
message='';else
message=$('#chat_message').val();$.getJSON('/chat.php',{'command':'request','username':$('#chat_username').val(),'email':$('#chat_email').val(),'message':message,rnd:Date.now()},function(data){openConversationWindow(data);$('#ChatWidget').css('display','none');$('#chat_email').removeAttr("required");$('#chat_username').removeAttr("required");});}else{if(!validateEmail($('#chat_email').val()))
$('#chat_email').attr("required","required");if($('#chat_username').val().length==0)
$('#chat_username').attr("required","required");}});$(".chatStartWidgetProto").hover(function(){chatBoxSlideUp();chatIsBeingHovered=true;},function(){chatIsBeingHovered=false;chatBoxSlideDown();});$(".chatStartWidgetProto > span ").click(function(){chatBoxSlideUp();});$('#chat_username, #chat_email, #chat_message, #chat_button').blur(function(){chatBoxSlideDown();}).focus(function(){chatBoxSlideUp();});chatWidgetPositioner();updateConversationList();}
var activeConversation;var conversationMenuInitialized=false;function addConversationActions(actions){if(actions.length>=1){$('#btnCurrentActions').css('display','');for(i=0;i<actions.length;i++){var action=actions[i];$('#btnCurrentActions > ul').append($('<li></li>').append($('<a href="#"></a>').text(action.caption).click(function(){$.getJSON("/chat.php",{'command':'sendmessage','conversationId':activeConversation,'message':action.caption,'action':action.action,rnd:Date.now()},function(data){});})));}
if(conversationMenuInitialized)
$('.dummyMenu').menu("refresh");}}
function ChatPannelInitialize(){$('#chatPartnerAvailability').click(function(){$.getJSON("/chat.php",{'command':(this.checked?'checkin':'checkout'),rnd:Date.now()},function(data){});});$('.dummyMenu').menu();$('.dummyMenu').hide();$('.dummyMenu a').click(function(){$('.dummyMenu').hide();});conversationMenuInitialized=true;$('#btnConversationLeave').click(function(){if(!confirm("Weet u zeker dat u de conversatie wilt beëindigen."))
return;$.getJSON("/chat.php",{'command':'leave','conversationId':activeConversation,rnd:Date.now()},function(data){if(data==true){$('.conversation'+activeConversation).dialog('destroy').remove();$('.conversationsummary'+activeConversation).remove();}});});updateConversationList();window.setInterval('updateConversationList();',4000);$(document).on('click','.conversationsList > div',function(){activeConversation=$(this).attr('conversationid');if($(this).hasClass('waiting')){$.getJSON('/chat.php',{'command':'accept','conversationId':activeConversation,rnd:Date.now()},function(data){});}
else{$('.conversation'+activeConversation).dialog("open").dialog("moveToTop");$('.dummyMenu').show().position({of:$(this),my:"right-3 top",at:"left top",collision:"none none"});}});}
function jBeep(soundFile){var soundElem,bodyElem,isHTML5;isHTML5=true;bodyElem=document.getElementsByTagName("body")[0];if(!bodyElem)bodyElem=document.getElementsByTagName("html")[0];soundElem=document.getElementById("jBeep");if(soundElem)bodyElem.removeChild(soundElem);if(navigator.userAgent.toLowerCase().indexOf("msie")>-1||navigator.userAgent.toLowerCase().indexOf("trident")>-1){soundFile=soundFile+".wav"
soundElem=document.createElement("bgsound");soundElem.setAttribute("id","jBeep");soundElem.setAttribute("loop",1);soundElem.setAttribute("src",soundFile);bodyElem.appendChild(soundElem);}
else if(isHTML5){soundFile=soundFile+".ogg"
soundElem=document.createElement("audio");soundElem.setAttribute("id","jBeep");soundElem.setAttribute("src",soundFile);soundElem.play();}
else{var paramElem;soundElem=document.createElement("object");soundElem.setAttribute("id","jBeep");soundElem.setAttribute("type","audio/wav");soundElem.setAttribute("style","display:none;");soundElem.setAttribute("data",soundFile);paramElem=document.createElement("param");paramElem.setAttribute("name","autostart");paramElem.setAttribute("value","false");soundElem.appendChild(paramElem);bodyElem.appendChild(soundElem);try{soundElem.Play();}
catch(ex){soundElem.object.Play();}}}
function tab_click(sender,contentId)
{for(i=0;i<sender.parentElement.childNodes.length;i++)
{var curItem=sender.parentElement.childNodes[i];if(curItem.tagName&&(curItem.tagName.toLowerCase()=="table"))
{curItem.className="Tab";if(curItem==sender)
curItem.className="Tab Active";}}
var tabPage=document.getElementById(contentId);for(i=0;i<tabPage.parentElement.childNodes.length;i++)
{var curItem=tabPage.parentElement.childNodes[i];if(curItem.tagName&&(curItem.tagName.toLowerCase()=="div"))
curItem.style.display="none";}
tabPage.style.display="";}
$.fn.isOnScreen=function(){var win=$(window);var viewport={top:win.scrollTop(),left:win.scrollLeft()};viewport.right=viewport.left+win.width();viewport.bottom=viewport.top+win.height();var bounds=this.offset();bounds.right=bounds.left+this.outerWidth();bounds.bottom=bounds.top+this.outerHeight();return(!(viewport.right<bounds.left||viewport.left>bounds.right||viewport.bottom<bounds.top||viewport.top>bounds.bottom));};function initHoverTip(){$(".hoverTip").unbind('mouseenter mouseleave');$(".hoverTip").hover(function(){FancyHoverSetZero();$(".fancyHover").addClass('assemblyInfoHover');$(".fancyHover .content > h5").hide();$(".fancyHover .content > ul").empty();$(".fancyHover .closeButton").hide();$(".fancyHover .buttons").hide();$(".fancyHover .content > .infoText").show();$(".fancyHover .content > .infoText").html($('span',this).html());lastCompareHoverElement=this;PositionFancyHover();},function(){$(".fancyHover").hide();lastCompareHoverElement=null;});}
function clearDefault(el){if(el.defaultValue==el.value)el.value=""}
function overlayImgInit(){$(function(){$("img[rel]").overlay({maskOverlay:{color:'#ebecff',loadSpeed:200,opacity:0.8},speed:'slow',top:'20%'});});}
function newsletterSubmit(){$.ajax({url:'/account_func.php?action=newsletter',type:'POST',data:$('#newsletteremail').serialize(),success:function(html){$("#newslettercontainer").html(html);}});}
function loadMainContentSpinner()
{setTimeout(function(){$('#MainContent').addClass('spinnercontainer');$('#mainContentSpinner').fadeIn();},100);}
function doCompare(){location.href=doCompareLink;}
function ProductListInitialize(){$(document).bind('mouseup',sliderbutton_mouseup);$('#searchtextfilter').live("keypress",function(e){if(e.keyCode==13){return false;}});loadkCompareBenchmarkList();}
function setCompare(e){if(e.checked){$.ajax({url:'/compare.php?action=addProduct',type:'POST',dataType:'json',data:$("input[name='compare[]']").serialize(),success:function(data){ShowFancyHoverCompare(e,data,'left');}});}else{$.ajax({url:'/compare.php?action=deleteProduct',type:'POST',dataType:'json',data:{'deleteCompare':e.value},success:function(data){ShowFancyHoverCompare(e,data,'left');}});}}
function setTax(){var slider=slider_getElements('slider_price');if(slider){slider.start.style.left='0px';slider.end.style.left='122px';slider_updatePos(slider);filter_update();}
url=window.location.href;urlparts=url.split("#");var filter=null;if(urlparts[1])
filter=urlparts[1].replace("filter=","");$.ajax({url:window.location.href,type:'POST',dataType:'html',data:{'showtax':$('#showtax').prop('checked')?true:false,'filter':filter},success:function(data){if(slider){eval($(data).filter('#slider_data_script').html());slider_updatePos(slider);}
$('#MainContent').html($(data).find('#MainContent').html());$('#filterListHost .slider').each(function(){slider_updatePos(slider_getElements(this.id));});initProductDetail();priceHistoryGraph();NoEditStarsInitialize();BannerInitialize();}});}
function validateEmail(email){var re=/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;return re.test(email);}
function ExternalLogin(type,refererUrl,tryReferer){location.href="/external_credential.php?type="+type+"&redirectUri="+refererUrl+"&tryReferer="+tryReferer+"&rememberMe="+$('#login_rememberstate').is(":checked");}
function NoEditStarsInitialize(){$.fn.rating.options={cancel:'Cancel Rating',cancelValue:'',split:0,starWidth:16};$(function(){$('input[type=radio].noeditstar ').rating()})}
$(function(){NoEditStarsInitialize();FilterInitialize();initHoverTip();overlayImgInit();$(document).scroll(function(){var scrollPos=$(document).scrollTop();if(scrollPos>120){if(!$('#TotalHeader').hasClass('compactHeader'))
$('#TotalHeader').addClass('compactHeader').children('div').hide().fadeIn(200);$('#DummyCompactHeader').css('top','0px');}else{$('#TotalHeader').removeClass('compactHeader').children('div').stop(true,true);$('#DummyCompactHeader').css('top','');}});});