////////////////////////////////////////////////////////
/* default lib javascript */
////////////////////////////////////////////////////////


//------------------------------------------------------
// init

window.onload = init;
function init(){

  autoRunZappMenu('navList','A')
  
}

// End init
//------------------------------------------------------


//------------------------------------------------------
// IE Detect (Windows only!)

var detect = navigator.userAgent.toLowerCase();

// use this variable to check if browser is Internet Explorerfor Windows 
var WinIE;

if (checkIt('msie')) WinIE = true;
if (checkIt('opera')||checkIt('mac')) WinIE = false;
function checkIt(string){
	place = detect.indexOf(string) + 1;
	return place;
}
// End IE Detect
//------------------------------------------------------


//------------------------------------------------------
// Toggle scripts

// classnames to toggle
var o="open";
var c="closed";

// Zappwerk menu
// el : object to attach an event 
// t  : optional nodeName to switch classNames. Default is 'LI'
function zappMenu(el,t){
  if (!WinIE) return
  var t = ( t=="" || t==undefined || t==null ) ? 'LI' : t
  var e = fpd(el,t);
  var u = fpd(e,'UL');
  attachMenuEvent(e,u)
}

function autoRunZappMenu(startObjId,tag){
  //if (!WinIE) return ;
  var t = ( tag=="" || tag==undefined || tag==null ) ? 'A' : tag ;
  var s = document.getElementById(startObjId).getElementsByTagName(t);
  for (n=0;n<s.length;n++) {
    if (s[n].className == "folder" ){
      var e = fpd(s[n],'LI');
      e.id="menu"+n;
      attachMenuEvent(e);
    }
  }
}

function attachMenuEvent(e,u){
  if (u!=null) {
    var l = u.getElementsByTagName('LI');
    for(n=0;n<l.length;n++){
      if (l[n].className.indexOf(c)>-1) {
        l[n].id="menu"+n;
        switchClassName(e,c,c);
      }
    }
  }
  var eul = e.getElementsByTagName('UL')[0];
  if (eul){
    e.onmouseover = function(){
      switchClassName(e,c,o);
      eul.style.zIndex="300";
    }
    e.onmouseout = function(){
      setTimeout("switchClassName(document.getElementById('"+e.id+"'),o,c)", 200);
      eul.style.zIndex="0";
    }
  }
}

// Zappwerk toggle
function zappToggle(el,t){
  var t = ( t=="" || t==undefined || t==null ) ? 'LI' : t
  var e = fpd(el,t);
  var u = fns(e,'UL');
  var l = u.getElementsByTagName('LI');
  for(n=0;n<l.length;n++){
    l[n].id="menu"+n;
    if (l[n].className.indexOf(o)>-1) {
      switchClassName(e,o,c);
    }else{
      if (l[n].className.indexOf(c)>-1) {
        switchClassName(e,c,o);
      }
    }
  }
}

// Zappwerk toggle [generic]
function listToggle(el,t){
  var t = ( t=="" || t==undefined || t==null ) ? 'LI' : t
  var e = fpd(el,t);
  if (e.className.indexOf(o)>-1) {
    switchClassName(e,o,c);
  }else if(e.className.indexOf(c)>-1) {
    switchClassName(e,c,o);
  }
}

// Zappwerk toggle all [generic]
function toggleAll(id,tag,s){
  var h = document.getElementById(id).getElementsByTagName(tag);
  for(n=0;n<h.length;n++){ 
    if (h[n].className.indexOf('makerBox')>-1){ 
      if (s.indexOf(o)>-1 && h[n].className.indexOf(o)>-1 ) {
        switchClassName(h[n],o,c);
      }else if(s.indexOf(c)>-1 && h[n].className.indexOf(c)>-1) {
        switchClassName(h[n],c,o);
    }
    }
  }
}
// End Toggle scripts
//------------------------------------------------------



//------------------------------------------------------
// Classname & node handlers

function addCSSClass(elem,cn){elem.className=(elem.className+" "+cn).trim();}
function removeCSSClass(elem,cn){elem.className=elem.className.replace(cn,"").trim();}
String.prototype.trim=function(){return this.replace( /^\s+|\s+$/, "" );}
function switchClassName(e,a,b){e.className=e.className.replace(a,"").trim();e.className=(e.className+" "+b).trim();}
function fpd(elem,e){var o=elem;while(o.parentNode.nodeName!=e.toUpperCase()){o=o.parentNode;}return o.parentNode;}
function fps(elem,e){var o=elem;while(o.previousSibling.nodeName!=e.toUpperCase()){o=o.previousSibling;}return o.previousSibling;}
function fns(elem,e){var o=elem;while(o.nextSibling.nodeName!=e.toUpperCase()){o=o.nextSibling;}return o.nextSibling;}
function fcd(elem,e){var o=elem;if(o.firstChild.nodeName==e.toUpperCase()){return o.firstChild;}else{while(o.nextSibling.nodeName!=e.toUpperCase()){o=o.nextSibling;}return o.nextSibling;}}

// End Classname & node handlers
//------------------------------------------------------

//------------------------------------------------------
// slideshow 

var timer, numberOfPictures, slide;
var counter = 0
var pic = new Array()
var fadeTime = 3
var viewingTime = 4000

function getslides(containerID){
  slide = document.getElementById(containerID)
  slide.pic = slide.getElementsByTagName('IMG');
  slide.numberOfPictures = slide.pic.length;
  if (slide.numberOfPictures<=0) return;
  slide.style.backgroundImage='url('+slide.pic[0].src+')';
}

