if(!window.console){console={log:function(){}}}
  
$(function(){
  var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
  ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
  var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
	bf = new Bf;
});

Bf = function(){
  this.baseURL = 'http://'+location.hostname;
  this.cdnURL = '/images/blow/fluid/customers/c966/';
  this.fluidBaseUrl = 'http://www.blowfishshoes.com/images/blow/fluid/';
  //this.blogCDN = 'http://blog.blowfishshoes.com/devlib';
  this.blogCDN = 'http://blog.blowfishshoes.com/lib';
  this.page = $('.framework').attr('id');
	this.loggedIn = (typeof loggedIn != 'undefined') ? loggedIn : false;
	this.showMaintenanceBanner = (typeof showMaintenanceBanner != 'undefined') ? showMaintenanceBanner : false;
	this.overSubNav = false;
	this.closeOverlays = true;
	this.ga_account = "UA-12946219-1";
	this.initialize();
}

Bf.prototype = {
	initialize:function(){
		this.skin(this.addListeners);
	},

	skin:function(c){
		//this.ga_trackPageView();
    
    var c = c || null;
    var b = ($.browser.msie) ? 'ie' : ($.browser.safari) ? 'safari' : ($.browser.mozilla) ? 'ff' : 'other';
    $('html').addClass(b)

		if(this.loggedIn)  {
			$('#header .btnAccount').removeClass('preload');
		}else{
			$('#header .btnLogin').removeClass('preload');
		}
    	if(this.showMaintenanceBanner) {
    		$('.framework').addClass('server_msg_on');
    	}
		$('.subnav, #header .bag, #header .followUs, #header .login, .messagingOverlay, .general_messaging_overlay').slideUp(0, function(){$(this).removeClass('preload')});
    switch(this.page){
      case 'home':
      	this.getMOTM();
      	break;
      case 'contact':
        $('.customer_care_confirmation').slideUp(0, function(){$(this).removeClass('preload')});
        break;
      case 'search_results':  
      case 'category':
        this.category_generatePagination();
        $('#header .addToBagConfirm').slideUp(0).removeClass('preload');
        window.onresize = function(){ bf.category_positionQuickView() }
        break;
      case 'product':
        $('#header .addToBagConfirm').slideUp(0).removeClass('preload');
        $('#product .options .alert').fadeOut(0,function(){$(this).removeClass('preload')});
        this.product_loadFluidAltImage();
         window.onresize = function(){ bf.category_positionQuickView() }
         break;
      case 'shopping_bag':
        $('.edit_item_overlay').slideUp(0).removeClass('preload');
        break;
      case 'community':
          //this.community_loadLatestTweet();
          break;
      case 'checkout':
      	try{	$("a.tw_purchase").shorten({login: 'thebrandingfarm', apikey: 'R_084de09d0a9c0b1b768c3ade8da4fbff'})}catch(e){};
        break;
    }

    this.resetBagContentDependencies();
	this.loadFlash();
	this.changeHolidayBanner();	

    if(c) c(this);  
	},

	addListeners:function(bf){
		if(this.loggedIn) {
		}else{}
    var options;
		$('a, input.submit, input.image').click(function(){$(this).blur()});

		$(document).mouseover(function(e){ if(!bf.closeOverlays){ bf.closeOverlays = true; setTimeout(function(e){bf.hideAllByMouseOut(e)},750) }});
		$(document).click(function(e){ bf.hideAllClicks(e)});

		$('#topNav li.shop a, .subnav, #header .bag, #header .followUs, #header .login, .editOverlay, .stdOverlay').mouseover(function(e){bf.stopPropagation(e); bf.closeOverlays=false});

		$('#topNav li.shop a').mouseover(bf.revealSubNav);
		$('#header .btnBag').mouseover(function(e){bf.revealBag(e)});
		$('#header .bag .close').click(bf.hideBag);
		$('#header a.follow').click(bf.revealFollow);
		$('#header .followUs .close').click(bf.hideFollow);

		$('#header .btnLogin').mouseover(bf.revealLogin);
		$('#header .login .close').click(bf.hideLogin).blur();
    $('.messagingOverlay .close a').click(bf.hideErrorMessagingOverlay)
    $('.studioB_footer_messaging_overlay .close a').click(bf.hideStudioBFooterMessagingOverlay)
    $('.general_messaging_overlay .close a').click(bf.hideMessagingOverlay)
    $('.password_recovery .close a').click(bf.hideSendPassOverlay);
    $('#header .lnk_forgot').click(bf.revealSendPassOverlay);
    $('#maintenance a').click(bf.removeMaintMessage);
    var signInOptions = { 
            bf:                    bf,
            frm: 				      $('#signInForm'),
            beforeSubmit: bf.signIn_validateForm,
            success:         bf.signIn_updateBagContents,
            resetForm: 	  false
          };
    	  signInOptions.frm.ajaxForm(signInOptions);
          
    var studioBOptions = { 
            bf:                    bf,
            form: 				      $('#joinMailingList'),
            beforeSubmit: bf.studioB_validateForm,
            success:         bf.studioB_showMsg,
            resetForm: 	  false
          }; 
    studioBOptions.form.ajaxForm(studioBOptions);

    var studioBFooterOptions = { 
            bf:                    bf,
            form: 				      $('#clubb_form'),
            beforeSubmit: bf.studioBFooter_validateForm,
            success:         bf.studioBFooter_showMsg,
            resetForm: 	  false
          }; 
    studioBFooterOptions.form.ajaxForm(studioBFooterOptions);

    
  	switch(bf.page){
	   case 'checkout':
        $('.addressWrap .col1 .editBtn').click(bf.revealShippingAddressOverlay);
        $('.addressWrap .col2 .editBtn').click(bf.revealBillingAddressOverlay);
        $('.billing.editOverlay .close').click(bf.hideBillingAddressOverlay);
        $('.shipping.editOverlay .close').click(bf.hideShippingAddressOverlay);
        $('#checkout .lnk_forgot').click(bf.revealSendPassOverlay);
      	$("a.tw_purchase").click(function(){_gaq = bf.ga_trackEvent(_gaq, 'share','twshare', 'confirmation')});
      	$("a.fb_purchase").click(function(){_gaq = bf.ga_trackEvent(_gaq, 'share','fbshare', 'confirmation')});
        break;
      case 'account':
        $('.addresses .billing .btnEdit').click(bf.revealBillingAddressOverlay);
        $('.addresses .shipping .btnEdit').click(bf.revealShippingAddressOverlay);        
        $('.personal_information .edit').click(bf.revealPersonalInfoOverlay);
        $('.btns_password .btn_change').click(bf.revealChangePassOverlay);        
        $('.btns_password .btn_remind').click(bf.revealSendPassOverlay);        
        $('.billingEditOverlay .close').click(bf.hideBillingAddressOverlay);
        $('.shippingEditOverlay .close').click(bf.hideShippingAddressOverlay);
        $('.personal_edit_overlay .close').click(bf.hidePersonalInfoOverlay);
        $('.change_password_overlay .close a').click(bf.hideChangePassOverlay);        
        break;
      case 'search_results':        
      case 'category':
        $('.grid .style a, ').click(function(e){ bf.category_selectGridStyle(e, $(this),bf)});
        $('.pagination a.next').click(function(e){ bf.category_nextPanel(e,bf)});
        $('.pagination a.prev').click(function(e){ bf.category_prevPanel(e,bf)});
        $('.pagination ul a').click(function(e){ bf.category_jumpToPanel(e,this,bf)});
        $('.pagination a.view_all').click(function(e){bf.category_viewAll(e,bf)});
        $('.pagination a.view_panels').click(function(e){bf.category_viewPanels(e,bf)});
        $('.grid .quick').hover(function(){$(this).addClass('hover')}, function(){$(this).removeClass('hover')}).click( function(e){ bf.category_openQuickView(e,this,bf)});
        $('#header .addToBagConfirm .close').click(bf.hideAddToBagConfirmation);
        $('a.thickbox, area.thickbox, input.thickbox').click(function(e){bf.loadProductVideo(e,this,bf)});
        break;
      case 'product':
        $('#product #content .style a').click(function(e){ bf.product_selectDetailViewStyle(e,this) });
        $('#product #content .size a').click(function(e){ bf.product_selectDetailViewSize(e,this) });
        $('#header .addToBagConfirm .close').click(bf.hideAddToBagConfirmation);
        $('#content .btnCheckout').click(bf.bagHasItem);
        $('.details .controls a').click(function(e){bf.product_pageControlsTracking(e,this)});
        $('a.thickbox, area.thickbox, input.thickbox').click(function(e){bf.loadProductVideo(e,this,bf)});
        $('.show_sizes').click(function(e){bf.showSizeChart(e)});
        $('#size_overlay a').click(function(e){bf.hideSizeChart(e)})
        
        options = null;
        options = { 
          bf:                    bf,
          form: 				      $('#detailViewAddToBagForm'),
          beforeSubmit: bf.product_validateDetailViewAddForm,
          success:         bf.category_updateBagContents,
          resetForm: 	  false
        }; 
        options.form.find('.btnAdd').click(function(){$(options.form).submit()}).end().ajaxForm(options);;
        break;
      case 'contact':
        $('.customer_care_confirmation .close a').click(bf.contact_hideConfirmation)
        options = null;        
        options = { 
          bf:                    bf,
          form: 				        $('#contact #content form'),
          beforeSubmit: bf.contact_validateContactForm,
          success:          bf.contact_processResponse,
          //iframe: 			    true,
          resetForm: 	  	true
        }; 
        options.form.find('.btn_submit a').click(function(){$(options.form).submit()}).end().ajaxForm(options);
        break;
      case 'community':
    	$('.twitter .text_entry a').click(function(e){bf.sendTwitterPost(e)});
        $('.find_blowfish a').click(function(e){bf.community_findLinkTracking(e,this)});
        break
      case 'shopping_bag':
        $('#content .btn_change').click(function(e){bf.bag_openEditItem(e,this,bf)});
        $('.similarly_bought a').click(function(e){bf.bag_suggestedTracking(e,this)});
        $('.btn_remove a').click(function(e){bf.bag_removeItem(e,this)});
        $('.checkout .buttons li a').click(function(e){bf.bag_pageControlsTracking(e,this)});
        break;
      case 'accountSetup':
      	$('#accountSetup .lnk_forgot').click(bf.revealSendPassOverlay);
      	break;
  	}

    $('.unbind').unbind();  
	},
	  
	revealSubNav:function(e){
	    if(e && e.stopPropagation) e.stopPropagation();
		if($('.framework').is('.blog')) $('#topNav .shop a').addClass('shopBlog');
    $('#topNav').addClass('withSub');
		$('.subnav').slideDown(250);
	},
	
	hideSubNav:function(e){
	    if(e && e.stopPropagation) e.stopPropagation();
    if($('.framework').is('.blog')) $('#topNav .shop a').removeClass('shopBlog');
		$('#topNav').removeClass('withSub');
	$('.subnav').slideUp(250);
	},	

	revealBag:function(e){
	    if(e && e.stopPropagation) e.stopPropagation();
	    if($('#header .bag .contents li').length < 1) return;
		$('#header .bag').slideDown(400);
	},
	
	hideBag:function(e){
	    if(e && e.stopPropagation) e.stopPropagation();
    if($('#header .bag .contents li').length < 1) return;
		$('#header .bag').slideUp(300);
	},
	
	revealFollow:function(e){
	    if(e && e.stopPropagation) e.stopPropagation();
		$('#header .followUs').slideDown(400);
	},

	hideFollow:function(e){
	    if(e && e.stopPropagation) e.stopPropagation();
		$('#header .followUs').slideUp(300);
	},

	revealLogin:function(e){
		e.stopPropagation();
		$('#header .login').slideDown(400);
	},

	hideLogin:function(e){
	    if(e && e.stopPropagation) e.stopPropagation();
		$('#header .login').slideUp(300);
	},

  revealBillingAddressOverlay:function(e){
		e.stopPropagation();
    $('.billing.editOverlay, .billingEditOverlay ').removeClass('none');
  },

  hideBillingAddressOverlay:function(e){
	    if(e && e.stopPropagation) e.stopPropagation();
    $('.billing.editOverlay, .billingEditOverlay ').addClass('none');
  },
 
   revealShippingAddressOverlay:function(e){
		e.stopPropagation();
    $('.shipping.editOverlay, .shippingEditOverlay').removeClass('none');
  },
  
  hideShippingAddressOverlay:function(e){
	    if(e && e.stopPropagation) e.stopPropagation();
    $('.shipping.editOverlay, .shippingEditOverlay').addClass('none');
  },
  
  revealPersonalInfoOverlay:function(e){
		e.stopPropagation();
    $('.personal_edit_overlay').removeClass('none');
  },

  hidePersonalInfoOverlay:function(e){
	    if(e && e.stopPropagation) e.stopPropagation();
    $('.personal_edit_overlay').addClass('none');
  },
  
  revealChangePassOverlay:function(e){
		e.stopPropagation();
    $('.change_password_overlay').removeClass('none');
  },  
  
  hideChangePassOverlay:function(e){
	    if(e && e.stopPropagation) e.stopPropagation();
    $('.change_password_overlay').addClass('none');
  },
 
   revealSendPassOverlay:function(e){
		e.stopPropagation();
    $('.password_recovery').removeClass('none');
  },  
  
  hideSendPassOverlay:function(e){
	    if(e && e.stopPropagation) e.stopPropagation();
    $('.password_recovery').addClass('none');
  },   
  
  hideAllByMouseOut:function(e){
    if( !this.closeOverlays ) return;  
	this.hideBag(e);    
    this.hideLogin(e);
    this.hideSubNav(e);
	this.hideFollow(e);
    this.hideBillingAddressOverlay(e);
    this.hideShippingAddressOverlay(e);
    this.hidePersonalInfoOverlay(e);
    this.hideChangePassOverlay(e);
    this.hideSendPassOverlay(e);
    this.closeOverlays = false;
},

	hideAllClicks:function(e){

	},

  revealMessagingOverlay:function(msg){
     $('.general_messaging_overlay .content').html(msg);       
     $('.general_messaging_overlay').slideDown(400);
  },
  
  hideMessagingOverlay:function(){
    $('.general_messaging_overlay').slideUp(250);
  },

  revealStudioBFooterMessagingOverlay:function(msg){
	$('.studioB_footer_messaging_overlay .content').html(msg);       
	$('.studioB_footer_messaging_overlay').slideDown(40);
  },
	  
  hideStudioBFooterMessagingOverlay : function() {
	 $('.studioB_footer_messaging_overlay').slideUp(250);
  },
  
  revealErrorMessagingOverlay:function(msg){
     $('.messagingOverlay .content').html(msg);       
     $('.messagingOverlay').slideDown(400);
  },

  hideErrorMessagingOverlay:function(){
    $('.messagingOverlay').slideUp(250);
  },
  
  signIn_validateForm:function(data){
    var data = data || null;
    var f = (data != null) ? this.frm : $('#signInForm').get(0);
    var ret = validateSignIn(f[0])
    if (ret) {
        $('#header .login').slideUp(300);
        $('#header .btnLogin').addClass('preload')
    }
    return ret;
  },
	  
  signIn_updateBagContents:function(res){
    var r = $(res);
    if(r.attr('response') == 'success'){
      $('.userControls .btnBag').html(r.find('.btnBag').html());
      $('#header .bag .contents').html(r.find('.contents:first').html());
      var path = document.getElementById('overlayCheckout').href;
      document.getElementById('overlayCheckout').href = path.replace('account/signInCheckout.jsp','checkout/chkAddress.jsp');
      this.bf.resetBagContentDependencies();
      $('#header .btnAccount').removeClass('preload');
    }else{
      $('#header .btnLogin').removeClass('preload');
      this.bf.revealMessagingOverlay(res);
      //alert(r.html());
    }
  },  

  studioB_validateForm:function(data,formID){
    var data = data || null;
    var f = (data != null) ? this.form : $('#joinMailingList').get(0);
    
    var ret = validateFollowUs(f[0])
    if(ret) this.bf.ga_trackPageView('/StudioBSignup')
    return ret;
  },
  
  studioBFooter_validateForm:function(data,formID){
	    var data = data || null;
	    var f = (data != null) ? this.form : $('#clubb_form').get(0);
	    
	    var ret = validateFollowUs(f[0])
	    if(ret) this.bf.ga_trackPageView('/StudioBSignup')
	    return ret;
  },
	  
  studioB_showMsg:function(res){
    var r = $(res);
    if(r.attr('response') == 'success'){
    }else{
    }
    this.bf.revealMessagingOverlay(res);
    //close after 3 seconds, otherwise if closed on X it will close the Follow Us overlay
    setTimeout(function(){this.bf.hideMessagingOverlay()},3000)
    //alert(r.html());
  },  

  studioBFooter_showMsg:function(res){
	    var r = $(res);
	    if(r.attr('response') == 'success'){
	    }else{
	    }
	    this.bf.revealStudioBFooterMessagingOverlay(res);
	    //close after 3 seconds, otherwise if closed on X it will close the Follow Us overlay
	    setTimeout(function(){this.bf.hideStudioBFooterMessagingOverlay()},3000)
	    //alert(r.html());
  },  
  
  formSuccessful:function(res){
    return (res == 'success' || res == 'true' || res == '1');
  },
 
  contact_validateContactForm:function(formData, jqForm, options){
    var formElement = jqForm[0];
    return validateContactForm(formElement);
  },
  
  contact_processResponse:function(res){
    if(this.bf.formSuccessful(res)) this.bf.contact_revealConfirmation();
    else{
      this.bf.revealMessagingOverlay(res);
    }
  },
    
  contact_revealConfirmation:function(){
    $('.customer_care_confirmation').slideDown(400);
  },
  
  contact_hideConfirmation:function(e){
    e.stopPropagation();
    $('.customer_care_confirmation').slideUp(250);
  },

  category_generatePagination:function(){
    var t = $('.topControls .pagination li').remove();
    var c;
    var g = $('.panels ul.grid');
    if(g.length < 2) return;
    var l = g.each(function(i){
      c = t.clone();
      if(i == 0) {
        c.html('<a class="none" href="javascript:void(0)">'+(i+1)+'</a><span >'+(i+1)+'</span>');
      }else{
        c.html('<a href="javascript:void(0)">'+(i+1)+'</a><span class="none">'+(i+1)+'</span>');
      }
      $('.pagination ul').append(c);
    }).length;
    
    $('.panels .slider').width((parseInt(g.width())*l)+100);
    $('.pagination').removeClass('preload');
  },
  
  category_resetPagination:function(n){
      var n = parseInt(n);
      $('.pagination li  a').removeClass('none');
      $('.pagination li span').addClass('none');
      
      $('.topControls .pagination li:eq('+(n-1)+') a').addClass('none');
      $('.topControls .pagination li:eq('+(n-1)+') span').removeClass('none');
      $('.bottomControls .pagination li:eq('+(n-1)+') a').addClass('none');
      $('.bottomControls .pagination li:eq('+(n-1)+') span').removeClass('none');      
      var l =$('.panels ul.grid').length;
    
      $('.pagination .next, .pagination .prev').addClass('none');
      if(n < l ) $('.pagination a.next').removeClass('none');
      else $('.pagination img.next').removeClass('none');
     
      if( n > 1) $('.pagination a.prev').removeClass('none');
      else $('.pagination img.prev').removeClass('none');
  },
  
  category_jumpToPanel:function(e,t,bf){
    e.stopPropagation()
    var c = parseInt($(t).html());
    var u = $('.panels ul.grid');
    bf.category_movePanel((0-((c-1) * u.width())),c);
  },
 
  category_viewAll:function(e,bf){
    e.stopPropagation();
    var $grids = $('.slider .grid');
    $grids.parent().css('left','0px');
    var $panelsWrap = $('.panels')
    bf.categoryPanelHeight = $panelsWrap.height();
    stylesPerRow = parseInt($('ul.grid').width()/$('ul.grid li').width())
    newHeight = $grids.length*bf.categoryPanelHeight;
    if($('ul.grid:last').children().length <= stylesPerRow) newHeight -= (bf.categoryPanelHeight/2);
    $panelsWrap.height(newHeight);
    $grids.css('float','none');
    $('.pagination').children().addClass('none');
    $('.pagination .view_panels').removeClass('none');
  },
  
  category_viewPanels:function(e,bf){
    e.stopPropagation();
    $('.slider .grid').css('float','left');
    $('.panels').height(bf.categoryPanelHeight);
    $('.pagination').children().removeClass('none');
    bf.category_jumpToPanel(e,$('.pagination ul a'),bf);
    $('.pagination .view_panels').addClass('none');
  },
  
  category_nextPanel:function(e,bf){
    e.stopPropagation()
    var c = parseInt($('.topControls .pagination span:not(".none")').html());
    var u = $('.panels ul.grid');
    bf.category_movePanel((0-((c) * u.width())),(c+1));
  },

  category_prevPanel:function(e,bf){
   e.stopPropagation()
    var c = parseInt($('.topControls .pagination span:not(".none")').html());
    var u = $('.panels ul.grid');
    bf.category_movePanel(0-((c-2) * u.width()),(c-1));
  },

  category_movePanel:function(l,n){
    $('.panels .slider').animate({'left':l}, 600);     
    bf.category_resetPagination(n);    
  },

  category_selectGridStyle:function(e, t, bf){
    /* set hidden form elements and list img src */
    e.stopPropagation();
    var p = t.parents('li').eq(1);
    var id = p.attr('product_id');
    var code = p.attr('product_code');
    var s = t.attr('product_style');
    var url = bf.cdnURL + code+'/generated/'+code+'_'+s+'_CAT4_200x217.jpg';
    $('#current_product_id').val(id);
    $('#current_product_code').val(code);
    $('#current_product_style').val(s);
    p.find('.photo img:eq(1)').attr('src',url);
  },

  category_openQuickView:function(e,t,bf){
    e.stopPropagation();
    var id = $(t).parents('li').attr('product_id');
    var style = $('#current_product_style').val();
    var size = $('#current_product_size').val();
    if (id != $('#current_product_id').val()) {
    	style = '';
    }
    $('#quickShopOverlay').remove();
    $.get('./quickshop.jsp', {product_id:id, product_style:style, product_size: size }, function(res){
      $('body').append(res).each(function(){
        bf.resetBagContentDependencies();
        $('#quickShopOverlay .close').click(function(){bf.category_closeQuickView() });
        $('#quickShopOverlay .style a').click(bf.category_selectQuickViewStyle);
        $('#quickShopOverlay .size a').click(function(e){ bf.category_selectQuickViewSize(e,this,bf)});
        $('#quickShopOverlay .btnAdd').click( function(){ $('#quickViewAddToBagForm').submit()});
        $('#quickShopOverlay .btnCheckout').click( bf.bagHasItem);
        $('#quickShopOverlay .alert').fadeOut(0,function(){$(this).removeClass('preload')});
        $('#quickShopOverlay .btnCheckout').click(function(e){bf.quickshopCheckout(e, 'product.category')});
        bf.category_loadFluidAltImage();
        var options = { 
          bf:                    bf,
          form: 				      $('#quickViewAddToBagForm'),
          beforeSubmit: bf.category_validateQuickViewForm,
          success:         bf.category_updateBagContents,
          resetForm: 	  false
        }; 
        options.form.ajaxForm(options);

        $(window).scroll(bf.category_positionQuickView);
        bf.category_positionQuickView();
      });
    })
  },

  category_closeQuickView:function(){
    $(window).unbind('scroll');
    $('#quickShopOverlay').remove();
    if(this.page == 'category') $('body').append('<script type="text/javascript" src="'+bf.fluidBaseUrl+'standard/v2/js/fluid/retail/FluidRetailDisplay.js?baseUrl='+bf.fluidBaseUrl+'"></script>');
    // || this.page == 'product'
  },

  category_positionQuickView:function($o){
    var $o = $('#quickShopOverlay');
    var l = document.documentElement.scrollLeft+parseInt(($(window).width() - $o.width())/2);
    var t = document.documentElement.scrollTop+(parseInt(($(window).height() - $o.height())/2));
    $o.animate({'left':l,'top':t},0);
  },

  category_selectQuickViewStyle:function(e){
    e.stopPropagation();
    var t = $(this).parent();
    t.addClass('selected').siblings().removeClass('selected');
    var style = t.attr('product_style');
    $('#selected_product_style').val(style);
  },

  category_selectQuickViewSize:function(e,t,bf){
    e.stopPropagation();
    var t = $(t).parent();
    if(t.is('.disabled')) return;
    t.addClass('selected');
    t.siblings().removeClass('selected')
    var size = t.attr('product_size');
    $('#selected_product_size').val(size);
    bf.category_validateQuickViewForm();
  },
  
  category_validateQuickViewForm:function(data){
    var data = data || null;
    var f = (data != null) ? this.form : $('#quickViewAddToBagForm').get(0);
    if($('#selected_product_size').val()  == '' || $('#selected_quantity').val() == ''){
      $('#quickShopOverlay .alert').fadeIn(500,function(){$(this).fadeOut(2500)});
      return false;
    }
    $('#quickShopOverlay .btnAdd .disabled').removeClass('disabled');
    return true;
  },
 
  category_loadFluidAltImage:function(){
    if(fluid) return;
    console.log(noFlashImageUrl);
    if(noFlashImageUrl) $('.fluid-display').append('<img src="'+noFlashImageUrl+'"></img>'); //attr('src',noFlashImageUrl);
    $('.fluid-zoom').remove();
  },

 
  category_updateBagContents:function(res){
    var r = $(res);
    if(r.attr('response') == 'success'){
      if( ! this.bf.bagHasItem() ) _gaq = this.bf.ga_trackEvent(_gaq, 'shop','add to bag', 'cart start');
      $('.userControls .btnBag').html(r.find('.btnBag').html());
      $('#header .bag .contents').html(r.find('.contents:first').html());
      this.bf.category_closeQuickView();
      this.bf.resetBagContentDependencies();
      this.bf.revealAddToBagConfirmation(r);
      var url = location.href;
      if(url.toLowerCase().indexOf('category') > -1){
        _gaq = this.bf.ga_trackEvent(_gaq,'quickshop','add to bag','product.category');
      }else{
        _gaq = this.bf.ga_trackEvent(_gaq, 'quickshop','add to bag', 'product.detail');
      }
    }else{
      alert(r.html());
    }
  },

  quickshopCheckout:function(e,src){
    e.stopPropagation();
    var url = location.href;
    _gaq = this.ga_trackEvent(_gaq,'quickshop','add to bag', src);
  },
  
  product_selectDetailViewStyle:function(e,t){
    e.stopPropagation();
    var t = $(t).parent();
    t.addClass('selected').siblings().removeClass('selected');
    var style = t.attr('product_style');
    // fluid tasks here
    selectVariation(style);
    //bf tasks here
    $('#detail_product_style').val(style);
  },

  product_selectDetailViewSize:function(e,t){
    e.stopPropagation();
    var t = $(t).parent();
    if(t.is('.disabled')) return;
    t.addClass('selected');
    t.siblings().removeClass('selected')
    var size = t.attr('product_size');
    $('#detail_product_size').val(size);
    this.product_validateDetailViewAddForm();
  },

  product_validateDetailViewAddForm:function(data){
    var data = data || null;
    if($('#detail_product_size').val()  == '' || $('#detail_quantity').val() == ''){
      $('#product .options .alert').fadeIn(500,function(){$(this).fadeOut(2500)});
      return false;
    }

    $('#content .btnAdd .disabled').removeClass('disabled');
    return true;
  },

  product_openQuickView:function(id, style, navid){
    var bf = this;
    $('#quickShopOverlay').remove();
    $.get('./quickshop.jsp', {product_id:id, product_style:style }, function(res){
      $('body').append(res).each(function(){
        $('#quickShopOverlay .alert').fadeOut(0,function(){$(this).removeClass('preload')});
        $('#quickShopOverlay .close').click(function(){ bf.category_closeQuickView()});
        $('#quickShopOverlay .style a').click(bf.category_selectQuickViewStyle)
        $('#quickShopOverlay .size a').click(function(e){bf.product_selectQuickViewSize(e,this,bf)});
        $('#quickShopOverlay .btnAdd').click( function(){ $('#quickViewAddToBagForm').submit(); $(this).blur() });
        $('#quickShopOverlay .btnCheckout').click( bf.bagHasItem);
        $('#quickShopOverlay .btnCheckout').click(function(e){bf.quickshopCheckout(e,'product.detail')});
        bf.resetBagContentDependencies();
        var options = { 
          bf:                    bf,
          form: 				      $('#quickViewAddToBagForm'),
          beforeSubmit: bf.category_validateQuickViewForm,
          success:         bf.category_updateBagContents,
          resetForm: 	  false
        }; 
        options.form.ajaxForm(options);

        $(window).scroll(bf.category_positionQuickView);
        bf.category_positionQuickView();
      });
    })
  },

  product_selectQuickViewSize:function(e,t,bf){
    e.stopPropagation();
    var t = $(t).parent();
    if(t.is('.disabled')) return;
    t.addClass('selected');
    t.siblings().removeClass('selected')
    var size = t.attr('product_size');
    $('#selected_product_size').val(size);
    bf.category_validateQuickViewForm();
  },

  product_pageControlsTracking:function(e, target){
    e.stopPropagation();
    var $t = $(target);
    var action;
    if($t.is('.btnAdd')) action = 'add to bag';
    else if($t.is('.btnCheckout')) action = 'checkout';
    else if($t.is('.btnContinue')) action = 'continue';
    _gaq = this.ga_trackEvent(_gaq,'shop', action, 'product detail') ;        
  },
  
  product_loadFluidAltImage:function(){
    if(fluid) return;
    if(noFlashImageUrl) $('.fluid-display').append('<img src="'+noFlashImageUrl+'"></img>'); //attr('src',noFlashImageUrl);
    $('.fluid-zoom').remove();
  },
  
  bag_openEditItem:function(e,t,bf){
    e.stopPropagation();
    var p = $(t).parent();
    var i = $('#content ul.buttons').index(p);
    var item = p.parent();
    var id = item.attr('product_id');
    var code = item.attr('product_code'); 
    var style = item.attr('product_style');
    var size = item.attr('product_size');
    var qty = item.attr('quantity');
    
    $.get('./edit_item.jsp',  {product_id:id, product_code:code, product_style:style, product_size: size } , function(res){
      $('#content .item').eq(i).append(res).each(function(){
        $('.edit_item_overlay').slideUp(0,function(){$(this).removeClass('preload').slideDown(400)});
        $('.edit_item_overlay .alert').fadeOut(0,function(){$(this).removeClass('preload')});
        $('.edit_item_overlay .header a').click(function(){bf.bag_closeEditItem() });
        $('.edit_item_overlay .style a').click(bf.bag_selectEditItemStyle);
        $('.edit_item_overlay .size a').click(function(e){ bf.bag_selectEditItemSize(e,this,bf)});
        $('.edit_item_overlay .btn_update').click( function(){ $('#editBagItemForm').submit()});
       
        var options = { 
          bf:                    bf,
          itemIndex:       i,
          form: 				      $('#editBagItemForm'),
          beforeSubmit: bf.bag_validateEditItemForm,
          success:         bf.bag_updateItem,
          resetForm: 	  false
        };
        options.form.ajaxForm(options);
      });

    });
    _gaq = this.ga_trackEvent(_gaq, 'shop','change','bag');
  },
  
  bag_closeEditItem:function(){
    bf.resetBagContentDependencies();
    $('.edit_item_overlay').remove();
  },

   bag_selectEditItemStyle:function(e){ 
    e.stopPropagation();
    var t = $(this).parent();
    t.addClass('selected').siblings().removeClass('selected');
    var style = t.attr('product_style');
    $('#edit_product_style').val(style);      
 },
  
  bag_selectEditItemSize:function(e,t,bf){  
     e.stopPropagation();
    var t = $(t).parent();
    if(t.is('.disabled')) return;
    t.addClass('selected');
    t.siblings().removeClass('selected')
    var size = t.attr('product_size');
    $('#edit_product_size').val(size);
    bf.bag_validateEditItemForm();
  },  
  
  bag_validateEditItemForm:function(data){
	var data = data || null;
    var f = (data != null) ? this.form : $('#editBagItemForm').get(0);
    if($('#edit_product_size').val()  == '' || $('#editBagItemForm #edit_quantity').val() == ''){
      $('.edit_item_overlay .alert').fadeIn(500,function(){$(this).fadeOut(2500)});
      return false;
    }
    return true;
  },

  bag_updateItem:function(res){
    var r = $(res);
    if(r.attr('response') == 'success'){
      var bf = this.bf;
      if( ! bf.bagHasItem() ) _gaq = bf.ga_trackEvent(_gaq, 'shop','add to bag', 'cart start');
      $('.userControls .btnBag').html(r.find('.btnBag').html());
      $('#header .bag .contents').html(r.find('.contents:first').html());
      // not elegant but necessary due to z-indexing issue
      var $o = $('#content .left .item').eq(this.itemIndex);
      var $n = r.find('.bag_editItem .item');
      $o.html($n.html())
        .attr('product_style', $n.attr('product_style'))
        .attr('product_size', $n.attr('product_size'))
        .attr('quantity', $n.attr('quantity'))
        .find('.btn_change').click(function(e){bf.bag_openEditItem(e,this,bf)});
      $('#content .subtotal span').html(r.find('.bag_editItemSubtotal').html());
      this.bf.bag_closeEditItem();
      this.bf.resetBagContentDependencies();
    }else{
      alert(r.html());
    }
  },

  revealAddToBagConfirmation:function($res){
    $('#header .addToBagConfirm .contents').html($res.find('.contents:eq(1)').html()).parent().slideDown(400);
  },
  
  hideAddToBagConfirmation:function(){
    $('#header .addToBagConfirm').slideUp(250);
  },

  addToBagConfirmationTracking:function(e,target){
    e.stopPropagation();
    var $t = $(target);
    var action;
    if($t.is('.checkout')) action = 'checkout'
    else if($t.is('.more')) action = 'view bag';
    else if($t.is('.continue')) action = 'continue';
    _gaq = this.ga_trackEvent(_gaq, 'shop',action,'recently added')   
  },

  shoppingBagControlTracking:function(e,target){
    e.stopPropagation();
    var $t = $(target);
    var action;
    if($t.is('.checkout')) action = 'checkout';
    else if($t.is('.more')) action = 'view bag';
    _gaq = this.ga_trackEvent(_gaq, 'shop',action,'bag');
  },

  bag_suggestedTracking:function(e,target){
    e.stopPropagation();
    _gaq = this.ga_trackEvent(_gaq, 'suggested','view item','bag')   
  },
  
  bag_removeItem:function(e){
    e.stopPropagation();
    _gaq = this.ga_trackEvent(_gaq, 'shop','remove','bag');
  },
  
  bag_pageControlsTracking:function(e,target){
    e.stopPropagation();
    var $t = $(target).parent();
    var action;
    if($t.is('.btn_remove_all')) action = 'remove all';
    else if($t.is('.btn_continue_shopping')) action = 'continue';
    else if($t.is('.btn_checkout')) action = 'checkout';
    _gaq = this.ga_trackEvent(_gaq, 'shop', action, 'bag');
  },
  
  bagHasItem:function(){
		return ($('#header .bag .contents li').length > 0);
  },
  
  resetBagContentDependencies:function(){
	if( this.bagHasItem() ){  
      $('#header .bag .additional').removeClass('none');
      $('#header .bag .controls a img, #category .quickOverlay .btnCheckout').removeClass('disabled');
      $('#product .btnCheckout img').removeClass('disabled');
      $('#quickShopOverlay .btnCheckout img').removeClass('disabled');
    }else{
      $('#header .bag .additional').addClass('none');
      $('#header .bag .controls a img, #category .quickOverlay .btnCheckout').addClass('disabled');
      $('#product .btnCheckout img').addClass('disabled');
      $('#quickShopOverlay .btnCheckout img').addClass('disabled');
    }
  },

  sendTwitterPost:function(e){
    e.stopPropagation();
    var p = $('#twitter_post');
    var hash = ' #girlcrush';
    var url = 'http://twitter.com/home?status='+ encodeURIComponent(p.val() + hash);
    window.open(url,'twitter');
    p.val('');
    _gaq = this.ga_trackEvent(_gaq, 'campaign','tweet', 'girlcrush');
  },  

  community_findLinkTracking:function(e,target){
    e.stopPropagation();
    var $t = $(target).parent();
    var action;
    if($t.is('.youtube')) action = 'youtube';
    else if($t.is('.flickr')) action = 'flickr';
    else if($t.is('.polyvore')) action = 'polyvore';
    else if($t.is('.lookbook')) action = 'lookbook.nu';
    else if($t.is('.chictopia')) action = 'chictopia';
    else if($t.is('.icon_twitter')) action = 'twitter';
    _gaq = this.ga_trackEvent(_gaq, 'community', action, 'link out');
  },
  
  community_loadLatestTweet:function(){
      $.get("http://blowfishshoes.com/twitter_proxy.php", function(res){
          var $i = $(res).find('status text').eq(0);
          var t = $i.text()
          //var url_pattern = new RegExp("((http|https)(:\/\/))?([a-zA-Z0-9]+[.]{1}){2}[a-zA-z0-9]+(\/{1}[a-zA-Z0-9]+)*\/?", "i");
          //var m = t.match(url_pattern);
          //console.log('<a href="'+m[0]+'">'+m[0]+'</a>');
          //if(m.length > 0) t.replace(/google/,'test');
          $(".tweet").html(t);
      });

  },
  
  hideAll:function(){
		this.hideAllMouseOvers(null);
		this.hideAllClicks(null);
	},

  ga_setTracker:function(debug){
    var debug = debug || null;
    //console.log('ga_setTracker called by ' +debug);
    try {
      if(typeof(pageTracker) == 'undefined' || pageTracker == null){
        pageTracker = _gat._getTracker(this.ga_account); 
        pageTracker._setDomainName('.blowfishshoes.com');

      }
    } catch(err) {}
    return pageTracker;
  },

 ga_trackPageView:function(page){
    var page = page || null;
    try {
      var t = this.ga_setTracker('ga_trackPageView');
      (page)  ? t._trackPageview(page) : t._trackPageview();
    } catch(err) {}    
  },
	
  //orderid, total, tax, shipping, city, state and country
  ga_openTransaction:function(orderId, promo, total, tax, shipping, city, st, country){
    _gaq.push(['_addTrans', orderId, promo, total, tax, shipping, city, st, country]);
  },
  
  ga_addItem:function(orderId, sku, name, category, price, quantity){
    _gaq.push(['_addItem', orderId, sku, name, category, price, quantity]);
  },

  ga_sendTransaction:function(){
    _gaq.push(['_trackTrans']);
  },
  
  ga_trackEvent:function(_gaq, cat, action, label, val){
    var label = label || null;
    var val = val || null;
    _gaq.push(['_trackEvent', cat, action, label, val])
    return _gaq;
  },
  
  flash_productClick:function(page){
    if(page == 'home'){
      _gaq = this.ga_trackEvent(_gaq, 'product overlay','view', 'home');
    }else{
      _gaq =  this.ga_trackEvent(_gaq, 'product overlay','view', 'style');
    }
  },
	
  flash_styleRevealTab:function(tab){
    _gaq = this.ga_trackEvent(_gaq, 'style','click.tab', ('tab.'+tab));
  },
	
  loadProductVideo:function(e,tar,bf){
    e.stopPropagation();
    tar.blur();

    // taken from tb_init in thickbox.js
    var t = tar.title || this.name || null;
    var a = (tar.href) ? $(tar).attr('href') : tar.alt;
    var g = tar.rel || false;
    var videoId = $(tar).attr('video');
    tb_show(t,a,g);
    
		var flashvars = {};
		var params = {}
		var attributes = {};
		var w, h, url, id;
		params.wmode = 'transparent';
  	params.width = "640";
		params.height = "385";
		w =  640;
		h =  385;
		url = "http://www.youtube.com/v/"+videoId+"?fs=1&amp;hl=en_US&rel=1&autoplay=1&loop=1&fs=1&showinfo=0";
		id = "productVid";

   
    if($(tar).is('.btn-video')){
      _gaq = bf.ga_trackEvent(_gaq, 'product videos','PCP view', videoId);
    }else{
         console.log('here')
 
      _gaq = bf.ga_trackEvent(_gaq, 'product overlay','PDP view', videoId);
    }

		swfobject.embedSWF(url, id, w, h, "7.0",null, flashvars, params, attributes);


    return false;
	},
	
	loadFlash:function(){
		var flashvars = {};
		var params = {}
		var attributes = {};
		var w, h, url=null, altImg = null,id;
		params.scale = "noscale";
		params.wmode = 'transparent';
		switch(this.page){
			
      case 'home':
				params = {
          'codebase': 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0',
          'width' : "1107",
          'height': "646",
          'quality': 'high',
          'play': 'true',
          'loop': 'true',
          'scale': 'showall',
          'wmode': 'transparent',
          'devicefont': 'false',
          'menu': 'true',
          'allowFullScreen': 'false',
          'allowScriptAccess':'always',
          'movie': 'Blowfish_Preloader',
          'salign': ''
        };
        flashvars.asset_path = this.blogCDN+'/swf/home/';
          

        attributes = {
          'align': 'middle'
        };
				w =  1107;
				h =  646;
				url = flashvars.asset_path+'BlowfishHome_Preloader.swf';
				id = "flash";
		        altImg = '#home #flash img';
				break;
			case 'style':
				params = {
          'codebase': 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0',
          'width' : "964",
          'height': "742",
          'quality': 'high',
          'play': 'true',
          'loop': 'true',
          'scale': 'showall',
          'wmode': 'transparent',
          'devicefont': 'false',
          'menu': 'true',
          'allowFullScreen': 'false',
          'allowScriptAccess':'always',
          'movie': 'Blowfish_Preloader',
          'salign': ''
        };
        flashvars.asset_path = this.blogCDN+'/swf/style/';
          

        attributes = {
          'align': 'middle'
        };
				w =  964;
				h =  742;
				url = flashvars.asset_path+'Blowfish_Preloader.swf';
				id = "flash";
				altImg = '#style #flash img';
				break;				
		}

	    if( url ) swfobject.embedSWF(url, id, w, h, "9",this.blogCDN+"/swf/expressInstall.swf", flashvars, params, attributes);
	    if (altImg) setTimeout(function(){  $(altImg).addClass('noflash') }, 1500);
	  },

	removeMaintMessage:function(e){
	    $('#maintenance').remove();
	    $('.framework').removeClass('server_msg_on');
	},
	  
	getMovie:function ( movieName ){
		// IE and Netscape refer to the movie object differently.
		
		// This function returns the appropriate syntax depending on the browser.
		if (navigator.appName.indexOf ("Microsoft") !=-1) {
			return window[movieName];
		}	else {
			return document[movieName];
		}
	},

	setFlashVar:function( movie, name, val ){
		var movie = (typeof movie == 'string') ? this.getMovie(movie) : movie
		if(movie != null && movie.SetVariable) 	movie.SetVariable( name,val);
	},
	
	stopPropagation:function(e){
		var e = e || null;
		if(e) e.stopPropagation();
		return false;	
	},

	destroy:function(ob){
		ob = null;
	},
	
	showSizeChart:function(e){
  	e.stopPropagation();
  	$('#size_overlay').show();
  
  },
  
  hideSizeChart:function(e){
  	e.stopPropagation();
  	$('#size_overlay').hide();
  
  },
  
  getMOTM:function(){
  
	// using jq163 instead of $ in order to access new js library
	jq163.getJSON('http://gdata.youtube.com/feeds/api/playlists/E4627B1E29858644?v=2&max-results=1&alt=jsonc&callback=?', function(json){
	
		var title = json.data.items[0].video.title;
		var url = json.data.items[0].video.player["default"].substring(31,42);
		var img = json.data.items[0].video.thumbnail.hqDefault;
		
		jq163('#motm_inline').html('<iframe width="376" height="192" src="http://www.youtube.com/embed/' + url + '?controls=1&showinfo=0&wmode=opaque&autohide=1" frameborder="0" allowfullscreen></iframe>');
		jq163('#motm_title').html(title);
		jq163('#motm_image').css({
			'background': 'url("' + img + '") no-repeat',
			'backgroundSize': 'cover'
		})
		jq163('#motm_inner').html('<object width="560" height="345"><param name="movie" value="http://www.youtube.com/v/' + url + '&hl=en_US&fs=1&rel=0&color1=0x9d6fce&color2=0x9d6fce"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/' + url + '&hl=en_US&fs=1&rel=0&color1=0x9d6fce&color2=0x9d6fce" type="application/x-shockwave-flash" width="560" height="345" allowscriptaccess="always" allowfullscreen="true"></embed></object>');
		
	
	});
  
  },
  
  changeHolidayBanner:function(){
		var d = new Date();
		var dd = d.getDate();
		var mm = d.getMonth() + 1;
		
		if(mm == 12 && dd >= 23 && dd < 27){
			$('#hbanner').removeClass('b1').addClass('b2');
		}

		if((mm == 12 && dd >= 29) || (mm == 1)){
			$('#hbanner').removeClass('b1').addClass('b3');
		}
	}
}

 
