var Engine = {
  detect: function() {
    var UA = navigator.userAgent;
    this.isKHTML = /Konqueror|Safari|KHTML/.test(UA);
    this.isGecko = (/Gecko/.test(UA) && !this.isKHTML);
    this.isOpera = /Opera/.test(UA);
    this.isMSIE  = (/MSIE/.test(UA) && !this.isOpera);
    this.isMSIE7 = this.isMSIE && !(/MSIE 6\./.test(UA) && !this.isOpera);
    this.isMSIE6 = this.isMSIE && !this.isMSIE7;
  }
}

var imageList = {
	stat : false,
	init: function(){		
		this.list = $('imagelist');
		if (this.list) {
			this.list.items = this.list.getElementsByTagName('LI');
			if (this.list.items.length > 1) { // wenn mehr als ein Bild
				for (var i = 0; i < this.list.items.length; i++) {
					litem = this.list.items[i];
					litem.id = i+1; // Jedes Bild bekommt eine eigene ID zugewiesen
					if (i != 0) { // Alle Bilder bis auf das erste verstecken
//						litem.hide();
					} 
				}
				var objimgnav = document.createElement("ul");
				objOverlay.setAttribute('id','imglstnav');
				objOverlay.style.display = 'none';
				objBody.appendChild(objOverlay);
				var objimgnav = document.createElement("div");
				objTaf.setAttribute('id','taf');
				objTaf.style.display = 'none';
//				objTaf.onclick = function(e) {	// close Lightbox is user clicks shadow overlay
				
				
			}
/*			var objBody = document.getElementsByTagName("body").item(0);	
				var objOverlay = document.createElement("div");
				objOverlay.setAttribute('id','tafoverlay');
				objOverlay.style.display = 'none';
				objOverlay.onclick = function() { taf.end(); }
				objBody.appendChild(objOverlay);
				var objTaf = document.createElement("div");
				objTaf.setAttribute('id','taf');
				objTaf.style.display = 'none';
//				objTaf.onclick = function(e) {	// close Lightbox is user clicks shadow overlay
//					if (!e) var e = window.event;
//					var clickObj = Event.element(e).id;
//					if ( clickObj == 'lightbox') {
//						taf.end();
//					}
//				};
				objBody.appendChild(objTaf);
			Event.observe(taf.starter, 'click', taf.start);
		*/
		}
	},
	start: function(event){
        Event.stop(event);
		hideSelectBoxes();
		hideFlash();
		var arrayPageSize = getPageSize();
		Element.setHeight('tafoverlay', arrayPageSize[1]);
		new Effect.Appear('tafoverlay', { duration: 1, from: 0.0, to: 0.7 });
		var arrayPageScroll = getPageScroll();
		var boxTop = arrayPageScroll[1] + (arrayPageSize[3] / 10);
		Element.setTop('taf', boxTop);
		new Ajax.Request(taf.url, {
			method: 'get',
			onException: function(r,e) {
			  taf.message(e);
			},
			onComplete: function(resp) {
					$('taf').update(resp.responseText);
						Element.show('taf');
						Event.observe('recommend', 'submit', taf.send);
						Event.observe('sendbutton', 'click', taf.send);
						Event.observe('closebutton', 'click', taf.end);					
			},
			onFailure: function() {
			  taf.message("Übertragung fehlgeschlagen. Bitte versuchen Sie es noch einmal.");
			}
/*			onException: function(r,e) {
			  taf.message(e);
			}
*/			
		});
	},
	send: function(event){
        Event.stop(event);
		if(taf.stat) return;
		taf.stat = true;	
        f = $('recommend');
//		var params = Form.serialize(f);
		var params = "fromname="+Form.Element.getValue('fromname')+ "&fromemail="+Form.Element.getValue('fromemail')+"&toname="+Form.Element.getValue('toname')+"&toemail="+Form.Element.getValue('toemail')+"&text="+Form.Element.getValue('text')+"&sent=1";
		Element.hide('taf');
		new Ajax.Request(taf.url, {
			method: 'post',
			parameters: params,
			onComplete: function(resp) {
					$('taf').update(resp.responseText);
						Element.show('taf');
						if($('recommend')) {Event.observe('recommend', 'submit', taf.send);}
						if($('sendbutton')) {Event.observe('sendbutton', 'click', taf.send);}
						Event.observe('closebutton', 'click', taf.end);					
						taf.stat = false;	
			},
			onFailure: function() {
			  taf.message("Übertragung fehlgeschlagen. Bitte versuchen Sie es noch einmal.");
 			  taf.stat = false;	
			}
		});
	},
	end: function(){
		Element.hide('taf');
		new Effect.Fade('tafoverlay', { duration: 0.5});
		showSelectBoxes();
		showFlash();
		$('taf').update('');
		taf.stat = false;	
	},
	// Error Klasse
	message: function(msg){
		alert(msg);
	}	
}

