// Returns the version of Internet Explorer or a -1
// (indicating the use of another browser).
function getInternetExplorerVersion()
{
  var rv = -1; // Return value assumes failure.
  if (navigator.appName == 'Microsoft Internet Explorer')
  {
    var ua = navigator.userAgent;
    var re  = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
    if (re.exec(ua) != null)
      rv = parseFloat( RegExp.$1 );
  }
  return rv;
}

var ver = getInternetExplorerVersion();
var isIE = (ver > 0);
var oldIE = (isIE && (ver < 7.0)); // use css

function absoluteX(o) {
  var x = 0;
  while (o.offsetParent != null) {
    x += o.offsetLeft;
    o = o.offsetParent;
  }
  return x;
}

function absoluteY(o) {
  var y = 0;
  while (o.offsetParent != null) {
    y += o.offsetTop;
    o = o.offsetParent;
  }
  return y;
}

function Hilight(o) {
  if ("opacity" in o.style)
    o.style.opacity = 1;
  if (isIE)
    o.style.filter = "";
}
function Unhilight(o) {
  if ("opacity" in o.style)
    o.style.opacity = 0.8;
  if (isIE)
    o.style.filter = "alpha(opacity=80)";
}

var lastHilighted = null;
function onMouseMoveHandler(e) {
  if (!e)
    e = window.event;
  var obj = e.srcElement || e.target;
  if (obj==lastHilighted)
    return;
  try {
    if (lastHilighted) {
      Unhilight(lastHilighted);
    }
    if (obj.nodeName=="IMG" && (obj.className=="cell"/* || obj.className=="stellalogo"*/)) {
      lastHilighted = obj;
      Hilight(obj);
    } else
      lastHilighted = null;
  } catch(exception) {
    alert(exception.message);
  }
}

function DisplayPopupRelatively(popup, object) {
  popup.style.visibility = "hidden";
  popup.style.left = '0px';
  popup.style.right = '';
  popup.style.top = '0px';
  popup.style.bottom = '';
  popup.style.display = "";
  var x = absoluteX(object);
  var y = absoluteY(object);
  if (x<document.body.offsetWidth/2-40) {
    popup.style.right = '';
    if (y+10+popup.clientWidth<document.body.offsetWidth) {
      popup.style.left = ''+(x+10)+'px';
    } else {
      popup.style.left = ''+(document.body.offsetWidth-popup.clientWidth-10)+'px';
    }
  } else {
    if (x+object.offsetWidth-5>popup.clientWidth) {
      popup.style.left = '';
      popup.style.right = ''+(document.body.offsetWidth-(x+object.offsetWidth-5))+'px';
    } else {
      popup.style.right = '';
      popup.style.left = '10px';
    }
  }
  if (y<document.body.offsetHeight/2-40) {
    popup.style.bottom = '';
    if (y+10+popup.clientHeight<document.body.offsetHeight) {
      popup.style.top = ''+(y+10)+'px';
    } else {
      popup.style.top = ''+(document.body.offsetHeight-popup.clientHeight-10)+'px';
    }
  } else {
    if (y+object.offsetHeight-5>popup.clientHeight) {
      popup.style.top = '';
      popup.style.bottom = ''+(document.body.offsetHeight-(y+object.offsetHeight-5))+'px';
    } else {
      popup.style.bottom = '';
      popup.style.top = '10px';
    }
  }
  popup.style.visibility = "visible";
  popup.style.display = "none";
}

function assignText(HTMLElement, text) {
//debugger;
  if (HTMLElement.nodeName=='#text') {
    HTMLElement.nodeValue = text;
  } else if (HTMLElement.firstChild && HTMLElement.firstChild.nodeName=='#text') {
    assignText(HTMLElement.firstChild, text);
  } else {
    HTMLElement.insertBefore(HTMLElement.ownerDocument.createTextNode(text),HTMLElement.firstChild);
  }
}

