﻿
var timer = null;
var item_o = null;
var item_out = null;
var fitem_o = null;
var fitem_out = null;
var resized = false;

var images = ['MG_6371','MG_6229','MG_6758','MG_6804','MG_6777','MG_9929','MG_0008','MG_0098','MG_9902','MG_7067','MG_6898','MG_7115ab','MG_9971','MG_6487','MG_6554a','MG_6922','MG_6304','MG_6412','MG_6253','MG_6511','MG_6961','MG_6854','MG_6984','MG_2733','MG_2847','MG_2043','MG_2605','MG_2088', 'MG_2193', 'MG_2301', 'MG_2514', 'MG_2399','MG_2334','MG_6111', 'MG_6254','MG_5901'];
var images_loaded = new Array();
var main_imageWidth = 1181;
var main_imageHeight = 787;
var main_imageCount = images.length;

var thumbs_offsetLeft = 0;
var thumbs_width = 0;

var thumbs_loaded = new Array();
var thumbs_scroll = null;
var thumb_width = 151;
var thumb_height = 101;
var thumb_count = 0;

var curr_indx = 0;

var infoOverlay = null;
var _infoOverlayOpen = false;

function PageLoaded()
{        
    // Reset .net form action
    //document.forms[0].action = window.location.href;
    
    // Window resize
    jQuery(window).bind('resize', WindowResized);
	jQuery(document).keyup(function(e){
									if(!_infoOverlayOpen){
			if (e.keyCode==37) { jQuery('#image-control .main-left').trigger('click'); }
			if (e.keyCode==39) { jQuery('#image-control .main-right').trigger('click'); }
									}
		})
		
	
	infoOverlay = jQuery('#info-overlay');
	infoOverlay.css({ opacity: 0, top: "-900px" }).hide()
		.find(".close").click(HideInfoOverlay);

	jQuery('#site-top .collection').click(function(){
		HideInfoOverlay();
		jQuery(this).addClass("active").siblings().removeClass("active");
        // open images
        jQuery('#image-control .thumbs:not(.open) span').trigger('click');
        // scroll page to bottom
        jQuery('html').animate({ scrollTop: jQuery('#site-wrapper').height() }, 1000);
        return false;
    });
    
    jQuery('#site-top .autobiography').click(function(){
		jQuery(this).addClass("active").siblings().removeClass("active");
        ShowInfoOverlay('#autobiography');
        return false;
    });
	jQuery('#site-top .stockists').click(function(){
		jQuery(this).addClass("active").siblings().removeClass("active");
        ShowInfoOverlay('#stockists');
        return false;
    });
	jQuery('#site-top .contact').click(function(){
        jQuery(this).addClass("active").siblings().removeClass("active");
		ShowInfoOverlay('#contact');
		_infoOverlayOpen=true;
        return false;
    });
	jQuery('#site-bottom .privacy').click(function(){
        jQuery(this).addClass("active").siblings().removeClass("active");
		ShowInfoOverlay('#privacy');
        return false;
    });
		jQuery('#site-top .video').click(function(){
        //jQuery(this).addClass("active").siblings().removeClass("active");
		ShowInfoOverlay('#video');
        return false;
    });
	        
    for (var i = 0; i < images.length; i++)
    {        
		// Thumb images
		thumbs_loaded[i] = new Image();
        thumbs_loaded[i].onload = function(){
            thumbImage = jQuery('#image-control .thumbs .scroll-wrap .scroll img:eq('+this.rel+')');
            thumbImage
                .attr("src", this.src)
                .removeClass("loading")
                .bind('click', { indx: this.rel }, function(e){
                    GotoImage(e.data.indx);
                })
                .hover(function(){ jQuery(this).css("opacity", "0.8") }, function(){ jQuery(this).css("opacity", "1") });
				
            if (this.rel == 0)
            {
                thumbImage.addClass("active");
            }
        };
		thumbs_loaded[i].rel = i;
        thumbs_loaded[i].src = '/images/thumbs/' + images[i] + '.jpg';
        
        
		// Main images
        images_loaded[i] = new Image();
        images_loaded[i].onload = function(){
            jQuery('#bg-image .scroller img:eq('+this.rel+')').attr("src", this.src).removeClass("loading");
            jQuery(window).trigger('resize');
        };
		images_loaded[i].rel = i;
        images_loaded[i].src = '/images/' + images[i] + '.jpg';
        
        /*var img_blurs = new Image();
        img_blurs.onload = function(){
            // Do nothing
        };
        img_blurs.src = '/images/' + images[i] + '_blur.jpg';*/

        jQuery('#bg-image .scroller').append('<img src="/assets/visual/blank.gif" alt="" class="loading" />');
        jQuery('#image-control .thumbs .scroll-wrap .scroll').append('<img src="/assets/visual/blank.gif" alt="" class="loading" />');
    }	
    
    // Change main image left button
    jQuery('#image-control .main-left').click(function(){ GotoImage(curr_indx-1, '-'); });
    
    // Change main image right button
    jQuery('#image-control .main-right').click(function(){ GotoImage(curr_indx+1, '+'); });
                    
    // Set toggle event to show thumbs
    jQuery('#image-control .thumbs span').toggle(
        function(){
            jQuery(this).parent().toggleClass("open").animate({ bottom: '+='+thumb_height }, 200);
        },
        function(){
            jQuery(this).parent().toggleClass("open").animate({ bottom: '-='+thumb_height }, 200);
        }
    );
    
    // set hover event for thumbs scrolling
    jQuery('#image-control .thumbs .thumbs-scroll')
        .css("opacity", "0.6")
        .mouseover(function(e){
            dir = '-=';
            if (jQuery(this).hasClass("thumbs-right"))
            {
                dir = '+='
            }
            thumbs_scroll = setInterval(function(){
                jQuery('#image-control .thumbs .scroll-wrap').animate({ scrollLeft: dir+5 }, 20);
            }, 20)
        })
        .mouseout(function(e){
            jQuery('#image-control .thumbs .scroll-wrap').stop(true, false);
            clearInterval(thumbs_scroll);
        });
   
    
	// Capture contact form submit
	jQuery('#contactFrm').submit(ProcessContactFrom);
	
	// Check url for auto loading of content panels
	var url_path = window.location.href.split("/");
	if (url_path[url_path.length-1].length > 0)
	{
		ShowInfoOverlay('#'+url_path[url_path.length-1]);
	}
	
	// Set thumb scroll width
	jQuery('#image-control .thumbs .scroll').width(thumb_width * images.length).height(thumb_height);
	jQuery('#image-control .thumbs .scroll-wrap').height(thumb_height);
	
	// Tell the collection to load
	//jQuery('#site-top .collection').trigger('click');
	
	// Set site-top menu hover's
    jQuery('#site-top div a').each(function(){        
        jQuery(this)
            .css({ backgroundPosition: jQuery(this).css("background-position") })
            .hoverIntent({
	            sensitivity: 2,     // number = sensitivity threshold (must be 1 or higher)
	            interval: 80,       // number = milliseconds for onMouseOver polling interval
	            over: function(){   // function = onMouseOver callback (required)
	                item_o = jQuery(this);
	                if (!jQuery.browser.msie){
                        timer = setInterval(function(){
                            backPos = item_o.css("background-position").split(" ");
                            newTop = parseInt(backPos[1]);
                            newTop-=3;
                            if (newTop < -22) 
                            { 
                                clearInterval(timer) 
                                item_o.css({ backgroundPosition: backPos[0] + " -22px" });
                            }
                            else
                            {
                                item_o.css({ backgroundPosition: backPos[0] + " " + newTop + "px" });
                            }
                        }, 5); 
                    }
                    else
                    {
						//alert(item_o.css("background-position").split(" "));
                        jQuery(this).addClass("hover");
                    }  
	            },     
                timeout: 1,       // number = milliseconds delay before onMouseOut
                out: function(){    // function = onMouseOut callback (required)
                    item_out = jQuery(this);
                    if (!jQuery.browser.msie) {
                        timer = setInterval(function(){
                            backPos = item_out.css("background-position").split(" ");
                            newTop = parseInt(backPos[1]);
                            newTop+=3;
                            if (newTop > 0) 
                            { 
                                clearInterval(timer) 
                                //item_out.css({ backgroundPosition: backPos[0] + " 0px" });
                            }
                            else
                            {
                                item_out.css({ backgroundPosition: backPos[0] + " " + newTop + "px" });
                            }
                        }, 5);
                    }
                    else
                    {
                        jQuery(this).removeClass("hover");
                    }
                }
	        });
    });
    
    // Set site-bottom link hover's
    jQuery('#site-bottom div a').each(function(){        
        jQuery(this)
            .css({ backgroundPosition: jQuery(this).css("background-position") })
            .hoverIntent({
	            sensitivity: 2,     // number = sensitivity threshold (must be 1 or higher)
	            interval: 80,       // number = milliseconds for onMouseOver polling interval
	            over: function(){   // function = onMouseOver callback (required)
	                fitem_o = jQuery(this);
	                if (!jQuery.browser.msie) {
                        timer = setInterval(function(){
                            backPos = fitem_o.css("background-position").split(" ");
                            newTop = parseInt(backPos[1]);
                            newTop-=3;
                            if (newTop < -21) 
                            { 
                                clearInterval(timer) 
                                fitem_o.css({ backgroundPosition: backPos[0] + " -21px" });
                            }
                            else
                            {
                                fitem_o.css({ backgroundPosition: backPos[0] + " " + newTop + "px" });
                            }
                        }, 5);   
                    }
                    else
                    {
                        jQuery(this).addClass("hover");
                    } 
	            },     
                timeout: 1,       // number = milliseconds delay before onMouseOut
                out: function(){    // function = onMouseOut callback (required)
                    fitem_out = jQuery(this);
                    if (!jQuery.browser.msie) {
                        timer = setInterval(function(){
                            backPos = fitem_out.css("background-position").split(" ");
                            newTop = parseInt(backPos[1]);
                            newTop+=3;
                            if (newTop > 0) 
                            { 
                                clearInterval(timer) 
                                fitem_out.css({ backgroundPosition: backPos[0] + " 0px" });
                            }
                            else
                            {
                                fitem_out.css({ backgroundPosition: backPos[0] + " " + newTop + "px" });
                            }
                        }, 5);
                    }
                    else
                    {
                        jQuery(this).removeClass("hover");
                    } 
                }
	        });
    });
}

