XML_newDocument=function(rootTagName,namespaceURL){if(!rootTagName)rootTagName="";if(!namespaceURL)namespaceURL="";if(document.implementation&&document.implementation.createDocument){return document.implementation.createDocument(namespaceURL,rootTagName,null);}else{var doc=new ActiveXObject("MSXML2.DOMDocument");if(rootTagName){var prefix="";var tagname=rootTagName;var p=rootTagName.indexOf(':');if(p!=-1){prefix=rootTagName.substring(0,p);tagname=rootTagName.substring(p+1);}if(namespaceURL){if(!prefix)prefix="a0";}else prefix="";var text="<"+(prefix?(prefix+":"):"")+tagname+(namespaceURL?(" xmlns:"+prefix+'="'+namespaceURL+'"'):"")+"/>";doc.loadXML(text);}return doc;}};XML_load=function(url){var xmldoc=XML_newDocument();xmldoc.async=false;try{xmldoc.load(url);}catch(e){var request=new XMLHttpRequest();request.open("GET",url,false);request.send(null);xmldoc=request.responseXML;}return xmldoc;};
function Point(x,y,xsig,ysig){this.x=x||0;this.y=y||0;this.xsig=xsig||0;this.ysig=ysig||0;return this;};Point.prototype.clone=function(){var p=new Point();for(name in this){p[name]=this[name];}return p;};Point.prototype.swap=function(p){var tmp=new Point(this.x,this.y);this.x=p.x;this.y=p.y;p.x=tmp.x;p.y=tmp.y;return p;};Point.prototype.delta=function(p){if(p==null){return undefined;}return new Point(this.x-p.x,this.y-p.y);};Point.prototype.norm=function(){return Math.sqrt(this.x*this.x+this.y*this.y);};Point.prototype.equal=function(p){if(this.x==p.x&&this.y==p.y)return true;else return false;};Point.prototype.dydx=function(p){if(p==null)return undefined;if(this.equal(p))return undefined;var dp=this.delta(p);return dp.y/dp.x;};
function Data(n){var N=n||0;this.id='';this.points=new Array(N);this.xmin=undefined;this.xmax=undefined;this.ymin=undefined;this.ymax=undefined;this.n=N;this.sampling=1;this.plotWith='points';this.attributeMap={x:'x',y:'y',xsig:'xsig',ysig:'ysig'};this.elementTag="point";return this;};Data.prototype.load=function(url){var xmldoc=XML_load(url);var elements=xmldoc.getElementsByTagName(this.elementTag);this.n=elements.length;this.points=new Array(this.n);var name,pa,xmin,xmax,ymin,ymax;for(var i=0;i<this.n;i+=this.sampling){this.points[i]=new Point();pa=elements[i].attributes;for(var j=0;j<pa.length;j++){name=this.attributeMap[pa[j].nodeName];if(name!=null){value=parseFloat(pa[j].nodeValue);this.points[i][name]=value;if(name=='x'){if(xmin==undefined){xmin=value;}if(xmax==undefined){xmax=value;}if(value>xmax)xmax=value;if(value<xmin)xmin=value;}if(name=='y'){if(ymin==undefined){ymin=value;}if(ymax==undefined){ymax=value;}if(value>ymax)ymax=value;if(value<ymin)ymin=value;}}}}this.xmax=xmax;this.xmin=xmin;this.ymin=ymin;this.ymax=ymax;return this;};Data.prototype.append=function(p){this.points.push(p);};function ts_array(n,vel){var x=new Array(n);var y=new Array(n);var sig=new Array(n);var xi=1993;var dx=1/365.25;var v=vel;var X=new Array(n);var Y=new Array(n);for(var i=0;i<n;i++){x[i]=xi;X[i]=xi;y[i]=15321+v*xi+10*Math.random()*(-2*Math.random()+1);Y[i]=y[i];sig[i]=2.0+Math.random();xi+=dx;}X=X.sort(cmp_num);Y=Y.sort(cmp_num);return{'x':x,'y':y,'sig':sig,'xmin':X[0],'xmax':X[n-1],'ymin':Y[0],'ymax':Y[n-1],'N':n}};function cmp_num(a,b){if(a<b)return-1;if(a>b)return 1;return 0;};
var svgNS="http://www.w3.org/2000/svg";var xlinkNS="http://www.w3.org/1999/xlink";var objCount;function count(){objCount=objCount==undefined?0:objCount+1;return objCount};var elementMap={"a":1,"altGlyph":1,"altGlyphDef":1,"altGlyphItem":1,"animate":1,"animateColor":1,"animateMotion":1,"animateTransform":1,"circle":1,"clipPath":1,"color-profile":1,"cursor":1,"definition-src":1,"defs":1,"desc":1,"ellipse":1,"feBlend":1,"feColorMatrix":1,"feComponentTransfer":1,"feComposite":1,"feConvolveMatrix":1,"feDiffuseLighting":1,"feDisplacementMap":1,"feDistantLight":1,"feFlood":1,"feFuncA":1,"feFuncB":1,"feFuncG":1,"feFuncR":1,"feGaussianBlur":1,"feImage":1,"feMerge":1,"feMergeNode":1,"feMorphology":1,"feOffset":1,"fePointLight":1,"feSpecularLighting":1,"feSpotLight":1,"feTile":1,"feTurbulence":1,"filter":1,"font":1,"font-face":1,"font-face-format":1,"font-face-name":1,"font-face-src":1,"font-face-uri":1,"foreignObject":1,"g":1,"glyph":1,"glyphRef":1,"hkern":1,"image":1,"line":1,"linearGradient":1,"marker":1,"mask":1,"metadata":1,"missing-glyph":1,"mpath":1,"path":1,"pattern":1,"polygon":1,"polyline":1,"radialGradient":1,"rect":1,"script":1,"set":1,"stop":1,"style":1,"svg":1,"switch":1,"symbol":1,"text":1,"textPath":1,"title":1,"tref":1,"tspan":1,"use":1,"view":1,"vkern":1};var AttrMap={"cssClass":"class","svgHref":"href"};var nsMap={"svgHref":xlinkNS};function svgOpt(name){var element=name.toLowerCase();if(element in elementMap)this.name=element;else alert('Unknown SVG element:'+element);switch(element){case 'tspan':case 'text':this.point=new Point();this.dx=0;this.dy=0;this.rotate=0;this.Attributes={x:0,y:0,dx:0,dy:0};this.text='';break;case 'circle':this.point=new Point();this.size=0;this.Attributes={cx:0,cy:0,r:0};break;case 'ellipse':this.point=new Point();this.h=0;this.w=0;this.Attributes={cx:0,cy:0,rx:0,ry:0};break;case 'rect':this.point=new Point();this.size=0;this.h=0;this.w=0;this.Attributes={x:0,y:0,width:0,height:0};break;case 'line':this.p1=new Point();this.p2=new Point();this.Attributes={x1:0,y1:0,x2:0,y2:0};break;case 'polyline':case 'polygon':this.points=[];this.Attributes={points:''};break;case 'path':this.Attributes={d:''};break;case 'g':this.Attributes={};case 'marker':this.path=undefined;this.Attributes={refX:0,refY:0,markerUnits:"strokeWidth",markerWidth:0,markerHeight:0,orient:"auto"};break;default:this.Attributes={};}return this;};function SVG(Attributes){var Attr=Attributes==undefined?{width:1024,height:768}:Attributes;this.root=svg_element("svg",Attr);return this;};svg_element=function(tagName,Attributes){if(!(tagName in elementMap)){return undefined;}var element=document.createElementNS(svgNS,tagName);for(var attrName in Attributes){var name=attrName in AttrMap?AttrMap[attrName]:attrName;var value=Attributes[attrName];if(attrName in nsMap)element.setAttributeNS(nsMap[attrName],name,value);else element.setAttribute(name,value);}return element;};SVG.prototype.g=function(opt){var g=svg_element("g",opt.Attributes);return g;};SVG.prototype.tspan=function(opt){var tnode=document.createTextNode(opt.text);var tspan=svg_element('tspan',opt.Attributes);var p=opt.point;var Att=opt.Attributes;Att.x=p.x;Att.y=p.y;Att.dx=opt.dx;Att.dy=opt.dy;if(opt.rotate){tspan.setAttribute("transform","rotate("+opt.rotate+","+p.x+','+p.y+")");}tspan.appendChild(tnode);return tspan};SVG.prototype.text=function(opt){var tnode=document.createTextNode(opt.text);var p=opt.point;var Att=opt.Attributes;Att.x=p.x;Att.y=p.y;Att.dx=opt.dx;Att.dy=opt.dy;var text=svg_element('text',opt.Attributes);if(opt.rotate){text.setAttribute("transform","rotate("+opt.rotate+","+p.x+','+p.y+")");}text.appendChild(tnode);return text};SVG.prototype.circle=function(opt){var Att=opt.Attributes;Att.cx=opt.point.x;Att.cy=opt.point.y;Att.r=opt.size?opt.size/2:Att.r;var circle=svg_element('circle',Att);return circle};SVG.prototype.ellipse=function(opt){var Att=opt.Attributes;Att.cx=opt.point.x;Att.cy=opt.point.y;if(opt.w){Att.rx=opt.w/2;};if(opt.h){Att.ry=opt.h/2;};var ellipse=svg_element('ellipse',Att);return ellipse;};SVG.prototype.rect=function(opt){var Att=opt.Attributes;Att.x=opt.point.x;Att.y=opt.point.y;Att.width=opt.w;Att.height=opt.h;if(opt.size){Att.width=opt.size;Att.height=opt.size;Att.x-=opt.size/2;Att.y-=opt.size/2;};var rect=svg_element('rect',Att);return rect};SVG.prototype.line=function(opt){var Att=opt.Attributes;Att.x1=opt.p1.x;Att.y1=opt.p1.y;Att.x2=opt.p2.x;Att.y2=opt.p2.y;var line=svg_element("line",Att);return line;};SVG.prototype.path=function(opt){var Att=opt.Attributes;var path=svg_element("path",Att);return path;};SVG.prototype.polyline=function(opt){var Att=opt.Attributes;Att.points=Att.points==undefined?'':Att.points;for(var i=0;i<opt.points.length;i++){Att.points+=opt.points[i].x+','+opt.points[i].y+' ';}var polyline=svg_element("polyline",Att);return polyline;};SVG.prototype.polygon=function(opt){var Att=opt.Attributes;Att.points=Att.points==undefined?'':Att.points;for(var i=0;i<opt.points.length;i++){Att.points+=opt.points[i].x+','+opt.points[i].y+' ';}var polygon=svg_element("polygon",Att);return polygon;};SVG.prototype.marker=function(opt){var Att=opt.Attributes;var marker=svg_element("marker",Att);if(opt.path!=undefined){marker.appendChild(opt.path)}return marker;};function svgPathData(opt){var s='';var p=opt.point;var size=opt.size;var center='M '+p.x+' '+p.y+' ';var dx=2;switch(opt.shape){case 'x_err_bar':center+'v '+size+' '+'h '+(-1)*dx+' h '+2*dx;}};
var ua=navigator.userAgent.toLowerCase();var version='0.1';var objInstance={};function legendOpt(){return{id:'',cssClass:'',dx:0,dy:0,text:''};};function tickOpt(){return{id:'',cssClass:'ticks',x:0,y:0,ex:0,ey:0,lM:6,lm:3}};var url='';var plotOpt={id:'',cssClass:'',data:[],symbol:{id:'',cssClass:'symbol',type:'circle',size:2},viewport:{id:'',cssClass:'viewport',Xmin:0,Xmax:0,Ymin:0,Ymax:0},svgwin:{id:'',cssClass:'svgwindow'},parentDiv:{},container:{},div:{id:'',cssClass:'divwindow',style:{position:'absolute',top:200,left:0,width:600,height:180,offsetTop:0,offsetLeft:0}},selectType:'rect',xunit:'',yunit:'',bounds:{xmin:0,xmax:0,ymin:0,ymax:0},xmin:0,xmax:0,ymin:0,ymax:0,xlegend:legendOpt(),ylegend:legendOpt(),title:new legendOpt,subtitle:new legendOpt,ticks:new tickOpt,sampling:0,};function Plot2D(opt){for(var name in opt){if(name=='div'){this.initDiv(opt.div);}else{this[name]=opt[name];}}this.detectSafari();this.setOverlap(this.symbol.size);this.initWindow(this.div);this.div.appendChild(this.svg.root);this.drawViewport();this.xyCoord(new Point());this.xyCoordLegend();this.setDefs();this.setTitle('');this.setSubTitle('');this.xLegend('');this.yLegend('');this.winControls();objInstance[this.id]=this;return this;};Plot2D.prototype.detectSafari=function(){this.isSafari=ua.indexOf("safari")!=-1?1:0;};Plot2D.prototype.xyBounds=function(xmin,xmax,ymin,ymax){if(xmin!=null&&xmax!=null&&ymin!=null&&ymax!=null){this.xmin=xmin;this.xmax=xmax;this.ymin=ymin;this.ymax=ymax;this.bounds={xmin:this.xmin,xmax:this.xmax,ymin:this.ymin,ymax:this.ymax};}return this.bounds};Plot2D.prototype.appendData=function(data){if(data.points.length){this.data.push(data);this.dataBounds();this.setScaleXY(this.bounds);this.setTicks();}};Plot2D.prototype.dataBounds=function(){var xmin,xmax,ymin,ymax;for(var i=0;i<this.data.length;i++){data=this.data[i];if(data.xmin!=undefined&&data.xmax!=undefined){if(xmin==undefined||data.xmin<xmin){xmin=data.xmin;}if(xmax==undefined||data.xmax>xmax){xmax=data.xmax;}}if(data.plotWith=='vlines'){continue;}if(data.ymin!=undefined&&data.ymax!=undefined){if(ymin==undefined||data.ymin<ymin){ymin=data.ymin;}if(ymax==undefined||data.ymax>ymax){ymax=data.ymax;}}}return this.xyBounds(xmin,xmax,ymin,ymax);};Plot2D.prototype.plot=function(){this.setScaleXY(this.bounds);this.setTicks();this.xyCoord(new Point());for(var i=0;i<this.data.length;i++){var data=this.data[i];switch(data.plotWith){case 'points':this.plotPoints(data);break;case 'lines':;case 'linepoints':this.plotLinePoints(data);break;case 'vlines':this.plotVLines(data);break;default:this.plotPoints(data);}}};Plot2D.prototype.layerId=function(name){return name.toLowerCase()+"_"+this.id;};Plot2D.prototype.setSubTitle=function(t){this.cleanLayer('SubTitle');var opt=new svgOpt('text');opt.text=t||'';opt.point=new Point(this.viewport.Xmin+this.dX/2,this.viewport.Ymin);opt.dy-=10;this.layer["SubTitle"].appendChild(this.svg.text(opt));};Plot2D.prototype.setTitle=function(t){this.cleanLayer('Title');var opt=svgOpt('text');opt.point=new Point(this.viewport.Xmin+this.dX/2,this.viewport.Ymin);opt.dy-=25;opt.text=t||'';this.layer["Title"].appendChild(this.svg.text(opt));};Plot2D.prototype.yLegend=function(t){this.cleanLayer('YLegend');var opt=new svgOpt('text');opt.point=new Point(this.viewport.Xmin,this.viewport.Ymin+this.dY/2);opt.point.x-=34;opt.text=t;opt.rotate=-90;this.layer['YLegend'].appendChild(this.svg.text(opt));};Plot2D.prototype.xLegend=function(t){this.cleanLayer('XLegend');var opt=new svgOpt('text');opt.point=new Point(this.viewport.Xmin+this.dX/2,this.viewport.Ymax);opt.dy=30;opt.text=t;this.layer['XLegend'].appendChild(this.svg.text(opt));};Plot2D.prototype.xyTooltip=function(P,att){var p=this.screenCoordinates(P);var Att={id:'xytooltip',cssClass:'xycoord',x:p.x,y:p.y,dx:15,dy:0};if(att!=undefined){Att=att;}var xtext=document.createTextNode('X='+P.x.toFixed(4));var ytext=document.createTextNode('Y='+P.y.toFixed(3));var xyTooltip=svg_element('text',Att);xyTooltip.appendChild(xtext);Att.id='';Att.dy+=11;var tspan=svg_element('tspan',Att);tspan.appendChild(ytext);xyTooltip.appendChild(tspan);return xyTooltip};Plot2D.prototype.xyCoordLegend=function(p){var opt=new svgOpt('text');opt.Attributes.cssClass='xycoordlegend';opt.point.x=this.viewport.Xmax;opt.point.y=this.viewport.Ymax;opt.dy=-15;opt.dx=10;this.cleanLayer('XYCoordLegend');opt.text=p?'X='+p.x.toFixed(4):'Drag/Click';this.layer.XYCoordLegend.appendChild(this.svg.text(opt));opt.dy+=11;opt.text=p?' Y='+p.y.toFixed(3):'inside';this.layer.XYCoordLegend.appendChild(this.svg.text(opt));};Plot2D.prototype.xyCoord=function(p,click){this.cleanLayer('XYCoord');this.layer.XYCoord.appendChild(this.xyTooltip(p));if(click){this.xyCoordLegend(p);}};Plot2D.prototype.xyCoord_=function(p,click){this.cleanLayer('XYCoord');var P=this.screenCoordinates(p);if(this.isSafari){var ropt=new svgOpt('rect');ropt.point.x=P.x+20;ropt.point.y=P.y-15;ropt.w=80;ropt.h=50;var r=this.svg.rect(ropt);r.setAttribute("fill","white");r.setAttribute("opacity",0);r.setAttribute("stroke",1);this.layer.XYCoord.appendChild(r);}var opt=new svgOpt('text');opt.Attributes.cssClass='xycoord';opt.point=P;opt.dy=0;opt.dx=25;opt.text='X='+p.x.toFixed(4);this.layer.XYCoord.appendChild(this.svg.text(opt));opt.dy+=11;opt.text=' Y='+p.y.toFixed(3);this.layer.XYCoord.appendChild(this.svg.text(opt));if(click){opt.Attributes.cssClass='xycoordlegend';opt.point.x=this.viewport.Xmin;opt.point.y=this.viewport.Ymin+this.dY;opt.dy=25;opt.dx=0;this.cleanLayer('XYCoordLegend');opt.text='X='+p.x.toFixed(4);this.layer.XYCoordLegend.appendChild(this.svg.text(opt));opt.dy+=11;opt.text=' Y='+p.y.toFixed(3);this.layer.XYCoordLegend.appendChild(this.svg.text(opt));}};Plot2D.prototype.setSampling=function(s){if(!s){this.sampling=Math.round(this.data.n/this.dX/this.symbol.size);}else{this.sampling=s;}if(this.sampling<1)this.sampling=1;};Plot2D.prototype.initWindow=function(){this.svg=new SVG({id:"svgWindow_"+this.id,cssClass:this.svgwin.cssClass,width:this.div.width+'px',height:this.div.height+'px'});var layers=['Defs','Viewport','Grid','Ticks','XLabel','YLabel','Title','SubTitle','XLegend','YLegend','DataDefs','Data','XYCoord','XYCoordLegend','MouseSelect','WinControls','EvtWin'];this.layer={};for(var i=0;i<layers.length;i++){var name=layers[i];var Attributes={id:this.layerId(name),cssClass:name.toLowerCase()};this.layer[name]=svg_element("g",Attributes);this.svg.root.appendChild(this.layer[name]);}};Plot2D.prototype.findpos=function(obj){var curleft=0;var curtop=0;while(obj){curleft+=obj.offsetLeft;curtop+=obj.offsetTop;obj=obj.offsetParent;}return{left:curleft,top:curtop};};Plot2D.prototype.initDiv=function(opt){this.div=document.createElement("DIV");this.div.setAttribute("id","div_"+this.id);this.div.setAttribute("class","divwindow");this.container.appendChild(this.div);this.div.style.position=opt.style.position;this.div.style.width=opt.style.width+'px';this.div.style.height=opt.style.height+'px';this.div.style.top=opt.style.top+'px';this.div.style.left=opt.style.left+'px';this.div.width=opt.style.width;this.div.height=opt.style.height;var lt=this.findpos(this.container);var sc=this.findscroll(this.container);this.div.X=opt.style.left+lt.left-sc.left;this.div.Y=opt.style.top+lt.top-sc.top;with(Math){this.Xo=round(opt.style.width*1/10);this.Yo=round(opt.style.height*2/10);this.dX=round(opt.style.width-2.5*this.Xo);this.dY=round(opt.style.height-2*this.Yo);}var dim={};dim.Xmin=this.viewport.Xmin?this.viewport.Xmin:this.Xo;dim.Xmax=this.viewport.Xmax?this.viewport.Xmax:this.Xo+this.dX;dim.Ymin=this.viewport.Ymin?this.viewport.Ymin:this.Yo;dim.Ymax=this.viewport.Ymax?this.viewport.Ymax:this.Yo+this.dY;this.setViewportDim(dim);};Plot2D.prototype.setViewportDim=function(dim){this.viewport.Xmin=dim.Xmin;this.viewport.Xmax=dim.Xmax;this.viewport.Ymin=dim.Ymin;this.viewport.Ymax=dim.Ymax;this.dX=dim.Xmax-dim.Xmin;this.dY=dim.Ymax-dim.Ymin;};Plot2D.prototype.drawViewport=function(){var p=new Point();var opt=svgOpt('rect');opt.Attributes.cssClass=this.viewport.cssClass;opt.point.x=this.viewport.Xmin;opt.point.y=this.viewport.Ymin;opt.w=this.dX;opt.h=this.dY;var rect=this.svg.rect(opt);this.layer['Viewport'].appendChild(rect);opt.Attributes.id=this.id;opt.Attributes.cssClass='evtwin';opt.Attributes.onclick="onMouseClick(evt)";opt.Attributes.onmousedown="onMouseDown(evt)";opt.Attributes.onmousemove="onMouseMove(evt)";opt.Attributes.onmouseup="onMouseUp(evt)";opt.Attributes.onmouseout="onMouseOut(evt)";rect=this.svg.rect(opt);this.layer['EvtWin'].appendChild(rect);};var bmousemove=0;var bmousedown=0;var mP,sP,eP,dP;sP=new Point();eP=new Point();function getMouse(evt){var p=new Point();p.x=evt.clientX;p.y=evt.clientY;return objInstance[evt.target.id].userCoordinates(p)};function onMouseClick(evt){mP=getMouse(evt);objInstance[evt.target.id].xyCoord(mP,true);};function onMouseOut(evt){objInstance[evt.target.id].cleanLayer('XYCoord');};function onMouseDown(evt){bmousedown=1;mP=getMouse(evt);sP=mP;};function onMouseMove(evt){var obj=objInstance[evt.target.id];bmousemove=1;mP=getMouse(evt);if(bmousedown){if(obj.selectType=='rect'){obj.rectSelect(sP,mP);}else if(obj.selectType=='line'){obj.lineSelect(sP,mP);}}obj.xyCoord(mP);};function updateMouseUpMM(obj){};function updateMouseUpMD(obj){obj.cleanLayer('Data');obj.plot();};function onMouseUp(evt){var xi,xf,yi,yf;var obj=objInstance[evt.target.id];if(bmousemove){bmousemove=0;eP=mP;updateMouseUpMM(obj);}if(bmousedown){bmousedown=0;if(!sP.equal(eP)){if(obj.selectType=='rect'){xi=sP.x<eP.x?sP.x:eP.x;xf=sP.x>eP.x?sP.x:eP.x;yi=sP.y<eP.y?sP.y:eP.y;yf=sP.y>eP.y?sP.y:eP.y;obj.xyBounds(xi,xf,yi,yf);}obj.cleanLayer('MouseSelect');updateMouseUpMD(obj)}}};function replot(evt){var obj=objInstance[evt.target.id];obj.dataBounds();obj.cleanLayer('Data');obj.cleanLayer('MouseSelect');obj.plot();};Plot2D.prototype.selectBounds=function(p1,p2){var P1=this.screenCoordinates(p1);var P2=this.screenCoordinates(p2);var opt={};opt.p1=P1.clone();opt.p2=P2.clone();var dp=P2.delta(P1);opt.height=Math.abs(dp.y)||1;opt.width=Math.abs(dp.x)||1;dp.y*=-1;opt.point=P1;if(dp.x>0){if(dp.y>0){opt.point.y-=opt.height;}}else if(dp.y>0){opt.point=P2;}else{opt.point.x-=opt.width;}return opt};Plot2D.prototype.lineSelect=function(p1,p2){var endPoints=this.selectBounds(p1,p2);var opt=new svgOpt('line');opt.Attributes.cssClass='lineselect';opt.p1=endPoints.p1;opt.p2=endPoints.p2;this.cleanLayer('MouseSelect');this.layer.MouseSelect.appendChild(this.svg.line(opt));};Plot2D.prototype.rectSelect=function(p1,p2){var endPoints=this.selectBounds(p1,p2);var opt=new svgOpt('rect');opt.point=endPoints.point;opt.h=endPoints.height;opt.w=endPoints.width;opt.Attributes.cssClass='mouseselect';this.cleanLayer('MouseSelect');this.layer.MouseSelect.appendChild(this.svg.rect(opt));};Plot2D.prototype.viewportCoordinates=function(p){var P=new Point();P.x=this.viewport.Xmin+p.x;P.y=this.viewport.Ymin+this.dY-p.y;return P};Plot2D.prototype.findscroll=function(obj){var curleft=window.scrollX;var curtop=window.scrollY;while(obj){curleft+=obj.scrollLeft;curtop+=obj.scrollTop;obj=obj.offsetParent;}return{left:curleft,top:curtop};};Plot2D.prototype.userCoordinates=function(P){var p=new Point();var obj=this.div;var lt=this.findpos(obj);var sc=this.findscroll(obj);var dxy={left:lt.left-sc.left,top:lt.top-sc.top};p.x=this.xmin+(P.x-(this.viewport.Xmin+dxy.left))/this.Ex;p.y=this.ymax-(P.y-(this.viewport.Ymin+dxy.top))/this.Ey;return p};Plot2D.prototype.screenCoordinates=function(p){var P=new Point();P.x=(p.x-this.xmin)*this.Ex;P.y=(p.y-this.ymin)*this.Ey;return this.viewportCoordinates(P)};Math.log10=function(x){if(x<0){alert("log10 Error: no negative numbers please");return undefined}return Math.log(x)/Math.log(10)};Plot2D.prototype.xyTickSize=function(bounds){var dx=bounds.xmax-bounds.xmin;var dy=bounds.ymax-bounds.ymin;var x,y,ex,ey,eex,eey;with(Math){eex=floor(log10(abs(bounds.xmax)+0.1));eey=floor(log10(abs(bounds.ymax)+0.1));ex=floor(log10(abs(dx)))-1;ey=floor(log10(abs(dy)))-1;x=pow(10,ex);y=pow(10,ey);var f=5;var j=ex-1;var dex=abs(eex)+abs(ex)+1;while(dx/x>this.dX/f/dex){x=pow(10,ex)+pow(10,j);ex=floor(log10(x));x=pow(10,ex);j++;}var dey=1;j=ey-1;while(dy/y>this.dY/f/dey){y=pow(10,ey)+pow(10,j);ey=floor(log10(y));y=pow(10,ey);j++;}};this.ticks.x=x;this.ticks.y=y;this.ticks.ex=ex;this.ticks.ey=ey;return this.ticks};Plot2D.prototype.xyLimits=function(bounds){var ticks=this.xyTickSize(bounds);var xmid=(bounds.xmax+bounds.xmin)/2;var ymid=(bounds.ymax+bounds.ymin)/2;var x=Math.floor(bounds.xmin/ticks.x)*ticks.x;var y=Math.floor(bounds.ymin/ticks.y)*ticks.y;while(x<xmid)x+=ticks.x;while(y<ymid)y+=ticks.y;xmid=x;ymid=y;this.xmin=xmid;while(this.xmin>bounds.xmin-ticks.x/2)this.xmin-=ticks.x;this.xmax=xmid;while(this.xmax<bounds.xmax+ticks.x/2)this.xmax+=ticks.x;this.ymin=ymid;while(this.ymin>bounds.ymin-ticks.y/2)this.ymin-=ticks.y;this.ymax=ymid;while(this.ymax<bounds.ymax+ticks.y/2)this.ymax+=ticks.y;};Plot2D.prototype.setScaleXY=function(bounds){this.xyLimits(bounds);this.dx=this.xmax-this.xmin;this.dy=this.ymax-this.ymin;this.Ex=this.dX/this.dx;this.Ey=this.dY/this.dy};Plot2D.prototype.cleanLayer=function(layerName){var layer=this.layer[layerName];while(layer.firstChild!=null)layer.removeChild(layer.firstChild);};Plot2D.prototype.setTicks=function(){var ticks=this.ticks;var ndx=ticks.ex<0?Math.abs(ticks.ex):0;var ndy=ticks.ey<0?Math.abs(ticks.ey):0;var xmin=this.xmin;var xmax=this.xmax;var topt=svgOpt('text');topt.Attributes.cssClass='xlabel';var layers=['Ticks','Grid','XLabel','YLabel'];for(var i=0;i<layers.length;i++)this.cleanLayer(layers[i]);var i=0;for(var xi=xmin;xi<xmax;xi+=ticks.x){var id=(i%2)==0?'#mayorXtic':'#minorXtic';i++;var x=xi.toFixed(ndx);P=this.screenCoordinates(new Point(x,0));var hgrid=document.createElementNS(svgNS,"use");hgrid.setAttributeNS(xlinkNS,"xlink:href",'#vline');hgrid.setAttributeNS(null,"x",P.x);this.layer.Grid.appendChild(hgrid);var xtic=document.createElementNS(svgNS,"use");xtic.setAttributeNS(xlinkNS,"xlink:href",id);xtic.setAttributeNS(null,"x",P.x);this.layer.Ticks.appendChild(xtic);if(id=='#mayorXtic'){topt.point=this.screenCoordinates(new Point(x,this.ymin));topt.dy=12;topt.text=x;this.layer.XLabel.appendChild(this.svg.text(topt));}}i=0;topt=new svgOpt('text');topt.Attributes.cssClass='ylabel';for(var yi=this.ymin;yi<this.ymax;yi+=ticks.y){var id=(i%2)==0?'#mayorYtic':'#minorYtic';i++;var y=yi.toFixed(ndy);P=this.screenCoordinates(new Point(0,y));var hgrid=document.createElementNS(svgNS,"use");hgrid.setAttributeNS(xlinkNS,"xlink:href",'#hline');hgrid.setAttributeNS(null,"y",P.y);this.layer.Grid.appendChild(hgrid);var ytic=document.createElementNS(svgNS,"use");ytic.setAttributeNS(xlinkNS,"xlink:href",id);ytic.setAttributeNS(null,"y",P.y);this.layer.Ticks.appendChild(ytic);if(id=='#mayorYtic'){topt.point=this.screenCoordinates(new Point(this.xmin,y));topt.point.x-=5;topt.text=y;this.layer.YLabel.appendChild(this.svg.text(topt));}}};Plot2D.prototype.winControls=function(){var idiv=document.createElement("div");idiv.style.position="absolute";idiv.style.top=(this.viewport.Ymin-22)+'px';idiv.style.left=(this.viewport.Xmin+1)+'px';var html='<img id="'+this.id+'" width="43px" height ="18px"';html+=' title="Show All" src="show_all_icon_shadow.png" ';html+='onclick="replot(event)" ';html+='onmouseover="javascript:this.style.border=\'1px solid black\'; " ';html+='onmouseout="javascript:this.style.border=\'none\'; " ';html+='></img>';idiv.innerHTML=html;this.div.appendChild(idiv);};Plot2D.prototype.setDefs=function(){var defs=svg_element('defs',{});var p=new Point();var symbols=['circle','rect'];var size=this.symbol.size;var hs=size/2;for(var i=0;i<symbols.length;i++){var sname=symbols[i];var symbol=svg_element("symbol",{id:"symbol_"+sname,x:0,y:0,width:size,height:size,viewBox:"0 0 "+(size+1)+" "+(size+1),preserveAspectRatio:"xMidYMid meet",cssClass:'symbol'});var opt=svgOpt(sname);opt.size=this.symbol.size;switch(sname){case 'rect':symbol.appendChild(this.svg.rect(opt));break;case 'circle':opt.point.x+=hs;opt.point.y+=hs;symbol.appendChild(this.svg.circle(opt));break;default:alert('Unknown symbol:|'+sname+'|');symbol.appendChild(this.svg.circle(opt));break;}defs.appendChild(symbol);}var hline_opt=svgOpt('line');hline_opt.Attributes.id='hline';hline_opt.Attributes.cssClass='grid';hline_opt.p1.x=this.viewport.Xmin;hline_opt.p2.x=this.viewport.Xmin+this.dX;defs.appendChild(this.svg.line(hline_opt));var vline_opt=svgOpt('line');vline_opt.Attributes.id='vline';vline_opt.Attributes.cssClass='grid';vline_opt.p1.y=this.viewport.Ymin;vline_opt.p2.y=this.viewport.Ymin+this.dY;defs.appendChild(this.svg.line(vline_opt));var tic_opt=svgOpt('line');tic_opt.Attributes.id='mayorXtic';tic_opt.Attributes.cssClass='ticks';tic_opt.p1.y=this.viewport.Ymin+this.dY-this.ticks.lM;tic_opt.p2.y=this.viewport.Ymin+this.dY;defs.appendChild(this.svg.line(tic_opt));var mtic_opt=svgOpt('line');mtic_opt.Attributes.id='minorXtic';mtic_opt.Attributes.cssClass='ticks';mtic_opt.p1.y=this.viewport.Ymin+this.dY-this.ticks.lm;mtic_opt.p2.y=this.viewport.Ymin+this.dY;defs.appendChild(this.svg.line(mtic_opt));var ytic_opt=svgOpt('line');ytic_opt.Attributes.id='mayorYtic';ytic_opt.Attributes.cssClass='ticks';ytic_opt.p1.x=this.viewport.Xmin;ytic_opt.p2.x=this.viewport.Xmin+this.ticks.lM;defs.appendChild(this.svg.line(ytic_opt));var mytic_opt=svgOpt('line');mytic_opt.Attributes.id='minorYtic';mytic_opt.Attributes.cssClass='ticks';mytic_opt.p1.x=this.viewport.Xmin;mytic_opt.p2.x=this.viewport.Xmin+this.ticks.lm;defs.appendChild(this.svg.line(mytic_opt));this.layer.Defs.appendChild(defs);};Plot2D.prototype.insertPoint_=function(p){var hs=this.symbol.size/2;var symbol=document.createElementNS(svgNS,"use");symbol.setAttributeNS(xlinkNS,"xlink:href","#symbol_"+this.symbol.type);symbol.setAttributeNS(null,"id","symbol_"+this.id);symbol.setAttributeNS(null,"class",this.symbol.cssClass);symbol.setAttributeNS(null,"y",p.y-hs);symbol.setAttributeNS(null,"x",p.x-hs);symbol.setAttributeNS(null,"visibility",'visible');this.layer.Data.appendChild(symbol);};Plot2D.prototype.insertPoint=function(p){var opt=new svgOpt('circle');opt.Attributes.cssClass=this.symbol.cssClass;opt.point=p;opt.size=this.symbol.size;this.layer.Data.appendChild(this.svg.circle(opt));};Plot2D.prototype.deltaPoint=function(p1,p2){var dp=p1.delta(p2);return dp.norm()};Plot2D.prototype.setOverlap=function(size){var p=new Point(size/this.Ex,0);this.overlap=p.norm();return this.overlap};Plot2D.prototype.plotPoints=function(data){var p=new Point();var pp=data.points[0];var dp;for(var i=0;i<data.n;i+=this.sampling){p=data.points[i];if(p.x>=this.xmin&&p.x<=this.xmax&&p.y>=this.ymin&&p.y<=this.ymax){dp=i?p.delta(pp).norm():this.overlap;if(dp<this.overlap){continue;}this.insertPoint(this.screenCoordinates(p));pp=p;}}};Plot2D.prototype.drawLinePoints=function(p1,p2,addSymbol){var opt=new svgOpt('line');opt.Attributes.cssClass='lines';opt.p1=this.screenCoordinates(p1);opt.p2=this.screenCoordinates(p2);var dp=this.deltaPoint(p1,p2);if(addSymbol){this.insertPoint(opt.p1);if(dp>=this.overlap){this.insertPoint(opt.p2);}}if(dp>=this.overlap)this.layer.Data.appendChild(this.svg.line(opt));};Plot2D.prototype.plotLinePoints=function(data){var addSymbol=data.plotWith=='linepoints'?true:false;var pp=data.points[0];for(var i=1;i<data.n;i+=this.sampling){p=data.points[i];if(p.x>=this.xmin&&p.x<=this.xmax&&p.y>=this.ymin&&p.y<=this.ymax){this.drawLinePoints(pp,p,addSymbol);}pp=p;}};Plot2D.prototype.drawVLine=function(p,attr){var opt=new svgOpt('line');var P=this.screenCoordinates(p);opt.p1.x=P.x;opt.p2.x=P.x;opt.p1.y=this.viewport.Ymin;opt.p2.y=this.viewport.Ymin+this.dY;opt.Attributes=attr;this.layer.Data.appendChild(this.svg.line(opt));};Plot2D.prototype.plotVLines=function(data){var attr={cssClass:data.cssClass};var p;for(var i=0;i<data.n;i+=this.sampling){p=data.points[i];if(p.x>=this.xmin&&p.x<=this.xmax){this.drawVLine(p,attr);}}};
function load_panga_ts(url){var xmldoc=XML_load(url);var points=xmldoc.getElementsByTagName("point");var info=xmldoc.getElementsByTagName("info")[0];var params=xmldoc.getElementsByTagName("parameter");var npar=params.length;var N=points.length;var Dtype={data:"Raw",ldet:"Detrended",resd:"Cleaned"};var Comp={lat:"North",lon:"East",rad:"Up"};var data=new Data(N);data.xmin=parseFloat(info.getAttribute("ti"));data.xmax=parseFloat(info.getAttribute("tf"));data.ymin=parseFloat(info.getAttribute("ymin"));data.ymax=parseFloat(info.getAttribute("ymax"));data.rms=parseFloat(info.getAttribute("rms"));data.chi2_dof=parseFloat(info.getAttribute("chi2_dof"));data.comp=Comp[info.getAttribute("comp")];data.dtype=Dtype[info.getAttribute("dtype")];data.par={};data.jmpData=new Data();data.jmpData.cssClass='jmplines';data.jmpData.xmin=data.xmin;data.jmpData.xmax=data.xmax;data.jmpData.ymin=data.ymin;data.jmpData.ymax=data.ymax;data.jmpData.plotWith='vlines';data.evtData=new Data();data.evtData.cssClass='evtlines';data.evtData.xmin=data.xmin;data.evtData.xmax=data.xmax;data.evtData.ymin=data.ymin;data.evtData.ymax=data.ymax;data.evtData.plotWith='vlines';for(var k=0;k<npar;k++){var name=params[k].getAttribute("name");var sig=parseFloat(params[k].getAttribute("sig"));var value=parseFloat(params[k].getAttribute("value"));var epoch=parseFloat(params[k].getAttribute("epoch"));if(name=="jmp"){if(data.par[name]==undefined){data.par[name]=[];}var jPoint=new Point(epoch,value);jPoint.ysig=sig;data.par[name].push(jPoint);data.jmpData.points.push(jPoint);data.jmpData.n++;}else if(name=="evt"){if(data.par[name]==undefined){data.par[name]=[];}var jPoint=new Point(epoch,value);jPoint.ysig=data.par[name].sig;data.par[name].push(jPoint);data.evtData.points.push(jPoint);data.evtData.n++;}else{data.par[name]={};data.par[name].value=value;data.par[name].sig=sig;}}for(var i=0;i<N;i++){data.points[i]=new Point();data.points[i].x=parseFloat(points[i].getAttribute("epoch"));data.points[i].y=parseFloat(points[i].getAttribute("value"));data.points[i].ysig=parseFloat(points[i].getAttribute("sigma"));}return data}var dtypeFunctions={Raw:['line','annual','sannual','jmp','evt'],Detrended:['annual','sannual','jmp','evt'],Cleaned:[],};var lineFunction=function(a,b,x){return a+b*x;};var annualFunction=function(a,b,x){with(Math){return a*sin(2*PI*x+b);}};var sannualFunction=function(a,b,x){with(Math){return a*sin(4*PI*x+b);}};var heavFunction=function(x){return x<0?0:1;};var jumpsFunction=function(){var x=arguments[0];var jmp=arguments[1];var val=0;for(var i=0;i<jmp.length;i++){val+=jmp[i].y*heavFunction(x-jmp[i].x);}return val;};Plot2D.prototype.basisFunction=function(x,par,basisFunctions){var retval=0;for(var i=0;i<basisFunctions.length;i++){switch(basisFunctions[i]){case "line":retval+=lineFunction(par.y_zero.value,par.vel.value,x);break;case "annual":retval+=annualFunction(par.a_amp.value,par.a_phase.value,x);break;case "sannual":retval+=sannualFunction(par.sa_amp.value,par.sa_phase.value,x);break;case "jmp":retval+=jumpsFunction(x,par.jmp);break;case "evt":retval+=jumpsFunction(x,par.evt);break;}}return retval;};Plot2D.prototype.basisFunctionData=function(func,par,rangeData){var fdata=new Data(rangeData.points.length);fdata.plotWith="lines";fdata.xmin=rangeData.xmin;fdata.xmax=rangeData.xmax;fdata.ymin=rangeData.ymin;fdata.ymax=rangeData.ymax;var bfunc=[];if(par.y_zero!=undefined&&par.vel!=undefined){bfunc.push('line');}if(par.a_amp!=undefined&&par.a_phase!=undefined){bfunc.push('annual');}if(par.sa_amp!=undefined&&par.sa_phase!=undefined){bfunc.push('sannual');}if(par.jmp!=undefined){bfunc.push('jmp')};if(par.evt!=undefined){bfunc.push('evt');}var bf=[];for(var i=0;i<func.length;i++){for(var j=0;j<bfunc.length;j++){if(func[i]==bfunc[j]){bf.push(bfunc[j]);}}}for(var i=0;i<fdata.n;i++){fdata.points[i]=new Point(rangeData.points[i].x,0);fdata.points[i].y=this.basisFunction(fdata.points[i].x,par,bf);}return fdata;};Plot2D.prototype.neuPlot=function(opt){this.cleanLayer('Data');this.data=[];this.id=opt.id;var data=load_panga_ts(opt.url);data.plotWith='points';var jdata=data.jmpData;jdata.plotWith="vlines";this.appendData(data);var dtfun=dtypeFunctions[data.dtype]||[];if(dtfun.length){var fdata=this.basisFunctionData(dtypeFunctions[data.dtype],data.par,data);fdata.cssClass='lines';this.appendData(fdata);};this.appendData(jdata);this.xunit='Years';this.yunit=' (mm)';this.xLegend('');this.yLegend(data.comp+' '+this.yunit);this.setTitle('');var par=data.par;var subtitle=data.dtype;subtitle+='   Vel='+par.vel.value.toFixed(2)+' +- '+par.vel.sig.toFixed(2)+' mm/yr';subtitle+='   Chi^2/DOF='+data.chi2_dof.toFixed(2);subtitle+='   WRMS='+data.rms.toFixed(2)+' mm';this.setSubTitle(subtitle);var ryears=2.5;var dx=this.xmax-this.xmin;if((dx-ryears)>0){this.xyBounds((this.xmax-ryears),this.xmax,this.ymin,this.ymax);this.setScaleXY(this.bounds);this.setTicks();}this.plot();}
function ProgressbarMapControl(map,width){this.map_=map;this.width_=width;}ProgressbarMapControl.prototype=new GControl(true,false);ProgressbarMapControl.prototype.initialize=function(){var container_=document.createElement('div');container_.innerHTML='<div style="position:absolute;width:100%;border:5px;'+'text-align:center;vertical-align:bottom;" id="geo_progress_text"></div>'+'<div style="background-color:green;height:100%;" id="geo_progress"></div>';container_.id="geo_progress_container";container_.style.display="none";container_.style.width=this.width_+"px";container_.style.fontSize="0.8em";container_.style.height="1.3em";container_.style.border="1px solid #555";container_.style.backgroundColor="white";container_.style.textAlign="left";this.map_.getContainer().appendChild(container_);return container_;};ProgressbarMapControl.prototype.getDefaultPosition=function(){return new GControlPosition(G_ANCHOR_TOP_RIGHT,new GSize(30,56));};function ProgressbarControl(map,opt_opts){this.options_=opt_opts||{};this.width_=this.options_.width||176;this.loadstring_=this.options_.loadstring||'Loading...';this.control_=new ProgressbarMapControl(map,this.width_);this.map_=map;this.map_.addControl(this.control_);this.div_=document.getElementById('geo_progress');this.text_=document.getElementById('geo_progress_text');this.container_=document.getElementById('geo_progress_container');this.operations_=0;this.current_=0;}ProgressbarControl.prototype.start=function(operations){this.div_.style.width='0%';this.operations_=operations||0;this.current_=0;this.text_.style.color="#111";this.text_.innerHTML=this.loadstring_;this.container_.style.display="block";};ProgressbarControl.prototype.updateLoader=function(step){this.current_+=step;if(this.current_>0){var percentage_=Math.ceil((this.current_/this.operations_)*100);if(percentage_>100){percentage_=100;}this.div_.style.width=percentage_+'%';this.text_.innerHTML=this.current_+' / '+this.operations_;}};ProgressbarControl.prototype.remove=function(){this.container_.style.display='none';};
var base_url='series.xml/';var sites=[];var loadedSites=0;var nets={'PANGA':{sites:[]},'RT_PANGA':{sites:[],center:{lat:0,lng:0,loaded:0}}};var rtSites={'MKAH':'mkah_RME','CATH':'cath_RME','ELSR':'elsr_RME','NINT':'nint_RME','SC04':'sc04_RME','SC02':'sc02_RME'};function Net(opt){this.color=opt.color||"#FF4444";this.plot=opt.plot?true:false;this.loaded=opt.loaded?true:false;this.sites=opt.sites||[];this.center={};this.center.lat=opt.lat?opt.lat:0;this.center.lng=opt.lng?opt.lng:0;this.alias=opt.alias?opt.alias:'';this.name=opt.name?opt.name.toUpperCase():'';this.label=opt.label?opt.label:this.name;this.info=opt.info?opt.info:this.name;return this};var nets={"PANGA":new Net({color:"#FF4444",label:"PANGA",info:"Pacific Northwest Geodetic Array"}),"RT_PANGA":new Net({color:"#FF4444",label:"RT_PANGA",info:"Real Time PANGA"}),"TILTMETER":new Net({color:"CornflowerBlue",label:"TILTMETER",info:"Very Long Baseline Tiltmeters"}),"AK":new Net({color:"gold",label:"PBO-AK",info:"PBO Alaska Region"}),"PNW":new Net({color:"#FF4444",label:"PBO-PNW",info:"PBO Pacific Northwest Region"}),"NA":new Net({color:"lightgray",label:"NA",info:"North America Region"}),"NCAL":new Net({color:"cyan",label:"PBO-NCAL",info:"PBO Northern California Region"}),"RM":new Net({color:"peru",label:"PBO-RM",info:"PBO Rocky Mountains Region"}),"BR":new Net({color:"pink",label:"PBO-BR",info:"PBO Basin and Range Region"}),"RGR":new Net({color:"lightgreen",label:"PBO-RGR",info:"PBO Rio Grande Rift Region"}),"SCAL":new Net({color:"coral",label:"PBO-SCAL",info:"PBO Southern California Region"}),"USAB":new Net({color:"magenta",label:"PBO-USAB",info:"PBO US Array Backbone Region"}),"PR":new Net({color:"PaleVioletRed",label:"PBO-PR",info:"PBO Puerto Rico Region"}),"TRIBHUGNET":new Net({color:"green",label:"TRIBHUGNET",info:"TRIBHUGNET Nepal Network"}),"CALTECH":new Net({color:"cyan",label:"NEPAL_C",info:"CALTECH Nepal network"}),"RBILHAM":new Net({color:"slategray",label:"NEPAL_U",info:"UNAVCO Nepal Network"}),"ASIA_IGS":new Net({color:"orange",label:"IGS_ASIA",info:"IGS Asia Region"}),};function loadData(){var xmlfile=base_url+'data.xml';var xmlfile="http://www.panga.cwu.edu/demo_vms/data.xml";var xml=XML_load(xmlfile);var elements=xml.getElementsByTagName("marker");var sdiv=document.getElementById("sites");var name,value,pa,attr;var html='';for(var i=0;i<elements.length;i++){pa=elements[i].attributes;attr={};for(var j=0;j<pa.length;j++){name=pa[j].nodeName;value=pa[j].nodeValue;if(name!=null){switch(name){case 'region':net_name=value;if(nets[net_name]==null){nets[net_name]=new Net();}break;case 'name':attr['name']=value.toUpperCase();break;case 'lng':attr['lng']=parseFloat(value);break;case 'lat':attr['lat']=parseFloat(value);break;case 'elev':attr['elev']=parseFloat(value);break;default:attr[name]=value;}}}if(attr.name in rtSites){nets['RT_PANGA'].sites.push(attr);}nets[net_name].sites.push(attr);}};function fillNets(){var ndiv=document.getElementById("nets");for(name in nets){var js="javascript:fillSites('"+name+"'); ";var div=document.createElement("DIV");div.setAttribute("id",name);div.setAttribute("class","listlabel");div.setAttribute('style','width:115px;font-size:0.7em');var html="<div id='"+name+"_selected' ";html+="style='position:relative;float:left;width:10px;height:10px;background-color:transparent;border:1px solid black;'";html+="onclick=selectNet('"+name+"'); ";html+="title='Add' ";html+=" ></div>";html+='&nbsp&nbsp'+nets[name].label.link(js);div.innerHTML=html;ndiv.appendChild(div);}};function selectNet(name){fillSites(name);tagNet();loadMarkers();};function tagNet(){var name=currentNet;var div=document.getElementById(name+"_selected");if(nets[name].show==undefined){nets[name].show=1;}else{nets[name].show=1;}div.style.backgroundColor=nets[name].show?nets[name].color:'transparent';};function setStatus(name){var sb=document.getElementById("status_bar");sb.innerHTML=nets[name].info;var st=document.getElementById("sites_total");var html='<span style:"float:left">Total: '+nets[name].sites.length+'</span>';html+='&nbsp&nbsp&nbsp';html+='<span style:"float:right"> Loaded: '+loadedSites+'</span>';st.innerHTML=html;};var currentSite='ALBH';var currentNet='PNW';function fillSites(net_name){currentNet=net_name;setStatus(net_name);var N=nets[net_name].sites.length;var sdiv=document.getElementById("sites");var sldiv=document.getElementById("sites_label");var nldiv=document.getElementById("net_label");var ljs="javascript:centerNet()";nldiv.innerHTML='Net: '+net_name.link(ljs).bold().fontcolor('black');sldiv.innerHTML='Site: '+'(click on a site)'.small().bold().fontcolor('black');sdiv.innerHTML='';for(var i=0;i<N;i++){var site=nets[net_name].sites[i].name;var js="javascript:siteOpt.name='"+site+"';selectThis(siteOpt)";var div=document.createElement("DIV");div.setAttribute("class","listlabel");if(net_name=='TILTMETER'){div.setAttribute('style','width:140px;');}div.innerHTML=site.link(js);sdiv.appendChild(div);}};var siteOpt={name:currentSite,dtype:'data',comp:'',rframe:''};function selectThis(opt){var site=opt.name;currentSite=opt.name;var sldiv=document.getElementById("sites_label");sldiv.innerHTML='Site: '+site.bold().fontcolor('black');if(!nets[currentNet].loaded){tagNet();loadMarkers();}centerSite(site);if(mc!=undefined)mc.resetViewport();};
var map;var Icon={};var started=0;var responseCode='';var Markers='';var Sites=0;var Stas={};var current_zoom=5;var currentPlot=0;function getCurrentPlot(){return currentPlot;};function mapOpt(){return{divId:"map",zoom:{current:5,site:9,region:3},center:"SEAT",markerType:"icon",defaultMapType:G_PHYSICAL_MAP};};var mapCenter={"SEAT":{lng:-122.309475280,lat:47.653977402},"LINH":{lng:-120.538500661,lat:47.000335933},"YAWA":{lng:-120.505063713,lat:46.604964789},"NLIB":{lng:-91.574894536,lat:41.771590942}};var tLabel={"anchorPoint":"bottomLeft","percentOpacity":75,"dx":12,"dy":-16};var gIcon={"geodetic_large":{image:"gps_site_icon.png",shadow:"gps_site_icon_shadow.png",shadowSize:{width:77,height:46},iconSize:{width:34,height:46},iconAnchor:{x:15,y:46},infoWindowAnchor:{x:15,y:1}},"geodetic":{image:"gps_site_icon_small.png",shadow:"gps_site_icon_shadow_small.png",shadowSize:{width:38,height:23},iconSize:{width:16,height:23},iconAnchor:{x:7,y:23},infoWindowAnchor:{x:7,y:1}},"tiltmeter":{image:"tiltmeter_icon_100x30.png",shadow:"tiltmeter_icon_100x30.png",shadowSize:{width:100,height:30},iconSize:{width:100,height:30},iconAnchor:{x:10,y:15},infoWindowAnchor:{x:10,y:5}}};var gnCs={url:'gps_net_4_icons_small.png',height:39,width:80,opt_anchor:[]};var cstyle=[gnCs,gnCs,gnCs,gnCs];var progressBar,maxNum;var num=0;var batch=[];var mc;function newMap(opt){if(GBrowserIsCompatible()){var sta=opt.center;var map=new GMap2(document.getElementById(opt.divId));map.addMapType(G_PHYSICAL_MAP);map.addControl(new GLargeMapControl());map.addControl(new GScaleControl());map.addControl(new GHierarchicalMapTypeControl());map.setMapType(opt.defaultMapType);map.setCenter(new GLatLng(mapCenter[sta].lat,mapCenter[sta].lng),opt.zoom.current);map.enableContinuousZoom();map.enableDoubleClickZoom();progressBar=new ProgressbarControl(map,{width:150});mc=new MarkerClusterer(map,[],{gridSize:27,maxZoom:15});initIcons();return map;}else{alert("Your browser is not compatible with Google Maps. Try using Firefox");}};function initIcons(){for(var name in gIcon){Icon[name]=getIcon(name);}};var num=0;var tInt=5;function loadMarkers(){maxNum=nets[currentNet].sites.length;if(!nets[currentNet].loaded){progressBar.start(maxNum);setTimeout('addMarker()',tInt);}};function removeMarker_(){progressBar.updateLoader(1);site=nets[currentNet].sites[num];num++;if(site.marker!=undefined){site.marker.hide();site.label.hide();}if(num<maxNum){setTimeout('removeMarker()',tInt);}else{progressBar.remove();num=0;}};function removeMarker(){progressBar.updateLoader(1);site=nets[currentNet].sites[num];num++;if(site.marker!=undefined){mc.removeMarker(site.marker);map.removeOverlay(site.marker);}if(num<maxNum){setTimeout('removeMarker()',tInt);}else{progressBar.remove();num=0;mc.resetViewport();}};function addMarker(){progressBar.updateLoader(1);site=nets[currentNet].sites[num];num++;var marker,label;if(site.marker==undefined){marker=createMarker(site);site.marker=marker;batch.push(marker);}if(num<maxNum){setTimeout('addMarker()',tInt);}else{progressBar.remove();loadedSites+=num;setStatus(currentNet);num=0;if(!nets[currentNet].loaded){nets[currentNet].loaded=1;nets[currentNet].center.lat/=maxNum;nets[currentNet].center.lng/=maxNum;}centerNet();refreshMap();}};function refreshMap(){mc.addMarkers(batch);mc.resetViewport();batch=[];};function addMarker_(){progressBar.updateLoader(1);site=nets[currentNet].sites[num];num++;var marker,label;if(site.marker==undefined){marker=createMarker(site);site.marker=marker;label=createLabel(site);site.label=label;var html=html_info(site);GEvent.addListener(marker,"click",function(){currentSite=marker.name;marker.openInfoWindowHtml(html);});map.addOverlay(site.marker);map.addTLabel(site.label);}else if(site.marker.isHidden()){site.marker.show();site.label.show();}if(num<maxNum){setTimeout('addMarker()',tInt);}else{progressBar.remove();num=0;if(!nets[currentNet].loaded){nets[currentNet].loaded=1;nets[currentNet].center.lat/=maxNum;nets[currentNet].center.lng/=maxNum;}centerNet();}};function createMarker(opt){var icon=currentNet=='TILTMETER'?Icon['tiltmeter']:Icon['geodetic'];var latlng=new GLatLng(opt.lat,opt.lng);var lm_opt={"icon":icon,"clickable":true,"labelText":opt.name,"labelBackgroundColor":nets[currentNet].color,"labelId":opt.name,"labelOffset":new GSize(10,-32)};var marker=new LabeledMarker(latlng,lm_opt);var min_html=html_info(opt);GEvent.addListener(marker,"click",function(){currentSite=opt.name;var tabs=[new MaxContentTab('Daily','<div id="daily_time_series" > </div>'),new MaxContentTab('Real_Time','<div id="real_time_data" > </div>')];var sum='';var tabStyle={tabOff:{backgroundColor:'#ffe87c',color:'#a00',textDecoration:'none',fontWeight:'bold'},tabBar:{backgroundColor:'#ffc'},};marker.openMaxContentTabsHtml(map,min_html,sum,tabs,{maxTitle:opt.name+" Plots",style:{tabOff:{textDecoration:'none'}}});});GEvent.addListener(map.getTabbedMaxContent(),'selecttab',function(tab){var container=map.getTabbedMaxContent();var tabnode=tab.getContentNode();var dts=document.getElementById("daily_time_series");var rtd=document.getElementById("real_time_data");if(currentPlot!='')container.selectTab(currentPlot);switch(tab.getLabel()){case 'Daily':currentPlot='';if(opt.name==currentSite){setTimeout(function(){initPlot(opt.name,dts);container.checkResize();},200);}break;case 'Real_Time':currentPlot='';if(currentSite in rtSites){var rts=rtSites[currentSite];var html='<iframe ';html+='width="650px" height="300px" style="border:none;"';html+='src="http://www.panga.cwu.edu/demo_vms/RealSeries_'+rts+'.html" ';html+='</iframe>';rtd.innerHTML='Loading....'.blink();setTimeout(function(){rtd.innerHTML=html;},2000);}else{rtd.innerHTML='Not Available';}break;}});if(!nets[currentNet].loaded){nets[currentNet].center.lat+=opt.lat;nets[currentNet].center.lng+=opt.lng;}return marker};var Comps={lat:'North',lon:'East',rad:'Up'};var Dtypes={data:'Raw',ldet:'Detrended',resd:'Cleaned'};var dtype='resd';var site='CPXF';var rframe='itrf05';Plot={};base_url='';base_url="http://www.panga.cwu.edu/panga/officialresults/nev-test/";function dtypeSelect(div,id){var divSel=document.createElement("div");var sel=document.createElement("select");sel.id="select_"+id;sel.setAttribute("onchange","setPlot(currentSite,'"+id.toLowerCase()+"',this.value)");divSel.style.position='absolute';divSel.style.top=5+'px';divSel.style.left=560+'px';var i=0;var flag=false;var dtypes_sel=['Raw','Det.','Clean'];for(i=0;i<3;i++){if(i==2)flag=true;sel.options.add(new Option(dtypes_sel[i],i,flag));}divSel.appendChild(sel);div.appendChild(divSel);};function initPlot(sta,container){Plot={};var h=0;var opt=plotOpt;opt.container=container;opt.sampling=1;opt.symbol.size=3;opt.div.style.position='absolute';opt.div.style.left=2;opt.div.style.top=40;opt.div.style.width=650;opt.div.style.height=150;for(comp in Comps){opt.id=comp.toUpperCase();opt.title.text=comp=='lat'?site:'';opt.url=base_url+'series.xml/'+sta+'.'+dtype+'.'+comp+'.xml';h=comp=='lat'?0:opt.div.style.height;opt.div.style.top+=h;Plot[opt.id]=new Plot2D(opt);dtypeSelect(Plot[opt.id].div,opt.id);}setPlot(sta,'',2);};function setPlot(s,c,d){var site=s;var dvalues=['data','ldet','resd'];for(comp in Comps){if(c!=''&&c!=comp)continue;var dsel=document.getElementById("select_"+comp.toUpperCase()).value;var dtype=dvalues[d];var opt=plotOpt;opt.id=comp.toUpperCase();opt.title.text=comp=='lat'?site:'';opt.url=base_url+'series.xml/'+site+'.'+dtype+'.'+comp+'.xml';Plot[opt.id].neuPlot(opt);}};function html_info(site){var net_name=currentNet;var js="javascript:centerSite('"+site.name+"'); ";var hjs="javascript:void(0); ";var oc="onclick=javascript:map.getInfoWindow().maximize();";var html="<b> <a title='Set Center' class='smalltitle' href=\""+js+"\" >"+site.name+"</a><b><br>";html+='<p style="font-size:0.9em;font-family:Arial">';html+="Id 16 char: ".bold()+site.id16char+"<br>";html+="Status: ".bold()+site.status+"<br>";html+="Location: ".bold()+site.location+"<br>";html+="Lat: ".bold()+site.lat+"<br>"+"Lon: ".bold()+site.lng+"<br>";html+='</p>';if(net_name=='TILTMETER'){var win_opt=",'imageWindow', false, false, true, false, true, false, false, 600, 1500, false ";var href_info="'http://www.panga.cwu.edu/panga/tiltmeter_data/shelton_tilt.html'";var href="'http://www.panga.cwu.edu/panga/timeseries_tiltmeter_plot.php?s=SITE_NAME&p=PLOT_TYPE'";href=href.replace(/SITE_NAME/,site.name.toLowerCase());var plot="href=\"javascript:openWindow("+href+win_opt+")\"";var plot_info="href=\"javascript:openWindow("+href_info+win_opt+")\"";html+="Static plots: ".bold()+" <br>";html+='<b><a style="color:blue;"'+plot.replace(/PLOT_TYPE/,'tilt')+'> Tilt </a><b><br>';html+='<b><a style="color:blue;"'+plot.replace(/PLOT_TYPE/,'elevation')+'> Elevation </a><b><br>';html+="More Info: ".bold()+" <br>";html+='<b><a style="color:blue;"'+plot_info+'> Tilmeter data </a><b><br>';}else{html+="Plots: ".bold()+" <br>";oc="onclick=javascript:currentPlot='Real_Time';map.getInfoWindow().maximize();";html+="<b> <a class='smalltitle' href=\""+hjs+"\""+oc+" > Real Time </a><b><br>";oc="onclick=javascript:currentPlot='Daily';map.getInfoWindow().maximize();";html+="<b> <a class='smalltitle' href=\""+hjs+"\""+oc+" > Daily </a><b><br>";html+=svg_plots(site.name)+'<br>';html+=custom_plot(net_name,site.name,'Raw')+'<br>';html+=custom_plot(net_name,site.name,'Detrended')+'<br>';html+=custom_plot(net_name,site.name,'Cleaned')+'<br>';}return html};function svg_plots(site){var nn=net_name;var href="'";href="http://www.panga.cwu.edu/demo_vms/ts_tools.php?SITE="+site;var win_opt=",'imageWindow', false, false, true, false, true, false, false, 764, 642, false ";var plot_opt='';plot_opt+="'";href+=plot_opt;var plot="href=\"javascript:openWindow('"+href+win_opt+")\"";var html="<b><a class='smalltitle' "+plot+" > Time Series Tool </a></b>";return html;};function custom_plot(net_name,site_name,plot_type){var nn=net_name;var href="'";href='http://www.panga.cwu.edu/panga/customImageForm.php?';var ns_opt="p=PLOT_TYPE&n=NET&f=daily&s=SITE&showbars=0";ns_opt=ns_opt.replace(/PLOT_TYPE/,plot_type.toLowerCase());ns_opt=ns_opt.replace(/NET/,nn.toLowerCase());ns_opt=ns_opt.replace(/SITE/,site_name.toUpperCase());var win_opt=",'imageWindow', false, false, true, false, true, false, false, 800, 800, false ";var plot_opt='';plot_opt+="'";href+=ns_opt;href+=plot_opt;var plot="href=\"javascript:openWindow('"+href+win_opt+")\"";var html="<b><a class='smalltitle' "+plot+" >"+plot_type+"</a></b>";return html;};function centerNet(){var center=nets[currentNet=='RT_PANGA'?'PANGA':currentNet].center;map.setZoom(5);map.setCenter(new GLatLng(center.lat,center.lng));};function centerSite(name){var sites=nets[currentNet].sites;for(var i=0;i<sites.length;i++){if(sites[i].name==name){var site=sites[i];map.setCenter(new GLatLng(site.lat,site.lng),9);break;}}};function getIcon(iconType){var opt=gIcon[iconType];var icon=new GIcon();icon.image=opt.image;icon.shadow=opt.shadow;icon.shadowSize=opt.width;icon.iconSize=new GSize(opt.iconSize.width,opt.iconSize.height);icon.iconAnchor=new GPoint(opt.iconAnchor.x,opt.iconAnchor.y);icon.infoWindowAnchor=new GPoint(opt.infoWindowAnchor.x,opt.infoWindowAnchor.x);return icon};
(function(){var defaultStyle={tabBar:{background:'#F4F4F4 none repeat scroll 0 0',borderBottom:'1px solid #B0B0B0',padding:'6px 8px 4px',marginRight:'13px',whiteSpace:'nowrap',verticalAlign:'bottom'},tabLeft:{},tabRight:{},tabOn:{background:'#FFFFFF none repeat scroll 0 0',padding:'6px 8px 4px',borderTop:'1px solid #B0B0B0',borderLeft:'1px solid #B0B0B0',borderRight:'1px solid #B0B0B0',borderBottom:'2px solid #FFFFFF',color:'#000000',textDecoration:'none',fontWeight:'bold'},tabOff:{background:'#F4F4F4 none repeat scroll 0 0',padding:'6px 8px 4px',color:'#0000FF',border:'none',textDecoration:'underline',fontWeight:'normal'},content:{borderStyle:'none solid solid solid',borderWidth:'1px',borderColor:'#B0B0B0',borderTop:'none',overflow:'auto'},summary:{overflow:'auto',marginBottom:'5px'}};var setVals=function(obj,vals){if(obj&&vals){for(var x in vals){if(vals.hasOwnProperty(x)){if(obj[x]&&typeof vals[x]==='object'){obj[x]=setVals(obj[x],vals[x]);}else{obj[x]=vals[x];}}}}return obj;};var createEl=function(tag,attrs,content,style,parent){var node=content;if(!content||(content&&typeof content==='string')){node=document.createElement(tag);node.innerHTML=content||'';}if(style){setVals(node.style,style);}if(attrs){setVals(node,attrs);}if(parent){parent.appendChild(node);}return node;};var getPosition=function(el,parent){var leftPos=0;var topPos=0;var par=el;while(par&&par!==parent){leftPos+=par.offsetLeft;topPos+=par.offsetTop;par=par.offsetParent;}return{left:leftPos,top:topPos};};function MaxContentTab(label,content){this.label_=label;this.contentNode_=createEl('div',null,content,null,null);this.navNode_=null;}MaxContentTab.prototype.getLabel=function(){return this.label_;};MaxContentTab.prototype.getContentNode=function(){return this.contentNode_;};function TabbedMaxContent(iw){this.infoWindow_=iw;GEvent.bind(iw,'maximizeclick',this,this.onMaximizeClick_);GEvent.bind(iw,'restoreclick',this,this.onRestoreClick_);GEvent.bind(iw,'maximizeend',this,this.onMaximizeEnd_);this.style_={};this.maxNode_=null;this.summaryNode_=null;this.navsNode_=null;this.contentsNode_=null;this.tabs_=[];}TabbedMaxContent.prototype.initialize_=function(sumNode,tabs,opt_maxOptions){this.tabs_=tabs;this.selectedTab_=-1;if(this.maxNode_){GEvent.clearNode(this.maxNode_);this.maxNode_=null;}this.maxNode_=createEl('div',{id:'maxcontent'});opt_maxOptions=opt_maxOptions||{};var selectedTab=opt_maxOptions.selectedTab||0;this.style_=setVals({},defaultStyle);this.style_=setVals(this.style_,opt_maxOptions.style);this.summaryNode_=createEl('div',null,sumNode,this.style_.summary,this.maxNode_);this.navsNode_=createEl('div',null,null,this.style_.tabBar,this.maxNode_);this.contentsNode_=createEl('div',null,null,null,this.maxNode_);if(tabs&&tabs.length){createEl('span',null,null,this.style_.tabLeft,this.navsNode_);for(var i=0,ct=tabs.length;i<ct;i++){if(i===selectedTab||tabs[i].getLabel()===selectedTab){this.selectedTab_=i;}tabs[i].navNode_=createEl('span',null,tabs[i].getLabel(),this.style_.tabOff,this.navsNode_);var node=createEl('div',null,tabs[i].getContentNode(),this.style_.content,this.contentsNode_);node.style.display='none';}createEl('span',null,null,this.style_.tabRight,this.navsNode_);}};TabbedMaxContent.prototype.onMaximizeClick_=function(){for(var i=0,ct=this.tabs_.length;i<ct;i++){GEvent.addDomListener(this.tabs_[i].navNode_,'click',GEvent.callback(this,this.selectTab,i));}};TabbedMaxContent.prototype.onRestoreClick_=function(){if(this.maxNode_){GEvent.clearNode(this.maxNode_);}};TabbedMaxContent.prototype.onMaximizeEnd_=function(){this.checkResize();this.selectTab(this.selectedTab_);};TabbedMaxContent.prototype.selectTab=function(identifier){var trigger=false;var hasVisibleTab=false;var tab;for(var i=0,ct=this.tabs_.length;i<ct;i++){tab=this.tabs_[i];if(i===identifier||tab.getLabel()===identifier){if(tab.getContentNode().style.display==='none'){setVals(tab.navNode_.style,this.style_.tabOn);tab.getContentNode().style.display='block';this.selectedTab_=i;trigger=true;}hasVisibleTab=true;}else{setVals(tab.navNode_.style,this.style_.tabOff);tab.getContentNode().style.display='none';}}if(trigger){GEvent.trigger(this,'selecttab',this.tabs_[this.selectedTab_]);}if(!hasVisibleTab){this.selectTab(0);}};TabbedMaxContent.prototype.getTab=function(identifier){for(var i=0,ct=this.tabs_.length;i<ct;i++){if(i===identifier||this.tabs_[i].getLabel()===identifier){return this.tabs_[i];}}};TabbedMaxContent.prototype.checkResize=function(){var container=this.infoWindow_.getContentContainers()[0];var contents=this.contentsNode_;var pos=getPosition(contents,container);for(var i=0,ct=this.tabs_.length;i<ct;i++){var t=this.tabs_[i].getContentNode();t.style.width=container.style.width;t.style.height=(parseInt(container.style.height,10)-pos.top)+'px';}};GMap2.prototype.openMaxContentTabs=function(latlng,minNode,sumNode,tabs,opt_maxOptions){var max=this.getTabbedMaxContent();var opts=opt_maxOptions||{};max.initialize_(sumNode,tabs,opts);opts.maxContent=max.maxNode_;if(opts.style){delete opts.style;}if(opts.selectedTab){delete opts.selectedTab;}if(minNode.style){minNode.style.marginTop='6px';}this.openInfoWindow(latlng,minNode,opts);if(opts.maximized){var iw=this.getInfoWindow();var m=GEvent.addListener(this,'infowindowopen',function(){GEvent.removeListener(m);iw.maximize();});}};GMap2.prototype.openMaxContentTabsHtml=function(latlng,html,summary,tabs,opt_maxOptions){this.openMaxContentTabs(latlng,createEl('div',null,html),createEl('div',null,summary),tabs,opt_maxOptions);};GMap2.prototype.getTabbedMaxContent=function(){this.maxContent_=this.maxContent_||new TabbedMaxContent(this.getInfoWindow());return this.maxContent_;};GMarker.prototype.openMaxContentTabsHtml=function(map,minHtml,summaryHtml,tabs,opt_maxOptions){map.openMaxContentTabsHtml(this.getLatLng(),minHtml,summaryHtml,tabs,opt_maxOptions);};GMarker.prototype.openMaxContentTabs=function(map,minNode,summaryNode,tabs,opt_maxOptions){map.openMaxContentTabs(this.getLatLng(),minNode,summaryNode,tabs,opt_maxOptions);};window.MaxContentTab=MaxContentTab;})();
function LabeledMarker(latlng,opt_opts){this.opts_=opt_opts;this.labelText_=opt_opts.labelText||"";this.labelClass_=opt_opts.labelClass||"LabeledMarker_markerLabel";this.labelOffset_=opt_opts.labelOffset||new GSize(0,0);this.labelId_=opt_opts.labelId||"white";this.labelBackgroundColor=opt_opts.labelBackgroundColor||"";this.clickable_=opt_opts.clickable?true:false;this.title_=opt_opts.title||"";this.labelVisibility_=true;this.ownVisibility_=true;this.div_=document.createElement("div");this.div_.id=this.labelId_;this.div_.className=this.labelClass_;this.div_.innerHTML=this.labelText_;this.div_.style.backgroundColor=this.labelBackgroundColor;this.div_.style.position="absolute";this.div_.style.cursor="pointer";this.div_.title=this.title_;if(opt_opts.draggable){opt_opts.draggable=false;}GMarker.apply(this,arguments);}LabeledMarker.prototype=new GMarker(new GLatLng(0,0));LabeledMarker.prototype.initialize=function(map){GMarker.prototype.initialize.apply(this,arguments);this.map_=map;if(!this.ownVisibility_){this.hide();}this.applyLabelVisibility_();map.getPane(G_MAP_MARKER_SHADOW_PANE).appendChild(this.div_);if(this.clickable_){var eventPassthrus=['click','dblclick','mousedown','mouseup','mouseover','mouseout'];for(var i=0;i<eventPassthrus.length;i++){var name=eventPassthrus[i];GEvent.addDomListener(this.div_,name,GEvent.callback(GEvent,GEvent.trigger,this,name,this.getLatLng()));}}};LabeledMarker.prototype.redraw=function(force){GMarker.prototype.redraw.apply(this,arguments);this.redrawLabel_();};LabeledMarker.prototype.redrawLabel_=function(){var p=this.map_.fromLatLngToDivPixel(this.getLatLng());var z=GOverlay.getZIndex(this.getLatLng().lat());this.div_.style.left=(p.x+this.labelOffset_.width)+"px";this.div_.style.top=(p.y+this.labelOffset_.height)+"px";this.div_.style.zIndex=z;};LabeledMarker.prototype.remove=function(){GMarker.prototype.remove.apply(this,arguments);GEvent.clearInstanceListeners(this.div_);if(this.div_.outerHTML){this.div_.outerHTML="";}if(this.div_.parentNode){this.div_.parentNode.removeChild(this.div_);}};LabeledMarker.prototype.copy=function(){var newMarker=new LabeledMarker(this.getLatLng(),this.opts_);newMarker.labelVisibility_=this.labelVisibility_;newMarker.ownVisibility_=this.ownVisibility_;return newMarker;};LabeledMarker.prototype.show=function(){GMarker.prototype.show.apply(this,arguments);this.ownVisibility_=true;this.applyLabelVisibility_();};LabeledMarker.prototype.hide=function(){GMarker.prototype.hide.apply(this,arguments);this.ownVisibility_=false;this.applyLabelVisibility_();};LabeledMarker.prototype.setLabelVisibility=function(visibility){this.labelVisibility_=visibility;this.applyLabelVisibility_();};LabeledMarker.prototype.getLabelVisibility=function(){return this.labelVisibility_;};LabeledMarker.prototype.applyLabelVisibility_=function(){if((!this.isHidden())&&this.labelVisibility_){this.div_.style.display='block';}else{this.div_.style.display='none';}};LabeledMarker.prototype.setLabelText=function(text){this.labelText_=text;this.div_.innerHTML=text;this.opts_.labelText=text;};
function MarkerClusterer(map,opt_markers,opt_opts){var clusters_=[];var map_=map;var maxZoom_=null;var me_=this;var gridSize_=60;var sizes=[53,56,66,78,90];var styles_=[];var leftMarkers_=[];var mcfn_=null;var i=0;for(i=1;i<=5;++i){styles_.push({'url':"m"+i+".png",'height':sizes[i-1],'width':sizes[i-1]});}if(typeof opt_opts==="object"&&opt_opts!==null){if(typeof opt_opts.gridSize==="number"&&opt_opts.gridSize>0){gridSize_=opt_opts.gridSize;}if(typeof opt_opts.maxZoom==="number"){maxZoom_=opt_opts.maxZoom;}if(typeof opt_opts.styles==="object"&&opt_opts.styles!==null&&opt_opts.styles.length!==0){styles_=opt_opts.styles;}}function addLeftMarkers_(){if(leftMarkers_.length===0){return;}var leftMarkers=[];for(i=0;i<leftMarkers_.length;++i){me_.addMarker(leftMarkers_[i],true,null,null,true);}leftMarkers_=leftMarkers;}this.getStyles_=function(){return styles_;};this.clearMarkers=function(){for(var i=0;i<clusters_.length;++i){if(typeof clusters_[i]!=="undefined"&&clusters_[i]!==null){clusters_[i].clearMarkers();}}clusters_=[];leftMarkers_=[];GEvent.removeListener(mcfn_);};function isMarkerInViewport_(marker){return map_.getBounds().containsLatLng(marker.getLatLng());}function reAddMarkers_(markers){var len=markers.length;var clusters=[];for(var i=len-1;i>=0;--i){me_.addMarker(markers[i].marker,true,markers[i].isAdded,clusters,true);}addLeftMarkers_();}this.addMarker=function(marker,opt_isNodraw,opt_isAdded,opt_clusters,opt_isNoCheck){if(opt_isNoCheck!==true){if(!isMarkerInViewport_(marker)){leftMarkers_.push(marker);return;}}var isAdded=opt_isAdded;var clusters=opt_clusters;var pos=map_.fromLatLngToDivPixel(marker.getLatLng());if(typeof isAdded!=="boolean"){isAdded=false;}if(typeof clusters!=="object"||clusters===null){clusters=clusters_;}var length=clusters.length;var cluster=null;for(var i=length-1;i>=0;i--){cluster=clusters[i];var center=cluster.getCenter();if(center===null){continue;}center=map_.fromLatLngToDivPixel(center);if(pos.x>=center.x-gridSize_&&pos.x<=center.x+gridSize_&&pos.y>=center.y-gridSize_&&pos.y<=center.y+gridSize_){cluster.addMarker({'isAdded':isAdded,'marker':marker});if(!opt_isNodraw){cluster.redraw_();}return;}}cluster=new Cluster(this,map);cluster.addMarker({'isAdded':isAdded,'marker':marker});if(!opt_isNodraw){cluster.redraw_();}clusters.push(cluster);if(clusters!==clusters_){clusters_.push(cluster);}};this.removeMarker=function(marker){for(var i=0;i<clusters_.length;++i){if(clusters_[i].removeMarker(marker)){clusters_[i].redraw_();return;}}};this.redraw_=function(){var clusters=this.getClustersInViewport_();for(var i=0;i<clusters.length;++i){clusters[i].redraw_(true);}};this.getClustersInViewport_=function(){var clusters=[];var curBounds=map_.getBounds();for(var i=0;i<clusters_.length;i++){if(clusters_[i].isInBounds(curBounds)){clusters.push(clusters_[i]);}}return clusters;};this.getMaxZoom_=function(zoom){if(zoom!=null)maxZoom_=zoom;return maxZoom_;};this.getMap_=function(){return map_;};this.getGridSize_=function(){return gridSize_;};this.getTotalMarkers=function(){var result=0;for(var i=0;i<clusters_.length;++i){result+=clusters_[i].getTotalMarkers();}return result;};this.getTotalClusters=function(){return clusters_.length;};this.resetViewport=function(){var clusters=this.getClustersInViewport_();var tmpMarkers=[];var removed=0;for(var i=0;i<clusters.length;++i){var cluster=clusters[i];var oldZoom=cluster.getCurrentZoom();if(oldZoom===null){continue;}var curZoom=map_.getZoom();if(curZoom!==oldZoom){var mks=cluster.getMarkers();for(var j=0;j<mks.length;++j){var newMarker={'isAdded':false,'marker':mks[j].marker};tmpMarkers.push(newMarker);}cluster.clearMarkers();removed++;for(j=0;j<clusters_.length;++j){if(cluster===clusters_[j]){clusters_.splice(j,1);}}}}reAddMarkers_(tmpMarkers);this.redraw_();};this.addMarkers=function(markers){for(var i=0;i<markers.length;++i){this.addMarker(markers[i],true);}this.redraw_();};if(typeof opt_markers==="object"&&opt_markers!==null){this.addMarkers(opt_markers);}mcfn_=GEvent.addListener(map_,"moveend",function(){me_.resetViewport();});}function Cluster(markerClusterer){var center_=null;var markers_=[];var markerClusterer_=markerClusterer;var map_=markerClusterer.getMap_();var clusterMarker_=null;var zoom_=map_.getZoom();this.getMarkers=function(){return markers_;};this.isInBounds=function(bounds){if(center_===null){return false;}if(!bounds){bounds=map_.getBounds();}var sw=map_.fromLatLngToDivPixel(bounds.getSouthWest());var ne=map_.fromLatLngToDivPixel(bounds.getNorthEast());var centerxy=map_.fromLatLngToDivPixel(center_);var inViewport=true;var gridSize=markerClusterer.getGridSize_();if(zoom_!==map_.getZoom()){var dl=map_.getZoom()-zoom_;gridSize=Math.pow(2,dl)*gridSize;}if(ne.x!==sw.x&&(centerxy.x+gridSize<sw.x||centerxy.x-gridSize>ne.x)){inViewport=false;}if(inViewport&&(centerxy.y+gridSize<ne.y||centerxy.y-gridSize>sw.y)){inViewport=false;}return inViewport;};this.getCenter=function(){return center_;};this.addMarker=function(marker){if(center_===null){center_=marker.marker.getLatLng();}markers_.push(marker);};this.removeMarker=function(marker){for(var i=0;i<markers_.length;++i){if(marker===markers_[i].marker){if(markers_[i].isAdded){map_.removeOverlay(markers_[i].marker);}markers_.splice(i,1);return true;}}return false;};this.getCurrentZoom=function(){return zoom_;};this.redraw_=function(isForce){if(!isForce&&!this.isInBounds()){return;}zoom_=map_.getZoom();var i=0;var mz=markerClusterer.getMaxZoom_();if(mz===null){mz=map_.getCurrentMapType().getMaximumResolution();}if(zoom_>=mz||this.getTotalMarkers()===1){for(i=0;i<markers_.length;++i){if(markers_[i].isAdded){if(markers_[i].marker.isHidden()){markers_[i].marker.show();}}else{map_.addOverlay(markers_[i].marker);markers_[i].isAdded=true;}}if(clusterMarker_!==null){clusterMarker_.hide();}}else{for(i=0;i<markers_.length;++i){if(markers_[i].isAdded&&(!markers_[i].marker.isHidden())){markers_[i].marker.hide();}}if(clusterMarker_===null){clusterMarker_=new ClusterMarker_(center_,this.getTotalMarkers(),markerClusterer_.getStyles_(),markerClusterer_.getGridSize_(),markerClusterer_);map_.addOverlay(clusterMarker_);}else{if(clusterMarker_.isHidden()){clusterMarker_.show();}clusterMarker_.redraw(true);}}};this.clearMarkers=function(){if(clusterMarker_!==null){map_.removeOverlay(clusterMarker_);}for(var i=0;i<markers_.length;++i){if(markers_[i].isAdded){map_.removeOverlay(markers_[i].marker);}}markers_=[];};this.getTotalMarkers=function(){return markers_.length;};}function ClusterMarker_(latlng,count,styles,padding,markerClusterer){var index=0;var dv=count;while(dv!==0){dv=parseInt(dv/10,10);index++;}if(styles.length<index){index=styles.length;}this.url_=styles[index-1].url;this.height_=styles[index-1].height;this.width_=styles[index-1].width;this.textColor_=styles[index-1].opt_textColor;this.anchor_=styles[index-1].opt_anchor;this.latlng_=latlng;this.index_=index;this.styles_=styles;this.text_=count;this.padding_=padding;this.markerClusterer_=markerClusterer;}ClusterMarker_.prototype=new GOverlay();ClusterMarker_.prototype.initialize=function(map){this.map_=map;var div=document.createElement("div");var latlng=this.latlng_;var pos=map.fromLatLngToDivPixel(latlng);pos.x-=parseInt(this.width_/2,10);pos.y-=parseInt(this.height_/2,10);var mstyle="";if(document.all){mstyle='filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale,src="'+this.url_+'");';}else{mstyle="background:url("+this.url_+");";}if(typeof this.anchor_==="object"){if(typeof this.anchor_[0]==="number"&&this.anchor_[0]>0&&this.anchor_[0]<this.height_){mstyle+='height:'+(this.height_-this.anchor_[0])+'px;padding-top:'+this.anchor_[0]+'px;';}else{mstyle+='height:'+this.height_+'px;line-height:'+this.height_+'px;';}if(typeof this.anchor_[1]==="number"&&this.anchor_[1]>0&&this.anchor_[1]<this.width_){mstyle+='width:'+(this.width_-this.anchor_[1])+'px;padding-left:'+this.anchor_[1]+'px;';}else{mstyle+='width:'+this.width_+'px;text-align:center;';}}else{mstyle+='height:'+this.height_+'px;line-height:'+this.height_+'px;';mstyle+='width:'+this.width_+'px;text-align:center;';}var txtColor=this.textColor_?this.textColor_:'black';div.style.cssText=mstyle+'cursor:pointer;top:'+pos.y+"px;left:"+pos.x+"px;color:"+txtColor+";position:absolute;font-size:11px;"+'font-family:Arial,sans-serif;font-weight:bold';var label='<div ';label+=' style="background-color:red; border:1px solid black; ';label+=' text-align:left; top:15px; left:0px; height:15px;  width:20px;';label+=' position:absolute; "';label+='>'+this.text_+'</div>';div.innerHTML=this.text_;map.getPane(G_MAP_MAP_PANE).appendChild(div);var markerClusterer=this.markerClusterer_;var padding=this.padding_;GEvent.addDomListener(div,"click",function(){var pos=map.fromLatLngToDivPixel(latlng);var sw=new GPoint(pos.x-padding,pos.y+padding);sw=map.fromDivPixelToLatLng(sw);var ne=new GPoint(pos.x+padding,pos.y-padding);ne=map.fromDivPixelToLatLng(ne);var zoom=map.getBoundsZoomLevel(new GLatLngBounds(sw,ne),map.getSize());map.setCenter(latlng,zoom);markerClusterer.resetViewport();});this.div_=div;};ClusterMarker_.prototype.remove=function(){this.div_.parentNode.removeChild(this.div_);};ClusterMarker_.prototype.copy=function(){return new ClusterMarker_(this.latlng_,this.index_,this.text_,this.styles_,this.padding_,this.markerClusterer_);};ClusterMarker_.prototype.redraw=function(force){if(!force){return;}var pos=this.map_.fromLatLngToDivPixel(this.latlng_);pos.x-=parseInt(this.width_/2,10);pos.y-=parseInt(this.height_/2,10);this.div_.style.top=pos.y+"px";this.div_.style.left=pos.x+"px";};ClusterMarker_.prototype.hide=function(){this.div_.style.display="none";};ClusterMarker_.prototype.show=function(){this.div_.style.display="";};ClusterMarker_.prototype.isHidden=function(){return this.div_.style.display==="none";};

