// Change the map size on a browser resize event

var mainw;
var mainh;

function changeSize() {
	var mapw = 1000;
	var maph = 600;
	var mapr = mapw/maph;
	var mapor = maph/mapw;
	var cliw = window.innerWidth;
	var clih = window.innerHeight;
	var clir = cliw/clih;
	
	if (mapr < clir) {
		document.getElementById('main').style.height = '90%';
		document.getElementById('main').style.top = '5%';
		document.getElementById('main').style.width = (((document.getElementById('main').clientHeight*mapr)/cliw)*100) + '%';
		var l = ((document.getElementById('main').clientHeight * mapr)/cliw)*100;
		document.getElementById('main').style.left = ((100 - l)/2) + '%';
	} else if (mapr > clir) {
		document.getElementById('main').style.width = '90%';
		document.getElementById('main').style.left = '5%';
		document.getElementById('main').style.height = (((document.getElementById('main').clientWidth*mapor)/clih)*100) + '%';
		var t = ((document.getElementById('main').clientWidth * mapor)/clih)*100;
		document.getElementById('main').style.top = ((100 - t)/2) + '%';
	}
	mainw = document.getElementById('main').clientWidth;
	mainh = document.getElementById('main').clientHeight;
}

function is_child_of(parent, child) {
	if( child != null ) {			
		while( child.parentNode ) {
			if( (child = child.parentNode) == parent ) {
				return true;
			}
		}
	}
	return false;
}
function fixOnMouseOut(element, event, JavaScript_code) {
	var current_mouse_target = null;
	if( event.toElement ) {				
		current_mouse_target 			 = event.toElement;
	} else if( event.relatedTarget ) {				
		current_mouse_target 			 = event.relatedTarget;
	}
	if( !is_child_of(element, current_mouse_target) && element != current_mouse_target ) {
		eval(JavaScript_code);
	}
}

function xNum()
{
  for(var i=0; i<arguments.length; ++i){if(isNaN(arguments[i]) || typeof(arguments[i])!='number') return false;}
  return true;
}

function xStr(s)
{
  for(var i=0; i<arguments.length; ++i){if(typeof(arguments[i])!='string') return false;}
  return true;
}

function xDef()
{
  for(var i=0; i<arguments.length; ++i){if(typeof(arguments[i])=='undefined') return false;}
  return true;
}

function xCamelize(cssPropStr)
{
  var i, c, a = cssPropStr.split('-');
  var s = a[0];
  for (i=1; i<a.length; ++i) {
    c = a[i].charAt(0);
    s += a[i].replace(c, c.toUpperCase());
  }
  return s;
}

function xGetComputedStyle(e, p, i)
{
  if(!(e=xGetElementById(e))) return null;
  var s, v = 'undefined', dv = document.defaultView;
  if(dv && dv.getComputedStyle){
    s = dv.getComputedStyle(e,'');
    if (s) v = s.getPropertyValue(p);
  }
  else if(e.currentStyle) {
    v = e.currentStyle[xCamelize(p)];
  }
  else return null;
  return i ? (parseInt(v) || 0) : v;
}

function xLeft(e, iX)
{
  if(!(e=xGetElementById(e))) return 0;
  var css=xDef(e.style);
  if (css && xStr(e.style.left)) {
    if(xNum(iX)) e.style.left=iX+'%';
    else {
      var tx = parseInt(e.style.left);
			var iX = Math.round((tx/mainw)*100);
      if(isNaN(iX)) iX=xGetComputedStyle(e,'left',1);
      if(isNaN(iX)) iX=0;
			e.style.left = iX + '%';
    }
  }
  else if(css && xDef(e.style.pixelLeft)) {
    if(xNum(iX)) e.style.pixelLeft=iX;
    else iX=e.style.pixelLeft;
  }
  return iX;
}

function xTop(e, iY)
{
  if(!(e=xGetElementById(e))) return 0;
  var css=xDef(e.style);
  if(css && xStr(e.style.top)) {
    if(xNum(iY)) e.style.top=iY+'%';
    else {
			var ty = parseInt(e.style.top);
			iY = Math.round((ty/mainh)*100);
      if(isNaN(iY)) iY=xGetComputedStyle(e,'top',1);
      if(isNaN(iY)) iY=0;
			e.style.top = iY + '%';
    }
  }
  else if(css && xDef(e.style.pixelTop)) {
    if(xNum(iY)) e.style.pixelTop=iY;
    else iY=e.style.pixelTop;
  }
  return iY;
}

function xWidth(e, iW) {
{
  if(!(e=xGetElementById(e))) return 0;
  var css=xDef(e.style);
  if (css && xStr(e.style.width)) {
    if(xNum(iW)) e.style.width=iW+'%';
    else {
      var tw=parseInt(e.clientWidth);
			iW = Math.round((tw/mainw)*100);
      if(isNaN(iW)) iW=xGetComputedStyle(e,'width',1);
      if(isNaN(iW)) iW=0;
			e.style.width = iW + '%';
    }
  }
  else if(css && xDef(e.style.pixelWidth)) {
    if(xNum(iX)) e.style.pixelLeft=iX;
    else iX=e.style.pixelLeft;
  }
  return iW;
}
}

function xGetElementById(e)
{
  if(typeof(e)=='string') {
    if(document.getElementById) e=document.getElementById(e);
    else if(document.all) e=document.all[e];
    else e=null;
  }
  return e;
}

var tagName = ['theater', 'lived', 'markpress'];
var startX = [60, 85, 50];
var startY = [55, 45, 30];
var startW = 10;
var endX = [55, 80, 45];
var endY = [50, 40, 25];
var endW = 20;
var ttime = 200;
var tmr = [];
var step = [];

function grow(tag) {
	if (step[tag] == 1) return;
	step[tag] = 1;
	doResize(tagName[tag], startX[tag], startY[tag], endX[tag], endY[tag], startW, endW, tag);
}

function shrink(tag) {
	if (step[tag] == 2) return;
	step[tag] = 2;
	doResize(tagName[tag], endX[tag], endY[tag], startX[tag], startY[tag], endW, startW, tag);
}

function doResize(id, sx, sy, ex, ey, sw, ew, tag) {
  var ele = xGetElementById(id);
  var stX = sx; // x start position
  var stY = sy; // y start position
	var stW = sw; // width start position
  var dispX = ex - stX; // x displacement
  var dispY = ey - stY; // y displacement
	var dispW = ew - stW; // width displacement
  var freq = 1 / ttime; // frequency
  var startTime = new Date().getTime();
	if (tmr[tag] != false) {
		clearInterval(tmr[tag]);
	}
  tmr[tag] = setInterval(
    function() {
      var elapsedTime = new Date().getTime() - startTime;
      if (elapsedTime < ttime) {
        var f = elapsedTime * freq;
				document.getElementById(id).style.left = (f * dispX + stX) + '%';
				document.getElementById(id).style.top = (f * dispY + stY) + '%';
				document.getElementById(id).style.width = (f * dispW + stW) + '%';
      }
      else {
        clearInterval(tmr[tag]);
				document.getElementById(id).style.left = ex + '%';
				document.getElementById(id).style.top = ey + '%';
				document.getElementById(id).style.width = ew + '%';
      }
    }, 10
  );
}