function GotoImage(indx, dir)
{
    if (curr_indx != indx)
    {
		HideInfoOverlay();
	
        jQuery('#image-control .thumbs .scroll img:eq('+curr_indx+')').removeClass("active");
        if (indx <= 0)
        {
            jQuery('#image-control .main-change.main-left').addClass("disable")
            indx = 0;
        }
        else
        {
            jQuery('#image-control .main-change.main-left').removeClass("disable")
        }
        if (indx > (images.length-1) || indx == (images.length-1)) {
            jQuery('#image-control .main-change.main-right').addClass("disable")
            indx = (images.length-1);
        }
        else
        {
            jQuery('#image-control .main-change.main-right').removeClass("disable");
        }
        
        curr_indx = indx;
         
        // Move main image       
        jQuery('#bg-image').stop(true, false)
            .animate({ opacity: 0.9 }, 200)
            .animate({ scrollLeft: main_imageWidth*curr_indx }, 1500, "easeOutQuart", function(){
                jQuery(this).animate({ opacity: 1 }, 200)
            }
        )
        
        if (dir) // if dir is set
        {
            scrollLeft = thumb_width*(curr_indx-1)
            
            if ( (dir == '+' && curr_indx > 2) || (dir == '-' && (curr_indx < thumb_count-2)) )
            {
                // Move thumbs left/right by one image (keeps active in view)
                jQuery('#image-control .thumbs .scroll-wrap').stop(true,false).animate({ scrollLeft: scrollLeft }, 1000);
            }
        }
    }
    jQuery('#image-control .thumbs .scroll img:eq('+curr_indx+')').addClass("active");
	
}