function runSlides(containerID){
	slide = document.getElementById(containerID);
  slide.pic = slide.getElementsByTagName('IMG');
  slide.numberOfPictures = slide.pic.length;
  if (slide.numberOfPictures<=0) return;
  if (WinIE){
    slide.style.filter="blendTrans(duration=fadeTime)"
    slide.filters.blendTrans.Apply()      
  }
	if (slide.counter == undefined) slide.counter=0;
  slide.style.backgroundImage='url('+slide.pic[slide.counter].src+')';
  if (WinIE){
    slide.filters.blendTrans.Play();
  } 
  slide.counter++;
  if (slide.counter > (slide.numberOfPictures-1)) slide.counter=0; 
  timer = setTimeout('runSlides("'+containerID+'")', viewingTime);
}
// END slideshow
//------------------------------------------------------


//------------------------------------------------------
// global rollover

function celtRollover(){

	var rollOn="on.gif"
	var rollOff="off.gif"
  
	var rollimg = document.getElementsByTagName('IMG');
	if (rollimg.length == 0 ) { return }
	var preloads = new Object();
  
	for (var i=0;i<rollimg.length;i++) {
  
		if (rollimg[i].src.indexOf(rollOff)<=-1) {continue}
		if (!rollimg[i].id || rollimg[i].id == undefined) { rollimg[i].id = 'IMG'+i; }
    
		preloads['off'+rollimg[i].id] = new Image;
    preloads['off'+rollimg[i].id].src = rollimg[i].src.substring(0,(rollimg[i].src.indexOf(rollOff))) + rollOff;
		//preloads['off'+rollimg[i].id].src = rollimg[i].src.split("_")[0] + rollOff;
    
		preloads['on'+rollimg[i].id] = new Image;
    preloads['on'+rollimg[i].id].src = rollimg[i].src.substring(0,(rollimg[i].src.indexOf(rollOff))) + rollOn;
		//preloads['on'+rollimg[i].id].src = imgElm[i].src.split("_")[0] + rollOn';
		
		fpd(rollimg[i],'SPAN').onmouseover = function() {this.style.backgroundImage = this.style.backgroundImage.substring(0,(this.style.backgroundImage.indexOf(rollOff))) + rollOn + ")";}
		fpd(rollimg[i],'SPAN').onmouseout = function() {this.style.backgroundImage = this.style.backgroundImage.substring(0,(this.style.backgroundImage.indexOf(rollOn))) + rollOff + ")";}
    
	}
  
}


// End global rollover
//------------------------------------------------------

//------------------------------------------------------
// Form validation

 function validateForm(formid){
        var submitForm = true;
        var labels = document.getElementsByTagName('LABEL');

        for (var i=0; i<labels.length; i++)
        {

          // check if field is required
          if(labels[i].parentNode.className.indexOf('required') > -1) {

            // get form element
            formelement = fns(labels[i].parentNode,'DIV').childNodes[0];
            // get validationtype
            classname = fns(labels[i].parentNode,'DIV').className;
            arValidationType = classname.split(' ');
            if(arValidationType[0] == 'checkbox' || arValidationType[0] == 'radio') {
              validationType = arValidationType[0];
            }
            else {
              // if there is no type validationtype = undefined, ther wil be checked if empty
              validationType = arValidationType[1];
            }

            // check for validation
            if (!checkifValid(validationType,formelement)) {
                formelement.focus();
                doError(labels[i].parentNode,'showError');
                submitForm = false;
            } else doError(labels[i].parentNode,'errormessage');

         }
       }
       return submitForm;
     }

     function doError(element,classname) {
       var checkclass = '';
       if (classname == 'showError') checkclass = 'errormessage';
       else if (classname == 'errormessage') checkclass = 'showError';
        if (element.className == checkclass) {
         element.className = classname;
       }
       else if (element.className == 'clr') {
         return false;
       }
       else {
         doError(element.nextSibling,classname);
       }
     }

     // returns true or false
     function checkifValid(validationType,element) {
       var emailfilter   =/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
       var yearfilter    =/^[0-9]{4}$/
       var zipcodefilter =/^[0-9]{4}[a-z]{2}$/i
       var phonefilter   =/^([0-9]{10})|([0-9]{2,4}-[0-9]{6,8})$/
       var extension     =/^.*\.(pdf|doc)$/i

       if(validationType == 'checkbox' || validationType == 'radio') {
         elements = element.parentNode.getElementsByTagName('INPUT');
         for (var i=0; i<elements.length; i++) {
           if (elements[i].checked) return true;
         }
         return false;
       }
       else {
          value = element.value;
          //alert(validationType + "||" + value);
         if(value == "") return false;
         else if(validationType == 'email' && !emailfilter.test(value))     return false;
         else if(validationType == 'day' && (value < 1 || value > 31))      return false;
         else if(validationType == 'month' && (value < 1 || value > 12))    return false;
         else if(validationType == 'year' && !yearfilter.test(value))       return false;
         else if(validationType == 'zipcode' && !zipcodefilter.test(value)) return false;
         else if(validationType == 'phone' && !phonefilter.test(value))     return false;
         else if(validationType == 'file' && !extension.test(value))        return false;
         else return true;
       }

     }

// End Form validation
//------------------------------------------------------
