var g_browserDetect = {
    init: function () {
        this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
        this.version = this.searchVersion(navigator.userAgent)
            || this.searchVersion(navigator.appVersion)
            || "an unknown version";
        this.OS = this.searchString(this.dataOS) || "an unknown OS";
    },
    searchString: function (data) {
        for (var i=0;i<data.length;i++)    {
            var dataString = data[i].string;
            var dataProp = data[i].prop;
            this.versionSearchString = data[i].versionSearch || data[i].identity;
            if (dataString) {
                if (dataString.indexOf(data[i].subString) != -1)
                    return data[i].identity;
            }
            else if (dataProp)
                return data[i].identity;
        }
    },
    searchVersion: function (dataString) {
        var index = dataString.indexOf(this.versionSearchString);
        if (index == -1) return;
        return
parseFloat(dataString.substring(index+this.versionSearchString.length+1));
    },
    dataBrowser: [
        {
            string: navigator.userAgent,
            subString: "Chrome",
            identity: "Chrome"
        },
        {     string: navigator.userAgent,
            subString: "OmniWeb",
            versionSearch: "OmniWeb/",
            identity: "OmniWeb"
        },
        {
            string: navigator.vendor,
            subString: "Apple",
            identity: "Safari",
            versionSearch: "Version"
        },
        {
            prop: window.opera,
            identity: "Opera"
        },
        {
            string: navigator.vendor,
            subString: "iCab",
            identity: "iCab"
        },
        {
            string: navigator.vendor,
            subString: "KDE",
            identity: "Konqueror"
        },
        {
            string: navigator.userAgent,
            subString: "Firefox",
            identity: "Firefox"
        },
        {
            string: navigator.vendor,
            subString: "Camino",
            identity: "Camino"
        },
        {        // for newer Netscapes (6+)
            string: navigator.userAgent,
            subString: "Netscape",
            identity: "Netscape"
        },
        {
            string: navigator.userAgent,
            subString: "MSIE",
            identity: "Explorer",
            versionSearch: "MSIE"
        },
        {
            string: navigator.userAgent,
            subString: "Gecko",
            identity: "Mozilla",
            versionSearch: "rv"
        },
        {         // for older Netscapes (4-)
            string: navigator.userAgent,
            subString: "Mozilla",
            identity: "Netscape",
            versionSearch: "Mozilla"
        }
    ],
    dataOS : [
        {
            string: navigator.platform,
            subString: "Win",
            identity: "Windows"
        },
        {
            string: navigator.platform,
            subString: "Mac",
            identity: "Mac"
        },
        {
               string: navigator.userAgent,
               subString: "iPhone",
               identity: "iPhone/iPod"
        },
        {
            string: navigator.platform,
            subString: "Linux",
            identity: "Linux"
        }
    ]

};
// init detection
g_browserDetect.init();

// alias to jQuery library, function noConflict release control of the $ variable 
var $j = jQuery.noConflict();


/**************************
    GLOBAL FUNCTIONALITY
**************************/

// global settings
function setupGlobal()
{
    // blur focus then user click on <a> element
    $j("a").focus(function(){$j(this).blur();});
    // the same for object with id searchBoxBtn
    $j("#searchBoxBtn").focus(function(){$j(this).blur();});

    // sidebar setup
    $j('.sidebarTwitterContainer .status:last').css('border-bottom', '0px solid #FFF');
    $j('.sidebarLastCommentsContainer .comment:last').css('border-bottom', '0px solid #FFF');
    $j('.sidebarSimpleLastPostEntries').each(function() { $j(this).find('.item:last').css('border-bottom', '0px solid #FFF'); } );
    $j('.defItemsContainer').each(function() { $j(this).find('.defItemWrapper:last').css('border-bottom', '0px solid #FFF'); } );
    
    
    
}

/**************************
    SEARCH BOX CODE
**************************/

// This function setup search box, and is called only one time when page is loaded
function setupSearchBox()
{
    // set action for focus on searchbox
    $j("#searchBox").focus(
        function(){
            $j(this).css("color", g_searchBoxFocusColor);
//            if($j(this).val() == g_searchBoxDummyText) 
//            {
//                $j(this).css("color", '#F00');
//            }
        });
    
    // set action for blur on searchbox
    $j("#searchBox").blur(
        function(){
            $j(this).css("color", g_searchBoxBlurColor);       
    });
            
    // clean searchbox
    $j("#searchBox").css("color", g_searchBoxBlurColor);
} // end of function setupSearchBox 

/**************************
   TOOLTIP TEXT
**************************/

function setupToolTipText()
{  
    // when user move cursor on element witch class textTooltipCenterTop
    // fallowing code will be executed, one function when the mouse is move on
    // element, and one function when mouse cursor is moved out,
    //       
    $j(".textTooltipCenterTop, .textTooltipLeftTop, .textTooltipRightTop").hover(function(e)
    {
        var yoffset = -10;
        var tip = $j(this).find(".desc").html();

        // adding to page text preview container
        $j("body").append(
            "<div id='textPreview'><div id='textPreviewDesc'></div></div>");
        
        // set tip text    
        $j("#textPreviewDesc").html(tip);
        // get width off tip container
        var textToolTipWidth = $j("#textPreview").width();
                
        // check the class name, and calculate display offset
        var xoffset = 0;
        if($j(this).hasClass("textTooltipCenterTop"))
        {
            xoffset = -Math.round(textToolTipWidth/2)
        } else
        if($j(this).hasClass("textTooltipLeftTop"))
        {
            xoffset = -textToolTipWidth;
        } else
        if($j(this).hasClass("textTooltipRightTop"))
        {
            xoffset = 0;
        }                
 
        // set position of tip container and animte it
        $j("#textPreview").css("width", textToolTipWidth+"px")
            .css("left", (e.pageX + xoffset) + "px")
            .css("top", (e.pageY + yoffset - $j("#textPreview").height()) + "px")
            .css("visibility", "visible")
            .css("opacity", "0.0")
            .animate({opacity: 1.0}, 400);                                   
    },
    // when hover is out, we need to remove #textPreview container from page
    function()
    {
        $j("#textPreview").remove();
    });    
    
    // bind function to mouse move event, we move the tooltip with mouse cursor
    $j(".textTooltipCenterTop, .textTooltipLeftTop, .textTooltipRightTop").mousemove(
    function(e)
    {
        var yoffset = -10;
        var textToolTipWidth = $j("#textPreview").width();
         
        // check the class name, and calculate display offset
        var xoffset = 0;
        if($j(this).hasClass("textTooltipCenterTop"))
        {
            xoffset = -Math.round(textToolTipWidth/2)
        } else
        if($j(this).hasClass("textTooltipLeftTop"))
        {
            xoffset = -textToolTipWidth;
        } else
        if($j(this).hasClass("textTooltipRightTop"))
        {
            xoffset = 0;
        }        
        
        // set postion of tip container        
        $j("#textPreview")
            .css("top",(e.pageY + yoffset - $j("#textPreview").height()) + "px")
            .css("left",(e.pageX + xoffset) + "px");
    });
}; // end of function setupToolTipText


/**************************
   CUFON FONT REPLACEMENT
**************************/

// default cuffon text replacement 
function setupCufonFontReplacement()
{
    if(g_useCufon == false)
    {
        return;
    }

    Cufon.replace(".commonPageTitle", {fontWeight: 300});
    Cufon.replace(".commonItemHeader", {fontWeight: 300});
    Cufon.replace(".footerTitleSpan", {fontWeight: 700});
    Cufon.replace("#headerContainer #title", {fontWeight: 700});
    Cufon.replace("#headerContainer .titleSlogan", {fontWeight: 400});
    Cufon.replace(".sidebarTabsContainer .title", {fontWeight: 700});
    Cufon.replace(".sidebarPopularContainer .header", {fontWeight: 300});
    Cufon.replace(".slideFaderDesc .title", {fontWeight: 700});
    Cufon.replace(".footerCustom h5", {fontWeight: 700});
    Cufon.replace("#rightSideBarContainer .bigSectionTitle", {fontWeight: 300}); 
    Cufon.replace(".defItemWrapper .title", {fontWeight: 300});
     

    // common styles    
    setupCufonBasicStyles();
} // end of function setupCufonFontReplacement

function setupCufonBasicStyles()
{
    if(g_useCufon == false)
    {
        return;
    }
    
    Cufon.replace(".h1Thin", {fontWeight: 300});
    Cufon.replace(".h1ThinBlack", {fontWeight: 300});  
    Cufon.replace(".h2Thin", {fontWeight: 300});
    Cufon.replace(".h2ThinBlack", {fontWeight: 300});
    Cufon.replace(".h3Thin", {fontWeight: 300});
    Cufon.replace(".h3ThinBlack", {fontWeight: 300});
    Cufon.replace(".h4Thin", {fontWeight: 300});
    Cufon.replace(".h4ThinBlack", {fontWeight: 300});
    Cufon.replace(".h5Thin", {fontWeight: 300});
    Cufon.replace(".h5ThinBlack", {fontWeight: 300});
    
    Cufon.replace(".h1Normal", {fontWeight: 400});
    Cufon.replace(".h1NormalBlack", {fontWeight: 400});
    Cufon.replace(".h2Normal", {fontWeight: 400});
    Cufon.replace(".h2NormalBlack", {fontWeight: 400});
    Cufon.replace(".h3Normal", {fontWeight: 400});
    Cufon.replace(".h3NormalBlack", {fontWeight: 400});
    Cufon.replace(".h4Normal", {fontWeight: 400});
    Cufon.replace(".h4NormalBlack", {fontWeight: 400});
    Cufon.replace(".h5Normal", {fontWeight: 400});
    Cufon.replace(".h5NormalBlack", {fontWeight: 400});
    
    Cufon.replace(".h1Bold", {fontWeight: 700});
    Cufon.replace(".h1BoldBlack", {fontWeight: 700});
    Cufon.replace(".h2Bold", {fontWeight: 700});
    Cufon.replace(".h2BoldBlack", {fontWeight: 700});
    Cufon.replace(".h3Bold", {fontWeight: 700});
    Cufon.replace(".h3BoldBlack", {fontWeight: 700});
    Cufon.replace(".h4Bold", {fontWeight: 700});
    Cufon.replace(".h4BoldBlack", {fontWeight: 700});
    Cufon.replace(".h5Bold", {fontWeight: 700});    
    Cufon.replace(".h5BoldBlack", {fontWeight: 700});
} // end of function setupCufonBasicStyles

