/*
 * jqModal - Minimalist Modaling with jQuery
 *   (http://dev.iceburg.net/jquery/jqModal/)
 *
 * Copyright (c) 2007,2008 Brice Burgess <bhb@iceburg.net>
 * Dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
 * 
 * $Version: 03/01/2009 +r14
 */
(function($) {
$.fn.jqm=function(o){
var p={
overlay: 50,
overlayClass: 'jqmOverlay',
closeClass: 'jqmClose',
trigger: '.jqModal',
ajax: F,
ajaxText: '',
target: F,
modal: F,
toTop: F,
onShow: F,
onHide: F,
onLoad: F
};
return this.each(function(){if(this._jqm)return H[this._jqm].c=$.extend({},H[this._jqm].c,o);s++;this._jqm=s;
H[s]={c:$.extend(p,$.jqm.params,o),a:F,w:$(this).addClass('jqmID'+s),s:s};
if(p.trigger)$(this).jqmAddTrigger(p.trigger);
});};

$.fn.jqmAddClose=function(e){return hs(this,e,'jqmHide');};
$.fn.jqmAddTrigger=function(e){return hs(this,e,'jqmShow');};
$.fn.jqmShow=function(t){return this.each(function(){t=t||window.event;$.jqm.open(this._jqm,t);});};
$.fn.jqmHide=function(t){return this.each(function(){t=t||window.event;$.jqm.close(this._jqm,t)});};

$.jqm = {
hash:{},
open:function(s,t){var h=H[s],c=h.c,cc='.'+c.closeClass,z=(parseInt(h.w.css('z-index'))),z=(z>0)?z:3000,o=$('<div></div>').css({height:'100%',width:'100%',position:'fixed',left:0,top:0,'z-index':z-1,opacity:c.overlay/100});if(h.a)return F;h.t=t;h.a=true;h.w.css('z-index',z);
 if(c.modal) {if(!A[0])L('bind');A.push(s);}
 else if(c.overlay > 0)h.w.jqmAddClose(o);
 else o=F;

 h.o=(o)?o.addClass(c.overlayClass).prependTo('body'):F;
 if(ie6){$('html,body').css({height:'100%',width:'100%'});if(o){o=o.css({position:'absolute'})[0];for(var y in {Top:1,Left:1})o.style.setExpression(y.toLowerCase(),"(_=(document.documentElement.scroll"+y+" || document.body.scroll"+y+"))+'px'");}}

 if(c.ajax) {var r=c.target||h.w,u=c.ajax,r=(typeof r == 'string')?$(r,h.w):$(r),u=(u.substr(0,1) == '@')?$(t).attr(u.substring(1)):u;
  r.html(c.ajaxText).load(u,function(){if(c.onLoad)c.onLoad.call(this,h);if(cc)h.w.jqmAddClose($(cc,h.w));e(h);});}
 else if(cc)h.w.jqmAddClose($(cc,h.w));

 if(c.toTop&&h.o)h.w.before('<span id="jqmP'+h.w[0]._jqm+'"></span>').insertAfter(h.o);	
 (c.onShow)?c.onShow(h):h.w.show();e(h);return F;
},
close:function(s){var h=H[s];if(!h.a)return F;h.a=F;
 if(A[0]){A.pop();if(!A[0])L('unbind');}
 if(h.c.toTop&&h.o)$('#jqmP'+h.w[0]._jqm).after(h.w).remove();
 if(h.c.onHide)h.c.onHide(h);else{h.w.hide();if(h.o)h.o.remove();} return F;
},
params:{}};
var s=0,H=$.jqm.hash,A=[],ie6=$.browser.msie&&($.browser.version == "6.0"),F=false,
i=$('<iframe src="javascript:false;document.write(\'\');" class="jqm"></iframe>').css({opacity:0}),
e=function(h){if(ie6)if(h.o)h.o.html('<p style="width:100%;height:100%"/>').prepend(i);else if(!$('iframe.jqm',h.w)[0])h.w.prepend(i); f(h);},
f=function(h){try{$(':input:visible',h.w)[0].focus();}catch(_){}},
L=function(t){$()[t]("keypress",m)[t]("keydown",m)[t]("mousedown",m);},
m=function(e){var h=H[A[A.length-1]],r=(!$(e.target).parents('.jqmID'+h.s)[0]);if(r)f(h);return !r;},
hs=function(w,t,c){return w.each(function(){var s=this._jqm;$(t).each(function() {
 if(!this[c]){this[c]=[];$(this).click(function(){for(var i in {jqmShow:1,jqmHide:1})for(var s in this[i])if(H[this[i][s]])H[this[i][s]].w[i](this);return F;});}this[c].push(s);});});};
})(jQuery);

$.timer = function(time,func,callback){
	var a = {timer:setTimeout(func,time),callback:null}
	if(typeof(callback) == 'function'){a.callback = callback;}
	return a;
};

