var AFL = {};

/* Softlogin */

AFL.softlogin = function(canvas, box, form, submit, error, mandatory, open, close) {
    this.init(canvas, box, form, submit, error, mandatory, open, close);
};

AFL.softlogin.prototype = {

  initLightbox: function() {
    YAHOO.util.Event.addListener(this.open, 'click', this.showLogin, this);
	YAHOO.util.Event.addListener(this.form, 'submit', this.setSubmitData, this);
  },

  
  showCanvas: function() {
	var arrayPageSize = this.getPageSize();
	YAHOO.util.Dom.setStyle(this.canvas, 'opacity', 0);
	YAHOO.util.Dom.setStyle(this.canvas, 'height', arrayPageSize[1]+'px'); 
	YAHOO.util.Dom.setStyle(this.canvas, 'width', '100%'); 
	YAHOO.util.Dom.setStyle(this.canvas, 'background-color', '#000'); 
	YAHOO.util.Dom.setStyle(this.canvas, 'display', 'block');
	var showLoginbox = this.showLoginbox();
	var canvasAnim = new YAHOO.util.Anim(this.canvas, { opacity: { to: 0.8 } });
	canvasAnim.duration = 0.35; 
	canvasAnim.onComplete.subscribe(this, showLoginbox); 
	canvasAnim.animate();
	YAHOO.util.Event.addListener(this.canvas, 'click', this.hideLoginBox, this);
	YAHOO.util.Event.addListener(this.close, 'click', this.hideLoginBox, this);
  },
  
  
  showLogin: function(ev, scope) {
   YAHOO.util.Event.preventDefault(ev); 
   scope.showCanvas();
  },
  
  
  showLoginbox: function() { 
    this.resetForm();
	var arrayPageSize = this.getPageSize();
	var top = 10;
    var boxHeight = YAHOO.util.Dom.getStyle(this.box, 'height'); 
	var boxWidth = YAHOO.util.Dom.getStyle(this.box, 'width');
	var arrayPageSize = this.getPageSize();
	var left = (arrayPageSize[0]/ 2) - (boxWidth.replace(/px/g, '') / 2);
	if (boxHeight.replace(/px/g, '') < arrayPageSize[2]) {
	 top = (arrayPageSize[2] / 2) - (boxHeight.replace(/px/g, '') / 2);
	}
	YAHOO.util.Dom.setStyle(this.box, 'position', 'absolute');
	YAHOO.util.Dom.setStyle(this.box, 'left', left+'px');
	YAHOO.util.Dom.setStyle(this.box, 'top', top+'px');
	YAHOO.util.Dom.setStyle(this.box, 'opacity', 0.6);
	YAHOO.util.Dom.setStyle(this.box, 'background-color', '#fff'); 
	YAHOO.util.Dom.setStyle(this.box, 'display', 'block'); 
	var boxAnim = new YAHOO.util.Anim(this.box, { opacity: { to: 1 } });
	boxAnim.duration = 0.2; 
	boxAnim.animate();
  },
  
  
  hideLoginBox: function (ev, scope) {
   YAHOO.util.Event.preventDefault(ev); 
    scope.hideLogin();
  },
  
  
  hideLogin: function () {
   YAHOO.util.Dom.setStyle(this.box, 'display', 'none');
   var hideCanvas = YAHOO.util.Dom.setStyle(this.canvas, 'display', 'none');
   var canvasAnim = new YAHOO.util.Anim(this.canvas, { opacity: { to: 0.3 } });
   canvasAnim.duration = 0.1; 
   canvasAnim.onComplete.subscribe(this, hideCanvas); 
   canvasAnim.animate();
  },
  
  
  getPageSize: function() {
	        
	    var xScroll, yScroll;
		
		if (window.innerHeight && window.scrollMaxY) {	
			xScroll = window.innerWidth + window.scrollMaxX;
			yScroll = window.innerHeight + window.scrollMaxY;
		} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
			xScroll = document.body.scrollWidth;
			yScroll = document.body.scrollHeight;
		} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
			xScroll = document.body.offsetWidth;
			yScroll = document.body.offsetHeight;
		}
		
		var windowWidth, windowHeight;
		
		if (self.innerHeight) {	// all except Explorer
			if(document.documentElement.clientWidth){
				windowWidth = document.documentElement.clientWidth; 
			} else {
				windowWidth = self.innerWidth;
			}
			windowHeight = self.innerHeight;
		} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
			windowWidth = document.documentElement.clientWidth;
			windowHeight = document.documentElement.clientHeight;
		} else if (document.body) { // other Explorers
			windowWidth = document.body.clientWidth;
			windowHeight = document.body.clientHeight;
		}	
		
		// for small pages with total height less then height of the viewport
		if(yScroll < windowHeight){
			pageHeight = windowHeight;
		} else { 
			pageHeight = yScroll;
		}
	
		// for small pages with total width less then width of the viewport
		if(xScroll < windowWidth){	
			pageWidth = xScroll;		
		} else {
			pageWidth = windowWidth;
		}

		return [pageWidth,pageHeight,windowHeight];
		
	},

 
  setSubmitData: function(ev, scope) {
   scope.submitData(ev);
  }, 
  

  submitData: function(e) {
	
	var countErrors = 0;
	 for (i = 0; i < this.mandatoryFields.length; i++) {
	   if (document.getElementById(this.mandatoryFields[i]).value === '') {
	    // YAHOO.util.Dom.setStyle(document.getElementById(this.mandatoryFields[i]), 'border', 'solid 1px #FF6600');
		 YAHOO.util.Dom.addClass(document.getElementById(this.mandatoryFields[i]), 'error');
		 countErrors ++;
	   }
	 }
	 
	 if (countErrors > 0) {
	  YAHOO.util.Dom.setStyle(this.error, 'display', 'block'); 
	  YAHOO.util.Event.stopEvent(e);
	 } else {
	  this.hideLogin();
	 }
  },
  
  
  resetForm: function() {
    YAHOO.util.Dom.setStyle(this.error, 'display', 'none');
	for (i = 0; i < this.mandatoryFields.length; i++) {
	    YAHOO.util.Dom.removeClass(document.getElementById(this.mandatoryFields[i]), 'error');
		document.getElementById(this.mandatoryFields[i]).value = ''
	 }
  },
  
  
  resizeCanvas: function() {
    YAHOO.util.Dom.setStyle(this.canvas, 'height', arrayPageSize[1]+'px'); 
  },

  
  init: function(canvas, box, form, submit, error, mandatory, open, close) {
    
    this.canvas = document.getElementById(canvas);
    this.box = document.getElementById(box);
	this.form = document.getElementById(form);
	this.submit = document.getElementById(submit);
	this.error = document.getElementById(error);
	this.mandatoryFields = mandatory;
	this.open = document.getElementById(open);
	this.close = document.getElementById(close);

	this.initLightbox();
	
  }
  
};


