var j = jQuery.noConflict( );
var lastLeftMargin = 0;

function sD( elem ) { j(elem).slideDown(400); } //console.log("d:" + elem); }
function sU( elem ) { j(elem).slideUp(400); } //console.log("u:" + elem);}
function l( msg ) { console.log( msg ); }
 
function Dialog( content, newwidth, modal ){
        
        if( modal == true ) { MakeModal( ); }
        
        var contentIsPanelRef = ( content.substr( 0, 1 ) == '#' );          
        if( contentIsPanelRef )
        {
            var copy = j("#c_dialog").find( content );
            var ctclass = content.replace(/#/,'');
            
            // first show
            if( j(copy).length == 0 )
            {   
                copy = j("#status").clone();                
                j(copy).appendTo("#c_dialog");                
                j(copy).attr("class",ctclass);
                                
                var nc = j(content);
                j(copy).find(".loading").html( nc );
                
                if( j(copy).find("#fancy_close").length == 0 )
                    j(copy).find("#status_inner").append( "<div id='fancy_close' style='display: block;'></div> " );
            }
            else
            {
                copy = j("#c_dialog").find('.' + ctclass );
                j(copy).fadeIn(400);
            }   
        }
        else
        {           
            var copy = j("#c_dialog #status");
            if( j(copy).length == 0 )
            {   
                copy = j("#status").clone();                
                j(copy).appendTo("#c_dialog");
                
            }
            j(copy).find(".loading").html( content );
            
            if( j(copy).find("#fancy_close").length == 0 )
                j(copy).find("#status_inner").append( "<div id='fancy_close' style='display: block;'></div> " );        
                      
        }
        
        
                
        
        if( ( typeof newwidth != 'undefined' ) && ( newwidth > 0 ) )
        {            
            var leftMargin =  newwidth / -2;            
            j(copy).animate({width: newwidth, marginLeft: leftMargin}, 300);            
        }
        else{ 
            j(copy).fadeIn(400);             
        }
        /*
            try
            {
                var calcwidth = j(content).width() + 18 + 18 + 1 + 1;                
                var leftMargin =  calcwidth / -2;            
                j(copy).animate({width: calcwidth, marginLeft: leftMargin}, 500);
            }
            catch(e)
            {
                console.log(e);
                j(copy).fadeIn(400);             
            }
        }
        */
        j(copy).find("#fancy_close").click( CloseDialog );
 }    
 
 
 function CloseDialog( )
 {         
        j("#c_dialog #modal").fadeOut(400).remove();        
        j("#c_dialog > div:visible").each( function(){   
            if( j(this).attr("id") == "status" ) {
                j(this).fadeOut(400);
            }
        });
        j("#c_dialog").find(".videoplayer").remove();
 }
 
 
 function CloseWithDelay( delay )
 {
    if( ( typeof delay != 'undefined' ) && ( parseInt( delay ) > 0 ) )
        setTimeout( "CloseDialog();", parseInt( delay ) );
    else
        CloseDialog( );
 }

 
 
 function MakeModal( ){ j("#modal").clone().appendTo("#c_dialog"); }
 
 function ShowPossibilities( CssClasses )
 {
    
    GetValidChoices( 
        CssClasses.replace(/allsoldout/i,"")
            .replace(/imageoption/i,"")
            .replace(/option/i,"")
            .replace(/\s+/g, ";")
            .split(',') );
 }
 
 function GetValidChoices ( CssArray )
 {
    sku = ( CssArray.length > 1 ) ? CssArray[1].replace(/{/i,"").substr(0,6) : "nada" ;            
    container = j("#variantpicker").find(".picker_" + sku );
                
    j(container).find( "input" ).not( ".selected").addClass("soldout");
    for( var i = 0; i < CssArray.length; i++ )
    {                
            var opt = CssArray[ i ];            
            if (opt.length>1)
             j(container).find( "input." + opt ).removeClass("soldout");
    }
 }    
 
 // expanding additional service details on request
 function expandservicedetails( sender ) { j(sender).parent().toggleClass("viewlist"); }     

 j( "document" ).ready( function( ){
                
    // common logging function    
    function log( msg ){ 
        //console.log( msg ); //FF
        //alert( msg ); //IE
    }   
            
    /* left-adjusting flyout menu if it passes outside main area's right border *************************************/
    // get right lim
    
    try{
        var rlim = j('#c_header').offset().left + j("#c_header").width( ) - 22;
        log( "body rightmost limit: " + rlim );
    }
    catch(e){ log(e);}
        
    // adjust per item in top menu        
    j('#c_menu').find('.top').hover( 
        function( ){                               
            // because IE won't calculate pos and dimensions on hidden elements
            j(this).find('.flyout').css("display","block" );             
            // ensuring we run this only once per menu item
            if( j(this).hasClass('shifted') ) return;            
            j(this).addClass('shifted');
            
            var shiftleft = 0;            
            j(this).find('.wrapMain:first').queue( function(){                                
                
                var subwidth = j(this).width( );                
                var subleft = j(this).offset( ).left;        
                
                if( subleft + subwidth > rlim ){                
                    shiftleft = rlim - ( subleft + subwidth );                    
                }
            });
            if( shiftleft != 0 ){
                j(this).find('.flyout').css("margin-left",shiftleft + "px" );
                log( "shifted" + shiftleft + "px left" );
            };
            var maxheight = j(this).find('.wrapMenu').height();
            j(this).find('.wrapMenu').find('.navMain').each( function() {
                j(this).css("height",maxheight + "px");
            });
        },
        function() { 
            // because IE won't calculate pos and dimensions on hidden elements
            j(this).find('.flyout').css("display","none" ); 
            
        }   
        
    );  
    
    j(".navContainer").queue(function(){            
            var maxheight = j(this).height();
            j(this).find('.navBlock').each( function() {
                j(this).css("height",maxheight + "px");
            });
    }); 
    
    j("img.hover").hover(function(){
    	var str = j(this).attr("src");
	    var patt1=/\./;
	    var newUrl = str.replace(patt1, "_hover.");
	    j(this).attr("src", newUrl);
    }, function(){
	    var str = j(this).attr("src");
	    var newUrl = str.replace("_hover", "");
	    j(this).attr("src", newUrl);
    });
           
    /* in repeater with radiobuttons, select only one at a time ****************************************************/    
    j("#radiogroup").find("input:radio").click(        
          function(){
            var sel = j(this);                        
            j("#radiogroup").find("input:checked").each(       
                function(){ j(this).attr("checked", ( j(this).attr("id") == sel.attr("id" ) ) ); }
            );}
    );
    
           
           
    /* subcategorylisting hover effect *****************************************************************************/
    j("#subcategorylist").find(".subcategoryitem").hover(function(){
            j(this).css("border-bottom-color","#00aee4");
            j(this).find(".info").find("a").css("color","#00aee4");
            j(this).css("cursor","pointer");
            var url = j(this).find(".info").find("a").attr("href");
            j(this).click(function(){
                window.location = url;
            });
            },function(){ 
            j(this).find(".info").find("a").css("color","");
            j(this).css("border-bottom-color","#737373"); }
    );
        
    j("#subcategorylist").find( ".frame" ).hover(
        function( ){ j(this).find(".infooverlay").css("display", "inline"); },
        function( ){ j(this).find(".infooverlay").css("display", "none"); }
    );
    
    
    j(".productlisting").hover(
        function(){
            j(this).css("cursor","pointer");
            var url = j(this).find(".header a").attr("href");
            j(this).click(function(){
                window.location = url;
            });
            j(this).find(".header").addClass("hover");
        }, function(){
            j(this).find(".header").removeClass("hover")
    });
   
    /* internal links ( href=# ), adding smooth scrolling to named anchors *****************************************/
/*    function filterPath(string) {
        return string
          .replace(/^\//,'')
          .replace(/(index|default).[a-zA-Z]{3,4}$/,'')
          .replace(/\/$/,'');
    }
    
    j('a[href*=#]').each(function() {
        if ( filterPath(location.pathname) == filterPath(this.pathname)
        && location.hostname == this.hostname
        && this.hash.replace(/#/,'') ) {
          var $targetId = j(this.hash), $targetAnchor = j('[name=' + this.hash.slice(1) +']');
          var $target = $targetId.length ? $targetId : $targetAnchor.length ? $targetAnchor : false;
            if ($target) {
                var targetOffset = $target.offset().top - 10;
                j(this).click(function() {
                    //console.log(targetOffset);
                    j('html, body').animate({scrollTop: targetOffset}, 600);
                    return false;
                });
            }
            }
     });    
*/       
     /* displaying variant title on mouseover ***********************************************************************/               
     
     /* create array */
     var OptArray = new Array( );
     j("#variantpicker").find('input.option,input.selected').each(function(){        
        var cls = j(this).attr("class").replace(/allsoldout/i,"").replace(/imageoption/i,"").replace(/option/i,"").replace(/\s+/g, ";");
        OptArray[ j(this).attr("id") ] = cls.split(';');
     });
     
     // need to wrap to reattach
     j("#variantpicker").hover(
        function(){            
            j(this).find('input.option,input.selected').not(".c").hover( 
                function(){                         
                    j(this).parent().find("span.value").remove();
                    j(this).parent().find('h4').append("<span class='value'>&nbsp;" + j(this).attr("title") +"</span>");            
                    GetValidChoices( OptArray[ j(this).attr("id") ] );                 
                    j(this).siblings().removeClass("soldout");
                },
                function(){                    
                    j(this).parent().find("span.value").remove();
                    j("#variantpicker").find( "input" ).removeClass("soldout");
                });
            j(this).find('input').addClass("c");
        },function(){}
    );
     
     /* product page  ***********************************************************************************************/          

     
     j(".prodpreview").hover(
        function(){j(this).addClass('hover');},
        function(){j(this).removeClass('hover');}
     );
     
     j("ul.tabs").tabs("div.panes > div");
     
     //*
     /* show tooltip ***********************************************************************************************/          
     j("#invokeadvice *").hover(
        function(){ 
            
            if( j('#adviceTooltip>span').hasClass("advice" ) == false ) return;
            j(this).mouseover(function(e){
                var x = e.pageX;
                var y = e.pageY;            
                                 
                var px = 14 + x + "px";
                var py = -14 + y + "px";            
                        
                j('#adviceTooltip').show().css( {left: px, top: py });
          });
        },
        function() { 
            j('#adviceTooltip').fadeOut(500);
            
        }
    );
    
    j("#c_slidedown").find("input").focus(
        function(){ 
            if( j(this).hasClass( "clickreset" ) ){
              j(this).removeClass( "clickreset" );
              j(this).val( "" );
            }            
        }
    );
   
   
    
   
   
    /* show/hide store types ***************************************************************************************/          
    j("#storetype").find("input:checkbox").click(
        function(){             
            var view = [];
            
            j("#storetype").find("input:checked").each( function(){ view.push( j(this).val() ); });            
            j("#storesList>li").hide();            
            for( var i = 0; i < view.length; i++ )
            {                    
                var cview = "." + view[i];
                j("#storesList").find(cview).show()
            }
        }
    );
    
    
    /* show/hide store types ***************************************************************************************/          
    j("#specialityfilter").find("input:checkbox").click(
        function(){             
            var view = [];
            
            j("#specialityfilter").find("input:checked").each( function(){ view.push( j(this).val() ); });            
            j("#storesList>li").hide();            
            for( var i = 0; i < view.length; i++ )
            {                    
                var cview = "." + view[i];
//                console.log( cview );
                j("#storesList").find(cview).show()
            }
        }
    );
   
    
    
    /* modal lock/unlock *******************************************************************************************/          
    
     
    growmodal( j("#modal") );
    function growmodal( elem )
    {                   
        j(elem).css({'width': j(window).width(), 'height': j(document).height(), 'opacity': 0.4});    
    }
    
    //posstatus( j("#status") );
    function posstatus( elem )
    {   
        var leftcorner = j( elem ).css("width").replace(/px/i, "") / 2;     
        var screenx = j(window).width( ) / 2;
        var xadj = screenx - leftcorner + "px";
        j( elem ).css({ left: xadj });
    }
    
     
});