// Window was resized
function WindowResized(e)
{
    jQuery('#bg-image .scroller img').width(jQuery('#site-wrapper').width());
    
    main_imageWidth = jQuery('#bg-image .scroller img:first').width();
    main_imageHeight = jQuery('#bg-image .scroller img:first').height();
    
    // Set main image container height
    jQuery('#bg-image').height(main_imageHeight);
    
    // Set site-wrapper height
    jQuery('#site-wrapper').height(main_imageHeight);
	jQuery('#image-control').height(jQuery('#site-wrapper').outerHeight());
    jQuery('#bg-image .scroller').width(main_imageWidth * images.length);
   
    // Set thumbs offset and width
    thumbs_offsetLeft = jQuery('#image-control .thumbs .scroll-wrap').offset().left;
    thumbs_width = jQuery('#image-control .thumbs .scroll-wrap').width();
}

function ShowInfoOverlay(showContent)
{
    // blur image - show overlay instead - TODO
    currImg = jQuery('#bg-image .scroller img:eq('+ curr_indx+')');
	if (currImg.attr("src").indexOf("_blur") < 0){
		currImg.attr("src", currImg.attr("src").replace(".jpg", "_blur.jpg"));
	}
    	
    // Show overlay
    infoOverlay
		.css({ top: 0-(infoOverlay.outerHeight()), zIndex: 2 }).show()
		.find('> .inner > div').hide().end()
		.find('> .inner div'+showContent).show().end()
		.find('> .inner').css({ overflow: 'hidden' }).end()
		.animate({ top: "145px", opacity: 1 }, 350, "easeOutQuart", function(){ 
			jQuery(this)
				.css({ zIndex: 3 })
				.find('> .inner').css({ overflow: 'auto' }); 
		});
}
function HideInfoOverlay()
{
	_infoOverlayOpen = false;
	currImg = jQuery('#bg-image .scroller img:eq('+ curr_indx+')');
    currImg.attr("src", currImg.attr("src").replace("_blur.jpg", ".jpg"));
	
    infoOverlay
		.find('.inner').css({ overflow: 'hidden' }).end()
		.css({ zIndex: 2 }).animate({ top: 0-(infoOverlay.outerHeight()), opacity: 0 }, 750, "easeOutQuart", function(){
			jQuery(this).hide();
		});
}

