// JavaScript Document

He.Bootstrap('He.Application');
He.Bootstrap('He.Components');

He.Application.Config = {
	TimeOut			: 500,
	Fade			: 500,
	Speed			: 200,
	Delay			: 200,
	Duration		: 1000,
	CloseTimer		: null,
	OnAir			: false,
	Current			: null,
	PixelDotGif		: '/static/images/artpack/pixel.gif',
	BadBrowser		: (/MSIE ((5\.5)|6)/.test(navigator.userAgent) && navigator.platform == "Win32")
}
// /dior/HTML/release/static/images/artpack/pixel.gif


if(jQuery.browser.msie && jQuery.browser.version < 7)
{
	He.Application.Config.Fade = 0;
}

He.Application.User = {
	Cart: null,
	Address: null,
	Newsletter: null,
	ProductAdvice: null,
	Newsletter: null
}

	/* --------------------------
		Navigation
	-------------------------- */

He.Bootstrap('He.Application.MainMenu');

He.Application.MainMenu.Close = function()
{
	$('div.sub_menu_content').fadeOut(He.Application.Config.Fade);
	He.Application.Config.OnAir = false;
	$('#main_menu_item li.showSubMenu').removeClass('active inactive');
}

He.Application.MainMenu.Timer = function(selected_item_id)
{
	if(selected_item_id == He.Application.Config.Current)
	{
		He.Application.Config.CloseTimer = window.setTimeout(He.Application.MainMenu.Close, He.Application.Config.TimeOut);
	}
}

He.Application.MainMenu.CancelTimer = function()
{
	window.clearTimeout(He.Application.Config.CloseTimer);
	He.Application.Config.closetimer = null;
}

He.Application.MainMenu.Init = function()
{
	var sub_nav = $('#main_menu_item li.showSubMenu');
	
	if(sub_nav.length > 0)
	{
		sub_nav.each(function () 
		{
			var $clicked = $(this);
			var selected_item_id = '#sub'+$clicked.attr('id');
			
			$clicked.bind('hover', { speed:He.Application.Config.Speed, delay:He.Application.Config.Delay }, function()
			{
				He.Application.MainMenu.CancelTimer();

				$('div.sub_menu_content').css({'display': 'none'});
				
				//we reset the other buttons to default style
				$('#main_menu_item li').removeClass('active').addClass('inactive');
				
				$clicked.addClass('active');
				
				$(selected_item_id).fadeIn(He.Application.Config.Fade);
				He.Application.Config.Current = selected_item_id;
				He.Application.Config.OnAir = true;
			});
			

			$(this).bind('mouseleave', function()
			{
				He.Application.MainMenu.Timer(selected_item_id);
			});
			
			$(selected_item_id).bind('mouseenter', function()
			{
				He.Application.MainMenu.CancelTimer();
			});
			
			$(selected_item_id).bind('mouseleave', function()
			{
				He.Application.MainMenu.Timer(selected_item_id);
			});
		});
	}
}


	/* --------------------------
		Cross Sites Navigation
	-------------------------- */

He.Bootstrap('He.Application.CrossSitesNav');

He.Application.CrossSitesNav.Init = function()
{
	/**/
	if($('#footer').length == 1)
	{		
		$('.site_list_btn').click(function(e) 
		{
			e.preventDefault();
			$('.sites_list').toggle();
		});
	
		$(document).bind('click', function(e)
		{
			var $clicked = $(e.target);
			if (! $clicked.parents().hasClass('link_dior_sites'))
			{
				$('.sites_list').hide();
			}
		});
	}
	/**/
}

	/* --------------------------
		Faux dropdown nav
	-------------------------- */