function DisplayFull(object, partial_path, persona, orientation) {
  switch (orientation) {
  case 'p': // portrait
    popup.className = "popup_container_p";
    popup_progress_bgp.style.display = "";
    popup_progress_bgl.style.display = "none";
    break;
  case 'l': // landscape
    popup.className = "popup_container_l";
    popup_progress_bgl.style.display = "";
    popup_progress_bgp.style.display = "none";
    break;
  default:
    return;
  }
  popup_progress.style.display = "";

  if (personal_info[persona] != null)
  {
	assignText(popup_name, personal_info[persona][0]);
	assignText(popup_position, personal_info[persona][1] == "" ? "" : "(" + personal_info[persona][1] + ")");
	assignText(popup_about, personal_info[persona][2]);
  }
  else
  {
	assignText(popup_name, " ");
	assignText(popup_position, " ");
	assignText(popup_about, " ");
  }

  DisplayPopupRelatively(popup, object)
  popup_full_bg.style.display="none";
  popup_full.style.display="none";
  popup.style.display="";

  fullload = 0;
  if (oldIE) {
	popup_full_bg.src = 'images/blank.gif';
	popup_full_bg.style.filter= "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+partial_path+"full_bg.png';sizingMethod='scale')";
  } else
	popup_full_bg.src = partial_path+'full_bg.png';
  popup_full.src = partial_path+'full.jpg';
}
  
function DisplayVacant(object) {
//debugger;
  DisplayPopupRelatively(popup_vacant, object)
  var vacant_info = document.getElementById('vacant_'+object.id);
  for(var i=0; i<popup_vacant.childNodes.length; i++)
    if (popup_vacant.childNodes[i].className=='vacant_info')
      popup_vacant.childNodes[i].style.display=((popup_vacant.childNodes[i] == vacant_info)?'':'none');

  popup_vacant.style.display='';
  var obj = vacant_info.lastChild;
  while (obj)
    if (obj.nodeName=='DIV' && obj.className=='scrolled') {
      obj.style.height = ''+(popup_vacant.offsetHeight-obj.offsetTop-50)+'px';
      break;
    } else {
      obj=obj.previousSibling;
    }
}

function DisplayStellaInfo(object) {
  popup_stellainfo.style.display='';
  popup_stellainfo.style.left = Math.floor((document.body.offsetWidth-popup_stellainfo.offsetWidth)/2)+'px';
  popup_stellainfo.style.top = Math.floor((document.body.offsetHeight-popup_stellainfo.offsetHeight)/2)+'px';
}

function onClickHandler(e) {
  if (!e)
    e = window.event;
  var object = e.srcElement || e.target;
  var o = object;
  var isPopupChild = false;
  while (o.parentNode) {
    if (o==popup || o==popup_vacant || o==popup_stellainfo) {
      isPopupChild = true;
      break;
    }
    o = o.parentNode;
  }

  if (object.className=="popup_close" || (!isPopupChild && object.className!="cell" && object.className!="stellalogo")) {
    fullload = -100;
    popup.style.display="none";
    popup_vacant.style.display="none";
    popup_stellainfo.style.display="none";
    return;
  }
  if (object.nodeName=="IMG") {
    if (object.className=="cell") {
      try {
        popup.style.display="none";
        popup_vacant.style.display="none";
        popup_stellainfo.style.display="none";

        var match = object.src.match(/^(.*\/(.*?)(.))\.png$/);

        if ((match[2]+match[3]).match(/^vacant(?:_en)?$/)) {
	  DisplayVacant(object);
	} else {
	  DisplayFull(object, match[1],match[2],match[3]);
	}

      } catch(exception) {
        alert(exception.message);
      }
    } else if (object.className=="stellalogo") {
      popup.style.display="none";
      popup_vacant.style.display="none";
      DisplayStellaInfo(object);
    }
  }
}

function HookClicks() {
  if (document.body.attachEvent) {
    document.body.attachEvent("onclick",onClickHandler);
    document.body.attachEvent("onmousemove",onMouseMoveHandler);
  } else if (document.body.addEventListener) {
    document.body.addEventListener("click",onClickHandler,false);
    document.body.addEventListener("mousemove",onMouseMoveHandler,false);
  }
}

var popup;
var popup_full_bg;
var popup_full;
var popup_name;
var popup_position;
var popup_about;
var popup_vacant;
var popup_stellainfo;
var popup_progress_bgp;
var popup_progress_bgl;
var popup_progress;

var fullload = -100;

function fullload_next() {
  fullload++;
  if (fullload==2) {
    popup_progress_bgl.style.display = "none";
    popup_progress_bgp.style.display = "none";
    popup_progress.style.display = "none";
    popup_full_bg.style.display="";
    popup_full.style.display="";
  }
}

