function BW()
{
	var v = navigator.appVersion;
	var a = navigator.userAgent;
	this.op = (a.indexOf("Opera") > -1 ? 1 : 0);
	this.ie = (v.indexOf("MSIE") > -1 && !this.op ? 1 : 0);
	this.gecko = (a.indexOf("Gecko") > -1 ? 1 : 0);
	return this;
}
var B = new BW();

function setHttpGet(k,v)
{
  var loc = document.location.href;
  var getstr = loc.indexOf('?') != -1 ? loc.substr(loc.indexOf('?')) : '';
  var baseurl = loc.substr(0,loc.length-(getstr.length));
  var getvar = k + '=' + v;
  
  if(getstr.indexOf('&'+k+'=') > -1 || getstr.indexOf('?'+k+'=') > -1)
  {
    var RE = new RegExp('(\\\?|\&)'+k+'=.*?(&.*)?$', 'g');
    getstr.match(RE);
    return baseurl + getstr.replace(RE, RegExp.$1 + getvar + RegExp.$2);
  }
  else if(getstr.length == 0)
  {
    return baseurl + '?' + getvar;
  }
  else
  {
    return baseurl + getstr + '&' + getvar;
  }
}

var CL_OFF = 'menu_entr0';
var CL_ON = 'menu_entr1';
var CL_ACT = 'menu_entr2';
var CL_S_OFF = 'menu_sentr0';
var CL_S_ON = 'menu_sentr1';
var CL_S_ACT = 'menu_sentr2';
var nextsubwrap = 0;
function MenuEntry(title, target, desc)
{
  this.title = title;
  this.target = target;
  this.desc = desc;
  this.subs = new Array();
  this.sub_i = 0;
  this.sub_wrapper_id = 'swrap' + nextsubwrap++;
  this.subw_visible = false;
  this.isActive = false;
  
  this.addSub = function(sub)
  {
    this.subs[this.sub_i++] = sub;
  };
  
  this.go = function()
  {
    if(this.target != null)
      document.location.href = setHttpGet('p', this.target);
    else if(this.subs.length > 0)
      this.subw_visible ? this.hideSub() : this.showSub();
  };
  
  this.showSub = function() { document.getElementById(this.sub_wrapper_id).style.display = 'block'; this.subw_visible = true; };
  this.hideSub = function() { document.getElementById(this.sub_wrapper_id).style.display = 'none'; this.subw_visible = false;  };
  
  return this;
}

function MenuSubEntry(title, target, desc)
{
  this.title = title;
  this.target = target;
  this.desc = desc;
  this.isActive = false;
  this.go = function() { document.location.href = setHttpGet('p', this.target); };
}

var m_entr = new Array();
m_entr[0] = new MenuEntry('Om företaget', 'about', 'Om företaget');
m_entr[1] = new MenuEntry('Referensobjekt', null, 'Visa/göm referensobjekt');
m_entr[1].addSub(new MenuSubEntry('Nordic Hotel', 'ref01', 'Projekt: Nordic Hotel'));
m_entr[1].addSub(new MenuSubEntry('SAS Arlandia', 'ref02', 'Projekt: SAS Arlandia'));
m_entr[1].addSub(new MenuSubEntry('Star Hotel Sollentuna', 'ref03', 'Projekt: Star Hotel Sollentuna'));
m_entr[1].addSub(new MenuSubEntry('Star Hotel Lund', 'ref04', 'Projekt: Star Hotel Lund'));
m_entr[1].addSub(new MenuSubEntry('Hotel City Stockholm', 'ref05', 'Projekt: Hotel City Stockholm'));
m_entr[1].addSub(new MenuSubEntry('Hotel Gamla Teatern', 'ref06', 'Projekt: Hotel Gamla Teatern'));
m_entr[1].addSub(new MenuSubEntry('Pub Sollentunamässan', 'ref07', 'Projekt: Pub Sollentunamäsan'));
m_entr[2] = new MenuEntry('Kontakta oss', 'contact', 'Kontakta oss');

