
function NavMenu() {
    
    this._menu = null;
    
    this._subMenu = null;
    
    this.init = function() {
	$('div.menu-hidden').css('top', function(index, value) {
	    var oldValue = parseFloat(0);
	    if (value != "auto") {
		var oldValue = 
		    parseFloat(value.substring(0, value.indexOf("px")));
	    }
	    var offset = parseFloat($('#nav ul li a.menu-label').height());
	    return oldValue + offset;
	});
	$("a.menu-label").mouseenter(function(event) {
	    if (nav._menu != null) {
		//this._subMenu.clearQueue();
		if (nav._menu === this) {
		    return;
		}
		nav._unbind();
	    }
	    nav._menu = this;
	    nav._subMenu = $(nav._menu).next();
	    //$(nav._menu).css('text-decoration', 'underline');
	    nav._subMenu.slideDown("fast");
	    $('body').mousemove(function(event) {
		var subMenuOffset = nav._subMenu.offset();
		var x1 = subMenuOffset.left;
		var y1 = subMenuOffset.top;
		var x2 = x1 + nav._subMenu.width();
		var y2 = y1 + nav._subMenu.height();
		
		if (x1 > event.pageX || x2 < event.pageX 
		    || y1 > event.pageY || y2 < event.pageY) {
		    var x3= x1 + $(nav._menu).width();
		    var y3 = $(nav._menu).offset().top;
		    if (x1 > event.pageX || x3 < event.pageX 
			|| y3 > event.pageY || y1 < event.pageY) {
			nav._unbind();
		    }
		}
	    });
	});
    };
    
    this._unbind = function() {
	$('body').unbind('mousemove');
	//this._subMenu.delay(500).slideUp(10);
	this._subMenu.slideUp(10);
	$(this._menu).css('text-decoration', 'none');
	this._menu = null;
	this._subMenu = null;
    };
};			   

function EcommMenu() {
    
    this.selectedControl = null;
    
    this.selectedContent = null;
	
    this.init = function() {
	this.selectedControl = $('a.ecomm-menu-selector:first').parent();
	var index = this.selectedControl.index();
	this.selectedContent = $($("li.ecomm-content").get(index));
	$('a.ecomm-menu-selector').click(ecomm.selectorClickHandler);
    };
    
    this.selectorClickHandler = function(event) {
	event.preventDefault();
	$("#panel-list > li").addClass("ecomm-content-hidden");
	$("#menu-uno > li").removeClass("active");
	
	ecomm.selectedControl = $(this).parent();
	var index = ecomm.selectedControl.index();
	ecomm.selectedContent = $($("li.ecomm-content").get(index));
	ecomm.selectedControl.addClass("active");
	ecomm.selectedContent.removeClass("ecomm-content-hidden");
	var obj = ecomm.selectedContent
	.children('div.video-wrapper > .ecomm-video');
	if (obj.length == 0) {
	    var container = null;
	    var source = "";
	    var aux = ecomm.selectedContent
		.children('#inventory_management > div.video-wrapper');
	    if (aux.length != 0) {
		source = "add-product-player.swf";
		container = aux;
	    }
	    aux = ecomm.selectedContent
		.children('#shopping_cart > div.video-wrapper');
	    if (aux.length != 0) {
		source = "shopping-cart-player.swf";
		container = aux;
	    }
	    aux = ecomm.selectedContent
		.children('#payment_processing > div.video-wrapper');
	    if (aux.length != 0) {
		source = "payment-processing-player.swf";
		container = aux;
	    }
	    if (source != "") {
		container.html("<object class='ecomm-video'>"
			       + "<embed width='350' height='300' "
			       + "src='" + source + "'></object>");
	    }
	}
    };
};