function HookImgLoad() {
  if (popup_full_bg.attachEvent) {
    popup_full_bg.attachEvent('onload',fullload_next);
    popup_full.attachEvent('onload',fullload_next);
  } else if (popup_full_bg.addEventListener) {
    popup_full_bg.addEventListener("load",fullload_next,false);
    popup_full.addEventListener("load",fullload_next,false);
  }
}

var vacant_blinking = {
// -- blinking vars --
  images:[],
  counter:null,
  img:null,
// -- blinking settings --
  repeat:2,
  timeout:50,
  min_interval:1500,
  dispersion:3000
};

function BlinkVacant() {
  if (--vacant_blinking.counter) {
    vacant_blinking.img = vacant_blinking.images.splice(Math.floor(Math.random()*(vacant_blinking.images.length-1)),1)[0];
    vacant_blinking.images.push(vacant_blinking.img);
  }
  Hilight(vacant_blinking.img);
  setTimeout(
    function() {
      Unhilight(vacant_blinking.img);
      if (vacant_blinking.counter) {
        setTimeout(BlinkVacant, vacant_blinking.timeout);
      } else {
        vacant_blinking.counter = vacant_blinking.repeat;
        setTimeout(BlinkVacant, Math.random()*vacant_blinking.dispersion+vacant_blinking.min_interval);
      }
    }, 
    vacant_blinking.timeout
  );
}

function InitiateBlinking() {
  for(var i=0; i<document.images.length; i++)
    if (document.images[i].src.match(/\/vacant(?:_en)?\.png$/)) {
      vacant_blinking.images.push(document.images[i]);
    }
  vacant_blinking.counter = vacant_blinking.repeat;
  setTimeout(BlinkVacant, Math.random()*vacant_blinking.dispersion+vacant_blinking.min_interval);
}

function SetCookie(sName, sValue)
{
  var date = new Date();
  date.setFullYear(date.getFullYear()+1);
  document.cookie = sName + "=" + escape(sValue) + "; expires=" + date.toGMTString() + "; path=/;";
}

function GetCookie(sName)
{
  sName = sName+'=';
  
  var cookies = document.cookie.split(/\s*;\s*/);
  for (var i=0; i<cookies.length; i++) {
    if (cookies[i].indexOf(sName)==0) {
      return unescape(cookies[i].substr(sName.length));
    }
  }
  return '';
}

function SetHomePageAddress() {
  SetCookie('homepage',location.pathname);
}

function SetupHomePage() {
  popup = document.getElementById("popup_container");
  popup_full = document.getElementById("popup_full");
  popup_full_bg = document.getElementById("popup_full_bg");
  popup_name = document.getElementById("popup_name"); 
  popup_position = document.getElementById("popup_position"); 
  popup_about = document.getElementById("popup_about");
  popup_vacant = document.getElementById("popup_vacant");
  popup_stellainfo = document.getElementById("popup_stellainfo");
  popup_progress_bgp = document.getElementById("popup_progress_bgp");
  popup_progress_bgl = document.getElementById("popup_progress_bgl");
  popup_progress = document.getElementById("popup_progress");

  if (oldIE) {
    var blank = "images/blank.gif";

    popup_progress_bgp.src = blank;
    popup_progress_bgp.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/300x400.png',sizingMethod='scale')";
    popup_progress_bgl.src = blank;
    popup_progress_bgl.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/400x300.png',sizingMethod='scale')";
    popup_full_bg.src = blank;
    popup_full_bg.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/blank.gif',sizingMethod='scale')";
    for(var i=0; i<document.images.length; i++) {
      if (document.images[i].className=='popup_close') {
        document.images[i].style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+document.images[i].src+"',sizingMethod='scale')";
        document.images[i].src = blank;
      } else if (document.images[i].className=='stellainfo_bg') {
        document.images[i].style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+document.images[i].src+"',sizingMethod='scale')";
        document.images[i].src = blank;
      } else if (document.images[i].className=='vacantbg') {
        document.images[i].style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+document.images[i].src+"',sizingMethod='scale')";
        document.images[i].src = blank;
      }
        
    }
  }

  HookClicks();
  HookImgLoad();
  InitiateBlinking();
  
  SetHomePageAddress();
}

function SetupNewsPage() {
  var homepage = GetCookie('homepage');
  if (homepage!='') {
    for(var i=0; i<document.links.length; i++) {
      if (document.links[i].id=="back_to_home") {
        document.links[i].href = homepage;
      }
    }
  }
}