/***************************************
    ASYNCHRONOUS IMAGE LOADING CODE
****************************************/

// For all object with class "asyncImaLoad" (loader), function read
// image path from title attribute, create new Image object,
// next assign image from path to Image object and 
// append it to loader 
function setupLoadingAsynchronousImages()
{
    // for each object with class "asyncImgLoad"
    $j('.asyncImgLoad').each(
        function()
        {   
            // save handle to loader - caintainer which we gona insert loaded image    
            var loader = $j(this);
            // get image path from loader title attribute
            var imagePath = loader.attr('title');
            // create new image object
            var img = new Image();
            // set opacity for image to maximum
            // value 0.0 means completly transparent
            $j(img).css("opacity", "0.0")
            // next we set function wich gona be caled then
            // image load is finished  
                .load(
                    function() 
                    {
                        // insert loaded image to loader object 
                        // and remove unnecessary title attribute
                        loader.append(this).removeAttr('title');
                        // for inserted image we set margin to zero
                        // opacity to max and fire up 500ms opacity animation 
                        $j(this)
                            .css("margin", "0px")
                            .css("opacity", "0.0")
                            .animate({opacity: 1.0}, 500,
                                function()
                                {
                                    // after animation we remove loader background image 
                                    loader.css("background-image", "none");
                                }
                            );
                    }
                // set new value for attribute src - this means: load image from imagePath    
                ).attr('src', imagePath);                        
        }
    );
} // end of function setupLoadingAsynchronousImages
 

/**************************
   SMART IMAGE PEVIEW
**************************/

// global variables that keep width and height previewed image
var g_imagePreviewWidth = 0;
var g_imagePreviewHeight = 0;
var g_imgExtraYOffset = 0;
// variable help prevent hover overlap on real web serwer
// then user move cursor on other thumb, function compare new thumb handle 
// with one saved in this variable, then there is difference this is signal for
// old hovered action that new action is actualy in work
var g_imagePreviewHandle = null;
// cursor X and Y postion in hover moment
var g_onHoverX = 0;
var g_onHoverY = 0;
var g_preTopChanged = false;
// function display image preview, the path to image is saved in attribute "rel"
function setupToolTipImagePreview()
{
    // for every object with class "imgTipLeftTop",
    // "imgTipRightTop" and "imgTipCenterTop"
    $j(".imgTipLeftTop, .imgTipRightTop, .imgTipCenterTop").hover(function(e)
    {
        // save handle in global variable
        g_imagePreviewHandle = this;
        // image preview container x,y offset from the cursor position
        var offsetX = 0;       
        var offsetY = -15;
        // keep hovered div handle in local variable
        var hoveredObject = this;        
        // get path to image file
        var imagePath = $j(this).attr("rel");
        // find image thumb in div and decrease opaque to 50% in 300ms animation
        // before animation can start, we must preventive stop earlier one
        $j(this).find("img").stop().animate({opacity:0.5},300); 
  
        // adding to page image preview container
        $j("body").append(
            "<div id='imgPreview'><div id='imgPreviewImg'></div><div id='imgPreviewDesc'></div></div>");
            
        // hide image preview container, this is necessary to correctly call show function
        $j("#imgPreview").hide(); 
           
            // create new image object
            var img = new Image();
            // bind function to object which gona be called when new image loading is finished
            $j(img).load(function() 
            {
                // check image preview overlap
                if(g_imagePreviewHandle != hoveredObject)
                {
                    // in new image preview is in progress function return control
                    return;
                }
                // save image width and height in global variables
                g_imagePreviewWidth = img.width;
                g_imagePreviewHeight = img.height;
                g_imgExtraYOffset = 0;
                
                if($j(hoveredObject).hasClass("imgTipLeftTop"))
                {
                    offsetX = -30 -g_imagePreviewWidth;
                } else
                if($j(hoveredObject).hasClass("imgTipRightTop"))
                {
                    offsetX = 30;
                } else
                if($j(hoveredObject).hasClass("imgTipCenterTop"))
                {
                    offsetX = -(g_imagePreviewWidth / 2);
                }

                // get image description ant put text in image desc container
                var imgDesc = $j(hoveredObject).find(".desc");
                if(imgDesc.length != 0)
                {
                    var txt = $j(imgDesc).html();
                    var search = "<br";
                    if(g_browserDetect.browser == "Explorer" || g_browserDetect.browser == "Opera")
                    {
                        search = "<BR";
                    }
                    var count = 1;
                    var start = 0;
                    var result = 0;
                    while((result = txt.indexOf(search, start)) != -1)
                    {
                       start = result + 3;
                       count++; 
                    }
                    g_imgExtraYOffset = 14 * count; 
                    $j("#imgPreview").find("#imgPreviewDesc").html(txt);
                    
                } else
                {
                    $j("#imgPreview").find("#imgPreviewDesc").remove();
                }
                
                // check space available space in browser window
                g_onHoverX = e.pageX;
                g_onHoverY = e.pageY;
                var browserWidth = $j(window).width();
                var browserHeight = $j(window).height();
                var preLeft = e.pageX + offsetX;
                var preTop = e.pageY + offsetY - g_imagePreviewHeight - g_imgExtraYOffset;
                
                if(g_imagePreviewHeight > e.clientY)
                {                   
                   preTop += g_imgExtraYOffset + g_imagePreviewHeight - (offsetY*2);
                   g_preTopChanged = true;
                }
                if(preLeft < 0)
                {
                    preLeft = 30 + (e.pageX - g_onHoverX);
                }
                // check space on right
                if(preLeft + g_imagePreviewWidth > browserWidth)
                {
                    preLeft = browserWidth - g_imagePreviewWidth - 30 + (e.pageX - g_onHoverX) + (e.pageX - e.clientX);
                }                                
                
                // add image to preview container
                $j("#imgPreviewImg").html(this);
                // set height of container
                $j("#imgPreviewImg").css("height", g_imagePreviewHeight);        

                // set image preview container style,
                // we must set width of container, the height is calculated automaticly based on image height
                // we must set also image container position, make it visible and set opacity to max
                $j("#imgPreview").css("width", (g_imagePreviewWidth)+"px")
                    .css("left", preLeft + "px")
                    .css("top", preTop + "px")
                    .css("visibility", "visible")
                    .css("opacity", "1.0")
                    .show("fast");
       
                // image opacity we animate separately
                $j(this).css("margin", "0px").css("padding", "0px").css("opacity", "0.0").animate({opacity: 1.0}, 800);
                // we must also restore orginal opacity of hovered thumb
                $j(hoveredObject).find("img").stop().animate({opacity:1.0},300);
                 
            // set new value for "src" attribute, this me     
            }).attr("src", imagePath);

    },
    // when hover is out, we need to remove #imagePreview container from page
    function()
    {
        // remove image preview container from page
        $j("#imgPreviewDesc").remove();
        $j("#imgPreviewImg").find("img").stop().remove();
        $j("#imgPreviewImg").remove();
        $j("#imgPreview").stop().remove();
        // we must also restore orginal opacity of hovered thumb  
        $j(this).find("img").stop().animate({opacity:1.0},300);
        g_imagePreviewHandle = null;
        g_preTopChanged = false; 
        
    });    
    
    // for every image preview thumb we bind function to mouse move event, 
    // this allow user to move the tooltip with mouse cursor in are of the thumb
    $j(".imgTipLeftTop, .imgTipRightTop, .imgTipCenterTop").mousemove(
        function(e)
        {
            // image preview container x,y offset form the cursor position
            var offsetX = 0;
            if($j(this).hasClass("imgTipLeftTop"))
            {
              offsetX = -30 - g_imagePreviewWidth;
            } else
            if($j(this).hasClass("imgTipRightTop"))
            {
              offsetX = 30;
            } else
            if($j(this).hasClass("imgTipCenterTop"))
            {
              offsetX = -g_imagePreviewWidth / 2;
            }
            
            var offsetY = -15;        
            
            // check space available space in browser window 
            var preLeft = e.pageX + offsetX;
            var preTop = e.pageY + offsetY - g_imagePreviewHeight - g_imgExtraYOffset;
            // check space on top
            
            if(g_imagePreviewHeight > e.clientY || g_preTopChanged == true)
            {
                if(g_preTopChanged == true)
                {
                   preTop += g_imgExtraYOffset + g_imagePreviewHeight - (offsetY*2);
                }
            }
            // check space on left
            if(preLeft < 0)
            {
              preLeft = 30 + (e.pageX - g_onHoverX);
            }
            // check space on right
            var browserWidth = $j(window).width(); 
            if(preLeft + g_imagePreviewWidth > browserWidth)
            {
              preLeft = browserWidth - g_imagePreviewWidth - 30 + (e.pageX - g_onHoverX) + (e.pageX - e.clientX);
            }            
            
            // change image preview container position
            $j("#imgPreview")
                .css("top",preTop + "px")
                .css("left", preLeft + "px");
        });
       
} // end of function setupToolTipImagePreview



/**************************************
   SMART IMAGE PEVIEW FOR TEXT LABELS
***************************************/

