var CIRCLE=0;
var RECTANGLE=1;
var POLYLINE=2;
var POLYGON=3;
var POINT=4;
Point2d=Class.create();
Point2d.prototype={initialize:function(x,y){
this.x=x;
this.y=y;
}};
eview.Part=Class.create();
eview.Part.prototype={initialize:function(){
this.subparts=new Array();
},add:function(_3){
this.subparts[this.subparts.length]=_3;
}};
eview.SubPart=Class.create();
eview.SubPart.prototype={initialize:function(){
this.points=new Array();
},add:function(_4){
this.points[this.points.length]=_4;
}};
eview.Shape=Class.create();
eview.Shape.prototype={initialize:function(){
this.parts=new Array();
},add:function(_5){
this.parts[this.parts.length]=_5;
},asString:function(){
var _6="";
for(var i=0;i<this.parts.length;i++){
var _8=this.parts[i];
for(var j=0;j<_8.subparts.length;j++){
var _a=_8.subparts[j];
for(var k=0;k<_a.points.length;k++){
var _c=_a.points[k];
_6=_6+_c.x+","+_c.y;
if((k+1)<_a.points.length){
_6=_6+" ";
}
}
if((j+1)<_8.subparts.length){
_6=_6+"#";
}
}
if((i+1)<this.parts.length){
_6=_6+"|";
}
}
return _6;
},parse:function(_d){
var _e=new Array();
_e=_d.split("|");
for(var i=0;i<_e.length;i++){
var _10=new eview.Part();
var _11=new Array();
_11=_e[i].split("#");
for(var j=0;j<_11.length;j++){
var _13=new eview.SubPart();
var _14=new Array();
_14=_11[j].split(" ");
for(var k=0;k<_14.length;k++){
var _16=new Array();
_16=_14[k].split(",");
if(_16.length!=2){
throw new Exception("Invalid shape buffer format, missing coordinate");
}
var x=_16[0];
var y=_16[1];
_13.add(new Point2d(x,y));
}
_10.add(_13);
}
this.add(_10);
}
}};
eview.Extent=Class.create();
eview.Extent.prototype={initialize:function(_19,_1a,_1b,_1c){
this.minx=_19;
this.miny=_1a;
this.maxx=_1b;
this.maxy=_1c;
},getCentreX:function(){
rv=((this.minx+this.maxx)/2);
return rv;
},getCentreY:function(){
return ((this.miny+this.maxy)/2);
},center:function(x,y){
var _1f=this.getWidth()*0.5;
var _20=this.getHeight()*0.5;
this.minx=Number(x)-_1f;
this.miny=Number(y)-_20;
this.maxx=Number(x)+_1f;
this.maxy=Number(y)+_20;
},getWidth:function(){
return this.maxx-this.minx;
},getHeight:function(){
return this.maxy-this.miny;
},union:function(_21,_22,_23,_24){
if(_21<this.minx){
this.minx=_21;
}
if(_22<this.miny){
this.miny=_22;
}
if(_23>this.maxx){
this.maxx=_23;
}
if(_24>this.maxy){
this.maxy=_24;
}
},intersection:function(_25,_26,_27,_28){
if(this.minx<_25){
this.minx=_25;
}
if(this.miny<_26){
this.miny=_26;
}
if(this.maxx>_27){
this.maxx=_27;
}
if(this.maxy>_28){
this.maxy=_28;
}
},scale:function(_29){
var _2a=this.maxx-this.minx;
var _2b=this.maxy-this.miny;
var _2c=_2a/2;
var _2d=_2b/2;
var _2e=this.minx+_2c;
var _2f=this.miny+_2d;
_2a=_2a*_29;
_2b=_2b*_29;
_2c=_2a/2;
_2d=_2b/2;
this.minx=_2e-_2c;
this.maxx=_2e+_2c;
this.miny=_2f-_2d;
this.maxy=_2f+_2d;
},offset:function(x,y){
this.minx+=x;
this.miny+=y;
this.maxx+=x;
this.maxy+=y;
},asString:function(){
return this.minx+","+this.miny+" "+this.minx+","+this.maxy+" "+this.maxx+","+this.maxy+" "+this.maxx+","+this.miny+" "+this.minx+","+this.miny;
}};
eview.Circle=Class.create();
eview.Circle.prototype={initialize:function(x,y,_34){
this.x=x;
this.y=y;
this.radius=_34;
},asString:function(){
return this.x+","+this.y+","+this.radius;
}};
eview.Point=Class.create();
eview.Point.prototype={initialize:function(x,y){
Object.extend(this,new eview.Shape());
this.x=x;
this.y=y;
var sp=new eview.SubPart();
sp.add(new Point2d(x,y));
var p=new eview.Part();
p.add(sp);
this.add(p);
}};
eview.Line=Class.create();
eview.Line.prototype={initialize:function(_39){
Object.extend(this,new eview.Shape());
this.parse(_39);
}};
eview.Polygon=Class.create();
eview.Polygon.prototype={initialize:function(_3a){
Object.extend(this,new eview.Shape());
this.parse(_3a);
}};
eview.Rectangle=Class.create();
eview.Rectangle.prototype={initialize:function(_3b,_3c,_3d,_3e){
Object.extend(this,new eview.Shape());
var _3f=new eview.Part();
var _40=new eview.SubPart();
_40.add(new Point2d(_3b,_3c));
_40.add(new Point2d(_3b,_3e));
_40.add(new Point2d(_3d,_3e));
_40.add(new Point2d(_3d,_3c));
_40.add(new Point2d(_3b,_3c));
_3f.add(_40);
this.add(_3f);
}};