function initPeopleSearch() {
	if($('namensuche')) {
			url = "/lib/_autocomplete_result.php";
		Event.observe('namensuche', 'submit', function(event) {
//		    Effect.Appear('hinweis');
			Event.stop(event);
		});
		new Insertion.After("contact_name", '<span id="indicator" style="display: none;"><img src="/assets/content/ajax-loader.gif" alt="Working..." /></span>')
		new Ajax.Autocompleter("contact_name", "c-people", url, {paramName: "contact_name", minChars: 2, indicator: 'indicator'})
		$('contact_name').activate();
	}
}				

var Sshow = {
	currentStat: 0,
	changeStat: 1,
	listheight: 0,
	init: function() {
		this.list = $('imagelist');
		if (this.list) {
			this.list.items = this.list.getElementsByTagName('LI');
			Sshow.listsum = this.list.items.length;
			if (this.list.items.length > 1) { // wenn mehr als ein Bild
				for (var i = 0; i < this.list.items.length; i++) {
					litem = this.list.items[i];
					litemheight = $(litem).getHeight();
					if (Sshow.listheight <= litemheight) { 
						Sshow.listheight = litemheight;
					}
					litem.setAttribute('id','imglst'+(i+1));
					$(litem).setStyle({
					  left: '0',
					  position: 'absolute',
					  top: '0'
					});
				}				
			Sshow.listheight = Sshow.listheight+"px";
			$('imagelist').setStyle({
			  height: Sshow.listheight
			});
			Sshow.start();
			}
		}
	},
	start: function() {
		Sshow.setcurrent();		
  	    new PeriodicalExecuter(Sshow.cycle, 5); // change image every 5 seconds 
	},	
	cycle: function() { 
		$(Sshow.currentimage).setStyle({
		  height: Sshow.listheight,
		  zIndex: '10',
		  display: 'block'
		});
		$(Sshow.changeimage).setStyle({
		  height: Sshow.listheight,
		  zIndex: '1',
		  display: 'block'
		});
	new Effect.Fade(Sshow.currentimage, { 
		  duration: 1, 
		  afterFinish: function() { 
				window.setTimeout("Sshow.setcurrent()", 500);
		  } 
		});
	},	
	setcurrent: function() { 
		if (Sshow.currentStat < Sshow.listsum) {
			Sshow.currentStat = Sshow.currentStat+1;
		} else {
			Sshow.currentStat = 1;
		}
		if (Sshow.changeStat < Sshow.listsum) {
			Sshow.changeStat = Sshow.changeStat+1;
		} else {
			Sshow.changeStat = 1;
		}
		Sshow.currentimage = 'imglst'+Sshow.currentStat;
		Sshow.changeimage = 'imglst'+Sshow.changeStat;
	}
};