// global variables that keep width and height previewed image
var g_imgTxtPreviewWidth = 0;
var g_imgTxtPreviewHeight = 0;
var g_imgTxtExtraYOffset = 0;
// variable help prevent hover overlap on real web serwer
// then user move cursor on other thumb, function compare new thumb handle 
// with one saved in this variable, then there is difference this is signal for
// old hovered action that new action is actualy in work
var g_imgTxtPreviewHandle = null;
var g_displayLoader = false;
// cursor X and Y postion in hover moment
var g_onTxtHoverX = 0;
var g_onTxtHoverY = 0;
var g_preTxtTopChanged = false;
// function display image preview, the path to iamge is saved in attribute "rel"
function setupTextLabelImagePreview()
{
    // for every object with class "imgTxtTipLeftTop",
    // "imgTxtTipRightTop" and "imgTxtTipCenterTop"
    $j(".imgTxtTipLeftTop, .imgTxtTipRightTop, .imgTxtTipCenterTop").hover(function(e)
    {
        // save handle in global variable
        g_imgTxtPreviewHandle = this;
        // image preview container x,y offset form the cursor position
        var offsetX = 0;       
        var offsetY = -15;
        // keep hovered object handle in local variable
        var hoveredObject = this;        
        // get path to image file
        var imagePath = $j(this).attr("rel");
  
        // adding to page image preview container
        $j("body").append(
            "<div id='imgTxtPreview'><div id='imgTxtPreviewImg'></div><div id='imgTxtPreviewDesc'></div></div>");
            
        $j("body").append("<div id='imgTxtLoader'></div>");
        $j("#imgTxtLoader")
                    .stop()
                    .css("opacity", 0.0)
                    .css("left", (e.pageX + 8) + "px")
                    .css("top", (e.pageY - 24) + "px")
                    .animate({opacity: 1.0}, 400);        
        g_displayLoader = true;
            
        // hide image preview container, this is necessary to correctly call show function
        $j("#imgTxtPreview").hide();
          
            // create new image object
            var img = new Image();
            // bind function to object which gona be called when new image loading is finished
            $j(img).load(function() 
            {
                // check image preview overlap
                if(g_imgTxtPreviewHandle != hoveredObject)
                {
                    // in new image preview is in progress function return control
                    return;
                }
                // save image width and height in global variables
                g_imgTxtPreviewWidth = img.width;
                g_imgTxtPreviewHeight = img.height;
                g_imgTxtExtraYOffset = 0;
                
                if($j(hoveredObject).hasClass("imgTxtTipLeftTop"))
                {
                    offsetX = -20 -g_imgTxtPreviewWidth;
                } else
                if($j(hoveredObject).hasClass("imgTxtTipRightTop"))
                {
                    offsetX = 20;
                } else
                if($j(hoveredObject).hasClass("imgTxtTipCenterTop"))
                {
                    offsetX = -(g_imgTxtPreviewWidth / 2);
                }
                
                // get image description ant put text in image desc container
                var imgDesc = $j(hoveredObject).find(".desc");
                if(imgDesc.length != 0)
                {
                    var txt = $j(imgDesc).html();
                    var search = "<br";
                    if(g_browserDetect.browser == "Explorer" || g_browserDetect.browser == "Opera")
                    {
                        search = "<BR";
                    }
                    var count = 1;
                    var start = 0;
                    var result = 0;
                    while((result = txt.indexOf(search, start)) != -1)
                    {
                       start = result + 3;
                       count++; 
                    }
                    g_imgTxtExtraYOffset = 14 * count; 
                    $j("#imgTxtPreview").find("#imgTxtPreviewDesc").html(txt);
                    
                } else
                {
                    $j("#imgTxtPreview").find("#imgTxtPreviewDesc").remove();
                }                

                // check space available space in browser window
                g_onTxtHoverX = e.pageX;
                g_onTxtHoverY = e.pageY;
                var browserWidth = $j(window).width();
                var browserHeight = $j(window).height();
                var preLeft = e.pageX + offsetX;
                var preTop = e.pageY + offsetY - g_imgTxtPreviewHeight - g_imgTxtExtraYOffset;
                
                if(g_imgTxtPreviewHeight > e.clientY)
                {
                   preTop += g_imgTxtExtraYOffset + g_imgTxtPreviewHeight - (offsetY*2);
                   g_preTxtTopChanged = true;
                }
                if(preLeft < 0)
                {
                    preLeft = 30 + (e.pageX - g_onTxtHoverX);
                }
                // check space on right
                if(preLeft + g_imgTxtPreviewWidth > browserWidth)
                {
                    preLeft = browserWidth - g_imgTxtPreviewWidth - 30 + (e.pageX - g_onTxtHoverX) + (e.pageX - e.clientX);
                }
               
                // add image to preview container
                $j("#imgTxtPreviewImg").html(this);
                $j("#imgTxtPreviewImg").css("height", g_imgTxtPreviewHeight);        

                // set image preview container style,
                // we must set width of container, the height is calculated automaticly based on image height
                // we must set also image container position, make it visible and set opacity to max
                $j("#imgTxtPreview").hide()
                    .css("height", "auto")
                    .css("width", (g_imgTxtPreviewWidth)+"px")
                    .css("left", preLeft + "px")
                    .css("top", preTop + "px")
                    .css("visibility", "visible")
                    .css("opacity", "1.0")
                    .show("fast");
                g_displayLoader = false;
                $j("#imgTxtLoader").stop().animate({opacity: 0.0}, 400, function(){$j(this).remove()});
                   
                // image opacity we animate separately
                $j(this).css("margin", "0px").css("padding", "0px").css("opacity", "0.0").animate({opacity: 1.0}, 800);
                 
            // set new value for "src" attribute, this me     
            }).attr("src", imagePath);

    },
    // when hover is out, we need to remove #imagePreview container from page
    function()
    {
        // remove image preview container from page
        $j("#imgTxtPreviewDesc").remove();
        $j("#imgTxtPreviewImg").find("img").stop().remove();
        $j("#imgTxtPreviewImg").remove();
        $j("#imgTxtPreview").stop().remove(); 
        g_imgTxtPreviewHandle = null;
        g_displayLoader = false;
        g_preTxtTopChanged = false;
        $j("#imgTxtLoader").stop().remove()
         
        
    });    
    
    // for every image preview thumb we bind function to mouse move event, 
    // this allow user to move the tooltip with mouse cursor in are of the thumb
    $j(".imgTxtTipLeftTop, .imgTxtTipRightTop, .imgTxtTipCenterTop").mousemove(
        function(e)
        {
            // image preview container x,y offset form the cursor position
            var offsetX = 0;
            if($j(this).hasClass("imgTxtTipLeftTop"))
            {
              offsetX = -20 - g_imgTxtPreviewWidth;
            } else
            if($j(this).hasClass("imgTxtTipRightTop"))
            {
              offsetX = 20;
            } else
            if($j(this).hasClass("imgTxtTipCenterTop"))
            {
              offsetX = -g_imgTxtPreviewWidth / 2;
            }
            
            var offsetY = -15; 
            
            // check space available space in browser window 
            var preLeft = e.pageX + offsetX;
            var preTop = e.pageY + offsetY - g_imgTxtPreviewHeight - g_imgTxtExtraYOffset;
            // check space on top
            
            if(g_imgTxtPreviewHeight > e.clientY || g_preTxtTopChanged == true)
            {
                if(g_preTxtTopChanged == true)
                {
                   preTop += g_imgTxtExtraYOffset + g_imgTxtPreviewHeight - (offsetY*2);
                }
            }
            // check space on left
            if(preLeft < 0)
            {
              preLeft = 30 + (e.pageX - g_onTxtHoverX);
            }
            // check space on right
            var browserWidth = $j(window).width(); 
            if(preLeft + g_imgTxtPreviewWidth > browserWidth)
            {
              preLeft = browserWidth - g_imgTxtPreviewWidth - 30 + (e.pageX - g_onTxtHoverX) + (e.pageX - e.clientX);
            }            
                   
            // change image preview container position
            $j("#imgTxtPreview")
                .css("top", preTop + "px")
                .css("left", preLeft + "px");
                
            if(g_displayLoader)
            {
                $j("#imgTxtLoader")
                    .css("left", (e.pageX + 8) + "px")
                    .css("top", (e.pageY - 24) + "px");            
            }
        });
       
}; // end of function setupTextLabelImagePreview


/**************************************
   SIDE BAR MINI SLIDER CONFIGURATION
***************************************/
// SBMS - side bar mini slider
// width and height of side bar mini slider
var SBMS_WIDTH = 320;
var SBMS_HEIGHT = 270;
var SBMS_EASING_METHOD = "easeOutCirc";
var SBMS_TOP_ZINDEX = 2;     
var SBMS_BOTTOM_ZINDEX = 1;
var SBMS_SLIDE_TIME = 600;

