/*
	Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved.
	Available via Academic Free License >= 2.1 OR the modified BSD license.
	see: http://dojotoolkit.org/license for details
*/


if(!dojo._hasResource["dojox.charting.scaler.linear"]){
dojo._hasResource["dojox.charting.scaler.linear"]=true;
dojo.provide("dojox.charting.scaler.linear");
dojo.require("dojox.charting.scaler.common");
(function(){
var _1=3,dc=dojox.charting,_3=dc.scaler,_4=_3.common,_5=_4.findString,_6=_4.getNumericLabel;
var _7=function(_8,_9,_a,_b,_c,_d,_e){
_a=dojo.clone(_a);
if(!_b){
if(_a.fixUpper=="major"){
_a.fixUpper="minor";
}
if(_a.fixLower=="major"){
_a.fixLower="minor";
}
}
if(!_c){
if(_a.fixUpper=="minor"){
_a.fixUpper="micro";
}
if(_a.fixLower=="minor"){
_a.fixLower="micro";
}
}
if(!_d){
if(_a.fixUpper=="micro"){
_a.fixUpper="none";
}
if(_a.fixLower=="micro"){
_a.fixLower="none";
}
}
var _f=_5(_a.fixLower,["major"])?Math.floor(_a.min/_b)*_b:_5(_a.fixLower,["minor"])?Math.floor(_a.min/_c)*_c:_5(_a.fixLower,["micro"])?Math.floor(_a.min/_d)*_d:_a.min,_10=_5(_a.fixUpper,["major"])?Math.ceil(_a.max/_b)*_b:_5(_a.fixUpper,["minor"])?Math.ceil(_a.max/_c)*_c:_5(_a.fixUpper,["micro"])?Math.ceil(_a.max/_d)*_d:_a.max;
if(_a.useMin){
_8=_f;
}
if(_a.useMax){
_9=_10;
}
var _11=(!_b||_a.useMin&&_5(_a.fixLower,["major"]))?_8:Math.ceil(_8/_b)*_b,_12=(!_c||_a.useMin&&_5(_a.fixLower,["major","minor"]))?_8:Math.ceil(_8/_c)*_c,_13=(!_d||_a.useMin&&_5(_a.fixLower,["major","minor","micro"]))?_8:Math.ceil(_8/_d)*_d,_14=!_b?0:(_a.useMax&&_5(_a.fixUpper,["major"])?Math.round((_9-_11)/_b):Math.floor((_9-_11)/_b))+1,_15=!_c?0:(_a.useMax&&_5(_a.fixUpper,["major","minor"])?Math.round((_9-_12)/_c):Math.floor((_9-_12)/_c))+1,_16=!_d?0:(_a.useMax&&_5(_a.fixUpper,["major","minor","micro"])?Math.round((_9-_13)/_d):Math.floor((_9-_13)/_d))+1,_17=_c?Math.round(_b/_c):0,_18=_d?Math.round(_c/_d):0,_19=_b?Math.floor(Math.log(_b)/Math.LN10):0,_1a=_c?Math.floor(Math.log(_c)/Math.LN10):0,_1b=_e/(_9-_8);
if(!isFinite(_1b)){
_1b=1;
}
return {bounds:{lower:_f,upper:_10,from:_8,to:_9,scale:_1b,span:_e},major:{tick:_b,start:_11,count:_14,prec:_19},minor:{tick:_c,start:_12,count:_15,prec:_1a},micro:{tick:_d,start:_13,count:_16,prec:0},minorPerMajor:_17,microPerMinor:_18,scaler:_3.linear};
};
dojo.mixin(dojox.charting.scaler.linear,{buildScaler:function(min,max,_1e,_1f){
var h={fixUpper:"none",fixLower:"none",natural:false};
if(_1f){
if("fixUpper" in _1f){
h.fixUpper=String(_1f.fixUpper);
}
if("fixLower" in _1f){
h.fixLower=String(_1f.fixLower);
}
if("natural" in _1f){
h.natural=Boolean(_1f.natural);
}
}
if("min" in _1f){
min=_1f.min;
}
if("max" in _1f){
max=_1f.max;
}
if(_1f.includeZero){
if(min>0){
min=0;
}
if(max<0){
max=0;
}
}
h.min=min;
h.useMin=true;
h.max=max;
h.useMax=true;
if("from" in _1f){
min=_1f.from;
h.useMin=false;
}
if("to" in _1f){
max=_1f.to;
h.useMax=false;
}
if(max<=min){
return _7(min,max,h,0,0,0,_1e);
}
var mag=Math.floor(Math.log(max-min)/Math.LN10),_22=_1f&&("majorTickStep" in _1f)?_1f.majorTickStep:Math.pow(10,mag),_23=0,_24=0,_25;
if(_1f&&("minorTickStep" in _1f)){
_23=_1f.minorTickStep;
}else{
do{
_23=_22/10;
if(!h.natural||_23>0.9){
_25=_7(min,max,h,_22,_23,0,_1e);
if(_25.bounds.scale*_25.minor.tick>_1){
break;
}
}
_23=_22/5;
if(!h.natural||_23>0.9){
_25=_7(min,max,h,_22,_23,0,_1e);
if(_25.bounds.scale*_25.minor.tick>_1){
break;
}
}
_23=_22/2;
if(!h.natural||_23>0.9){
_25=_7(min,max,h,_22,_23,0,_1e);
if(_25.bounds.scale*_25.minor.tick>_1){
break;
}
}
return _7(min,max,h,_22,0,0,_1e);
}while(false);
}
if(_1f&&("microTickStep" in _1f)){
_24=_1f.microTickStep;
_25=_7(min,max,h,_22,_23,_24,_1e);
}else{
do{
_24=_23/10;
if(!h.natural||_24>0.9){
_25=_7(min,max,h,_22,_23,_24,_1e);
if(_25.bounds.scale*_25.micro.tick>_1){
break;
}
}
_24=_23/5;
if(!h.natural||_24>0.9){
_25=_7(min,max,h,_22,_23,_24,_1e);
if(_25.bounds.scale*_25.micro.tick>_1){
break;
}
}
_24=_23/2;
if(!h.natural||_24>0.9){
_25=_7(min,max,h,_22,_23,_24,_1e);
if(_25.bounds.scale*_25.micro.tick>_1){
break;
}
}
_24=0;
}while(false);
}
return _24?_25:_7(min,max,h,_22,_23,0,_1e);
},buildTicks:function(_26,_27){
var _28,_29,_2a,_2b=_26.major.start,_2c=_26.minor.start,_2d=_26.micro.start;
if(_27.microTicks&&_26.micro.tick){
_28=_26.micro.tick,_29=_2d;
}else{
if(_27.minorTicks&&_26.minor.tick){
_28=_26.minor.tick,_29=_2c;
}else{
if(_26.major.tick){
_28=_26.major.tick,_29=_2b;
}else{
return null;
}
}
}
var _2e=[],_2f=[],_30=[];
while(_29<=_26.bounds.to+1/_26.bounds.scale){
if(Math.abs(_2b-_29)<_28/2){
_2a={value:_2b};
if(_27.majorLabels){
_2a.label=_6(_2b,_26.major.prec,_27);
}
_2e.push(_2a);
_2b+=_26.major.tick;
_2c+=_26.minor.tick;
_2d+=_26.micro.tick;
}else{
if(Math.abs(_2c-_29)<_28/2){
if(_27.minorTicks){
_2a={value:_2c};
if(_27.minorLabels&&(_26.minMinorStep<=_26.minor.tick*_26.bounds.scale)){
_2a.label=_6(_2c,_26.minor.prec,_27);
}
_2f.push(_2a);
}
_2c+=_26.minor.tick;
_2d+=_26.micro.tick;
}else{
if(_27.microTicks){
_30.push({value:_2d});
}
_2d+=_26.micro.tick;
}
}
_29+=_28;
}
return {major:_2e,minor:_2f,micro:_30};
},getTransformerFromModel:function(_31){
var _32=_31.bounds.from,_33=_31.bounds.scale;
return function(x){
return (x-_32)*_33;
};
},getTransformerFromPlot:function(_35){
var _36=_35.bounds.from,_37=_35.bounds.scale;
return function(x){
return x/_37+_36;
};
}});
})();
}
