/**
 * Portrait JS
 * Anzeigen und wechseln der Anwaltsbilder und Profile auf der Übersichtsseite
 */

var speed = 25;
var lastNummer;
var faderRunning = false;
function showOverlay(nummer, e) {
	var prefix = nummer < 10 ? 'anwaltSelectorImg0' : 'anwaltSelectorImg';
	var img = document.getElementById(prefix + nummer);
	setOverlayVisible(nummer);
//	setOpacity(img, 0.3);

	// show Infos
	showInfos(nummer);
}

/**
 * Prüfen, ob die Maus wirklich runter ist
 * @param nummer
 * @param e
 */
function hideOverlay(nummer, e) {
	if (!e) var e = window.event;
	var tg = (window.event) ? e.srcElement : e.target;
	var reltg = (e.relatedTarget) ? e.relatedTarget : e.toElement;
	if (!reltg) {
		while (reltg.className != 'portrait'+nummer && reltg.nodeName != 'BODY')
			reltg= reltg.parentNode;
		if (reltg.className == 'portrait'+nummer)return;
			privateHideOverlay(nummer);
	}else{
		privateHideOverlay(nummer);
	}
}

/**
 * die "alte" hideOverlay die erst nach der Prüfung aufgerufen wird
 * @param nummer
 */
function privateHideOverlay(nummer) {
	var prefix = nummer < 10 ? 'anwaltSelectorImg0' : 'anwaltSelectorImg';
	var img = document.getElementById(prefix + nummer);
	setOverlayHidden(nummer);
//	setOpacity(img, 1);
	if (typeof restoreTimer != 'undefined')
		clearTimeout(restoreTimer);
	restoreTimer = setTimeout(function () {restoreAnwaltInfos()}, 200);
}

/**
 * Versteckt das Bild hinter dem "Gitter"
 * @param nummer
 */
function setOverlayVisible(nummer){
	if (nummer < 10)
		nummer = '0' + nummer;
	document.getElementById("anwaltSelectorOvl"+nummer).style.display="";
	document.getElementById("anwaltSelectorOvl" + nummer).style.top= document.getElementById("anwaltSelectorImg" + nummer).offsetTop + 'px'; 
	document.getElementById("anwaltSelectorOvl" + nummer).style.left = document.getElementById("anwaltSelectorImg" + nummer).offsetLeft + 'px'; 
}

/**
 * macht das Bild wieder voll "sichtbar"
 * @param nummer
 */
function setOverlayHidden(nummer){
	if (nummer < 10)
		nummer = '0' + nummer;
	document.getElementById("anwaltSelectorOvl"+nummer).style.display="none";
}

function showInfos(nummer) {
	if (typeof restoreTimer != 'undefined') {
		clearTimeout(restoreTimer);
		delete restoreTimer;
	}
	var prefix = nummer < 10 ? 'anwaltPortrait0' : 'anwaltPortrait';
	var anwaltPortrait = eval(prefix + nummer); 

	// show anwalt infos
	var handled = false;
	if (!faderRunning && typeof timer == 'undefined') {
		if (lastNummer != anwaltPortrait.nr && lastNummer != nummer) {
			showAnwaltInfos(nummer);
		}
		lastNummer = nummer;
		handled = true;
	}
	
	if (!handled) {
		if (typeof toDoTimer != 'undefined') {
			clearTimeout(toDoTimer);
			delete toDoTimer;
		}
		toDoTimer = setTimeout(function () {showInfos(nummer)}, 100);
		nummerToDo = nummer;
	}
}
function showAnwaltInfos(nummer) {
	var prefix = nummer < 10 ? 'anwaltPortrait0' : 'anwaltPortrait';
	var anwaltPortrait = eval(prefix + nummer); 

	// save old infos
	if (typeof oldAnwaltPortrait == 'undefined') {
		oldAnwaltPortrait = new Object();
		//oldAnwaltPortrait.nr = document.getElementById("anwaltProfilNummer").innerHTML;
		oldAnwaltPortrait.vorname = document.getElementById("anwaltVorname").innerHTML;
		oldAnwaltPortrait.nachname = document.getElementById("anwaltNachname").innerHTML;
		oldAnwaltPortrait.bereich = document.getElementById("anwaltBereich").innerHTML;
		oldAnwaltPortrait.standort = document.getElementById("anwaltStandort").innerHTML;
		oldAnwaltPortrait.teaser = document.getElementById("anwaltTeaser").innerHTML;
		var imageSrc = document.getElementById("anwaltPortrait").src;
		var index = imageSrc.indexOf("id=");
		oldAnwaltPortrait.portrait = imageSrc.substr(index + 3);
	}

	// set data
	//document.getElementById("anwaltProfilNummer").innerHTML = anwaltPortrait.nr;
	document.getElementById("anwaltVorname").innerHTML = anwaltPortrait.vorname;
	document.getElementById("anwaltNachname").innerHTML = anwaltPortrait.nachname;
	document.getElementById("anwaltBereich").innerHTML = anwaltPortrait.bereich;
	document.getElementById("anwaltStandort").innerHTML = anwaltPortrait.standort;
	document.getElementById("anwaltTeaser").innerHTML = anwaltPortrait.teaser;

	// fade portrait
	var portrait = document.getElementById("anwaltPortrait");
	fadeImage(portrait, 2, 1, speed);

	changeImage(portrait, 'resource.servlet?type=3&id=' + anwaltPortrait.portrait);
}
function restoreAnwaltInfos() {
	if (!faderRunning) {
		// set data
		if (typeof oldAnwaltPortrait != 'undefined') {
			if (lastNummer != oldAnwaltPortrait.nr) {
				//document.getElementById("anwaltProfilNummer").innerHTML = oldAnwaltPortrait.nr;
				document.getElementById("anwaltVorname").innerHTML = oldAnwaltPortrait.vorname;
				document.getElementById("anwaltNachname").innerHTML = oldAnwaltPortrait.nachname;
				document.getElementById("anwaltBereich").innerHTML = oldAnwaltPortrait.bereich;
				document.getElementById("anwaltStandort").innerHTML = oldAnwaltPortrait.standort;
				document.getElementById("anwaltTeaser").innerHTML = oldAnwaltPortrait.teaser;
				lastNummer = oldAnwaltPortrait.nr;
		
				// fade portrait
				var portrait = document.getElementById("anwaltPortrait");
				fadeImage(portrait, 2, 1, speed);
		
				changeImage(portrait, 'resource.servlet?type=3&id=' + oldAnwaltPortrait.portrait);
			}
			delete restoreTimer;
		}
	} else {
		restoreTimer = setTimeout(function () {restoreAnwaltInfos()}, 100);
	}
}
function changeImage(object, src) {
	if (typeof timer == 'undefined') {
		if (typeof delayedTimer != 'undefined')
			delete delayedTimer;
		object.src = src;
		var portrait = document.getElementById("anwaltPortrait");
		fadeImage(portrait, 1, 0, speed);
	} else {
		if (typeof delayedTimer != 'undefined')
			clearTimeout(delayedTimer);
		delayedTimer = setTimeout(function() {changeImage(object, src)});
	}
}
function fadeImage(object, mode, opacity, speed) {
	var limit;
	if (mode == 1) {
		if (opacity < 1)
	    	opacity += 0.2;
		if (opacity > 1)
			opacity = 1;
		limit = 1;
	} else if (mode == 2) {
		if (opacity > 0)
	    	opacity -= 0.2;
		if (opacity < 0)
			opacity = 0;
		limit = 0;
	}		    
	if (mode == 1 && opacity < limit || mode == 2 && opacity > limit) {
		faderRunning = true;
		timer = setTimeout(function() {fade(object, mode, opacity, speed)}, speed);
    } else {
		setOpacity(object, limit);				
		delete timer;
		faderRunning = false;
    }
}
function fade(object, mode, opacity, speed) {
	setOpacity(object, opacity);
    fadeImage(object, mode, opacity, speed);
}
function setOpacity(set_obj, opacity) {
	opacity = (opacity == 1) ? 100 : opacity * 100; // IE/Win
	set_obj.style.filter = 'alpha(opacity:' + opacity + ')'; // Safari<1.2,
	set_obj.style.KHTMLOpacity = opacity/100; // Older Mozilla and Firefox
	set_obj.style.MozOpacity = opacity/100; // Safari 1.2, Mozilla, CSS3
	set_obj.style.opacity = opacity/100;
}