var slider = {
	stat : false,
	autoscroller: false,
	init: function(){		
//	    Engine.detect();
		slider.containerobj = $('slider');
		slider.sliderobj = $('sliderlist');
		mover.sliderobj = $('sliderlist');
//		if (slider.containerobj && !Engine.isKHTML) { // safari bug javascript overflow:hidden
		if (slider.containerobj) { // safari bug javascript overflow:hidden
			mover.sliderobj.style.left=0;
			var objtrack = document.createElement("div");
			objtrack.setAttribute('id','track');
			var objhandle = document.createElement("div");
			objhandle.setAttribute('id','handle');
			objtrack.appendChild(objhandle);
//			slider.containerobj.insertBefore(objtrack, document.getElementById("sliderlist"));
			slider.containerobj.appendChild(objtrack);
			slider.containerobj.style.overflow = "hidden";
			  ContainerWidth = slider.containerobj.offsetWidth;
			  SliderWidth = slider.sliderobj.offsetWidth;
			MoverWidth = SliderWidth;
			Event.observe(slider.containerobj, 'mouseover', function() {slider.autoscroller.cancel();}.bind(this));
			Event.observe(slider.containerobj, 'mouseout', function() {slider.move();}.bind(this));
			  // Scrollstatus auf null setzen.
				  if (SliderWidth >= ContainerWidth ) {
					  slider.scrollwidth = SliderWidth-ContainerWidth;
					  ContainerSize = ContainerWidth;
					  SliderSize = SliderWidth+10;
					  slider.currentposition = 0;
						slider.move();
				  }			
			new Control.Slider('handle','track',{
			  onSlide:function(v){slider.moveslide(v);},
			  onChange:function(v){slider.moveslide(v);}
			});
			slider.imageInit();
		}
	},
	imageInit: function() {
		slider.sliderobj.items = slider.sliderobj.getElementsByTagName('IMG');
		if (slider.sliderobj.items.length > 1) { // wenn mehr als ein Bild
			for (var i = 0; i < slider.sliderobj.items.length; i++) {
				litem = slider.sliderobj.items[i];
				if (litem.style.display != 'none') {
					litem.orginal = litem.src;
					Event.observe(litem, 'mouseover', this.imageToggle.bindAsEventListener(this));	
					Event.observe(litem, 'mouseout', this.imageToggle.bindAsEventListener(this));	
	//				Event.observe(litem, 'mouseover', slider.imageSwap(this));
				}
			}				
		}
	},
	imageToggle: function(e) {
	var image = Event.element(e);
	image.swapp = image.next().src;
		if (image.src == image.orginal) {
			image.src =image.swapp;
		} else {
			image.src =image.orginal;
		}
	},
	moveslide: function(ppos) {
		slider.autoscroller.cancel();
		if(ppos == 0) {
			pos = Math.abs(slider.currentposition);
			slider.currentposition = 0;
		} else {
			changedposition = Math.ceil(slider.scrollwidth*ppos);
			pos = slider.currentposition-changedposition;
			slider.currentposition = changedposition;
		}
//        new Effect.MoveBy('sliderlist', 0, pos,{queue: {position:'front', scope: 'slidescope', limit:10}});
		$('sliderlist').style.left = "-"+slider.currentposition+"px";
	},
	move: function() {
//		new Effect.Move (mover.sliderobj,{ x: -SliderWidth, y: 0, mode: 'relative', duration: 20});
//console.info(MoverWidth);
//console.info(ContainerWidth);
		slider.autoscroller = new Effect.MoveBy(mover.sliderobj, 0, -(SliderWidth+parseInt(mover.sliderobj.style.left)), {
					  duration: (SliderWidth+parseInt(mover.sliderobj.style.left))/80,  
					  transition: Effect.Transitions.linear,
					  beforeStart: function() {
//					  		this.cancel();
					  },
					  afterFinish: function() {
						mover.sliderobj.style.left = ContainerWidth+"px";  
						MoverWidth = SliderWidth+ContainerWidth;
						slider.move();
					  }
		});
//		this.cancel();
		}		
}
var mover = {
	stat : false,
	init: function(){		
//	    Engine.detect();
		mover.containerobj = $('slider');
		mover.sliderobj = $('sliderlist');
//		if (slider.containerobj && !Engine.isKHTML) { // safari bug javascript overflow:hidden
		if (mover.containerobj) { // safari bug javascript overflow:hidden
			mover.containerobj.style.overflow = "hidden";
			ContainerWidth = mover.containerobj.offsetWidth;
			SliderWidth = mover.sliderobj.offsetWidth;
			MoverWidth = SliderWidth;
			// Scrollstatus auf null setzen.
			if (SliderWidth >= ContainerWidth ) {
				mover.move();
			}						
			mover.imageInit();
		}
	},
	imageInit: function() {
		mover.sliderobj.items = mover.sliderobj.getElementsByTagName('IMG');
		if (mover.sliderobj.items.length > 1) { // wenn mehr als ein Bild
			for (var i = 0; i < mover.sliderobj.items.length; i++) {
				litem = mover.sliderobj.items[i];
				if (litem.style.display != 'none') {
					litem.orginal = litem.src;
					Event.observe(litem, 'mouseover', this.imageToggle.bindAsEventListener(this));	
					Event.observe(litem, 'mouseout', this.imageToggle.bindAsEventListener(this));	
	//				Event.observe(litem, 'mouseover', mover.imageSwap(this));
				}
			}				
		}
	},
	imageToggle: function(e) {
	var image = Event.element(e);
	
	image.swapp = image.next().src;
		if (image.src == image.orginal) {
			image.src =image.swapp;
		} else {
			image.src =image.orginal;
		}
	},
	move: function() {
//		new Effect.Move (mover.sliderobj,{ x: -SliderWidth, y: 0, mode: 'relative', duration: 20});
//console.info(MoverWidth);
//console.info(ContainerWidth);
		new Effect.MoveBy(mover.sliderobj, 0, -MoverWidth , {
					  duration: SliderWidth/80,  
					  transition: Effect.Transitions.linear,
					  beforeStart: function() {
//					  		this.cancel();
					  },
					  afterFinish: function() {
						mover.sliderobj.style.left = ContainerWidth+"px";  
						MoverWidth = SliderWidth+ContainerWidth;
						mover.move();
					  }
		});
//		this.cancel();
		}	
}