function ProcessContactFrom()
{
	jQuery(this).prev(".error").remove();
	
	$form = jQuery(this);
	
	frm_title = $form.find('#title option:selected').val();
	frm_fullname = $form.find('#fullname').val();
	frm_email = $form.find('#email').val();
	email_valid = ValidateEmail(frm_email)
	frm_subject = $form.find('#subject').val();
	frm_message = $form.find('#message').val();
	form_message = "";
	
	if (frm_fullname == "" || frm_email == "" || frm_subject == "" || frm_message == "")
	{
		form_message = "Please fill in all fields<br />";
	}
	if (!email_valid)
	{
		form_message += "The email address entered is invalid";
	}
	
	if (form_message.length > 0)
	{
		$form.before('<div class="error">' + form_message + '</div>').prev('.error').show();
	}
	else
	{
		// Submit
		jQuery.ajax({
			method: 'POST',
			url: '/contact_submit',
			data: { title: escape(frm_title), fullname: escape(frm_fullname), email: escape(frm_email), subject: escape(frm_subject), message: escape(frm_message) },
			beforeSend: function(){
				// Hide form
				$form.parent().fadeOut(250);
				
				$form.parent().next('.processing').fadeIn(250);
			},
			success: function(data){
				if (data == 1)
				{
					// Success
					$form.parent().next('.processing').fadeOut(250);
					$form.parent().next().next('.thankyou').fadeIn(250);
				}
				else
				{
					// error
					$form.before('<div class="error">' + data + '</div>').prev('.error').show();
					$form.parent().fadeIn(250);
				}
			},
			error: function(e){
				$form.before('<div class="error">' + e.responseText + '</div>').prev('.error').show();
				$form.parent().fadeIn(250);
			}
		})
	}
	
	return false;
}
function ValidateEmail(email) {
   var reg = /^([A-Za-z0-9_\-\.\+])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
   
   return reg.test(email);
}
/**
* hoverIntent r5 // 2007.03.27 // jQuery 1.1.2+
* <http://cherne.net/brian/resources/jquery.hoverIntent.html>
* 
* @param  f  onMouseOver function || An object with configuration options
* @param  g  onMouseOut function  || Nothing (use configuration options object)
* @author    Brian Cherne <brian@cherne.net>
*/
(function($){$.fn.hoverIntent=function(f,g){var cfg={sensitivity:7,interval:100,timeout:0};cfg=$.extend(cfg,g?{over:f,out:g}:f);var cX,cY,pX,pY;var track=function(ev){cX=ev.pageX;cY=ev.pageY;};var compare=function(ev,ob){ob.hoverIntent_t=clearTimeout(ob.hoverIntent_t);if((Math.abs(pX-cX)+Math.abs(pY-cY))<cfg.sensitivity){$(ob).unbind("mousemove",track);ob.hoverIntent_s=1;return cfg.over.apply(ob,[ev]);}else{pX=cX;pY=cY;ob.hoverIntent_t=setTimeout(function(){compare(ev,ob);},cfg.interval);}};var delay=function(ev,ob){ob.hoverIntent_t=clearTimeout(ob.hoverIntent_t);ob.hoverIntent_s=0;return cfg.out.apply(ob,[ev]);};var handleHover=function(e){var p=(e.type=="mouseover"?e.fromElement:e.toElement)||e.relatedTarget;while(p&&p!=this){try{p=p.parentNode;}catch(e){p=this;}}if(p==this){return false;}var ev=jQuery.extend({},e);var ob=this;if(ob.hoverIntent_t){ob.hoverIntent_t=clearTimeout(ob.hoverIntent_t);}if(e.type=="mouseover"){pX=ev.pageX;pY=ev.pageY;$(ob).bind("mousemove",track);if(ob.hoverIntent_s!=1){ob.hoverIntent_t=setTimeout(function(){compare(ev,ob);},cfg.interval);}}else{$(ob).unbind("mousemove",track);if(ob.hoverIntent_s==1){ob.hoverIntent_t=setTimeout(function(){delay(ev,ob);},cfg.timeout);}}};return this.mouseover(handleHover).mouseout(handleHover);};})(jQuery);