// NEXT-IMAGE-BUTTON OBJECT DEFINITION
// object keep information and functions to control side bar mini slider
var g_sideBarMiniSlider = new Object();
    // Object members:
    
    // count of slides in slider 
    g_sideBarMiniSlider.slideCount = 0;
    // current slide
    g_sideBarMiniSlider.currentSlide = 0;
    // if false slide flip is blocked
    g_sideBarMiniSlider.canFlip = true;
    // button index
    g_sideBarMiniSlider.btnIndex = 0;
    // autoplay timer handle
    g_sideBarMiniSlider.timerHandle = null;

    // FUNCTION:
    // mini slider auto play function
    g_sideBarMiniSlider.autoPlay = function()
    {
        clearTimeout(g_sideBarMiniSlider.timerHandle);
        g_sideBarMiniSlider.timerHandle = null;
        g_sideBarMiniSlider.flip();
        g_sideBarMiniSlider.timerHandle = setTimeout(g_sideBarMiniSlider.autoPlay, 6000);    
    } // end of function autoPlay
    
    // FUNCTION:
    // initialize slider start settings
    g_sideBarMiniSlider.initialize = function()
    {
        var slideList = $j("#sidebarMiniSliderContainer .slide");
        g_sideBarMiniSlider.slideCount = slideList.length;

        // hide all slide behind right slider edge
        $j(slideList).each(
            function()
            {
                $j(this).css("left", SBMS_WIDTH);
                $j(this).css("z-index", SBMS_WIDTH);
            }
        );
        // but one slide - first, make visible on page load
        $j("#sidebarMiniSliderContainer .slide:first").css("left", 0).css("z-index", SBMS_BOTTOM_ZINDEX);
        
        if(g_sideBarMiniSlider.slideCount == 1)
        {
            return;
        }
        
        // check first button
        $j("#sidebarMiniSliderContainer .btn:first").css("background-color", "#FFF").css("color", "#000");
        
        $j("#sidebarMiniSliderContainer .btn").click(
            function()
            {
                // if slide flip is blocked return from function
                if(false == g_sideBarMiniSlider.canFlip)
                {
                    return;
                }
     
            
                $j("#sidebarMiniSliderContainer .btn").css("background-color", "#222").css("color", "#CCC");
                $j(this).css("background-color", "#FFF").css("color", "#000");
                var index = $j("#sidebarMiniSliderContainer .btn").index(this);
                g_sideBarMiniSlider.btnIndex = index;
                
                if(g_sideBarMiniSlider.currentSlide != index)
                {
                    g_sideBarMiniSlider.flipOnIndex(index);
                }                
            }
        );
        
        $j("#sidebarMiniSliderContainer .btn").hover(
            function()
            {
                var index = $j("#sidebarMiniSliderContainer .btn").index(this);
                if(g_sideBarMiniSlider.btnIndex != index)
                {
                    $j(this).css("background-color", "#444");
                }
            },
            function()
            {
                var index = $j("#sidebarMiniSliderContainer .btn").index(this);
                if(g_sideBarMiniSlider.btnIndex != index)
                {            
                    $j(this).css("background-color", "#222");
                }
            }
        );
        
       
        g_sideBarMiniSlider.timerHandle = setTimeout(g_sideBarMiniSlider.autoPlay, 4000);        

    } // end of function initialize
    
    // FUNCTION:
    // flip slider to next slide    
    g_sideBarMiniSlider.flip = function()
    {
        // if slide flip is blocked return from function
        if(false == g_sideBarMiniSlider.canFlip)
        {
            return;
        }
        // block slide flip
        g_sideBarMiniSlider.canFlip = false;
        // save current slide number
        var prevSlide = g_sideBarMiniSlider.currentSlide;
        // move to next slide
        g_sideBarMiniSlider.currentSlide += 1;
        // check range
        if(g_sideBarMiniSlider.currentSlide >= g_sideBarMiniSlider.slideCount)
        {
           // if overflow, back to first slide
           g_sideBarMiniSlider.currentSlide = 0;
        }

        // get button handle
        var btnHandle = $j("#sidebarMiniSliderContainer .btn:eq("+this.currentSlide+")");
        g_sideBarMiniSlider.btnIndex = this.currentSlide;
        $j("#sidebarMiniSliderContainer .btn").css("background-color", "#222").css("color", "#CCC");
        $j(btnHandle).css("background-color", "#FFF").css("color", "#000");        
        
        // move slide
        $j("#sidebarMiniSliderContainer .slide:eq("+prevSlide+")")
            .animate({left: -SBMS_WIDTH}, SBMS_SLIDE_TIME);        
        
        $j("#sidebarMiniSliderContainer .slide:eq("+g_sideBarMiniSlider.currentSlide+")")
            // before start animation set z-index to top
            .css("z-index", SBMS_TOP_ZINDEX)
            .css("opacity", 1.0)
            .animate({left: 0}, SBMS_SLIDE_TIME,
                function()
                {
                    // take previous slide to right
                    $j("#sidebarMiniSliderContainer .slide:eq("+prevSlide+")").css("left", SBMS_WIDTH);
                    // unblock slide fliping
                    g_sideBarMiniSlider.canFlip = true; 
                    // after animation change current visible slide z-index to bottom
                    $j(this).css("z-index", SBMS_BOTTOM_ZINDEX);
                }             
        );   
    } // end of function flip
    
    // FUNCTION:
    // flip slider to selected slide
    g_sideBarMiniSlider.flipOnIndex = function(index)
    {
        // if user click on button for current visible slide return from function
        var btnIndex = index;
        if(btnIndex == g_sideBarMiniSlider.currentSlide)
        {
            return;
        }    
    
        // if slide flip is blocked return from function
        if(false == g_sideBarMiniSlider.canFlip)
        {
            return;
        }
    

        clearTimeout(g_sideBarMiniSlider.timerHandle);
        
        // block slide flip
        g_sideBarMiniSlider.canFlip = false;
        
        // move slide
        $j("#sidebarMiniSliderContainer .slide:eq("+g_sideBarMiniSlider.currentSlide+")")
            .animate({left: -SBMS_WIDTH}, SBMS_SLIDE_TIME);
        
        $j("#sidebarMiniSliderContainer .slide:eq("+index+")")
            // before start animation set z-index to top
            .css("z-index", SBMS_TOP_ZINDEX)
            .css("opacity", 1.0) 
            .animate({left: 0}, SBMS_SLIDE_TIME,
                function()
                {
                    // take previous slide to right
                    $j("#sidebarMiniSliderContainer .slide:eq("+g_sideBarMiniSlider.currentSlide+")").css("left", SBMS_WIDTH);
                    // change current slide
                    g_sideBarMiniSlider.currentSlide = index;                    
                    // unblock slide fliping
                    g_sideBarMiniSlider.canFlip = true; 
                    // after animation change current visible slide z-index to bottom
                    $j(this).css("z-index", SBMS_BOTTOM_ZINDEX);
                    // set autoplay
                    g_sideBarMiniSlider.timerHandle = setTimeout(g_sideBarMiniSlider.autoPlay, 4000);
                }             
        );
        
    }  // end of function flipOnIndex
// END OF OBJECT DEFINITION         

function setupSideBarMiniSlider()
{
    g_sideBarMiniSlider.initialize();
} // end of function setupSideBarMiniSlider


/*************************************
    SIDEBAR TABS PANEL
**************************************/   
var g_selectedSideBarTabBtn = null;
var g_tabBtnColorSidebar = g_themeColor;
function setupSidebarTabsPanel()
{
    $j(".sidebarTabsContainer").each(
        function()
        {
            // get number of tab buttons
            var tabsList = $j(this).find(".btn");

            // for every tab button check existing of default tab marker
            for(var i = 0; i < tabsList.length; i++)
            {
               var btn = $j(this).find(".btn:eq("+i+")");
               var defaultTab = $j(btn).find(".default");
               // if tab is default set it to visibile and highlight the button
               if(defaultTab.length != 0)
               {
                    $j(btn).each(function(){g_selectedSideBarTabBtn = this;});
                    var tabID = $j(btn).find(".source").text();
                    $j(tabID).css('opacity', 0.0).css('display', 'block').css("visibility", "visible").css("top", 0).animate({opacity: 1.0}, 600);
                    $j(btn).css("background-color", g_tabBtnColorSidebar);
                    break;
               }
            }
            
    $j(this).find(".btn").click(
        function()
        {
             if(g_selectedSideBarTabBtn == this)
             {
                return;
             } 
             if(g_selectedSideBarTabBtn != null)
             {
                $j(g_selectedSideBarTabBtn).css("background-color", "#000");
             }
             var oldSource = $j(g_selectedSideBarTabBtn).find(".source").text();
             g_selectedSideBarTabBtn = this;
             $j(this).css("background-color", g_tabBtnColorSidebar);
             
             $j(oldSource).animate({opacity: 0.0}, 200, 
                function()
                {
                    $j(this).css("display", "none");
                    var tabSource = $j(g_selectedSideBarTabBtn).find(".source").text();

                    $j(tabSource)
                        .css("opacity", 0.0)
                        .css('display', 'block')
                        .css("top", 0)
                        .css("visibility", "visible")
                        .animate({opacity: 1.0}, 400); 
                }
             );
        }
    );
   
    $j(this).find(".btn").hover(
        function()
        {
            if(this != g_selectedSideBarTabBtn)
            {
                $j(this).css("background-color", g_tabBtnColorSidebar);
            }
        },
        function()
        {
            if(this != g_selectedSideBarTabBtn)
            {
                $j(this).css("background-color", "#000000");
            }
        }
    );
            
        }
    );
} // end of function setupSidebarTabsPanel

/***************************************
    LIGHT BOX
****************************************/

function setupMultiImageLightBox()
{
    // we set pretty photo light box for every <a> element
    // which have attribute rel startet from string "prettyPhoto"
    // additionally:
    //      - we allow to resize image 
    //      - set the light box theme to light_rounded
    //      - set own separtor for page list
    //      - and allow to display title
    $j(".sidebarMultiImageBoxContainer a[rel^='prettyPhoto']").prettyPhoto({
        theme: 'light_rounded', 
        allowresize: true,
        counter_separator_label: '-',
        showTitle: true
    });
} // end of function setupMultiImageLightBox 

function setupLinkLightBox()
{
    // we set pretty photo light box for every <a> element
    // which have attribute rel startet from string "prettyPhoto"
    // additionally:
    //      - we allow to resize image 
    //      - set the light box theme to light_rounded
    //      - set own separtor for page list
    //      - and allow to display title
    
    $j("a.lightBoxLink[rel^='prettyPhoto']").prettyPhoto({
        theme: 'light_rounded', 
        allowresize: true,
        counter_separator_label: '-',
        showTitle: true
    });
    

    $j(".lightBoxVideo[rel^='prettyPhoto']").prettyPhoto({
        theme: 'light_rounded', 
        allowresize: true,
        counter_separator_label: '-',
        showTitle: true
    });
    
} // end of function setupLinkLightBox 