function googlemaps() {
	if(typeof GBrowserIsCompatible!='undefined') { 
		 if(document.getElementById("googlemap")) {	
			 document.getElementById("googlemap").style.width = "100%";
			 document.getElementById("googlemap").style.height = "400px";
			  if (GBrowserIsCompatible()) {
				var map = new GMap2(document.getElementById("googlemap"));
				map.addControl(new GSmallMapControl());
				map.addControl(new GOverviewMapControl());
				map.setCenter(new GLatLng(48.199099, 16.343365), 14);
				// Creates a marker at the given point with the given number label
					function createMarker(point) {
					  var marker = new GMarker(point);
					  GEvent.addListener(marker, "click", function() {
					  marker.openInfoWindowHtml('<strong>ECHO Werbeagentur GmbH</strong><br />Schottenfeldgasse 24<br />1070 Wien<br />Telefon: +43 / (01) / 524 70 86-0<br />Telefax: +43 / (01) / 524 70 86-903<br />E-Mail: <a href="mailto:office@echo.at">office@echo.at</a><br />Internet: <a href="http://www.echo.at/">www.echo.at</a>');
					  });
					  return marker;
					}				
			   map.addOverlay(createMarker(new GLatLng(48.199099, 16.343365)));
			  }
		 }
	}
}
function flashResize() {
	if ($('fcflash')) {
		var arrayPageSize = getPageSize();
		var newHeight = arrayPageSize[3]-5;
	//	alert(arrayPageSize);
		document.getElementById('fcflash').style.height = newHeight+"px";
	}
}
function flashResizeObserver() {
	if ($('fcflash')) {
		Event.observe(window, 'resize', flashResize);
	}
}
function enablePrintButton() {
	if ($('print')) {
		$('print').show();
	}
}
function focusLabels() {
  if (!document.getElementsByTagName) return false;
  var labels = document.getElementsByTagName("label");
  for (var i=0; i<labels.length; i++) {
    if (!labels[i].getAttribute("for")) continue;
    labels[i].onclick = function() {
      var id = this.getAttribute("for");
      if (!document.getElementById(id)) return false;
      var element = document.getElementById(id);
      element.focus();
    }
  }
}

function resetFields(whichform) {
  for (var i=0; i<whichform.elements.length; i++) {
    var element = whichform.elements[i];
    if (element.type == "submit") continue;
    if (!element.defaultValue) continue;
    element.onfocus = function() {
    if (this.value == this.defaultValue) {
      // this.value = "";
     }
    }
    element.onblur = function() {
      if (this.value == "") {
        this.value = this.defaultValue;
      }
    }
  }
}

function isFilled(field) {
  if (field.value.length < 1 || field.value == field.defaultValue) {
    return false;
  } else {
    return true;
  }
}

function isEmail(field) {
  if (field.value.indexOf("@") == -1 || field.value.indexOf(".") == -1) {
    return false;
  } else {
    return true;
  }
}

function prepareForms() {
	if($('c-search')) { resetFields($('c-search')); }
  for (var i=0; i<document.forms.length; i++) {
    var thisform = document.forms[i];
//    resetFields(thisform);
  }
}

//addEvent(window,'load',function(){imageList.init();});

addEvent(window,'load',initPeopleSearch);
addEvent(window,'load',Sshow.init);
addEvent(window,'load',slider.init);
//addEvent(window,'load',mover.init);
addEvent(window,'load',googlemaps);
addEvent(window,'load',flashResize);
addEvent(window,'load',flashResizeObserver);
addEvent(window,'load',enablePrintButton);
addEvent(window, 'load', prepareForms);
addEvent(window, 'load', focusLabels);