/* Main navigation submenu */

AFL.submenu = function(ids, subPrefix) {
    this.init(ids, subPrefix);
};

AFL.submenu.prototype = {

  lastMenu: 0,
  
  initSubmenu: function() {
	for (i = 0; i < this.ids.length; i++) {
	  YAHOO.util.Event.addListener(document.getElementById(this.ids[i]), 'mouseover', this.setShowSubmenu, this);
	  YAHOO.util.Event.addListener(document.getElementById(this.ids[i]), 'mouseout', this.setHideSubmenu, this);
	  if (i+1 === this.ids.length && this.lastMenu === 0) {
	   this.lastMenu = this.ids[i];
	  }
	  //this.checkMouseOver(this.ids[i]);
	}
  },
  
  setShowSubmenu: function(ev, scope) {
	scope.showSubmenu(this.id);
  },
  
  setHideSubmenu: function(ev, scope) {
	scope.hideSubmenu(this.id);
  },

  showSubmenu: function(id) {
	var subMenu = document.getElementById(this.subPrefix+id);
	if (subMenu !== null && subMenu.style.display !== 'block') {
	  this.setSubmenuStyles(subMenu, id);
	}
	var mainMenu = document.getElementById(id);
	YAHOO.util.Dom.addClass(mainMenu, 'hover');
  },
  
  setSubmenuStyles: function(subMenu, id) {
	YAHOO.util.Dom.setStyle(subMenu, 'position', 'absolute');
	YAHOO.util.Dom.setStyle(subMenu, 'display', 'block');
	var subMenuWidth = subMenu.offsetWidth;
	
	var mainMenuMeasures = this.getMainMenuMeasures(id);
	var left = YAHOO.env.ua.gecko > 0 ? mainMenuMeasures[0]+1 : mainMenuMeasures[0];
	var right = YAHOO.env.ua.gecko > 0 ? mainMenuMeasures[1] +1 : mainMenuMeasures[1];
	var minWidth = right-1;
	var top = mainMenuMeasures[3];
	if (left + subMenuWidth > YAHOO.util.Dom.getX(this.lastMenu) + right) {
	  var lastSubMenuPos = (YAHOO.util.Dom.getX(this.lastMenu) + right - subMenuWidth);
	  YAHOO.util.Dom.setXY(this.subPrefix+id, [lastSubMenuPos, top]);
	} else {
	  YAHOO.util.Dom.setXY(this.subPrefix+id, [left, top]);
	}
	if (subMenuWidth < mainMenuMeasures[1]) {
	   YAHOO.util.Dom.setStyle(subMenu, 'width', minWidth+'px');
	}
  },
  
  getMainMenuMeasures: function(id) {
    var mainMenu = document.getElementById(id);
    var mainMenuHeight = mainMenu.offsetHeight;
    var left = YAHOO.util.Dom.getXY(id)[0];
	var right = mainMenu.offsetWidth;
	var top = YAHOO.util.Dom.getXY(id)[1];
	var bottom = YAHOO.util.Dom.getXY(id)[1] + mainMenuHeight;
	
	return [left, right, top, bottom];

  },
  
  checkMouseOver: function(id) {
  // onload nachschauen ob die Mouse sich innerhalt eines Menü-Tabs befindet
  },
  
  hideSubmenu: function(id) {
   YAHOO.util.Dom.setStyle(this.subPrefix+id, 'display', 'none');
   YAHOO.util.Dom.removeClass(document.getElementById(id), 'hover');
  },

  
  init: function(ids, subPrefix) {
	this.ids = ids;
	this.subPrefix = subPrefix;
	this.initSubmenu();
  }
  
};

	
/* Header Animation */

