YAHOO.namespace('gp.start');

YAHOO.gp.start.Branch = (function (aBranchElement) {
	var branchElement = aBranchElement;

	var defaultPosBottom = parseInt(YAHOO.util.Dom.getStyle(branchElement, 'bottom'));
	var currentAnimation = null;

	attachEvents();

	function attachEvents() {
		YAHOO.util.Event.addListener(document.body, 'mouseover', handleRollover);
		YAHOO.util.Event.addListener(document.body, 'click', handleClick);
	}

	function cancelCurrentAnimation() {
		if(currentAnimation != null) {
			currentAnimation.stop();
		}
	}

	function gotoLink() {
		var linkElement = branchElement.getElementsByTagName('a')[0];
		if(linkElement != null) location.href = linkElement.href;
	}

	function handleClick(e) {
    	var eTarget = YAHOO.util.Event.getTarget(e);

    	var ancestor = YAHOO.util.Dom.getAncestorBy(eTarget, function(el) {
    		return el.id && el.id == branchElement.id;
    	});

		if(eTarget.id == branchElement.id || ancestor != null) {
			gotoLink();
		}
	}

	function handleRollover(e) {
    	var eTarget = YAHOO.util.Event.getTarget(e);

    	var ancestor = YAHOO.util.Dom.getAncestorBy(eTarget, function(el) {
    		return el.id && el.id == branchElement.id;
    	});

		if(eTarget.id == branchElement.id || ancestor != null) {
			handleMouseOver();
		}
		else {
			handleMouseOut();
		}
	}

	function handleMouseOver() {
		cancelCurrentAnimation();

		var anim = new YAHOO.util.Anim(branchElement, { bottom: { to: 0 } }, 0.25, YAHOO.util.Easing.easeOut);
		anim.animate();

		currentAnimation = anim;
	}

	function handleMouseOut() {
		cancelCurrentAnimation();

		var anim = new YAHOO.util.Anim(branchElement, { bottom: { to: defaultPosBottom } }, 0.25, YAHOO.util.Easing.easeOut);
		anim.animate();

		currentAnimation = anim;
	}

	return {
	};
});

YAHOO.gp.start.BranchesContainer = (function(aContainerElement) {
	var containerElement = aContainerElement;
	var branches = [];

	function draw() {
		var branchElements = YAHOO.util.Dom.getElementsByClassName('startpage-splash-branch', 'div', containerElement);

		for(var i = 0; i < branchElements.length; i++) {
			var branchElement = branchElements[i];

			var branch = new YAHOO.gp.start.Branch(branchElement);
			branches.push(branch);
		}
	}

	return {
		draw: draw
	};
});


YAHOO.gp.start.Controller = (function() {
	var callback =
	{
		success: function(o) {
			drawSplashContent(o.responseText);
		},
		failure: function(o) {
		}
	};

	YAHOO.util.Connect.asyncRequest('GET', 'index.php?id=3&L=' + YAHOO.gp.start.Config['languageUid'] + '&type=101', callback);

	var containerElement = document.getElementById('flashContainer-movie');
	var branchesContainer = new YAHOO.gp.start.BranchesContainer(containerElement);

	function drawSplashContent(htmlContent) {
		containerElement.innerHTML = htmlContent;
		branchesContainer.draw();
	}

	return {
	};
});