
//Template preview functions (begin) --------------------------------------
var previewTimeout;
var hintTimeout;

function showPreview(wrapper,heading,image,title,src,width,height) {
    image.src=src;
    image.width=width;
    image.height=height;
    heading.innerHTML=title;
    previewTimeout = setTimeout(function (){wrapper.display='block'},250);
}

function hidePreview(wrapper,heading,image) {
    clearTimeout(previewTimeout);
    image.src="";
    image.width=0;
    image.height=0;
    heading.innerHTML="";
    wrapper.display='none'; 
}

function previewMouseFollow(event,wrapper,width,height,winWidth,winHeight,topOffset) {
    pageX=event.pageX;
    pageY=event.pageY;
    previewOffsetTop=(winHeight-height)/2;
    previewOffsetLeft=(winWidth-width)/2;
    correctedTopOffset=previewOffsetTop+topOffset;
    offset=30;
    centered=false;
    if (winHeight > height) {
        if (pageY<correctedTopOffset-offset) {pageY=pageY+offset;}
        else if (pageY>correctedTopOffset+height+offset) {pageY=pageY-offset-height;}
        else {pageY=correctedTopOffset; centered=true;}
    }
    else {
        pageY=topOffset;
        centered=true;
    }
    if (centered) {
        if (pageX<winWidth/2) {pageX+=offset;}
        else {pageX=pageX-width-offset;}
    }
    else {
        if (pageX<previewOffsetLeft-offset) {pageX=pageX+offset;}
        else if (pageX>previewOffsetLeft+width+offset) {pageX=pageX-width-offset;}
        else {pageX=previewOffsetLeft;}
    }
    wrapper.left=pageX+'px';
    wrapper.top=pageY+'px';
}

//Template preview functions (end) ----------------------------------------

//Top Rollover functions (begin) ------------------------------------------

function showPopup(popUp) {popUp.slideDown(300).data('visible',true);}

function hidePopup(popUp) {popUp.slideUp(300,function(){popUp.data('visible',false)});}

//Top Rollover functions (end) -------------------------------------------

//Price description popup functions (begin) ------------------------------

function showPriceHint(hint,currentElement,hintType) {
    var hintValue='';
    if (hintType=='price') {
        var elemId=currentElement.data('id');
        var priceTitle=document.getElementById(elemId);
        hintValue=priceTitle.innerHTML;
    }
    else if (hintType=='type') {
        hintValue='<p>'+currentElement.data('alt')+'</p>';
    }
    hint.innerHTML=hintValue;
    hint.style.display='block';
    hintTimeout = setTimeout(function (){hint.style.visibility='visible';},250);
}

function hidePriceHint (hint) {
    hint.style.display='none';
    hint.style.visibility='hidden';
    clearTimeout(hintTimeout);
}

function hintMouseFollow(event,priceHint,windowHeight,windowWidth,hintHeight,hintWidth,topOffset) {
    var x=event.pageX+15;
    var y=event.pageY;
    var correctedY=windowHeight-10-hintHeight+topOffset
    var correctedX=windowWidth-10-hintWidth;
    if (correctedY<y) {y=correctedY;}
    if (correctedX<x) {x=x-hintWidth-30}
    priceHint.style.left=x+'px';
    priceHint.style.top=y+'px';
}

//Price description popup functions (end) --------------------------------



    //-----*    Events     *-----//

$(function() {
    
    var popUp=$('#networkBarPopup');
    var currentWindow=$(window);
    var windowObj = new Object();
        windowObj.width = currentWindow.width();
        windowObj.height = currentWindow.height();
        windowObj.scrollTop = currentWindow.scrollTop();
    var previewWrapper=document.getElementById('templatePreviewWrapper').style;
    var previewHeading=document.getElementById('templatePreviewHeading');
    var previewImage=document.getElementById('templatePreviewImage');
    var previewProgress=document.getElementById('templatePreviewProgressBar');
    var priceHint=document.getElementById('altDiv');
    var hint = new Object();

//Top Rollover events (begin) --------------------------------------------

    $('#networkBarButton').bind('mouseenter', function() {if (!popUp.data('visible')) {showPopup(popUp);}});
    $('#networkBar').bind('mouseleave', function() {if (popUp.data('visible')) {hidePopup(popUp);}});

//Top Rollover events (end) ----------------------------------------------

//Template preview events (begin) ----------------------------------------

    previewImage.onload=function() {previewProgress.style.display='none';}
    currentWindow.resize(function(){windowObj.width=$(this).width();windowObj.height=$(this).height();}).scroll(function(){windowObj.scrollTop=$(this).scrollTop();});
    $.each(templatesArray, function(index,value) {
        var currentTemplate=$('#'+value.id);
        var widthOffset=32;
        var heightOffset=53;
        var display;
        currentTemplate.hover(
            function() {
                previewProgress.style.display="block";
                previewWidth=value.width+widthOffset;
                previewHeight=value.height+heightOffset;
                if(windowObj.width > previewWidth) {display=true} else {display=false}
                if(display){showPreview(previewWrapper,previewHeading,previewImage,value.title,value.src,value.width,value.height)}
            },
            function() {hidePreview(previewWrapper,previewHeading,previewImage)}
        ).mousemove(function(event) {if(display){previewMouseFollow(event,previewWrapper,previewWidth,previewHeight,windowObj.width,windowObj.height,windowObj.scrollTop)}});
    });
    
//Template preview events (end) ------------------------------------------

//Price description popup events (begin) ---------------------------------
    
    $("span.price-label.altTitle, a.last.altTitle").each(function() {
        var currentElement=$(this);
        currentElement.data('id',currentElement.attr('title')).attr('title','');
    }).hover(function() {
        showPriceHint(priceHint,$(this),'price');
        hint.height=priceHint.clientHeight;
        hint.width=priceHint.clientWidth;
    },
    function() {
        hidePriceHint(priceHint);
    }).mousemove(function(event) {
        hintMouseFollow(event,priceHint,windowObj.height,windowObj.width,hint.height,hint.width,windowObj.scrollTop);
    });
    $("a.productType.altTitle").each(function() {
        currentElement=$(this);
        currentElement.data('alt',currentElement.attr('title')).attr('title','');
    }).hover(function() {
        if ($(this).data('alt')!='') {
            showPriceHint(priceHint,$(this),'type');
            hint.height=priceHint.clientHeight;
            hint.width=priceHint.clientWidth;
        }
    },
    function() {
        hidePriceHint(priceHint);
    }).mousemove(function(event) {
        hintMouseFollow(event,priceHint,windowObj.height,windowObj.width,hint.height,hint.width,windowObj.scrollTop);
    });

//Price description popup events (end) -----------------------------------

});


  

