var g_svgdoc = 0;
var g_root = 0;
var orig_x,orig_y,orig_width,orig_height;
var curorig_x,curorig_y,curorig_width,curorig_height;
var midx, midy;
var zoomfactor = 1.5;
var zoomrect = null;
var innersvg = null;
var inscalex = 1;
var inscaley = 1;
var curScale = 1.0;
var panwidth = 100;
var angle=0;

function Init(evt)
{  
  g_svgdoc = evt.target.ownerDocument; 
  g_root = g_svgdoc.documentElement;
  innersvg = g_svgdoc.getElementById("map");

  imagesvg=g_svgdoc.getElementById("image");
    
  var image_width=imagesvg.getAttributeNS(null,"width");  
  var image_height=imagesvg.getAttributeNS(null,"height");  
    
  //initialisation de la viewbox avec les dimensions de l'image
  innersvg.setAttributeNS(null,"viewBox","0 0 "+image_width+" "+ image_height); 
  
  var vb = innersvg.getAttributeNS(null,"viewBox");
  if(vb) 
  {
    var vba = vb.split(" ");
    curorig_x = orig_x = Number(vba[0]);
    curorig_y = orig_y = Number(vba[1]);
    curorig_width = orig_width = Number(vba[2]);
    curorig_height = orig_height = Number(vba[3]);
    CalcMidPoint();
  }
  
  inscalex = curorig_width/innersvg.getAttributeNS(null,"width");
  inscaley = curorig_height/innersvg.getAttributeNS(null,"height");
  
  zoomrect = g_svgdoc.getElementById("zoomrect"); 
}

function CalcMidPoint()
{
  midx = curorig_x+(curorig_width/2);
  midy = curorig_y+(curorig_height/2);
}
function ZoomOut()
{
  curorig_width*=zoomfactor;
  curorig_height*=zoomfactor;
  curorig_x = midx - (curorig_width/2);
  curorig_y = midy - (curorig_height/2);
  innersvg.setAttributeNS(null,"viewBox",curorig_x+" "+curorig_y+" "+curorig_width+" "+curorig_height);
}
function ZoomIn()
{
  curorig_width/=zoomfactor;
  curorig_height/=zoomfactor;
  curorig_x = midx - (curorig_width/2);
  curorig_y = midy - (curorig_height/2);
  innersvg.setAttributeNS(null,"viewBox",curorig_x+" "+curorig_y+" "+curorig_width+" "+curorig_height);
  }
function PanLeft()
{
  curScale = curorig_width/orig_width;
  curorig_x = curorig_x-panwidth;//(panwidth*curScale);
  innersvg.setAttribute("viewBox",curorig_x+" "+curorig_y+" "+curorig_width+" "+curorig_height);
  CalcMidPoint();
}
function PanRight()
{
  curScale = curorig_width/orig_width;
  curorig_x = curorig_x+panwidth;//(panwidth*curScale);
  innersvg.setAttributeNS(null,"viewBox",curorig_x+" "+curorig_y+" "+curorig_width+" "+curorig_height);
  CalcMidPoint();
}
function PanUp()
{
  curScale = curorig_height/orig_height;
  curorig_y = curorig_y-panwidth;//(panwidth*curScale);
  innersvg.setAttributeNS(null,"viewBox",curorig_x+" "+curorig_y+" "+curorig_width+" "+curorig_height);
  CalcMidPoint();
}

function PanDown()
{
  curScale = curorig_height/orig_height;
  curorig_y = curorig_y+panwidth;//(panwidth*curScale);
  innersvg.setAttributeNS(null,"viewBox",curorig_x+" "+curorig_y+" "+curorig_width+" "+curorig_height);
  CalcMidPoint();
}

function PanUpLeft(evt)
{
  PanUp(evt);
  PanLeft(evt);
}

function PanDownLeft(evt)
{
  PanDown(evt);
  PanLeft(evt);
}

function PanUpRight(evt)
{
  PanUp(evt);
  PanRight(evt);
}

function PanDownRight(evt)
{
  PanDown(evt);
  PanRight(evt);
}

function Reset()
{
  curorig_x = orig_x;
  curorig_y = orig_y;
  curorig_width = orig_width;
  curorig_height = orig_height;
  innersvg.setAttributeNS(null,"viewBox",curorig_x+" "+curorig_y+" "+curorig_width+" "+curorig_height);
  imagesvg=g_svgdoc.getElementById("image"); 
  imagesvg.setAttributeNS(null,"transform","");
  angle=0;
  CalcMidPoint();
}
  
function RotateLeft()
{
  imagesvg=g_svgdoc.getElementById("image");
  angle-=90;
  imagesvg.setAttributeNS(null,"transform","rotate("+angle+" "+midx+" "+midy+")");
}  

function RotateRight()
{
  imagesvg=g_svgdoc.getElementById("image");
  angle+=90;  
  imagesvg.setAttributeNS(null,"transform","rotate("+angle+" "+midx+" "+midy+")");
}  


var bInRect = false;
var x1, y1;
function StartRect(evt)
{
  if(!zoomrect) return;

  x1=evt.clientX;
  y1=evt.clientY;
  bInRect = true;
  zoomrect.setAttributeNS(null,"x", x1);
  zoomrect.setAttributeNS(null,"y", y1);
  zoomrect.setAttributeNS(null,"width", 0);
  zoomrect.setAttributeNS(null,"height", 0);
  zoomrect.setAttributeNS(null,"visibility", "visible");

  }
//onmousemove=
function DrawRect(evt)
{
  if(!zoomrect || !bInRect) return;
  var x2;
  var y2;
  var x,y,w,h;
  x2=evt.clientX;
  y2=evt.clientY;

  if(x1 > x2) {
    x = x2;
    w = x1 - x2;
    }
  else {
    x = x1;
    w = x2 - x1;
    }
  if(y1 > y2) {
    y = y2;
    h = y1 - y2;
    }
  else {
    y = y1;
    h = y2 - y1;
    }

  if(x1 > x2) {
    x = x1 - w;
    }
  if(y1 > y2) {
    y = y1 - h;
    }

  zoomrect.setAttributeNS(null,'x', x);
  zoomrect.setAttributeNS(null,'y', y);
  zoomrect.setAttributeNS(null,'width', w);
  zoomrect.setAttributeNS(null,'height', h);
  }

function StopRect(evt)
{
  if(!zoomrect || !bInRect) return;
  var scalew = curorig_width/orig_width;
  var scaleh = curorig_height/orig_height;
  curorig_width=(zoomrect.getAttributeNS(null,'width')*scalew)*inscalex;
  curorig_height=(zoomrect.getAttributeNS(null,'height')*scaleh)*inscaley;
  curorig_x = curorig_x+(((zoomrect.getAttributeNS(null,'x'))*scalew)*inscalex);
  curorig_y = curorig_y+(((zoomrect.getAttributeNS(null,'y'))*scaleh)*inscaley);
  innersvg.setAttributeNS(null,"viewBox",curorig_x+" "+curorig_y+" "+curorig_width+" "+curorig_height);
 
  bInRect = false;
  zoomrect.setAttributeNS(null,"visibility", "hidden");
  CalcMidPoint();
}

function Print()
{
	top.print();
}