$.clearTimer = function(a){
	clearTimeout(a.timer);
	if(typeof(a.callback) == 'function'){a.callback();};
	return this;
};

  var __wid = 0;
  var __co;
  
  var loadInIframeModal =  
	function(hash){
	    var $trigger = $(hash.t);
	    var $modal = $(hash.w);
	    var __url = $trigger.attr('url');
	    var __title = $trigger.attr('title');
	    var __args = $trigger.attr('args');
	    var $modalContent = $('iframe', $modal);
	    var __loader = $('#jqmloader')[0];
	    var __qs = "", __p = "";
	    var __scrT = $(document).scrollTop();
	    var __objT = Math.round($('.jqmWindow').offset().top);
	   
	    var __dW = Math.round($('.jqmWindow').width());
	    
	    // Modify CSS
	    $('.jqmWindow').css({ marginTop: '60px', marginLeft: '-'+(Math.round(__dW/2))+'px' , background:'#fff', top: (__scrT+__objT)+'px'});
	    $('.jqmWrapper').css({background:'#fff'});
	    $modalContent.css({ background:'#fff'});

	    // Set title
	    $('.jqmTitle').html(__title); 
	    var $cardnumber = $('#gift-card-number');
            var $pin = $('#gift-card-pin');
    
	    // Get Arguments to pass to Iframe in Querystring.
	    if(__args) {
	    	var __a = __args.split("|");
	    	var __alen = __a.length;
	    	for(var ___i=0;___i<__alen;___i++) {
	    		__p = __a[___i];
	    		if(___i==0) __qs+="?";
	    		__qs += __p + "=" + $('#' + __p).val();
	    		if((___i+1) < __alen)
	    			__qs += "&";
	    	} 	
	    }
	    if ($pin.length>0 && $cardnumber.length>0) {
	    __qs= __qs+"?pin="+$pin.val()+"&cardnumber="+$cardnumber.val();
	    }
	   
	    // Loading...
	    var $body = $('body', $modalContent[0].contentWindow.document);                
		$body.html("<div style='color:#BEBEBE;'><img src='../images/loading-progress-98x22.gif' alt='Loading...' /></div>");
		
		// Show Modal
		hash.w.show();
		
	    $modalContent.html('').attr('src', __url + __qs);
	}
 
  var loadInModal = 
		function(hash){
		    var $trigger = $(hash.t);
		    var $modal = $(hash.w);
		    var __url = $trigger.attr('url');
		    var __title = $trigger.attr('title');
		    var __args = $trigger.attr('args');
		    var $modalContent = $('#jqmContent', $modal);
		    var __qs = "", __p = "";
		    var __scrT = $(document).scrollTop();
		    var __objT = Math.round($('.jqmWindow').offset().top);	   
		    var __dW = Math.round($('.jqmWindow').width());
		    
		    // Modify CSS
		    $('.jqmWindow').css({ marginTop: '60px',  background:'#fff', top: (__scrT+__objT)+'px'});
		    $('.jqmWrapper').css({background:'#fff'});
		    $modalContent.css({ background:'#fff'});
		    
		    // Set title
		    $('.jqmTitle').html(__title); 

		    // Get Arguments to pass in Querystring.
		    if(__args) {
		    	var __a = __args.split("|");
		    	var __alen = __a.length;
		    	for(var ___i=0;___i<__alen;___i++) {
		    		__p = __a[___i];
		    		//if(___i==0) __qs+="?";
		    		__qs += __p + "=" + $('#' + __p).val();
		    		if((___i+1) < __alen)
		    			__qs += "&";
		    	} 	
		    }
		    
			// Show Modal
			hash.w.show();
			
			$.ajax({ 
				type: "GET",
	   			url: __url,
	   			data: __qs,
	   			success: function(response){
					$modalContent.html(response);
	   			},
	   			error:function(){
	   				$modalContent.html('An error occurred.');
	   			}
			});
		}
  
  var loadInGridModal =
	  function(hash) {
	  	var $modal = $(hash.w);
	  	//var __url = "/on/demandware.store/Sites-Sorel_US-Site/default/Modal-ProductImages?pid=" + __co.id;
	  	var __url = window.ModalProductURL+"?pid="+ __co.id;
	  	
	  	var __img_w = 170;
	  	var __img_w_grid = 104;
	  	var __img_h_grid = 104;
	  	var __imgcount = 0;
	  	var __modalPos = 0;
	  	var __scrL = $(document).scrollLeft();
	  	var __maxright = (Math.round($('#wrapper-grid').offset().left) + 856);
	  	var __maxleft = Math.round($('#wrapper-grid').offset().left);
	  	var __imgOffsetL = Math.round($(__co).offset().left);
	  	var __imgOffsetT = Math.round($(__co).offset().top);
	  	
	  	hash.w.show();
	  	
	  	// ajax call to get product images  	
	  	$.ajax({ 
			type: "GET",
   			url: __url,
   			success: function(response){
	  			__imgcount = $('#jqmContent').html(response).find("img").size();
	  			__modalPos = ((__imgOffsetL + (__img_w_grid / 2)) - ((__img_w * __imgcount) / 2));
	  			$('.jqmWindow').css({
					top: (__imgOffsetT - (__img_h_grid / 3))+'px'
					,left: ( ( __modalPos + (__img_w * __imgcount)) > __maxright
							  ? (( (__img_w * __imgcount) - __maxright) * -1)+'px' 
							  : ( __modalPos < 0 ? __scrL - 0 : __modalPos )+'px' )
					});
   			},
   			error:function(){
   				
   			}
		});
  	  }
  
  var closeIframeModal =
	  function(hash) {
	  	var $modal = $(hash.w);	  	
	  	$modal.fadeOut('2000', function() { hash.o.remove(); });
  	  }
  var closeModal =
	  function(hash) {
	  	var $modal = $(hash.w);	  	
	  	$modal.fadeOut('2000', function() { hash.o.remove(); });
	  	$('#jqmContent').html('');
  	  }
  
  $('#modalPopup').jqm({overlay: 1, modal: false, trigger: false, onShow:loadInGridModal, onHide: closeModal });
  $('#modalPopup').hover( function() { }, function() { $('#modalPopup').jqmHide(); } ); 
  
  /************************************************************************************************************/
  var MWForgotPassword = function() {
	  $('#ForgotPassword').jqm({ modal: true
		  , overlay: 80
		  , trigger: 'a.forgot_password'
		  , target: '#jqmContent'
		  , onShow: loadInIframeModal
		  , onHide: closeIframeModal });
	  }
  var MWAddEditAddress = function() {
	  $('#AddEditAddress').jqm({ modal: true
		  , overlay: 80
		  , trigger: 'a.mw_address'
		  , target: '#jqmContent'
		  , onShow: loadInIframeModal
		  , onHide: closeIframeModal });
	  }
  
  var MWAddEditCreditCard = function() {
	  $('#AddEditCreditCard').jqm({ modal: true
		  , overlay: 80
		  , trigger: 'a.mw_card'
		  , target: '#jqmContent'
		  , onShow: loadInIframeModal
		  , onHide: closeIframeModal });
	  }
  
  var MWNewsletterSignup = function() {
	  $('#NewsletterSignup').jqm({ modal: true
		  , overlay: 80
		  , trigger: 'a.newsletter-signup'
		  , target: '#jqmContent'
		  , onShow: loadInModal
		  , onHide: closeModal });
	  } 
  
  var MWEmailWhatIsThis = function() {
	  $('#EmailWhatIsThis').jqm({ modal: true
		  , overlay: 80
		  , trigger: 'a.email-whatisthis'
		  , target: '#jqmContent'
		  , onShow: loadInIframeModal
		  , onHide: closeIframeModal });
	  } 

  var MWGiftCardPolicy = function() {
	  $('#GiftCardPolicy').jqm({ modal: true
		  , overlay: 80
		  , trigger: 'a.giftcardpolicy'
		  , target: '#jqmContent'
		  , onShow: loadInIframeModal
		  , onHide: closeIframeModal });
	  } 

  var MWTempRating = function() {
	  $('#TempRatingModal').jqm({ modal: true
		  , overlay: 80
		  , trigger: 'a.tempratingmodal'
		  , target: '#jqmContent'
		  , onShow: loadInIframeModal
		  , onHide: closeIframeModal });
	  } 
  
  var MWSizeChart = function() {
	  $('#SizeChartModal').jqm({ modal: true
		  , overlay: 80
		  , trigger: 'a.sizechartmodal'
		  , target: '#jqmContent'
		  , onShow: loadInIframeModal
		  , onHide: closeIframeModal });
	  } 
  
  var MWWLShare = function() {
	  $('#WLShareModal').jqm({ modal: true
		  , overlay: 80
		  , trigger: 'a.wlsharemodal'
		  , target: '#jqmContent'
		  , onShow: loadInIframeModal
		  , onHide: closeIframeModal });
	  }
  
  var MWGiftCardPinWhatIsThis = function() {
	  $('#GiftCardPinWhatIsThis').jqm({ modal: true
		  , overlay: 80
		  , trigger: 'a.giftcard-pin-whatisthis'
		  , target: '#jqmContent'
		  , onShow: loadInIframeModal
		  , onHide: closeIframeModal });
	  }
 
  var MWGiftCardCheckBalance = function() {
	  $('#GiftCardCheckBalance').jqm({ modal: true
		  , overlay: 80
		  , trigger: 'a.gc_check_balance'
		  , target: '#jqmContent'
		  , onShow: loadInIframeModal
		  , onHide: closeIframeModal });
	  }
  
  var MWFlipBook = function() {
	  $('#FlipBook').jqm({ modal: true
		  , overlay: 80
		  , trigger: 'a.flipbook_trig'
		  , target: '#flipbook'
		  , onShow: loadInModal
		  , onHide: closeIframeModal });
	  }
  
  var MWHolidayShippingDetails = function() {
	  $('#HolidayShippingDetails').jqm({ modal: true
		  , overlay: 80
		  , trigger: 'a.shippingDetails_trig'
		  , target: '#jqmContent'
		  , onShow: loadInModal
		  , onHide: closeModal });
	  }
  
  $('.product_img').hover( 
			function() {
				__co = this;
				__wid = $.timer('250', function() { $('#modalPopup').jqmShow();} )
			},
			function() {
				$.clearTimer(__wid);
			}			
  );
  