/***************************************
   SETUP FADE MOVER SLIDER (FMS)
****************************************/
// array that keeps handles to slides
var g_slideHandleFMS = new Array();
// number of slides
var g_slideCountFMS = 0;
// true if slider have only one slide, 
// then we turn off animation
var g_animationAllowedFMS = true;
// actual displayed slide
var g_actualSlideFMS = 0;
// slider width and height
var FMS_WIDTH = 960;
var FMS_HEIGHT = 300;

var g_autoplayHandleFMS = null;
var g_pauseAutoPlayFMS = false;
var g_timerHandleHideDesc = null;
var g_handleDescPanel = null;
var g_canHoverFMS = true;

// function switch slides then animation is allowed
function faderMoverSliderAutoplay()
{
    if(g_pauseAutoPlayFMS)
    {
        g_autoplayHandleFMS = setTimeout(faderMoverSliderAutoplay, FMS_INTERVAL);
        return;
    }
    
    // fade betwean two slides
    function fade()
    {
       g_canHoverFMS = false;
       
       // get index of next slide
       var nextSlide = g_actualSlideFMS + 1;
       if(nextSlide >= g_slideCountFMS)
       {
           nextSlide = 0;
       }
       $j(g_slideHandleFMS[g_actualSlideFMS]).css("z-index", 10);
       $j(g_slideHandleFMS[nextSlide]).css("z-index", 9).css("left", 0);
                
      $j(g_slideHandleFMS[g_actualSlideFMS]).animate({opacity: 0.0}, 1000,
          // after fade down
          function()
          {
             g_canHoverFMS = true;
             // hide actual slide
             $j(this).css("left", FMS_WIDTH);
             g_autoplayHandleFMS = setTimeout(faderMoverSliderAutoplay, FMS_INTERVAL);            
          }
      );
      
      $j(g_slideHandleFMS[nextSlide]).animate({opacity: 1.0}, 1000);
      g_actualSlideFMS = nextSlide;        
    } // end of function fade
    
    // move slides on left
    function move()
    {
       g_canHoverFMS = false;
       
       // get index of next slide
       var nextSlide = g_actualSlideFMS + 1;
       if(nextSlide >= g_slideCountFMS)
       {
           nextSlide = 0;
       }
       $j(g_slideHandleFMS[g_actualSlideFMS]).css("z-index", 10);
       $j(g_slideHandleFMS[nextSlide]).css("z-index", 9).css("left", FMS_WIDTH).css("opacity", 1.0);
                
      $j(g_slideHandleFMS[g_actualSlideFMS]).animate({left: -FMS_WIDTH}, 1000,
          // after fade down
          function()
          {
             g_canHoverFMS = true;
             // hide actual slide
             $j(this).css("left", FMS_WIDTH);
             g_autoplayHandleFMS = setTimeout(faderMoverSliderAutoplay, FMS_INTERVAL);            
          }
      );
      
      $j(g_slideHandleFMS[nextSlide]).animate({left: 0}, 1000);
      g_actualSlideFMS = nextSlide;     
    } // end of function move

   // check type of animation 
   if(FMS_FADE == g_animationTypeFMS)
   {
      fade();                               
   } // FMS_FADE 
   if(FMS_MOVE == g_animationTypeFMS)
   {
      move();                               
   } // FMS_MOVE
   if(FMS_MIX == g_animationTypeFMS)
   {
      var value = Math.random();
      
      if(value > 0.5)
      {
          fade();
      } else
      {
          move();
      }                               
   } // FMS_MOVE       

} // end of function faderMoverSliderAutoplay

// function initialize slider
function setupFaderMoverSlider()
{
    $j("#faderMoverSlider").each(
       function()
       {
          // get number of slides
          g_slideCountFMS = $j(this).find(".slide").length;
          
          $j("#faderMoverSlider .slide:first").css('left', 0); 
          
          // if there is less slides then 2, we turn off the animation
          if(g_slideCountFMS < 2)
          {
             g_animationAllowedFMS = false;             
             return;
          }
          
          // collect to array all slides handle, and reverse slide z-index
          // leave first slide on screen, other hide behind right slider border
          for(var i = 0; i < g_slideCountFMS; i++)
          {
             var slideHandle = $j("#faderMoverSlider .slide:eq("+i+")");
             g_slideHandleFMS.push(slideHandle);
             // first on top, then second slide, etc.
             $j(slideHandle).css("z-index", 50 - i);            
             // leave first slide, other hide
             if(i > 0)
             {
                $j(slideHandle).css("left", FMS_WIDTH);
             }
          } // for
          
          
          // bind function to action hover for slides in mover/fader slider
          $j("#faderMoverSlider .slide").hover(
            // mouse hover on
            function()
            {
                  if(!g_canHoverFMS)
                  {
                    return;
                  }
                  // clear timer which wait to hide slide description block
                  clearTimeout(g_timerHandleHideDesc);
                  // if description block was not hidden we must hide it
                  if(g_handleDescPanel != null)
                  {
                      // hide block in animation
                      $j(g_handleDescPanel).find('.slideFaderDescBack, .slideFaderDesc').stop().animate({bottom:-70, opacity: 0.0}, 600);  
                      // clear handle to block
                      g_handleDescPanel = null;                  
                  }
                  // block autoplaying of mover/fader slider
                  g_pauseAutoPlayFMS = true;
                  // save in global variable new description block handle, but only if exist
                  // and animate this block
                  if($j(this).find('.slideFaderDesc').length > 0)
                  {
                    g_handleDescPanel = this;
                    $j(this).find('.slideFaderDescBack').stop().animate({bottom:0, opacity: 0.8}, 600);
                    $j(this).find('.slideFaderDesc').stop().animate({bottom:0, opacity: 1.0}, 600);                   
                  }
                  
            },
            // mouse hover out
            function()
            {
                  if(!g_canHoverFMS)
                  {
                    return;
                  }            
            
                  // function definition which hide description block
                  function hideDescPanel()
                  {
                      $j(g_handleDescPanel).find('.slideFaderDescBack, .slideFaderDesc').stop().animate({bottom:-70, opacity: 0.0}, 600);  
                      g_handleDescPanel = null;
                  }
                  // if panel exist and was showed we fire up function to hide it
                  if(null != g_handleDescPanel)
                  {
                     g_timerHandleHideDesc = setTimeout(hideDescPanel, 800);
                  }
                  // allow to autoplay mover/fader slider
                  g_pauseAutoPlayFMS = false;                   
            }
          );
          
          // fire up slide autoplay
          g_autoplayHandleFMS = setTimeout(faderMoverSliderAutoplay, FMS_INTERVAL);      
       }
    );
} // end of function setupFaderMoverSlider

// alias to jQuery library, function noConflict release control of the $ variable 
// to whichever library first implemented it
var $j = jQuery.noConflict();

/**************************
    NEWS BAR CODE
**************************/

// time interval between news text change
var g_newsBarInterval = 8000;
// number of news determined dynamically
var g_newsCount = 0;
// current number of displayed news, start index from zero
var g_newsIndex = 0;


// Auto play function for news bar, is calling itself in some period time
function newsBarAutoPlay()
{
   // switch to next news
   var prev = g_newsIndex;
   g_newsIndex = g_newsIndex + 1;
   // check news range
   if(g_newsIndex >= g_newsCount)
   {
      // back to first news
      g_newsIndex = 0;
   }

   // fade down current news
   $j('#newsBarContainer .newsBarNews:eq('+prev+')').fadeOut(100, 
        function(){
            $j('#newsBarContainer .newsBarNews:eq('+g_newsIndex+')')
                .fadeOut(0).fadeIn(1500);
            });
   
   // set auto call in some time period
   setTimeout(newsBarAutoPlay, g_newsBarInterval);
} // end of function newsBarAutoPlay

// This function setup news bar, and is called only once then page is loaded
function setupNewsBar()
{
    // determining number of news to display
    g_newsCount = $j("#newsBarContainer .newsBarNews").length;
    if(0 == g_newsCount)
    {
        return;
    }
    // showing first news
    $j("#newsBarContainer .newsBarNews:first").css('display', 'inline');
    
    // set auto play for news
    setTimeout(newsBarAutoPlay, g_newsBarInterval);
} // end of function setupNewsBar


/**************************
       ACCORDION CODE
**************************/
 
