
YAHOO.namespace('YAHOO.ext.Tejas.InterviewMenu');

YAHOO.ext.Tejas.InterviewMenu = function () {

    var $ = YAHOO.util.Dom.get,
        D = YAHOO.util.Dom,
        E = YAHOO.util.Event,
        h_menu = [],
        h_anim = [],
        h_reverseAnim = [],
        p_width  = 375,
        p_height = 306,
        sectionTitle = [],
        animDuration = 0.25,
        currentMenu = -1;
	
	var hideMenuBarLayers = function () {
		for (var i = 0; i < 4; i++) {
			D.setStyle('interview-menu-' + i, 'display', 'none');
		}
	};
	
	var showMenuBarLayers = function () {
		for (var i = 0; i < 4; i++) {
			D.setStyle('interview-menu-' + i, 'display', '');
		}
	};
	
	var showCurrentMenu = function (i) {
	    $('interview-menu-items').innerHTML = $('section-' + i).innerHTML;
	    $('close-interview-menu-link').innerHTML = 'Back to Interview Menu';
	};
	
	var hideCurrentMenu = function (i) {
	    $('interview-menu-items').innerHTML = '';
	    $('close-interview-menu-link').innerHTML = '';	  
	};
	
	var initAnimObjects = function () {

		var rootPos = YAHOO.util.Dom.getRegion('interview-menu');

        h_anim[0] = new YAHOO.util.Anim('interview-menu-0', {
                        bottom : { to : rootPos.bottom },
						right  : { to : rootPos.right  },
						height : { by : p_height / 2   },
						width  : { by : p_width / 2    }
					}, animDuration, YAHOO.util.Easing.easeOut);

        h_anim[1] = new YAHOO.util.Anim('interview-menu-1', {
                        bottom : { to : rootPos.bottom },
						left   : { to : rootPos.left   },
						height : { by : p_height / 2   },
						width  : { by : p_width / 2    }
					}, animDuration, YAHOO.util.Easing.easeOut);

        h_anim[2] = new YAHOO.util.Anim('interview-menu-2', {
                        top    : { to : rootPos.top    },
						right  : { to : rootPos.right  },
						height : { by : p_height / 2   },
						width  : { by : p_width / 2    }
					}, animDuration, YAHOO.util.Easing.easeOut);

        h_anim[3] = new YAHOO.util.Anim('interview-menu-3', {
                        top    : { to : rootPos.top    },
						left   : { to : rootPos.left   },
						height : { by : p_height / 2   },
						width  : { by : p_width / 2    }
					}, animDuration, YAHOO.util.Easing.easeOut);

		for (var i = 0; i < 4; i++) {
			h_anim[i].onComplete.subscribe(function (e, animDetails, i) {
				hideMenuBarLayers();
				showCurrentMenu(i);
			}, i);
		}

		h_reverseAnim[0] = new YAHOO.util.Anim('interview-menu-0', {
						       bottom : { to : rootPos.top + p_height / 2 },
							   right  : { to : rootPos.left + p_width / 2 },
							   width  : { by : -p_width / 2  },
							   height : { by : -p_height / 2 }
						   }, animDuration, YAHOO.util.Easing.easeOut);

		h_reverseAnim[1] = new YAHOO.util.Anim('interview-menu-1', {
						       bottom : { to : rootPos.top + p_height / 2 },
							   left   : { to : rootPos.left + p_width / 2 },
							   width  : { by : -p_width / 2  },
							   height : { by : -p_height / 2 }
						   }, animDuration, YAHOO.util.Easing.easeOut);

		h_reverseAnim[2] = new YAHOO.util.Anim('interview-menu-2', {
						       top    : { to : rootPos.top + p_height / 2 },
							   right  : { to : rootPos.left + p_width / 2 },
							   width  : { by : -p_width / 2  },
							   height : { by : -p_height / 2 }
						   }, animDuration, YAHOO.util.Easing.easeOut);

		h_reverseAnim[3] = new YAHOO.util.Anim('interview-menu-3', {
						       top    : { to : rootPos.top + p_height / 2 },
							   left   : { to : rootPos.left + p_width / 2 },
							   width  : { by : -p_width / 2  },
							   height : { by : -p_height / 2 }
						   }, animDuration, YAHOO.util.Easing.easeOut);

		for (var i = 0; i < 4; i++) {
			h_reverseAnim[i].onComplete.subscribe(function (e, animDetails, i) {
			    for (var j = 0; j < 4; j++) {
				    // D.setStyle(h_menu[j], 'z-index', 3);
			    }
			}, i);
		}
    };

	var initMenus = function () {

		var rootPos = YAHOO.util.Dom.getRegion('interview-menu');

        for (var i = 0; i < 4; i++) {
            h_menu[i] = document.createElement('div');
			h_menu[i].id = 'interview-menu-' + i;
			h_menu[i] = document.body.insertBefore(h_menu[i], document.body.firstChild);
			D.setStyle(h_menu[i], 'width', (p_width / 2) + 'px');
			D.setStyle(h_menu[i], 'height', (p_height / 2) + 'px');
			D.setStyle(h_menu[i], 'position', 'absolute');
			D.setStyle(h_menu[i], 'top', (rootPos.top + ((i >= 2) ? 1 : 0) * p_height / 2) + 'px');
			D.setStyle(h_menu[i], 'left', (rootPos.left + ((i % 2) * p_width / 2) + 'px'));
			h_menu[i].innerHTML = '<table><tr><td><a href="#" id="menu-link-' + i + '">' + sectionTitle[i] + '</a></td></tr></table>';
        }
    };
    
    var initMenuClicks = function () {
		for (var i = 0; i < 4; i++) {
			E.addListener('interview-menu-' + i, 'click', function (e, i) {
				for (var j = 0; j < 4; j++) {
				    D.setStyle(h_menu[j], 'z-index', 3);
				}
				D.setStyle(h_menu[i], 'z-index', 4);
				h_anim[i].animate();
				currentMenu = i;
			}, i);

			E.addListener('interview-menu-' + i, 'mouseover', function (e, i) {
				D.setStyle(h_menu[i], 'opacity', '0.75');
				D.setStyle('menu-link-' + i, 'color', '#ff0');
			}, i);

			E.addListener('interview-menu-' + i, 'mouseout', function (e, i) {
				D.setStyle(h_menu[i], 'opacity', '0.80');
				D.setStyle('menu-link-' + i, 'color', '#def');
			}, i);
		}
		
		E.addListener('close-interview-menu-link', 'click', function (e) {
			hideCurrentMenu();
			showMenuBarLayers();
			h_reverseAnim[currentMenu].animate();
			return false;
		});
		
	};
	
	this.addSection = function (title) {
		sectionTitle[sectionTitle.length] = title;
	};
	
    var init = function () {
    	
    	try {
    		initMenus();
    		initAnimObjects();
    		initMenuClicks();
		if (window.printing) {
			document.getElementById('interview-menu-0').style.display = 'none';
			document.getElementById('interview-menu-1').style.display = 'none';
			document.getElementById('interview-menu-2').style.display = 'none';
			document.getElementById('interview-menu-3').style.display = 'none';
			document.getElementById('interview-menu').style.display = 'none';
		}
    	} catch (e) {
    		alert(e.message);
    	}
    };
    
    E.onDOMReady(init);
    
    return this;

}();