function loadMenu(curr)
{
  if(curr == null) curr = Math.random();
  var c = document.getElementById('menu').childNodes[0];
  
  var elem, swElem, sElem;
  for(var i=0; i<m_entr.length; i++)
  {
    elem = document.createElement('div');
    if(m_entr[i].target == curr) m_entr[i].isActive = true;
    elem.className = (m_entr[i].isActive ? CL_ACT : CL_OFF);
    elem.innerHTML = m_entr[i].title;
    elem.__assocEntr = m_entr[i];
    elem.onclick = function() { this.__assocEntr.go(); };
    elem.onmouseover = function() {
      if(!this.__assocEntr.isActive) this.className = CL_ON;
      window.status = this.__assocEntr.desc;
    };
    elem.onmouseout = function() {
      this.className = this.__assocEntr.isActive ? CL_ACT : CL_OFF;
      window.status = '';
    };
    c.appendChild(elem);
    
    if(m_entr[i].subs.length > 0)
    {
      swElem = document.createElement('div');
      swElem.id = m_entr[i].sub_wrapper_id;
      swElem.style.display = 'none';
      
      for(var j=0; j<m_entr[i].subs.length; j++)
      {
        sElem = document.createElement('div');
        if(m_entr[i].subs[j].target == curr) m_entr[i].subs[j].isActive = true;
        sElem.className = (m_entr[i].subs[j].isActive ? CL_S_ACT : CL_S_OFF);
        sElem.innerHTML = m_entr[i].subs[j].title;
        sElem.__assocEntr = m_entr[i].subs[j];
        sElem.onclick = function() { this.__assocEntr.go(); };
        sElem.onmouseover = function() {
          if(!this.__assocEntr.isActive) this.className = CL_S_ON;
          window.status = this.__assocEntr.desc;
        };
        sElem.onmouseout = function() {
          this.className = this.__assocEntr.isActive ? CL_S_ACT : CL_S_OFF;
          window.status = '';
        };
        swElem.appendChild(sElem);
      }
      
      c.appendChild(swElem);
    }
  }
}

function adjustHeight()
{
  var EXCEPT = 20 + 89 + (B.ie ? 30 : 50);
  var height = B.ie ? document.body.clientHeight : window.innerHeight;
  var newHeight = height - EXCEPT;
  if(newHeight > 100)
  {
    document.getElementById('menu').childNodes[0].style.height = (newHeight) + 'px';
    document.getElementById('main').style.height = (newHeight-10) + 'px';
  }
}

var __FORM_SUBMITED = false;
var __FORM_FIELD_CLASSES = new Array();

function Form(form_obj)
{
  this.ref = form_obj;
  this.verified = true;
  
  this.verify = function(elemName, _condition, _alert, _hlight, _focus)
  {
    if(this.verified)
  	{
  	  var re = new RegExp("this->", "gi");
      _condition = _condition.replace(re, "this.ref." + elemName + ".");
      
  		if(!eval(_condition))
  		{
  			if(_focus !== false)  { eval('this.ref.' + elemName + '.focus()'); }
  			if(_hlight !== false) { this.setFieldAppearance(elemName, true); }
  			if(_alert !== false)  { alert(_alert); }
  			this.verified = false;
  		}
  		else
  		{
  		  if(_hlight !== false) { this.setFieldAppearance(elemName, false); }
  		}
  	}
  };
  
  this.setFieldAppearance = function(elemName, hlight)
  {
    var failClass = "fail";
    ref = eval('this.ref.'+elemName);
    
    if(hlight)
    {
      if(typeof(__FORM_FIELD_CLASSES[elemName]) == "undefined")
      {
        __FORM_FIELD_CLASSES[elemName] = ref.className;
      }
      
      if(ref.className.indexOf(" "+failClass) == -1)
      {
        ref.className = __FORM_FIELD_CLASSES[elemName] + " " + failClass;
      }
    }
    else if(typeof(__FORM_FIELD_CLASSES[elemName]) != "undefined")
    {
      ref.className = __FORM_FIELD_CLASSES[elemName];
    }
  };
  
  this.doSubmit = function()
  {
    if(!__FORM_SUBMITED && this.verified)
    {
      __FORM_SUBMITED = true;
      this.ref.submit();
    }
  };
  
  this.resetSubmitFlag = function()
  {
    __FORM_SUBMITED = false;
  };
  
  return this;
}

function chkCform(f_obj)
{
  var F = new Form(f_obj);
  
  F.verify("name", "this->value.length >= 2", "Du måste ange ditt namn.");
  F.verify("email", "this->value.length > 6", "Du måste fylla i en giltig E-mailadress.");
  F.verify("msg", "this->value.length > 3", "Skriv gärna någon kort kommentar om vad ärendet gäller.");
  
  return F.verified;
}