// default width of accordion for this template is set to 960 pixels,
// this value is hardcoded and must be equal to accordion width coded in
// accordionContainer CSS style (file: indexCSS.css)
var ACCORDION_WIDTH = 960;
// this variable determine the width of div then it is draw aside
var ACCORDION_DRAW_ASIDE_WIDTH = 50;
// slide function, the default is "liner" which is implemented in jQuery,
// it's not looking good, so we use special easing pluging and method "jQuery EasIng v1.1.2"
var ACCORDION_EASING_METHOD = "easeOutCirc";
// slide time
var ACCORDION_SLIDE_TIME = 650;
// collection of objects which describe divs included in accordion image slider,
// every described div have included one main image, and some addiotonal images and
// elements whith other informations needed for main image, we pack objects into an array
var g_slidedDivs = null;
var g_hoveredSlideIndex = null;
// time to initiate accordion autoplay
var g_timeAutoPlayInit = 4500;
function setupAccordionImageSlider()
{
    // turn off displaying border-left for first div holding image in accordion
    $j("#accordionContainer").find(".accordionImgDiv:first").css("border-left", "0px");
    
    // get list of all slided divs in slider
    var slidedDivsList = $j("#accordionContainer .accordionImgDiv");
    // collect information on every div in to an global array
    g_slidedDivs = new Array;
    var firstDiv = $j("#accordionContainer .accordionImgDiv:first");
    for(var i = 0; i < slidedDivsList.length; i++)
    {
        var obj = new Object(); 
        obj.name = "#" + $j(firstDiv).attr('id'); 
        obj.dest = 0;
        obj.out = 0;
        g_slidedDivs.push(obj); 

        firstDiv = $j(firstDiv).next(".accordionImgDiv");
    }
                 
    // calculating rib width based on accordion containter width divided by slides number in accordion
    var ribOutWidth = 0;
    // calculate width of the rib
    ribOutWidth = ACCORDION_WIDTH / g_slidedDivs.length;
    
    // then the page is load we must set the left margin of every div in accordion
    // distance between divs a equal to rib width so the divs are placed equally
    for(var i = 0; i < g_slidedDivs.length; i++)
    {
        // set left margin
        $j(g_slidedDivs[i].name).css("margin-left", (i*ribOutWidth)+"px");
        // addiotinaly we set the dest member to the same value
        g_slidedDivs[i].dest = i*ribOutWidth;
    }

    // we set the acction for hover the accordion container,
    // when the mouse is moved on, there is no action taken,
    // when mouse is moved from we distribyte all slided divs in accordion
    // equally on accordion space
    $j("#accordionContainer").hover(
        function()
        {   
            // stop the auto play accordion image slider
            if(true == g_sliderAutoPlay)
            {
                clearTimeout(g_sliderTimerAutoPlay);
            }
            // if slider is not fully loaded
            if(g_loadedStripCount < g_slidedDivs.length)
            {
                return;
            }            
            // hide slide strip desc
            $j("#accordionContainer .accordionImgDiv").find(".slideDesc").stop().animate({opacity: 0.0}, 150);
        },
        function()
        {   
            // if slider is not fully loaded 
            if(g_loadedStripCount < g_slidedDivs.length)
            {
                return;
            }
            
            mouseOutAccorOnAll(null);        
            for(var i = 0; i < g_slidedDivs.length; i++)
            {
                // if div is currently moved we stop the animation
                // and set new animation for left margin
                $j(g_slidedDivs[i].name).stop()
                    .animate({marginLeft: (i*ribOutWidth)+"px"}, {duration: 900, easing: ACCORDION_EASING_METHOD});
                // we set the destination member to the same value
                g_slidedDivs[i].dest = i*ribOutWidth;
                // show strip desc
                $j(g_slidedDivs[i].name).find(".slideDesc").stop().animate({opacity: 1.0}, 1200);
            }
            // fire up auto play for slider
            if(true == g_sliderAutoPlay)
            {
                clearTimeout(g_sliderTimerAutoPlay);
                mouseOutAccorOnAll(null);
                g_sliderTimerAutoPlay = setTimeout(accordionPlay, g_timeAutoPlayInit);
            }
        }
    );                                                    

    // setting hover action for every div of class accordionImgDiv in accordion,
    // when user move mause on div, we must to draw aside all dive except the hovered
    $j(".accordionImgDiv").hover(
        function()
        {   
            // stop the auto play accordion image slider
            if(true == g_sliderAutoPlay)
            {
                clearTimeout(g_sliderTimerAutoPlay);
            }        
            // if slider is not fully loaded we return
            if(g_loadedStripCount < g_slidedDivs.length)
            {
                return;
            }        
        
            // save in variable id of hovered element
            var divID = ("#" + $j(this).attr('id'));
            // fade out all divs with excluding hovered div
            mouseOutAccorOnAll(divID);

            g_hoveredSlideIndex = $j("#accordionContainer .accordionImgDiv").index(this);    
            
            var context = $j(this)[0];
            // stop and set new animation of main image opacity
            $j(".accordionSlideImage", context).find("img").stop().animate({opacity: 1.0}, 400); 
            // stop and set new animation of image description background div
            $j(".accordionDescBack", context).stop().animate({bottom: 0, opacity: 0.8}, 1000);
            // stop and set new animation of image description div
            $j(".accordionDesc", context).stop().animate({bottom: 0, opacity: 1.0}, 1000);
            $j(".slideStrip", context).stop().animate({opacity: 0.0}, 200, ACCORDION_EASING_METHOD, function(){ $j(this).css('visibility', 'hidden'); }); 
            
            g_slidedDivs[g_hoveredSlideIndex].out = 0;
            // draw aside all divs
            setMoveForAccordionDivs(g_hoveredSlideIndex);
        }, 
        function()
        {
            if(g_loadedStripCount < g_slidedDivs.length)
            {
                return;
            }        
        
            g_hoveredSlideIndex = null;
            
            // save in variable id of hovered element
            var divID = ("#" + $j(this).attr('id'));
            // now we need to find the index of hovered div,
            // so we searching it name in array g_slidedDivs, when
            // the named match we save index and break loop  
            var index = 0;
            for(var i = 0; i < g_slidedDivs.length; i++)
            {
                if(divID == g_slidedDivs[i].name)
                {        
                    index = i;
                    break;
                }
            }
            
            if(g_slidedDivs[index].out != 1)
            {
                g_slidedDivs[index].out = 1;            
                mouseOutAccor(this);
            }
        }
    );
} // end of function setupAccordionImageSlider 

// Function set value of left margin for every slided div in accordion
// @param[in] index - index of ohovered div with class accordionImgDiv 
function setMoveForAccordionDivs(index)
{
    // for every slided div we make the same
    for(var i = 0; i < g_slidedDivs.length; i++)
    {
        var context = $j(g_slidedDivs[i].name)[0];
        var object = $j(g_slidedDivs[i].name);
        $j(".slideDesc", context).stop().animate({opacity: 0.0}, 150);
        // if div lie on left we move it on left
        if(i < index)
        {
            // calculate new margin, this equal to calculate new position of div
            var newMargin = (i*ACCORDION_DRAW_ASIDE_WIDTH);
            // if new margin is diffrent from div destination margin the animation is set    
            if(g_slidedDivs[i].dest != newMargin)
            {
                // first we stop the old animation
                object.stop();
                // animation time
                var animTime = ACCORDION_SLIDE_TIME;
                // save new margin 
                g_slidedDivs[i].dest = newMargin;
                // set new animation
                object.animate(
                    {marginLeft: newMargin+"px"}, 
                    {duration: animTime, easing: ACCORDION_EASING_METHOD});
            }
            // go to next iteraction of loop
            continue;
        }
        // if div is hovered, we move it max to the left, the code is identical,
        // but is separated for future to add maybe some special actions
        if(index == i)
        {
            // calculate new margin
            var newMargin = (i*ACCORDION_DRAW_ASIDE_WIDTH);
            // if new margin is diffrent from div destination margin the animation is set 
            if(g_slidedDivs[i].dest != newMargin) 
            {   
                // first we stop old animation
                object.stop();
                // animation time
                var animTime = ACCORDION_SLIDE_TIME;
                // save new margin           
                g_slidedDivs[i].dest = newMargin;
                // set new animation
                object.animate(
                    {marginLeft: newMargin+"px"}, 
                    {duration: animTime, easing: ACCORDION_EASING_METHOD});
            }
            // go to next iteraction of loop   
            continue;
        }
        // if div lie on right we move it on right, we must calculate
        // margin from right border of accordion container   
        if(i > index)
        {
            // calculate new margin 
            var newMargin = (ACCORDION_WIDTH - ((g_slidedDivs.length - i) * ACCORDION_DRAW_ASIDE_WIDTH));
            // if new margin is diffrent from div destination margin the animation is set 
            if(g_slidedDivs[i].dest != newMargin) 
            {   
                // first we stop old animation   
                object.stop();
                // animation time    
                var animTime = ACCORDION_SLIDE_TIME;
                // save new margin            
                g_slidedDivs[i].dest = newMargin;
                // set new animation   
                object.animate({"marginLeft": newMargin+"px"}, {duration: animTime,
                    easing: ACCORDION_EASING_METHOD});
            }
            // go to next iteraction of loop 
            continue;
        }
    }
} // end of function setMoveForAccordionDivs  


var g_actualSlideImage = 0;
// auto play timer handle for accordion image slider
var g_sliderTimerAutoPlay = null;
// if have true, the new loop of slider is starting
var g_sliderNewLoop = false;
// true if new slider loop gona be start
var g_setBackwardBtnOnLast = false;

function accordionPlay()
{
    if(g_loadedStripCount < g_slidedDivs.length)
    {
        // fire up slider
        if(true == g_sliderAutoPlay)
        {
            g_sliderTimerAutoPlay = setTimeout(accordionPlay, g_timeAutoPlayInit);
        }      
        return;
    }      

    var timeOut = g_sliderTimerInterval;
 
    if(BACKWARD == g_lastSlideMoveDirection)
    {
        g_actualSlideImage++;
        if(g_actualSlideImage >= g_slidedDivs.length)
        {
            g_actualSlideImage = 0;
            g_sliderNewLoop = true;
        } 
    }
    g_lastSlideMoveDirection = FORWARD;
    
    g_setBackwardBtnOnLast = false;
    if(true == g_sliderNewLoop)
    {
        ribOutWidth = ACCORDION_WIDTH / g_slidedDivs.length;
        mouseOutAccorOnAll(null);
       
        for(var i = 0; i < g_slidedDivs.length; i++)
        {
            // if div is currently moved we stop the animation
            // and set new animation for left margin
            $j(g_slidedDivs[i].name).stop()
                .animate({marginLeft: (i*ribOutWidth)+"px"}, {duration: 900, easing: ACCORDION_EASING_METHOD});
            // we set the destination member to the same value
            g_slidedDivs[i].dest = i*ribOutWidth;
            $j(g_slidedDivs[i].name).find(".slideDesc").stop().animate({opacity: 1.0}, 2000); 
        }
        g_sliderNewLoop = false;
        // for backward button, we set the index to last element
        g_setBackwardBtnOnLast = true;
        // fire up slider
        g_sliderTimerAutoPlay = setTimeout(accordionPlay, g_sliderTimerIntervalLoop); 
        return;
    }
    
    mouseOutAccorOnAll(null); 
    mouseOnAccor(g_slidedDivs[g_actualSlideImage].name);
    
    g_actualSlideImage++;
    if(g_actualSlideImage >= g_slidedDivs.length)
    {
        g_actualSlideImage = 0;
        g_sliderNewLoop = true;   
    }
    
    // fire up slider
    if(true == g_sliderAutoPlay)
    {
        g_sliderTimerAutoPlay = setTimeout(accordionPlay, g_sliderTimerInterval);
    }      
    
} // end of function accordionPlay

