﻿jQuery.fn.SMIS_SpecialSectionsWidget = function(options) {

    options = jQuery.extend({
        //plugin defaults
        appid: 15,
        display: "vertical",
        app: "newspapers",
        speed: 8000,
        itemsWidth: "90px",
        widgetWidth: "234px",
        maxchars: 25
    }, options);

    //
    //Initialization Variables
    //
    var SiteName = "http://specialsections.siteseer.ca"
    var MAX_CHARS;
    var openLink; 
    var tot;
    var regional;
    var local;
    var stop;
    var scrolling;
    //contains the total list items per page per widget.
    var totalListItems;
    //contains JSON
    var itemData;
    //the speed in which the items will auto scroll
    var timeOut = options.speed;
    var next;
    var firstPage;
    var totalPages;
    var curPage;
    var switchPage;
    //scrolling vars
    var prevId;
    var prevText;
    var nextId;
    var nextText;
    var orientation;
    var speed;
    //auto slider vars
    var obj;
    var s;
    var w;
    var h;
    var ts;
    var t;
    var hash = {};
    var maxHeight;
    var maxWidth;
  
    prevId = "prevBtn";
    prevText = "Previous";
    nextId = "nextBtn";
    nextText = "nextBtn";
    orientation = "vertical";
    speed = 300;
    switchPage = 0;
    curPage = 1;
    firstPage = true;
    scrolling = true;
    stop = false;
    openLink = "";

    next = "Regional";
    tot = 0;

    if (options.app == "hebdos") {
        local = "Locaux";
        regional = "Régionaux";
    }
    else {
        local = "Local";
        regional = "Regional";
    }
  

    //set the total list items per application
    if (options.app == "newspapers") {
        totalListItems = 6;
        MAX_CHARS = 27;
                maxHeight = 128;
        maxWidth = 115;
    }
    else if (options.app == "hebdos") {
        totalListItems = 7;
        MAX_CHARS = 22;
        maxHeight = 152;
        maxWidth = 115;
    }
    else if (options.app == "magazines") {
        totalListItems = 5;
        MAX_CHARS = 24;
            maxHeight = 128;
        maxWidth = 115;
    }
    else if(options.app == "ottawa")
    {
        totalListItems = 6;
        MAX_CHARS = 30;
            maxHeight = 128;
        maxWidth = 115;
    }
    else if(options.app == "sun"){
        totalListItems = 8;
        MAX_CHARS = options.maxchars;
        maxHeight = 170;
        maxWidth = 115;
    }
 
    
    function ScaleFactor(iw, ih, mw, mh){
        var scale = 1;
        var newWidth;
        var newHeight;
        if(iw < ih){
            scale = mh / ih;
           newWidth = iw * scale;
            if(newWidth > mw)
                scale = mw / iw;
        }
        else{
            scale = mw / iw;
            newHeight = ih * scale;
            if(newHeight > mh)
                scale = mh / ih
        }   

	    return scale;
    }
    
    //display the widget based on the options specified.
    if (options.display == "vertical") {
        if(options.app == "ottawa")
        {
            if (options.app == "hebdos")
            {
                var ss_title="<div id='ssTitle' ><div id='sss-eedition' class='np-ns_Image'  ><img src='" + SiteName + "/images/edition-e.png' /></div><div class='np-ns_Image2'><a id='np-ns' href='#'>"
                     +"<img style='border:0px;' src='" + SiteName + "/images/sm-wiget-logo-fr.png' /></a></div></div><div id='ssItems' style='padding-top: 10px;' />";
            }
            else
            {
                var ss_title="<div id='ssTitle' ><div id='sss-eedition' class='np-ns_Image'  ><img src='" + SiteName + "/images/e-edition-logo.png' /></div><div class='np-ns_Image2'><a id='np-ns' href='#'>"
                     +"<img style='border:0px;' src='" + SiteName + "/images/sm-wiget-logo.png' /></a></div></div><div id='ssItems' style='padding-top: 10px;' />";
            }
       
              $(this).append("<div id='ssVertTabs' class='wireframemenu' />");
            $("#ssVertTabs").append("<ul id='ssTabs'><li id='ssLocal'><a  style='height:50px;' href='#'></a></li><li id='ssRegional'><a style='height:68px;' href='#'></a></li></ul>");
            $(this).append("<div id='ssHeader' />");
            $("#ssHeader").append("<div id='ssVert' class='ssVertImage' />");
            $("#ssVert").append("<div id='ssImage' /><div id='ssImageOverflow1'>");
            $("#ssImageOverflow").append("<img id='ssThumb' src='' alt=''  />");
            $("#ssHContent").append("</div>");
            $("#ssHeader").append("<div id='ssHContent' />");
            $("#ssHContent").append(ss_title);
            $("#ssItems").append("<div id='slider'>");
            $("#slider").append("<ul id='ssLinkItems' />");
          
          
        }
        else
        {
            $(this).append("<div id='ssVertTabs' class='wireframemenu' />");
            $("#ssVertTabs").append("<ul id='ssTabs'><li id='ssLocal'><a  style='height:50px;' href='#'></a></li><li id='ssRegional'><a style='height:68px;' href='#'></a></li></ul>");
            $(this).append("<div id='ssHeader' />");
            $("#ssHeader").append("<div id='ssVert' class='ssVertImage' />");
            $("#ssVert").append("<div id='ssImage' /><div id='ssImageOverflow1'>");
            $("#ssImageOverflow").append("<img id='ssThumb' src='' alt=''  />");
            $("#ssHContent").append("</div>");
            $(this).append("<div id='ssHContent' />");
            if (options.app == "hebdos" || options.app == "sun")
            {
                $("#ssHContent").append("<div id='ssTitle' ><center><img src='" + SiteName + "/images/edition-e.png' /></center></div><div id='ssItems' />");
            }
            else
            {
                $("#ssHContent").append("<div id='ssTitle' ><center><img src='" + SiteName + "/images/e-edition-logo.png' /></center></div><div id='ssItems' />");
            }
            $("#ssItems").append("<div id='slider'>");
            $("#slider").append("<ul id='ssLinkItems' />");
            if (options.app == "hebdos")
            {
                $("#ssItems").append("<div><a id='np-ns' href='#'><img style='border:0px;' src='" + SiteName + "/images/sm-wiget-logo-fr.png' /></a></div>");
            }
            else if(options.app == "sun")
            {
                $("#ssItems").append("<div><a id='np-ns' href='#'><img style='border:0px;' src='" + SiteName + "/images/sm-wiget-logo2-fr.png' /></a></div>");
            }
            else
            {
                $("#ssItems").append("<div><a id='np-ns' href='#'><img style='border:0px;' src='" + SiteName + "/images/sm-wiget-logo.png' /></a></div>");
            }
        }
    }
    else 
    {
        var obj;
       
        $(this).append("<div id='ssMain' class='ssBase' />");
        if(options.app != "sun")
        {
            $("#ssMain").append("<ul id='tabnav' />");
            $("#tabnav").append("<li id='ssLocal' class='tab1'><a id='ssALocal' href='#'>" + local + "</a></li><li id='ssRegional' class='tab2'><a id='ssARegional' href='#'>" + regional + "</a></li>");
        }
         $("#ssMain").append("<div id='ssHContent' />")
        if(options.app == "sun")
            $("#ssHContent").css("width", options.widgetWidth);
       
        $("#ssHContent").append("<div id='ssImage'><div id='ssImageOverflow1'>");
        if ((options.app != "hebdos") && (options.app != "sun")) {
            $("#ssImageOverflow1").append("<img id='ssThumb' src='' alt='' />");
        }
        else {
            $("#ssImageOverflow1").append("<img id='ssThumb' src='' alt='' />").addClass("hebdos");
        }
        $("#ssHContent").append("</div>");
        var ssTitle = $("<div/>");
        ssTitle.attr("id","ssTitle");
        
        ssTitle.css("border","0px");

        if (options.app == "hebdos" || options.app == "sun") {
            ssTitle.append("<center><img src='" + SiteName + "/images/edition-e.png' /></center>");
        }
        else {
            ssTitle.append("<center><img src='" + SiteName + "/images/e-edition-logo.png' /></center>");
        }

        $("#ssHContent").append(ssTitle);
        
        $("#ssHContent").append("<div id='ssItems'></div>");
        if(options.app == "sun")
            $("#ssItems").css("width",options.itemsWidth);
     
        
        $("#ssItems").append("<div id='slider'>");
        if(options.app == "sun")
            $("#slider").css("width", options.itemsWidth);
        $("#slider").append("<ul id='ssLinkItems' />");

        
        if (options.app == "hebdos")
        {
            $("#ssItems").append("<div><a id='np-ns' href='#'><img style='border:0px;' src='" + SiteName + "/images/sm-wiget-logo-fr.png' /></a></div>");
        }
        else if(options.app == "sun")
         $("#ssItems").append("<div><a id='np-ns' href='#'><img style='border:0px;' src='" + SiteName + "/images/sm-wiget-logo2-fr.png' /></a></div>");
        else
        {
            $("#ssItems").append("<div><a id='np-ns' href='#'><img style='border:0px;' src='" + SiteName + "/images/sm-wiget-logo.png' /></a></div>");
        }
       
        if (options.app == "hebdos")
            $("#ssALocal").css("color", "#a11731");
    }
    
    //time object
    var objTime;
    
    //Get the first items when the widget starts
    getJson();
    
    //Runs after the async json call is made to ensure data has been captured
    function dataReady(){
        getItemsByTab("local");
    }

    ///Gets the items based on the selected tab.
    ///input: tabName. The name of the tab selected.
    function selectNextTab(tabName) {
        switch (tabName) {
            case ("Local"):
                $('#ssLocal').oneTime("500ms", function() {
                    ssLocal_Click();
                    next = "None";
                    firstPage = true;
                    curPage = 1;
                    switchPage = 0;
                });
                break;

            case ("Regional"):
                $('#ssRegional').oneTime("500ms", function() {
                    ssRegional_Click();
                    next = "Local";
                    firstPage = true;
                    curPage = 1;
                    switchPage = 0;
                });
                break;
        }
    }
    
       
    function GetPaddingTop(topDiff){
        if(topDiff < maxHeight)
            return Math.round((maxHeight - topDiff) / 2);
        else
            return 0;
    }
    
    function GetPaddingLeft(leftDiff){
   
        if(leftDiff < maxWidth)
            return Math.round((maxWidth - leftDiff) / 2);
        else return 0;
        
    }
    

    ///When an item is moused over, images and text highlights should occur
    ///input: i. the position of the item hovered over.
    function itemMouseOver(i) {
        var thumb = $("#ssThumb");
        var overflow = $("#ssImageOverflow1");
            
        if (next == "Regional")
            tabid = 0;
        else if (next == "Local")
            tabid = 1;
        else if (next == "None")
            tabid = 0;
            
        var item = itemData.tabs[tabid].items[i];
        
        if (i < tot) {

            thumb.remove();
            $("#ssImageOverflow1").append(hash[i]);
            thumb = $("#ssThumb");
            if(item.orientation == 0){
               var sf = ScaleFactor(imgArr[i].width, imgArr[i].height, maxWidth, maxHeight)
                var nw = Math.round(sf * imgArr[i].width)
                var nh = Math.round(sf * imgArr[i].height)
                var padLeft = GetPaddingLeft(nw);
                overflow.addClass("ssImageOverflow");
                thumb.height(nh).width(nw).css('margin-top',GetPaddingTop(nh)).css('margin-left', GetPaddingLeft(nw)).css('display', 'inline-block');
            }
            else{
                thumb.css('border', 'none');  
                thumb.css('height','');
                thumb.css('width' ,'');
                overflow.addClass("ssImageOverflow"); 
            }
            
            if (options.app == "newspapers")
                $(".ssSib" + i).css("color", "#EC0000");
            else if (options.app == "hebdos")
                $(".ssSib" + i).css("color", "#225bb4");
            else if (options.app == "magazines")
                $(".ssSib" + i).css("color", "#EC0000");
            else if (options.app == "ottawa")
                $(".ssSib" + i).css("color", "#EC0000");
            else if (options.app == "sun")
                $(".ssSib" + i).css("color", "#EC0000");
            openLink = item.url;
        }
    }

    //Set the cursor to a hand when you mouse over the image.
    $("#ssThumb").mouseenter(function() {
        $("#ssThumb").css("cursor", "pointer");
    });
    
    //Open the link in a new window when the image is clicked.
    $("#ssThumb").click(function() {
        if (openLink != "") {
            window.open(openLink);
        }
    });
    
    //Set the color back to the original when you mouse out.
    function itemMouseOut(i) {
        $(".ssSib" + i).css("color", "#444");
    }

    //Cycle through the items on a tab. The item will call the mouse over function and wait
    //the timeout interval before moving to the next item
    function CycleContent(i) {
        var len;
      
        if (i >= tot) {
            if (next == "Regional")
                selectNextTab("Regional");
            else
                selectNextTab("Local");
        }
        else {
            itemMouseOver(i);
            if (i > 0)
                itemMouseOut(i - 1);
            var f = function() { CycleContent(i + 1); };
            if (switchPage == totalListItems) {
                next_Click();
                switchPage = 0;
            }
            switchPage++;
            objTime = setTimeout(f, timeOut);
        }
    }

    //renders items based on the regional tab
    $("#ssRegional").click(function(e) {
        e.preventDefault();
        ssRegional_Click();
    });

    //renders items based on the local tab
    $("#ssLocal").click(function(e) {
        e.preventDefault();
        ssLocal_Click();
    });

    //stop the timer function from executing,
    this.mouseover(function() {
        clearTimeout(objTime);
    });
    
    //stop the timer function from executing
    this.hover(function() {
        clearTimeout(objTime);
    });

   
    //when the mouse leaves the widet, remove a tag highligts and restart the widget
    this.mouseleave(function() {
        if (next == "Local") {
            stop = true;
        }
        switchPage = 0;
    });
    
    //This method occurs when the regional tab is clicked. This method changes the graphics
    //and css then calls the getItemsByTab method.
    function ssRegional_Click() {
        next = "Local";
        firstPage = true;
        curPage = 1;
        switchPage = 0;
        $("#ssLinkItems").css("margin-top", "0px");
        if (options.display == "horizontal") {
            if (options.app != "hebdos") {
                $("#tabnav").css({ backgroundPosition: "0px 37px" });
            }
            else {
                $("#tabnav").css({ backgroundPosition: "0px 0px" });
                $("#ssARegional").css("color", "#a11731");
                $("#ssALocal").css("color", "#444");
            }
        }
        else {
            if (options.app == "magazines") {
                $("#ssVertTabs").css({ backgroundPosition: "0px 0px" });
            }
            else if(options.app == "ottawa")
            {
                $("#ssVertTabs").css({ backgroundPosition: "22px 0px" });
            }
        }
        getItemsByTab("region");
    }

    //This method occurs when the Local tab is clicked. This method changes the graphics
    //and css then calls the getItemsByTab method.
    function ssLocal_Click() {

        next = "None";
        firstPage = true;
        curPage = 1;
        switchPage = 0;
        $("#ssLinkItems").css("margin-top", "0px");
        if (options.display == "horizontal") {
            if (options.app == "hebdos") {
                $("#tabnav").css({ backgroundPosition: "0px 22px" });
                $("#ssALocal").css("color", "#a11731");
                $("#ssARegional").css("color", "#444");
            }
            else 
                $("#tabnav").css({ backgroundPosition: "0px 0px" });
        }
        else {
            if (options.app == "magazines") {
                $("#ssVertTabs").css({ backgroundPosition: "34px 0px" });
            }
            else if(options.app == "ottawa")
            {
                 $("#ssVertTabs").css({ backgroundPosition: "0px 0px" });
            }
        }
        scrolling = false;
        getItemsByTab("local");
    }
    
    //This method gets the Json from the tab aggregator and stores it in the itemData variable.
    function getJson() {
        $.getJSON(SiteName + "/services/tabAggregator.ashx?appid=" + options.appid + "&out=json&jsoncallback=?",
        function(data) {
            itemData = data;
            dataReady();
        });
    }

    //this method iniates the auto sliding and sliding.
    function initiateSliding() {
    
        curPage = 1;
        obj = $("#slider");
        s = $("li", obj).length;
        w = obj.width();
        h = obj.height();
        ts = s - 1;
        t = 0;
        var objScrollbar;
        if (options.app == "hebdos") {
            objScrollbar = $("<div id='ssScroll' style='float:left; margin-left: -4px;'><span id='" + prevId + "'><a style='border:none' href=\"javascript:void(0);\"><img style='clear:left; border:Solid 0px black; padding-top:10px;' src='" + SiteName + "/images/scroll-bar-up-butt.png' /></a></span><div style='height:70px;'></div><div><span id='" + nextId + "'><a style='border:none' href=\"javascript:void(0);\"><img style='clear:both;border:Solid 0px black;' src='" + SiteName + "/images/scroll-bar-down-butt.png' /></div></span>");
        }
        else if (options.app == "newspapers") {

            objScrollbar = $("<div id='ssScroll' style='float:left'><span id='" + prevId + "'><a style='border:none' href=\"javascript:void(0);\"><img style='clear:left; border:Solid 0px black; padding-top:10px;' src='" + SiteName + "/images/scroll-bar-up-butt.png' /></a></span><div style='height:62px;'></div><div><span id='" + nextId + "'><a style='border:none' href=\"javascript:void(0);\"><img style='clear:both;border:Solid 0px black;' src='" + SiteName + "/images/scroll-bar-down-butt.png' /></div></span>");
        }
        else if (options.app == "magazines") {

            objScrollbar = $("<div id='ssScroll' style='float:left'><span id='" + prevId + "'><a style='border:none' href=\"javascript:void(0);\"><img style='clear:left; border:Solid 0px black; padding-top:10px;' src='" + SiteName + "/images/scroll-bar-up-butt.png' /></a></span><div style='height:42px;'></div><div><span id='" + nextId + "'><a style='border:none' href=\"javascript:void(0);\"><img style='clear:both;border:Solid 0px black;' src='" + SiteName + "/images/scroll-bar-down-butt.png' /></div></span>");
        }
        else if(options.app == "ottawa")
        {
            objScrollbar = $("<div id='ssScroll' style='float:left; padding-top:10px;'><span id='" + prevId + "'><a style='border:none' href=\"javascript:void(0);\"><img style='clear:left; border:Solid 0px black; padding-top:15px;' src='" + SiteName + "/images/scroll-bar-up-butt.png' /></a></span><div style='height:52px;'></div><div><span id='" + nextId + "'><a style='border:none' href=\"javascript:void(0);\"><img style='clear:both;border:Solid 0px black;' src='" + SiteName + "/images/scroll-bar-down-butt.png' /></div></span>");
        } 
        else if(options.app == "sun")
        {
            objScrollbar = $("<div id='ssScroll' style='float:left;'><span id='" + prevId + "'><a style='border:none' href=\"javascript:void(0);\"><img style='clear:left; border:Solid 0px black; padding-top:5px;' src='" + SiteName + "/images/scroll-bar-up-butt.png' /></a></span><div style='height:85px;'></div><div><span id='" + nextId + "'><a style='border:none' href=\"javascript:void(0);\"><img style='clear:both;border:Solid 0px black;' src='" + SiteName + "/images/scroll-bar-down-butt.png' /></div></span>");
        }
        var page;
        page = tot / totalListItems;
        totalPages = Math.ceil(page);
        var vertical = true; 

        $("ul", obj).css('width', s * w);
        if (!vertical) $("li", obj).css('float', 'left');
        var len = $("#ssHContent").find("#ssScroll").length;
   
        if (len > 0) {
            $("#ssScroll").empty();
            $("#ssScroll").remove();
            
        }

        $("#ssHContent").append(objScrollbar);
        $("a", "#" + prevId).css("visibility", "hidden");

        if (curPage >= totalPages) {
            $("a", "#" + nextId).css("visibility", "hidden");
        }
        
        $("a", "#" + nextId).click(function() {
            next_Click();
        });
        $("a", "#" + prevId).click(function() {
            prev_Click();
        });
    }

    //when the next page button is clicked, this is called. it determines whether or not to show/hide the next
    //button and calls the animate method that slides to the next LI item.
    function next_Click() {
        animate("next");
        if (t >= ts) {
            $("a", "#" + nextId).css("visibility", "hidden");
        }
        firstPage = false;

        $("a", "#" + prevId).css("visibility", "visible");
        curPage++;
    }
    
    //when the Previous page button is clicked, this is called. it determines whether or not to show/hide the next
    //button and calls the animate method that slides to the previous LI item.
    function prev_Click() {
        animate("prev");
        if (t <= 0) {
            $("a", "#" + prevId).css("visibility", "hidden");
        }
        $("a", "#" + nextId).css("visibility", "visible");
        curPage--;
    }
   
     function isEmpty(val){
		if(val){
			return ((val===null) || val.length==0 || /^\s+$/.test(val));
		}else{
			return true;
		}
	}
	
	 function swapArrayVals(s,arr1,arr2){
		if(isEmpty(s)) return "";
		var re;
		if(arr1 && arr2){
			if(arr1.length == arr2.length){
				for(var x=0,i=arr1.length;x<i;x++){
					re = new RegExp(arr1[x], 'g');
					s = s.replace(re,arr2[x]); 
				}
			}
		}
		return s;
	}
    
    function HTML2Numerical (s){
		var arr1 = new Array('&nbsp;','&iexcl;','&cent;','&pound;','&curren;','&yen;','&brvbar;','&sect;','&uml;','&copy;','&ordf;','&laquo;','&not;','&shy;','&reg;','&macr;','&deg;','&plusmn;','&sup2;','&sup3;','&acute;','&micro;','&para;','&middot;','&cedil;','&sup1;','&ordm;','&raquo;','&frac14;','&frac12;','&frac34;','&iquest;','&agrave;','&aacute;','&acirc;','&atilde;','&Auml;','&aring;','&aelig;','&ccedil;','&egrave;','&eacute;','&ecirc;','&euml;','&igrave;','&iacute;','&icirc;','&iuml;','&eth;','&ntilde;','&ograve;','&oacute;','&ocirc;','&otilde;','&Ouml;','&times;','&oslash;','&ugrave;','&uacute;','&ucirc;','&Uuml;','&yacute;','&thorn;','&szlig;','&agrave;','&aacute;','&acirc;','&atilde;','&auml;','&aring;','&aelig;','&ccedil;','&egrave;','&eacute;','&ecirc;','&euml;','&igrave;','&iacute;','&icirc;','&iuml;','&eth;','&ntilde;','&ograve;','&oacute;','&ocirc;','&otilde;','&ouml;','&divide;','&oslash;','&ugrave;','&uacute;','&ucirc;','&uuml;','&yacute;','&thorn;','&yuml;','&quot;','&amp;','&lt;','&gt;','&oelig;','&oelig;','&scaron;','&scaron;','&yuml;','&circ;','&tilde;','&ensp;','&emsp;','&thinsp;','&zwnj;','&zwj;','&lrm;','&rlm;','&ndash;','&mdash;','&lsquo;','&rsquo;','&sbquo;','&ldquo;','&rdquo;','&bdquo;','&dagger;','&dagger;','&permil;','&lsaquo;','&rsaquo;','&euro;','&fnof;','&alpha;','&beta;','&gamma;','&delta;','&epsilon;','&zeta;','&eta;','&theta;','&iota;','&kappa;','&lambda;','&mu;','&nu;','&xi;','&omicron;','&pi;','&rho;','&sigma;','&tau;','&upsilon;','&phi;','&chi;','&psi;','&omega;','&alpha;','&beta;','&gamma;','&delta;','&epsilon;','&zeta;','&eta;','&theta;','&iota;','&kappa;','&lambda;','&mu;','&nu;','&xi;','&omicron;','&pi;','&rho;','&sigmaf;','&sigma;','&tau;','&upsilon;','&phi;','&chi;','&psi;','&omega;','&thetasym;','&upsih;','&piv;','&bull;','&hellip;','&prime;','&prime;','&oline;','&frasl;','&weierp;','&image;','&real;','&trade;','&alefsym;','&larr;','&uarr;','&rarr;','&darr;','&harr;','&crarr;','&larr;','&uarr;','&rarr;','&darr;','&harr;','&forall;','&part;','&exist;','&empty;','&nabla;','&isin;','&notin;','&ni;','&prod;','&sum;','&minus;','&lowast;','&radic;','&prop;','&infin;','&ang;','&and;','&or;','&cap;','&cup;','&int;','&there4;','&sim;','&cong;','&asymp;','&ne;','&equiv;','&le;','&ge;','&sub;','&sup;','&nsub;','&sube;','&supe;','&oplus;','&otimes;','&perp;','&sdot;','&lceil;','&rceil;','&lfloor;','&rfloor;','&lang;','&rang;','&loz;','&spades;','&clubs;','&hearts;','&diams;');
		var arr2 = new Array('&#160;','&#161;','&#162;','&#163;','&#164;','&#165;','&#166;','&#167;','&#168;','&#169;','&#170;','&#171;','&#172;','&#173;','&#174;','&#175;','&#176;','&#177;','&#178;','&#179;','&#180;','&#181;','&#182;','&#183;','&#184;','&#185;','&#186;','&#187;','&#188;','&#189;','&#190;','&#191;','&#192;','&#193;','&#194;','&#195;','&#196;','&#197;','&#198;','&#199;','&#200;','&#201;','&#202;','&#203;','&#204;','&#205;','&#206;','&#207;','&#208;','&#209;','&#210;','&#211;','&#212;','&#213;','&#214;','&#215;','&#216;','&#217;','&#218;','&#219;','&#220;','&#221;','&#222;','&#223;','&#224;','&#225;','&#226;','&#227;','&#228;','&#229;','&#230;','&#231;','&#232;','&#233;','&#234;','&#235;','&#236;','&#237;','&#238;','&#239;','&#240;','&#241;','&#242;','&#243;','&#244;','&#245;','&#246;','&#247;','&#248;','&#249;','&#250;','&#251;','&#252;','&#253;','&#254;','&#255;','&#34;','&#38;','&#60;','&#62;','&#338;','&#339;','&#352;','&#353;','&#376;','&#710;','&#732;','&#8194;','&#8195;','&#8201;','&#8204;','&#8205;','&#8206;','&#8207;','&#8211;','&#8212;','&#8216;','&#8217;','&#8218;','&#8220;','&#8221;','&#8222;','&#8224;','&#8225;','&#8240;','&#8249;','&#8250;','&#8364;','&#402;','&#913;','&#914;','&#915;','&#916;','&#917;','&#918;','&#919;','&#920;','&#921;','&#922;','&#923;','&#924;','&#925;','&#926;','&#927;','&#928;','&#929;','&#931;','&#932;','&#933;','&#934;','&#935;','&#936;','&#937;','&#945;','&#946;','&#947;','&#948;','&#949;','&#950;','&#951;','&#952;','&#953;','&#954;','&#955;','&#956;','&#957;','&#958;','&#959;','&#960;','&#961;','&#962;','&#963;','&#964;','&#965;','&#966;','&#967;','&#968;','&#969;','&#977;','&#978;','&#982;','&#8226;','&#8230;','&#8242;','&#8243;','&#8254;','&#8260;','&#8472;','&#8465;','&#8476;','&#8482;','&#8501;','&#8592;','&#8593;','&#8594;','&#8595;','&#8596;','&#8629;','&#8656;','&#8657;','&#8658;','&#8659;','&#8660;','&#8704;','&#8706;','&#8707;','&#8709;','&#8711;','&#8712;','&#8713;','&#8715;','&#8719;','&#8721;','&#8722;','&#8727;','&#8730;','&#8733;','&#8734;','&#8736;','&#8743;','&#8744;','&#8745;','&#8746;','&#8747;','&#8756;','&#8764;','&#8773;','&#8776;','&#8800;','&#8801;','&#8804;','&#8805;','&#8834;','&#8835;','&#8836;','&#8838;','&#8839;','&#8853;','&#8855;','&#8869;','&#8901;','&#8968;','&#8969;','&#8970;','&#8971;','&#9001;','&#9002;','&#9674;','&#9824;','&#9827;','&#9829;','&#9830;');
		return swapArrayVals(s,arr1,arr2);
	}
    
   function htmlDecode(s){

		var c,m,d = s;
		if(isEmpty(d)) return "";
		d = HTML2Numerical(d);
		arr=d.match(/&#[0-9]{1,5};/g);
	
		if(arr!=null){
			for(var x=0;x<arr.length;x++){
				m = arr[x];
				c = m.substring(2,m.length-1); 
				
				if(c >= -32768 && c <= 65535){
					
					d = d.replace(m, String.fromCharCode(c));
				}else{
					d = d.replace(m, ""); 
				}
			}			
		}
		return d;
	}
    
    function animate(dir) {
        var vertical = true;
        if (dir == "next") {
            t = (t >= ts) ? ts : t + 1;
        } else {
            t = (t <= 0) ? 0 : t - 1;
        };
        if (!vertical) {
            p = (t * w * -1);
            $("ul", obj).animate(
						{ marginLeft: p },
						speed
			);
        } else {
            p = (t * h * -1);
            $("ul", obj).animate(
						{ marginTop: p },
						speed
			);
        }
    };

    s = $(this).length;
    if (s > 1) $("a", "#" + nextId).fadeIn();

    function getImgSize(imgSrc)
    {
        var newImg = new Image();
        newImg.src = imgSrc;
        var height = newImg.height;
        var width = newImg.width;
        return newImg;
    }
    //on first load, get the first item image, from the first tab and the listing of all of its items.
    //this method also initates the sliding methods.
    function getItemsByTab(region) {
        var tabid;
        if (region == "local")
            tabid = 0;
        else
            tabid = 1;
        tot = 0;
        
            var perLI = 0;
            var l = 0;
            $("#ssLinkItems").html("");
                 hash = {};
                 imgArr = {};
            $.each(itemData.tabs[tabid].items, function(i, item) {
                
                var item = itemData.tabs[tabid].items[i];
                imgArr[i] = getImgSize(item.img);
                //preload images
                var img = "<img id='ssThumb' src='" + imgArr[i].src + "' alt='" + item.title + "' />";
                hash[i] = img;                
         
                if (perLI == 0) {
                    $("#ssLinkItems").append("<li id='ssLIitem" + l + "'>");
                }
                $("#np-ns").attr("href", itemData.Newstand);
                $("#np-ns").attr("target", "_blank");
                
                $("#ssThumb").attr("src", itemData.tabs[tabid].items[0].img);
                var theText;
                var s = htmlDecode(itemData.tabs[tabid].items[i].title);
                var requiresToolTip = false;
                if(itemData.tabs[tabid].items[i].pubPriority == "0")
                {
                   if(s.length > MAX_CHARS)
                   {
                        theText = "• " + s.substring(0, MAX_CHARS + 1) + "...";
                        requiresToolTip = true;
                   }
                   else
                       theText = "• " + s;
                }
                else
                {
                    if(s.length > MAX_CHARS)
                    {
                       theText = s.substring(0, MAX_CHARS) + "...";
                       requiresToolTip = true;
                    }
                    else
                       theText = s;
                }
                
                $("<a class='ssSib" + i + "' target='_blank' />").text(theText).attr("href", itemData.tabs[tabid].items[i].url).mouseover(function() {

                    $("#ssThumb").attr("src", itemData.tabs[tabid].items[i].img);
                    itemMouseOver(i);

                }).appendTo("#ssLIitem" + l).append("</li><br />");
                if(requiresToolTip){
                    $(".ssSib" + i).attr("title", htmlDecode(itemData.tabs[tabid].items[i].title));
                }
                
                
                if (itemData.tabs[tabid].items[i].pubPriority == "1") {
                    $(".ssSib" + i).addClass("sswTabbed");
                    
                }
                $(".ssSib" + i).mouseout(function() {
                    itemMouseOut(i);
                });
                if (!scrolling) {
                    itemMouseOver(0);
                }
                perLI++;
                if (perLI == totalListItems) {
                    perLI = 0;
                    l++;
                }
                tot += 1;
            });
            initiateSliding();

            if (next != "None" && !stop) {
                var f = function() { CycleContent(0); };
                objTime = setTimeout(f, 100);
            }
    }
};