function createAnwaltSelector(anwaelteSelector, portrait, offset) {
	// create link
	var ancor = document.createElement('a');
	ancor.href = portrait.profil;
	ancor.setAttribute('onmouseover', 'javascript: showOverlay(' + portrait.nr + ', event)');
	ancor.setAttribute('onmouseout', 'javascript: hideOverlay(' + portrait.nr + ', event)');
	anwaelteSelector.appendChild(ancor);

	// create overlay image
	var overlayImage = document.createElement('img');
	overlayImage.id = 'anwaltSelectorOvl' + portrait.nr;
	overlayImage.src = '/legalimage/resources/portrait/overlay.gif';
	overlayImage.setAttribute('style', 'position:absolute; display:none;');
	overlayImage.style.display="none";
	overlayImage.style.position="absolute";
	ancor.appendChild(overlayImage);
	
	// create image
	var image = document.createElement('img');
	image.src = 'resource.servlet?type=3&id=' + portrait.portraitSelector;
	image.id = 'anwaltSelectorImg' + portrait.nr;
	ancor.appendChild(image);
	
	// break
	var doBreak = document.all ? true : false;
	if (doBreak && offset % 8 == 3) {
		var breakElement = document.createElement('br');
		ancor.appendChild(breakElement);
	}
}

function scroll(scrollAmount) {
	// clear all
	var items = anwaelteSelector.getElementsByTagName('a');
	var num = items.length;
	for (var i = num; i > 0; i--) {
		anwaelteSelector.removeChild(items[i - 1]);
	}
	
	// calculate offset
	document.getElementById('anwaelteSelectorBack').className = 'anwaelteSelectorEnabled';
	document.getElementById('anwaelteSelectorForward').className = 'anwaelteSelectorEnabled';
	if (scrollAmount <= 0) {
		if (offset + scrollAmount <= 0) {
			offset = 0;
			document.getElementById('anwaelteSelectorBack').className = 'anwaelteSelectorDisabled';
		} else {
			offset += scrollAmount;
		}				
	} else {
		if (offset + scrollAmount < randomNumbers.length)
			offset += scrollAmount;
		if (offset + scrollAmount >= randomNumbers.length)
			document.getElementById('anwaelteSelectorForward').className = 'anwaelteSelectorDisabled';
	}

	// loop
	for (i = offset; i < (offset + 8); i++) {
		var random = randomNumbers[i];
		if (typeof random != 'undefined') {
			if (random < 10)
				random = '0' + random;
			var portrait = eval('anwaltPortrait' + random);
			createAnwaltSelector(anwaelteSelector, portrait, i);
		}
	}
	
	// scrollPage
	scrollPage = Math.floor(offset / 8) + 1;
	
	// newsletter
	if (typeof newsletterLink != 'undefined')
		newsletterLink(0);
}