function setupAccordionAutoPlay()
{
    // fire up auto play for accordion image slider
    if(true == g_sliderAutoPlay)
    {
        g_sliderTimerAutoPlay = setTimeout(accordionPlay, g_timeAutoPlayInit);
    }
} // end of function setupAccordionAutoPlay

function mouseOnAccor(_this)
{
    // now we need to find the index of hovered div,
    // so we searching it name in array g_slidedDivs, when
    // the named match we save index and break loop  
    var index = 0;
    for(var i = 0; i < g_slidedDivs.length; i++)
    {
        if(("#" + $j(_this).attr('id')) == g_slidedDivs[i].name)
        {        
            index = i;
            break;
        }
    }
    g_slidedDivs[index].out = 0;

    // stop and set new animation of main image opacity
    $j(_this).find(".accordionSlideImage").find("img").stop().animate({opacity: 1.0}, 400); 
    // stop and set new animation of image description background div
    $j(_this).find(".accordionDescBack").stop().animate({bottom: 0, opacity: 0.8}, 1000);
    // stop and set new animation of image description div
    $j(_this).find(".accordionDesc").stop().animate({bottom: 0, opacity: 1.0}, 1000);
    $j(_this).find(".slideStrip").stop().animate({opacity: 0.0}, 300, function(){ $j(this).css('visibility', 'hidden'); });
  
    // draw aside all divs
    setMoveForAccordionDivs(index);
} // end of function mouseOnAccor

function mouseOutAccor(_this)
{
    var context = $j('#accordionContainer')[0];
    // stop and set new animation of main image opacity
    $j(_this, context).find(".accordionSlideImage").find("img").stop().animate({opacity: 0.0}, 800
    ,function(){$j(_this, context).find(".slideStrip").css('visibility', 'visible').stop().animate({opacity: 1.0}, 600);}
    );
    // stop and set new animation of image description background div   
    $j(_this, context).find(".accordionDescBack").stop().animate({bottom: -70, opacity: 0}, 300);
    // stop and set new animation of image description div   
    $j(_this, context).find(".accordionDesc").stop().animate({bottom: -70, opacity: 0}, 300);
    
} // end of function mouseOutAccor

function mouseOutAccorOnAll(excludedID)
{
    for(var j = 0; j < g_slidedDivs.length; j++)
    {
       if(excludedID != null)
       {
         if(excludedID == g_slidedDivs[j].name)
         {
            continue;
         }
       }
       if(g_slidedDivs[j].out != 1)
       {
            g_slidedDivs[j].out = 1;
            mouseOutAccor(g_slidedDivs[j].name);
       }
    } 
} // end of function mouseOutAccorOnAll


/**********************************
    ACCORDION CONTROL PANEL CODE
***********************************/
// true - forward, false - backward
var FORWARD = true;
var BACKWARD = false;
var g_lastSlideMoveDirection = FORWARD;

function setupAccordionControlPanel()
{
    // fadeout description text
    $j("#accorControlBtnDesc").fadeTo(0, 0.0);
    if(false == g_sliderAutoPlay)
    {
        $j("#accorPlayBtn").attr("src", "/assets/play.png");
    } else
    {
        $j("#accorPlayBtn").attr("src", "/assets/pause.png");
    }    

    // bind function to accordion control panel play button called then button is clicked 
    $j("#accorPlayBtn").click(
        function()
        {
            // change state of accordion slider auto play
            g_sliderAutoPlay = !g_sliderAutoPlay;
            // if auto play is off, we need to clear actual timer,
            // in other case, if slider is on, we set new timer function call
            if(false == g_sliderAutoPlay)
            {
                clearTimeout(g_sliderTimerAutoPlay);
                
                mouseOutAccorOnAll(null);
                var ribOutWidth = ACCORDION_WIDTH / g_slidedDivs.length; 
                for(var i = 0; i < g_slidedDivs.length; i++)
                {
                    // if div is currently moved we stop the animation
                    // and set new animation for left margin
                    $j(g_slidedDivs[i].name).stop()                    
                        .animate({marginLeft: (i*ribOutWidth)+"px"}, {duration: 900, easing: ACCORDION_EASING_METHOD});
                    // we set the destination member to the same value
                    g_slidedDivs[i].dest = i*ribOutWidth;
                    $j(g_slidedDivs[i].name).find(".slideDesc").stop().animate({opacity: 1.0}, 2000); 
                }                
            } else
            {
                 g_sliderTimerAutoPlay = setTimeout(accordionPlay, g_timeAutoPlayInit); 
            }
            if(true == g_sliderAutoPlay)
            {
                 $j(this).attr("src", "/assets/pause_hover.png");
            } else
            {
                  $j(this).attr("src", "/assets/play_hover.png");
            }
        }
    );

    // bind function to accordion control panel play button called then button is hovered by user
    $j("#accorPlayBtn").hover(
        function ()
        {
            // set text and slow fade to 100%
            $j("#accorControlBtnDesc").text(g_playBtnDesc).fadeTo("slow", 1.0);
           
            if(false == g_sliderAutoPlay)
            {
                $j(this).attr("src", "/assets/play_hover.png");
            } else
            {
                $j(this).attr("src", "/assets/pause_hover.png");
            }
        },
        function ()
        {
            if(false == g_sliderAutoPlay)
            {
                $j(this).attr("src", "/assets/play.png");
            } else
            {
                $j(this).attr("src", "/assets/pause.png")
            }
            $j("#accorControlBtnDesc").stop().fadeTo(0, 0.0);  
        }
    );
    
    // bind function to accordion control panel backward button called then button is hovered by user
    $j("#accorBackBtn").hover(
        function ()
        {
           // set text and slow fade to 100%  
           $j("#accorControlBtnDesc").text(g_prevBtnDesc).fadeTo("slow", 1.0); 
           $j(this).attr("src", "/assets/back_hover.png");
        },
        function ()
        {
            $j(this).attr("src", "/assets/back.png");
            $j("#accorControlBtnDesc").stop().fadeTo(0, 0.0); 
        }
    );
    
    // bind function to accordion control panel backward button called then button is clicked
    $j("#accorBackBtn").click(
        function()
        {
            clearTimeout(g_sliderTimerAutoPlay);
            if(FORWARD == g_lastSlideMoveDirection)
            {
               g_actualSlideImage--;
            }
            g_lastSlideMoveDirection = BACKWARD;
            
            if(false == g_setBackwardBtnOnLast)
            {
                mouseOutAccorOnAll(null);
                g_actualSlideImage--;
                
                // if new loop is in progress we must stop it
                if(true == g_sliderNewLoop)
                {
                    g_sliderNewLoop = false;
                }
                
                if(0 > g_actualSlideImage)
                {
                    // if slider is on last slided div in this moment g_actualSlideImage 
                    // value is -2 becouse above we have two decreasing operations
                    if(g_actualSlideImage == -2)
                    {
                        // so in this situation we must set slider on the next to last slided div
                        g_actualSlideImage = g_slidedDivs.length - 2;
                    } else
                    {
                        // in normal situation we move one slide back
                        g_actualSlideImage = g_slidedDivs.length - 1;
                    }
                }
                mouseOnAccor(g_slidedDivs[g_actualSlideImage].name);
            } else
            {
                mouseOutAccorOnAll(null);
                g_actualSlideImage = g_slidedDivs.length - 1;                                               
                mouseOnAccor(g_slidedDivs[g_actualSlideImage].name);
                g_setBackwardBtnOnLast = false;               
            }
            // fire up slider
            if(true == g_sliderAutoPlay)
            {
                g_sliderTimerAutoPlay = setTimeout(accordionPlay, g_timeAutoPlayInit); 
            }
        }
    );     
    
    // bind function to accordion control panel forward button called then button is hovered by user
    $j("#accorForwardBtn").hover(
        function ()
        {
            // set text and slow fade to 100% 
            $j("#accorControlBtnDesc").text(g_nextBtnDesc).fadeTo("slow", 1.0);
            $j(this).attr("src", "/assets/forward_hover.png");
        },
        function ()
        {
            $j(this).attr("src", "/assets/forward.png");
            $j("#accorControlBtnDesc").stop().fadeTo(0, 0.0);   
        }
    ); 
    
    // bind function to accordion control panel forward button called then button is clicked
    $j("#accorForwardBtn").click(
        function()
        {
            clearTimeout(g_sliderTimerAutoPlay);
            g_sliderNewLoop = false; 
            
            if(BACKWARD == g_lastSlideMoveDirection)
            {
                 g_actualSlideImage++;
                 if(g_actualSlideImage >= g_slidedDivs.length)
                 {
                    g_actualSlideImage = 0;
                    g_sliderNewLoop = true;
                 }                  
            }
            g_lastSlideMoveDirection = FORWARD;
            mouseOutAccorOnAll(null);
            mouseOnAccor(g_slidedDivs[g_actualSlideImage].name);
    
            g_actualSlideImage++;
            if(g_actualSlideImage >= g_slidedDivs.length)
            {
                g_actualSlideImage = 0;
                g_sliderNewLoop = true;
            }
            // fire up slider
            if(true == g_sliderAutoPlay)
            {
                g_sliderTimerAutoPlay = setTimeout(accordionPlay, g_timeAutoPlayInit); 
            }
        }
    );       

} // end of function setupAccordionControlPanel 

