addLoadListener(formInit);
addLoadListener(initSlides);


function getElementsByAttribute(attribute, attributeValue)
{
  var elementArray = new Array();
  var matchedArray = new Array();

  if (document.all)
  {
    elementArray = document.all;
  }
  else
  {
    elementArray = document.getElementsByTagName("*");
  }

  for (var i = 0; i < elementArray.length; i++)
  {
    if (attribute == "class")
    {
      var pattern = new RegExp("(^| )" + attributeValue + "( |$)");

      if (pattern.test(elementArray[i].className))
      {
        matchedArray[matchedArray.length] = elementArray[i];
      }
    }
    else if (attribute == "for")
    {
      if (elementArray[i].getAttribute("htmlFor") || elementArray[i].getAttribute("for"))
      {
        if (elementArray[i].htmlFor == attributeValue)
        {
          matchedArray[matchedArray.length] = elementArray[i];
        }
      }
    }
    else if (elementArray[i].getAttribute(attribute) == attributeValue)
    {
      matchedArray[matchedArray.length] = elementArray[i];
    }
  }

  return matchedArray;
}

function addLoadListener(fn)
{
  if (typeof window.addEventListener != 'undefined')
  {
    window.addEventListener('load', fn, false);
  }
  else if (typeof document.addEventListener != 'undefined')
  {
    document.addEventListener('load', fn, false);
  }
  else if (typeof window.attachEvent != 'undefined')
  {
    window.attachEvent('onload', fn);
  }
  else
  {
    var oldfn = window.onload;
    if (typeof window.onload != 'function')
    {
      window.onload = fn;
    }
    else
    {
      window.onload = function()
      {
        oldfn();
        fn();
      };
    }
  }
}

function attachEventListener(target, eventType, functionRef, capture)
{
  if (typeof target.addEventListener != "undefined")
  {
    target.addEventListener(eventType, functionRef, capture);
  }
  else if (typeof target.attachEvent != "undefined")
  {
    var functionString = eventType + functionRef;
    target["e" + functionString] = functionRef;
    target[functionString] = function(event)
    {
      if(typeof event == "undefined"){event = window.event}; target["e" + functionString](event);
    };
    
    target.attachEvent("on" + eventType, target[functionString]);
  }
  else
  {
    eventType = "on" + eventType;

    if (typeof target[eventType] == "function")
    {
      var oldListener = target[eventType];

      target[eventType] = function()
      {
        oldListener();

        return functionRef();
      }
    }
    else
    {
      target[eventType] = functionRef;
    }
  }

  return true;
}

function detachEventListener(target, eventType, functionRef, capture)
{
  if (typeof target.removeEventListener != "undefined")
  {
    target.removeEventListener(eventType, functionRef, capture)
  }
  else if (typeof target.detachEvent != "undefined")
  {
    var functionString = eventType + functionRef;

    target.detachEvent("on" + eventType, target[functionString]);

    target["e" + functionString] = null;
    target[functionString] = null;
  }
  else
  {
    target["on" + eventType] = null;
  }

  return true;
}

function stopDefaultAction(event)
{
    event.returnValue = false;
    if (typeof event.preventDefault != "undefined")
    {
        event.preventDefault();
    }
}

function formInit()
{
    if(document.forms[0]) document.forms[0].onsubmit = validateFields;
}