He.Application.FauxDropDown = function(str)
{
	var decent_browser = true;
	
	if(jQuery.browser.msie && jQuery.browser.version < 7)
	{
		decent_browser = false;
	}

	if(decent_browser)
	{
		//$('#choosing_makeup_img').show();
		
		$('.FauxDropDown').each(function()
		{
			var obj = $(this);
			obj.wrap('<div class="FauxDropDown_container"></div>')
			obj.before('<div class="FauxDropDown_title">'+str+'</div>');
			obj.addClass('enhanced');
		});
		
		$('.FauxDropDown_container').each(function()
		{
			var obj = $(this);
			var box = obj.find('ul');
			
			obj.bind('mouseenter', function()
			{
				obj.addClass('enhanced');
				box.css('visibility', 'visible');
			});
			
			obj.bind('mouseleave', function()
			{
				obj.removeClass('enhanced');
				box.css('visibility', 'hidden');
			});
		});
	}
}

He.Application.FauxColumn = function()
{

	if(jQuery.browser.msie)
	{
		var row	= $('div.fauxtable_row');
		
		if(row.size() > 0)
		{
			row.each(function()
			{
				var cells = $(this).find('div.fauxtable_cell');
				
				var tallest = 0;
				cells.each(function()
				{
					var thisHeight = $(this).height();
					if(thisHeight > tallest)
					{
						tallest = thisHeight;
					}
				});
				cells.height(tallest);
			});
		}
	}
}


	/* --------------------------
		Tooltip
	-------------------------- */

He.Application.Tooltip = function()
{
	$('#sub_menu_wrapper *').tooltip({ 
		track: true, 
		delay: 0, 
		showURL: false, 
		showBody: " -- ", 
		fade: 200 
	});
	
	$('.truncate').tooltip({ 
		track: true, 
		delay: 0, 
		showURL: false, 
		fade: 200,
		extraClass: 'truncate' 
	});
}

	/* --------------------------
		Tooltip
	-------------------------- */

He.Application.Truncate = function()
{

}


	/* -------------------------------
		Search Field Default Value
	------------------------------- */

He.Application.FieldWithDefaultValue = function()
{
	$('.std_default_value').each(function()
	{
		var default_value = this.value;
		$(this).focus(function()
		{
			if(this.value == default_value)
			{
				this.value = '';
			}
		});
		
		$(this).blur(function()
		{
			if(this.value == '')
			{
				this.value = default_value;
			}
		});
	});
	
}


	/* -------------------------------
		Form Validation
	------------------------------- */

He.Application.FormValide = function(form)
{
	var err = [];
	
	form.find('label.required').each(function(i)
	{
		//console.log('htmlFor: '+$('#'+this.htmlFor).val());
		var element = $('#'+this.htmlFor);
		var ret = null;
		
		if(element.is('input:checkbox') || element.is('input:radio'))
		{
			ret = He.Application.FormValideChecked(element);
		}
		else if(element.is(':input'))
		{
			ret = He.Application.FormValideInput(element);
		}
		
		if(!ret)
		{
			$(this).addClass('alert');
			err[err.length] = this.htmlFor;
		}
		else
		{
			$(this).removeClass('alert');
		}
	});
	/*
	if (err.length > 0)
	{
		console.log("Please fill in the following fields:\n-" + err.join("\n-"));
	}
	*/
	return (err.length <= 0);
}

He.Application.FormValideInput = function(element)
{
	if(!element.val())
	{
		return false;	
	}
	return true;
}

He.Application.FormValideChecked = function(element)
{
	var name = element.attr('name');
	var type = element.attr('type');
	var selector = ':'+type+"[@name='"+name+"']:checked";

	if($(selector).size() == 0)
	{
		return false;	
	}
	
	return true;
}

He.Application.CheckFormValidation = function()
{
	$('form.form_validation').submit(function(e)
	{		
		var obj = $(this);
		
		if(!He.Application.FormValide(obj))
		{
			e.preventDefault();
		}
	});
}

	/* --------------------------
		Flash version
	-------------------------- */

He.Application.PopupNoFlash = function()
{
	$('#plugin_flash').jqm({
		modal: true
	});		
	$('#plugin_flash').jqmShow();
}

	/* --------------------------
		User Logout
	-------------------------- */

He.Application.UserLogout = function()
{
	$('#user_logout').css('display', 'none');
	
	$('#user_account').bind('mouseenter', function()
	{
		$('#user_welcome').css('display', 'none');
		$('#user_logout').css('display', 'block');
	});
	
	$('#user_account').bind('mouseleave', function()
	{
		$('#user_logout').css('display', 'none');
		$('#user_welcome').css('display', 'block');
	});
}

	/* --------------------------
		Popup Newsletter
	-------------------------- */