/***************************************
    ADDITIONAL CUFON FONT REPLACEMENT
****************************************/

function setupAdditionalCufonFontReplacement()
{
    if(g_useCufon == false)
    {
        return;
    }

    Cufon.replace(".tabHeader", {fontWeight: 400});
    Cufon.replace(".tabsHeader", {fontWeight: 700});
     
    Cufon.replace(".accordionDescHeader", {fontWeight: 700});
    Cufon.replace("#servicesProductsHeader", {fontWeight: 300});
    Cufon.replace("#latestNewsHeader", {fontWeight: 300});
} // end of function setupAddCufonFontReplacement

/***************************************
    ACTION FOR LATEST NEWS FIELDS
****************************************/

function setupLatestNews()
{
    $j(".lastNews").hover(
        function()
        {
            $j(this).find(".lastNewsTitle").css("color", "#222");
        },        
        function()
        {
            $j(this).find(".lastNewsTitle").css("color", "#444");
        }
    );
} // end of function setupLatestNews

/*********************************************
    ASYNCHRONOUS IMAGE LOADING FOR ACCORDION
**********************************************/
g_loadedSlideCount = 0;
g_imgList = null;

function checkAccordionLoading()
{
    if(g_loadedSlideCount < g_imgList.length)
    {  
       setupLoadingAsynchronousImagesForAccordion();
    }
} // end of function checkAccordionLoading 

function setupLoadingAsynchronousImagesForAccordion()
{
    if(g_imgList == null)
    {
        // get list of all slided divs in slider
        var imgDivsList = $j("#accordionContainer .asyncImgLoadAccordion");
        // collect information on every div in to an global array
         g_imgList = new Array;
         var firstDiv = $j("#accordionContainer .accordionImgDiv:first");
         var imgDiv = $j(firstDiv).find(".asyncImgLoadAccordion");
         for(var i = 0; i < imgDivsList.length; i++)
         {
            var obj = new Object(); 
            obj.id = "#" + $j(imgDiv).attr('id'); 
            g_imgList.push(obj); 

            firstDiv = $j(firstDiv).next(".accordionImgDiv");    
            imgDiv = $j(firstDiv).find(".asyncImgLoadAccordion");
         }
    }
        
    if(g_loadedSlideCount < g_imgList.length)
    {  
       g_loadedSlideCount++;
       loadAccordionImg(g_imgList[g_loadedSlideCount-1].id, g_loadedSlideCount-1);
       setTimeout(setupLoadingAsynchronousImagesForAccordion, 500);
    }
        
        function loadAccordionImg(id, _index)
        {   
            // save handle to loader - caintainer which we gona insert loaded image    
            var loader = $j(id);
            // get image path from loader title attribute
            var imagePath = loader.attr('title');
            // create new image object
            var img = new Image();
            // set opacity for image to maximum
            // value 0.0 means completly transparent
            $j(img).css("opacity", "0.0")
            // nex we set function wchig goba be caled then
            // image load is finished  
                .load(
                    function() 
                    {
                        // insert loaded image to loader object 
                        // and remove unnecessary title attribute
                        loader.append(this).removeAttr('title');
                        // for inserted image we set margin to zero
                        // opacity to max and fire up 500ms opacity animation 
                        loader.css("background-image", "none");
                        $j(this)
                            .css("margin", "0px")
                            .css("opacity", "0.0");
                        
                        if(_index == g_hoveredSlideIndex)
                        {
                            $j(this).animate({opacity: 1.0}, 500);
                        }                        
                            
                    }
                // set new value for attribute src - this means: load image from imagePath    
                ).attr('src', imagePath);                        
        } 
        
           
} // end of function setupLoadingAsynchronousImagesForAccordion 

var g_loadedStripCount = 0;
var g_stripList = null;
function setupLoadingAsyncSlideStripImages()
{
    if(g_stripList == null)
    {
        // get list of all slided divs in slider
        var imgDivsList = $j("#accordionContainer .slideStrip");
        // collect information on every div in to an global array
         g_stripList = new Array;
         var firstDiv = $j("#accordionContainer .accordionImgDiv:first");
         var imgDiv = $j(firstDiv).find(".slideStrip");
         for(var i = 0; i < imgDivsList.length; i++)
         {
            var obj = new Object(); 
            obj.id = imgDiv; 
            g_stripList.push(obj); 

            firstDiv = $j(firstDiv).next(".accordionImgDiv");    
            imgDiv = $j(firstDiv).find(".slideStrip");
         }
    }
        
    if(g_loadedStripCount < g_stripList.length)
    {  
       
       loadStripImg(g_stripList[g_loadedStripCount].id, g_loadedStripCount);
       
    } else
    {
        if(true == g_sliderAutoPlay) 
        {
            clearTimeout(g_sliderTimerAutoPlay);
            g_sliderTimerAutoPlay = setTimeout(accordionPlay, g_timeAutoPlayInit);
        }
    }
        
        function loadStripImg(id, _index)
        {   
            // save handle to loader - caintainer which we gona insert loaded image    
            var loader = $j(id);
            // get image path from loader title attribute
            var imagePath = loader.attr('title');
            // create new image object
            var img = new Image();
            // set opacity for image to maximum
            // value 0.0 means completly transparent
            $j(img).css("opacity", "0.0")
            // nex we set function wchig goba be caled then
            // image load is finished  
                .load(
                    function() 
                    {
                        // insert loaded image to loader object 
                        // and remove unnecessary title attribute
                        loader.append(this).removeAttr('title');
                        // for inserted image we set margin to zero
                        // opacity to max and fire up 500ms opacity animation 
                        g_loadedStripCount++;
                        $j(this)
                            .css("margin", "0px")
                            .css("opacity", "0.0")
                            .animate({opacity: 1.0}, 400, function()
                            {
                                loader.css("background-image", "none"); 
                                setTimeout(setupLoadingAsyncSlideStripImages, 20); 
                            });                            
                    }
                // set new value for attribute src - this means: load image from imagePath    
                ).attr('src', imagePath);                      
        } 
} // end of function setupLoadingAsyncSlideStripImages 

/***************************************
    CODE FOR TABS
****************************************/
// handle to selected tab
var g_selectedTab = null;
var g_tabsBtnColor = g_themeColor;

function setupTabs()
{
    // selecting all tab switch on
    var tabs = $j(".tabsBtn");

    // for every tab we doing the same things
    for(var i = 0; i < tabs.length; i++)
    {
        // veriable for object with class tabsDefaultTab
        var defaultTab = null;
        // lets find default tab element
        defaultTab = $j(tabs[i]).find(".tabsDefaultTab");
        // if currently analysed tab contains the default tab element 
        if(0 != defaultTab.length)
        {
            var tabSource = $j(tabs[i]).find(".tabsSource").text();
            $j(tabSource).css("visibility", "visible").css("top", 0);
            $j(tabs[i]).each(function(){g_selectedTab = this;});
            $j(tabs[i]).css("background-color", g_tabsBtnColor);
            break;
        }
    } // for


    $j(".tabsBtn").click(
        function()
        {
             if(g_selectedTab == this)
             {
                return;
             } 
             if(g_selectedTab != null)
             {
                $j(g_selectedTab).css("background-color", "#000");
             }
             var oldSource = $j(g_selectedTab).find(".tabsSource").text();
             g_selectedTab = this;
             $j(this).css("background-color", g_tabsBtnColor);
             
             $j(oldSource).animate({opacity: 0.0}, 200, 
                function()
                {
                    $j(this).css("visibility", "hidden");
                    var tabSource = $j(g_selectedTab).find(".tabsSource").text();
                    $j(tabSource)
                        .css("opacity", 0.0)
                        .css("top", 0)
                        .css("visibility", "visible")
                        .animate({opacity: 1.0}, 400); 
                }
             );
        }
    );

    $j(".tabsBtn").hover(
        function()
        {
            if(this != g_selectedTab)
            {
                $j(this).css("background-color", g_tabsBtnColor);
            }
        },
        function()
        {
            if(this != g_selectedTab)
            {
                $j(this).css("background-color", "#000000");
            }
        }
    );
} // end of function setupTabs  
       

       
/***************************************
    MAIN CODE - CALL THEN PAGE LOADED
****************************************/
       
// binding action to event onload page
$j(document).ready(
    function()
    {

        // common.js
        setupGlobal();        
        setupToolTipText();
        setupSearchBox();
        setupCufonFontReplacement();
        setupMultiImageLightBox();
        setupSideBarMiniSlider();
        setupLinkLightBox();
        setupSidebarTabsPanel();
        setupLoadingAsynchronousImages();
        setupToolTipImagePreview();
        setupTextLabelImagePreview();
        setupFaderMoverSlider();   
        // this file
        setupAdditionalCufonFontReplacement();
        setupNewsBar();
        setupTabs();
        if($j("#accordionContainer").length > 0)
        {
            // call this functions only if accordion is included
            setupLoadingAsynchronousImagesForAccordion();
            setupLoadingAsyncSlideStripImages();            
            setupAccordionImageSlider();
            if(g_showControlPanel)
            {
                setupAccordionControlPanel();        
            }
            if(g_sliderAutoPlay)
            {   
                setupAccordionAutoPlay();
            }
        }
        setupLatestNews();
    }
);

