var MILLBO = '<p>' +
'<b>Millbo S.p.A</b><br />' +
'Via Bellaria sn<br />' +
'28069 Trecate (NO)<br />' +
'<b>Tel</b>: +39 0321795911<br />' +
'<b>Fax</b>: +39 0321795920<br />' +
'<b>e-mail</b>: contact <a href="mailto:p.zocchi@millbo.it">p.zocchi@millbo.it</a></p>';
var CRUSTCRUMB = '<p><b>Crust \'n\' Crumb food ingredients</b><br />' +
		  'Block no.32 Kinfra<br />' +
  		'Small Industrial Park, Nellad<br />' +
  		'Muvattupuzha Ernakulam<br />' +
  		'686721 Kerala<br />' +
      '<b>Tel</b>: 0091 484 3239 300/400<br />' +
      '<b>Fax</b>: 0091 484 2769 500<br />' +
      '<b>e-mail</b>: <a href="mailto:kunju@crustncrumb.com">kunju@crustncrumb.com</a></p>';
  var ORBIS = '<p><b>ORBIS sirovine d.o.o.</b><br />Drage Gervaisa 35<br />HR -10090 Zagreb<br /><b>Tel</b>: +385 1 3498026<br /><b>Fax</b>: +385 1 3498034<br /><b>e-mail</b>: <a href="maito:orbis.sirovine@zg.t-com.hr">orbis.sirovine@zg.t-com.hr</a></p>';
var MILLBO2 = '<p>' +
'<b>Millbo S.p.A</b><br />' +
'Via Bellaria sn<br />' +
'28069 Trecate (NO)<br />' +
'<b>Tel</b>: +39 0321795911<br />' +
'<b>Fax</b>: +39 0321795920<br />' +
'<b>e-mail</b>: Ms. Janet Maidment <a href="mailto:j.maidment@millbo.it">j.maidment@millbo.it</a></p>';


function copyEvent(ev) {
    var px = ev.pointerX();
    var py = ev.pointerY();
    var el = ev.element();
    return {
      pointerX: function(){return px;},
      pointerY: function(){return py;},
      element: function(){return el;},
      layerX: ev.layerX,
      layerY: ev.layerY,
      keyCode: ev.keyCode,
      stop: function(){}, 
      node: ev.node,
      type: ev.type,
      currentTarget: ev.currentTarget
    } 
}