He.Application.PopUpNewsletter = function()
{
	
	/* Popup Trigger */
	$('#newsletter_popup').jqm();
	$('#newsletter_popup').jqmAddTrigger('.newsletter_popup_trigger'); 

}

	/* --------------------------
		Popup Legalese
	-------------------------- */

He.Application.LegaleseTabs = function()
{
	
	/* Popup Trigger */
	$('#legalese_popup').jqm({
		onShow: He.Components.LegaleseTabs.PopUp()
	});
	$('#legalese_popup').jqmAddTrigger('.legalese_popup_trigger'); 
	
}

	/* --------------------------
		Mini-moteur de template
		par Jay Salvat - http://blog.jaysalvat.com/ 
		
		
		>>>>> OBSOLETE
		
	-------------------------- */
	
String.prototype.template = function(values) { 
    // r�cup�ration de la chaine 
    var string = this.toString(); 
    // remplacement des tags {tag} 
    for (tag in values)
	{
        regexp = new RegExp('{#'+ tag +'#}', 'g'); 
        string = string.replace(regexp, values[tag]); 
    } 
    return string; 
} 

// Simple JavaScript Templating
// John Resig - http://ejohn.org/ - MIT Licensed
// modified by Rick Strahl and Michael Lefebvre
var _tmplCache = {}

String.prototype.parseTemplate = function(data) 
{
	var str = this.toString(); 
    var err = "";
    try 
	{
        var func = _tmplCache[str];
        if (!func) 
		{
            var strFunc =
            "var p=[],print=function(){p.push.apply(p,arguments);};" +
                        "with(obj){p.push('" +
			str
			.replace(/[\r\t\n]/g, " ")
			.split("%{").join("\t")
			.replace(/((^|}%)[^\t]*)'/g, "$1\r")
			.replace(/\t=(.*?)}%/g, "',$1,'")
			.split("\t").join("');")
			.split("}%").join("p.push('")
			.split("\r").join("\\'") + "');}return p.join('');";

            //alert(strFunc);
            func = new Function("obj", strFunc);
            _tmplCache[str] = func;
        }
        return func(data);
    } catch (e) { err = e.message; }
    return "< # ERROR: " + err + " # >";
}

He.Application.FixPng = function(png)
{
	// get src
	var src = png.src;
	// set width and height
	if(!png.style.width)
	{
		png.style.width = $(png).width();
	}
	
	if(!png.style.height)
	{
		png.style.height = $(png).height();
	}
	
	// replace by blank image
	png.onload = function() { };
	png.src = He.Application.Config.PixelDotGif; 
	// set filter (display original image)
	png.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "',sizingMethod='scale')";
 }


	/* --------------------------
		Init
	-------------------------- */
	
$(function()
{
	// this initialises scollpanes on the page.
	$('div.scroll_pane').jScrollPane({scrollbarWidth:8});
	
	// fix IE6's issues with png 24.
	//$(document).pngFix();
	//$('img.png').ifixpng(); 
	//$('body').supersleight();
	
	if(He.Application.Config.BadBrowser)
	{
		$('h1.product_logo span').ifixpng();
		
		// get all pngs on page
		$('img.png').each(function()
		{
			if (!this.complete)
			{
				this.onload = function() { He.Application.FixPng(this) };
			}
			else
			{
				He.Application.FixPng(this);
			}
		});
	}

	
	// Tooltip
	He.Application.Tooltip();
	
	// Search Field Default Value
	He.Application.FieldWithDefaultValue();
	
	// Main Navigation 
	He.Application.MainMenu.Init();
	
	// User Logout
	He.Application.UserLogout();
	
	// Cross Sites Nav
	He.Application.CrossSitesNav.Init();
	
	He.Application.PopUpNewsletter();
	
	He.Application.LegaleseTabs();
	
	He.Application.CheckFormValidation();
	
	
});