function validateFields()
{
    var elements = document.forms[0].elements;
    var errors = 0;
    
    for (var i = 0; i < elements.length; i++)
    {
        var newError = false;
        errSpan="E-"+elements[i].name ;
        var errorMessage = "";
        
        if (/(^| )checkRequired( |$)/.test(elements[i].className)) 
        {
            if (elements[i].type=="radio")
            {
                var radioName = elements[i].name;
                var numberOfButtons = document.forms[0][radioName].length;
                newError = true;

                for (var j = 0; j < numberOfButtons; j++)
                {  
                    if (document.forms[0][radioName][j].checked) 
                    {
                        newError = false;
                    }
                }
                
                i = i + numberOfButtons -1;
            }

            else if (elements[i].value == "") newError = true;
            
            if (newError) errorMessage = "this field is obligatory";
            
        }

        if (/(^| )checkEmail( |$)/.test(elements[i].className) && elements[i].value != "" && !validateMail(elements[i].value))
        {
            errorMessage = "E-mail address not valid";
            newError = true;
        }

         
        if (newError)
        {
            errors++;
            
            if (document.getElementById(errSpan))
            {
                var span = document.getElementById(errSpan);
                span.innerHTML = errorMessage;
            }
            elements[i].className=elements[i].className+" error";
        }
        else
        {
            if (/(^| )error( |$)/.test(elements[i].className))
            {
                elements[i].className = elements[i].className.replace(/error/g, "");
            }
            if (document.getElementById(errSpan))
            {
                var span = document.getElementById(errSpan);
                span.innerHTML = "";
            }
            
        }
    }
    if (errors) return false;
}

function validateMail(string)
{
    return (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/.test(string)); 
}




function initLogo() {
	image = document.getElementById('logo');
	setOpacity(image, 0);
	image.style.visibility = "visible";
	fadeIn('logo',0);
}

function fadeIn(objId,opacity) {
	if (document.getElementById) {
		obj = document.getElementById(objId);
		if (opacity <= 100) {
			setOpacity(obj, opacity);
			opacity += 3;
			window.setTimeout("fadeIn('"+objId+"',"+opacity+")", 50);
		}
	}
}

function setOpacity(obj, opacity) {
	opacity = (opacity == 100)?99.999:opacity;
	// IE/Win
	obj.style.filter = "alpha(opacity:"+opacity+")";
	// Safari<1.2, Konqueror
	obj.style.KHTMLOpacity = opacity/100;
	// Older Mozilla and Firefox
	obj.style.MozOpacity = opacity/100;
	// Safari 1.2, newer Firefox and Mozilla, CSS3
	obj.style.opacity = opacity/100;
}

function safemail(name, domain) 
{
  document.write('<a href=mailto:' + name + '@' + domain + '>' + name + '@' + domain + '</a>');
}


function initSlides()
{
    if (document.getElementById('slideshow'))
    {
        actualSlideID = "sp0"; //global !
        document.getElementById("sp0").className = "sp spC";
        removeNode(document.getElementById("sp0").parentNode);
        var slides = getElementsByAttribute("class", "spX");
        for (var i = 0; i < slides.length; i++)
        {
            removeNode(slides[i].parentNode);
        }
        slides = getElementsByAttribute("class", "spX");
          for (var i = 0; i < slides.length; i++)
           {  
            slides[i].className = "sp spD";
            
            attachEventListener(slides[i], "mouseover", point, false);
            attachEventListener(slides[i], "mouseout", dim, false);
            attachEventListener(slides[i], "click", showSlide, false);
            
        }
    }
}


function removeNode(n){
    if(n.hasChildNodes()){
        for(var i=0;i<n.childNodes.length;i++){
            n.parentNode.insertBefore(n.childNodes[i].cloneNode(true),n);
        }
    }
    n.parentNode.removeChild(n);
}

function point()
{
    this.className = "sp spA";
}

function undim()
{
    this.className = "sp spC";
}

function dim()
{
    this.className = "sp spD";
}

function showSlide()
{
    var actualSlide = document.getElementById(actualSlideID);
    actualSlide.className = "sp spD";
    attachEventListener(actualSlide, "mouseover", point, false);
    attachEventListener(actualSlide, "mouseout", dim, false);
    attachEventListener(actualSlide, "click", showSlide, false);
    detachEventListener(this, "mouseover", point, false);
    detachEventListener(this, "mouseout", dim, false);
    detachEventListener(this, "click", showSlide, false);
    this.className = "sp spC";
    var ThNSrc = this.src;
    
    var slideSrc = ThNSrc.replace("_","");
    
    var slide = document.getElementById("bp");
    slide.src = slideSrc;
    actualSlideID = this.id;
}