setImgNo = function(imgNo) {
 var end = new Date();
 var oneDay = end.getTime() + (+1000*3600*24);
 end.setTime(oneDay);
 document.cookie = 'imgNo=' + imgNo + '; expires=' + end.toGMTString();
};

animateByRandom = function(imgNo, pageLoad) {
  if (pageLoad == 1) {
	  if (document.cookie) {
		  var myCookie = document.cookie;
		  cookieImgNo = (myCookie.substr(myCookie.indexOf('=')+1));
		  imgNo = parseInt(cookieImgNo, 10);
	  }
	  else {
		  imgNo = parseInt(imgNo, 10);
	  } 
  }
  imgNo++;
  var imgNoBefore = imgNo - 1;
	if (imgNoBefore === 0) {
	  imgNoBefore = 15; }
	else if (imgNo > 15) {
	  imgNo = 1;
	}
  document.getElementById('sprites').src = imgPath+'images/hi' + imgNo + '.jpg';
  document.getElementById('filter').src = imgPath+'images/hi' + imgNo + 'blur.jpg';
  var anim = new YAHOO.util.Anim('filter', { opacity: { to: 0 } });
  anim.animate();
  setImgNo(imgNo); 
  animateSprites(0, 0, imgNo);
};

animateSprites = function(top, count, imgNo) {
  count++;
  if (count <= 100) {
    window.setTimeout('animateSprites(' + top + ', ' + count + ', ' + imgNo + ')', 0);    
  } else {
    window.setTimeout('YAHOO.util.Dom.setStyle("filter", "opacity", 1); animateByRandom(' + imgNo + ');', 3000);
  }
};

var imgPath = typeof serverPath === 'undefined' ? '' : serverPath;
var img = [];

img[1] = new Image();
img[1].src = imgPath+'images/hi1.jpg';
img[2] = new Image();
img[2].src = imgPath+'images/hi2.jpg';
img[3] = new Image();
img[3].src = imgPath+'images/hi3.jpg';
img[4] = new Image();
img[4].src = imgPath+'images/hi4.jpg';
img[5] = new Image();
img[5].src = imgPath+'images/hi5.jpg';
img[6] = new Image();
img[6].src = imgPath+'images/hi6.jpg';
img[7] = new Image();
img[7].src = imgPath+'images/hi7.jpg';
img[8] = new Image();
img[8].src = imgPath+'images/hi8.jpg';
img[9] = new Image();
img[9].src = imgPath+'images/hi9.jpg';
img[10] = new Image();
img[10].src = imgPath+'images/hi10.jpg';
img[11] = new Image();
img[11].src = imgPath+'images/hi11.jpg';
img[12] = new Image();
img[12].src = imgPath+'images/hi12.jpg';
img[13] = new Image();
img[13].src = imgPath+'images/hi13.jpg';
img[14] = new Image();
img[14].src = imgPath+'images/hi14.jpg';
img[15] = new Image();
img[15].src = imgPath+'images/hi15.jpg';

window.onload = function() { animateByRandom(0, 1); };