function WebDesignViewer() {
    
    this._fullBasePath = "../img/full/";

    this._thumbBasePath = "../img/thumb/";

    this._imgExt = ".jpg";
    
    this.init = function() {

	var thumbs = $('a.gallery-thumb');
	if (thumbs.length != 0) {
	    
	    thumbs.click(designViewer.launch);
	    
	    $('#gallery-close').click(designViewer.closeButtonHandler);       
	    
	    $('#mask').click(designViewer.maskCloseHandler);           
	}
    };

    this.launch = function(event) {
	event.preventDefault();  

	var modal = '#img-gallery';
	var maskHeight = $(document).height();  
	var maskWidth = $(window).width(); 
	var winH = $(window).height();  
	var winW = $(window).width();  

	$('#mask').css({'width':maskWidth,'height':maskHeight});
	
	$('#mask').fadeIn(500);      
	$('#mask').fadeTo("slow", 0.8);
	//$('body').css('overflow', 'hidden');
	var scrollTop = $(window).scrollTop();
	$(modal).css('top',  winH/2-$(modal).height()/2 
		     + $(window).scrollTop());  
	$(modal).css('left', winW/2-$(modal).width()/2);      

	$(modal).fadeIn(1000); 
	designViewer.show($(this));
	
    };

    this.show = function(link) {
	var prevItem = link.parent().prev();
	var nextItem = link.parent().next();
	if (prevItem.length == 0) {
	    prevItem = $('a.gallery-thumb:last').parent();
	}
	if (nextItem.length == 0) {
	    nextItem = $('a.gallery-thumb:first').parent();
	}
	designViewer.displayImage(prevItem.children('a'), $('#prev-img a'));
	designViewer.displayImage(link, $('#current-img'), true);
	designViewer.displayImage(nextItem.children('a'), $('#next-img a'));
    }

    this.moveHandler = function(event) {
	event.preventDefault();  
	designViewer.show($(this).data('link'));
    }

    this.displayImage = function(link, imgContainer, isFull) {
	var basePath;
	if (isFull) {
	    basePath = designViewer._fullBasePath
	} else {
	    basePath = designViewer._thumbBasePath;
	    imgContainer.data('link', link);
	    imgContainer.unbind('click');
	    imgContainer.click(designViewer.moveHandler);
	}
	var path = link.attr("href");
	path = basePath + path.replace("#", "") 
	    + designViewer._imgExt;
	imgContainer
	    .html("<img alt='Screenshot' src='" + path + "'/>");

	var title = link.children("span:first");
	$('#img-gallery h3:first').html(title.html());
    };

    this.maskCloseHandler = function () {  
	event.preventDefault();
	$(this).hide();  
	$('.window').hide();  
	//$('body').css('overflow', 'visible');
    };

    this.closeButtonHandler = function (event) {  
	event.preventDefault();  
	$('#mask, .window').hide();  
	//$('body').css('overflow', 'visible');
    };
};


function WebVideoViewer() {
    
    this._fullBasePath = "../video/";

    this._vidExt = ".swf";
    
    this.init = function() {

	var thumbs = $('a.video-link');
	if (thumbs.length != 0) {
	    
	    thumbs.click(videoViewer.launch);
	    
	    $('#modal-close').click(videoViewer.closeButtonHandler);       
	    
	    $('#mask').click(videoViewer.maskCloseHandler);           
	}
    };

    this.launch = function(event) {
	event.preventDefault();  

	var modal = '#modal-container';
	var maskHeight = $(document).height();  
	var maskWidth = $(window).width(); 
	var winH = $(window).height();  
	var winW = $(window).width();  

	$('#mask').css({'width':maskWidth,'height':maskHeight});
	
	$('#mask').fadeIn(500);      
	$('#mask').fadeTo("slow", 0.8);
	var scrollTop = $(window).scrollTop();
	$(modal).css('top', winH/2-$(modal).height()/2 
		     + $(window).scrollTop());  
	$(modal).css('left', winW/2-$(modal).width()/2);      

	$(modal).fadeIn(1000); 
	videoViewer.show($(this));
	
    };

    this.show = function(link) {
	var container = $('#modal-video');
	container.html("<object class='ecomm-video-modal'><param name='wmode' value='transparent'/>"
		       + "<embed width='350' height='300' "
		       + "src='shopping-cart-player.swf' wmode='transparent'></object>");
    }

    this.maskCloseHandler = function () {  
	event.preventDefault();
	$(this).hide();  
	$('.window').hide();  
    };

    this.closeButtonHandler = function (event) {  
	event.preventDefault();  
	$('#mask, .window').hide();  
    };
};


var nav = new NavMenu();
var ecomm = new EcommMenu();
var designViewer = new WebDesignViewer();
var videoViewer = new WebVideoViewer();

$(document).ready(function() {
    $('div.menu-hidden').hide();
    nav.init();
    ecomm.init(); 
    designViewer.init();
    videoViewer.init();		
});