function openContact(ev, country) {
  if(Effect.Queue.effects.length > 0) {
    if(!ev.stopped) {
      ev.stop();
      ev.stopped = true;
    }
    return openContact.bind(this).delay(0.1, copyEvent(ev), country);
  }
  if($('contact').visible()) {
    if(!ev.stopped) ev.stop();
    return;
  }
  country = country.replace(/^.*#/, '');
  if(contacts[country]) {
    $('contact_text').update(contacts[country]);
    try {
      ev.layerX = Object.isNumber(ev.layerX) ? ev.layerX : ev.pointerX() - ev.element().offsetLeft;
      ev.layerY = Object.isNumber(ev.layerY) ? ev.layerY : ev.pointerY() - ev.element().offsetTop;
    } catch(e) {}
    $('contact').setStyle({ 
      height: '0', 
      width: '0' , 
      opacity: '0',
     // fontSize: 0,
      display: 'block',
      top: ev.layerY + ev.element().offsetTop + 'px',
      left: ev.layerX + ev.element().offsetLeft + 'px'
    });

    var zoomcontact = function() {
      var displayclosebutton = function() {
        var close = $('closecontact');
        if(close) {
          close.show();
          close.setStyle({
            opacity: 0, 
            top: '16px',
            left: '398px'
          });
          close.appear({duration: 0.5});
        }
      }
      $('contact').morph(/*'font-size: 12px;' + */
        'opacity: 1;' + 
        'top: 20px;' + 
        'left: 100px;' + 
        'width: 310px;' +
        'height: 230px;',
        { afterFinish: function(){
            displayclosebutton();
          }
        }
      );
    }
    zoomcontact.defer();
  }
  if(!ev.stopped) ev.stop();
}

function parseCountries() {
  $$('area.country').each(function(c){
    if(Prototype.Browser.IE) {
      c.observe('mouseover', function(ev){$(document.body).setStyle({cursor: 'pointer'})});
      c.observe('mouseout', function(ev){$(document.body).setStyle({cursor: ''})});
    }
    c.observe('click', openContact.bindAsEventListener(c, c.href));
  });
}

function zoom(ev) {
  if(Effect.Queue.effects.length > 0) {
    if(!ev.stopped) {
      ev.stop();
      ev.stopped = true;
    }
    return zoom.bind(this).delay(0.1, copyEvent(ev));
  }
  if($('zoommap') && $('zoommap').visible()){
    if(!ev.stopped) ev.stop();
    return;
  }
  new Ajax.Request(this.href+"?"+Math.random(), {
    method: 'get',
    onSuccess:function(rsp){
      $('zoom').update(rsp.responseText);
      try {
        ev.layerX = Object.isNumber(ev.layerX) ? ev.layerX : ev.pointerX() - ev.element().offsetLeft;
        ev.layerY = Object.isNumber(ev.layerY) ? ev.layerY : ev.pointerY() - ev.element().offsetTop;
      } catch (e) {}
      $('zoommap').setStyle({ 
        height: '0', 
        width: '0' , 
        opacity: '0',
        display: 'block',
        top: ev.layerY + 'px',
        left: ev.layerX + 'px'
      });

      var cursor = $(document.body).getStyle('cursor');
      $(document.body).setStyle({cursor: 'wait'});

      var zoom = function() {
        var displayclosebutton = function() {
          var close = $('closebutton');
          if(close) {
            close.show();
            close.setStyle({
              opacity: 0, 
              top: ($('map').getHeight()/2) - (zoomsize.height/2) - 5 + 'px',
              left: + ($('map').getWidth()/2) + (zoomsize.width/2) - 13 + 'px'
            });
            close.appear({duration: 0.5});
          }
        }

        $('zoom').setStyle({display: 'block'});
        $(document.body).setStyle({cursor: cursor});
        $('zoommap').morph(
          "top: " + ($('map').getHeight() - zoomsize.height) / 2 + "px; " + 
          "left: " + ($('map').getWidth() - zoomsize.width) / 2 + "px; " + 
          "width: " + zoomsize.width +"px; " + 
          "height: " + zoomsize.height + "px; " + 
          "opacity: 1;", 
          { afterFinish: function(){
              displayclosebutton.defer();
            }
          }
        );
      }
      zoom.delay(0.3);
      parseCountries.defer();
    }
  });
  if(!ev.stopped) ev.stop();
}

function closeContact() {
  if($('contact').visible()) {
    $('contact').shrink({direction: 'top-right'});
      $('closecontact').fade({duration: 0.7});
  }
}

function closeZoom() {
  if($('zoommap').visible()) {
    $('zoommap').shrink({direction: 'top-right'});
      $('closebutton').fade({duration: 0.7});
  }
}

function onESCPressed(ev){
  if(ev.keyCode == Event.KEY_ESC) {
    if(Effect.Queue.effects.length > 0) {
      return onESCPressed.bind(this).delay(0.1, copyEvent(ev)); //ie fails if propagating ev...
    }
    var contact = $('contact');
    var zoom = $('zoommap');
    if(contact && contact.visible()) {
      closeContact();
    } else if(zoom && zoom.visible()) {
      closeZoom();
    }
  }
}

Event.observe(document, 'dom:loaded', function(){

  $$('.continent').each(function(ar){
    if(Prototype.Browser.IE) {
      ar.observe('mouseover', function(ev){$(document.body).setStyle({cursor: 'pointer'})});
      ar.observe('mouseout', function(ev){$(document.body).setStyle({cursor: ''})});
    }
    ar.observe('click', zoom.bind(ar));
  });
  var close = $('closebutton');
  if(close) {
    close.observe('click', closeZoom);
  }

  var closecontact = $('closecontact');
  if(closecontact) {
    closecontact.observe('click', closeContact);
  }

  $(document).observe('keypress', onESCPressed);
});

