History
   Show Presentation
 
 
 dsn.min.inc GARBAGE-CACHE
Home • Plugins • RWD-Plugins_Old • RWDConfig • RWDDigitalSign • js • OLD • dsn.min.inc GARBAGE-CACHE
 




/*
*       Digital Signage 2.55A3  R-STRUCT VER.
*       --------------------------      
*       JQ vertical scroller script: http://buildinternet.com/project/totem/  (Totem Ticker) -MIT Lisc.
*       JSON Controller // XHR System : rob@firstclassdepot.com
*       
*       Grabs JSON file and uses it to set up Digital Signage.
*       Check JSON file, as of now, everything EXCEPT Ticker{} will be reloaded after all the content has scrolled.
*       
*/


(function( $ ){
        
        if(!$.omr){
                $.omr = {};
        }


        //12HR -> 24Hr CONVERSION LOOKUP
        var ac = {"12":  "00", "01":  "01", "02":  "02", "03":  "03", "04":  "04", "05":  "05", "06": "06", "07": "07", "08": "08", "09": "09", "10": "10", "11": "11"};
        var pc = {"12": "12", "01": "13", "02": "14", "03": "15", "04": "16", "05": "17", "06": "18", "07": "19", "08": "20", "09": "21", "10": "22", "11": "23"};
        var cv12 = {"AM": ac, "PM": pc};

        //24HR -> 12Hr CONVERSION LOOKUP
        var cv24 = {"00": "12", "01": "01", "02": "02", "03": "03", "04": "04", "05": "05", "06": "06", "07": "07", "08": "08", "09": "09", "10": "10", "11": "11", "12": "12", "13": "01", "14": "02", "15": "03", "16": "04", "17": "05", "18": "06", "19": "07", "20": "08", "21": "09", "22": "10", "23": "11"};


        $.omr.ds = function(el, options ) {
                var base = this;
                
                //Master Data Structure
                base.json = {};
                
                //Define the DOM elements
                base.el = el;
                base.$el = $(el);

                //Add a reverse reference to the DOM object
                base.$el.data("omr.ds", base);

                base.init = function()
                {

                base.json = $.extend({},base.defaultConfiguration(), options);

                        //Define the ticker object
                        base.ticker;

                //Disable Caching
                base.setAJAX();
                        
                //Adjust the height of ticker if specified
                base.format_ticker();
                        
                //Start Data Poll Intreval
                base.start_dataPollIntreval();
                        

                base.applyPage();


                //Start the ticker
                //base.start_ticker();

                //Debugging info in console
                //base.debug_info();
                };
                

                base.setAJAX = function(){
                $.ajaxSetup ({
                        // Disable caching of AJAX responses
                        cache: false,
                        timeout: 20000
                });
                };




                base.sortElements = function(dsElements){
                                /**********************************************
                                //SORT AREA. AD | AM | PM  BY START TIME
                                ***********************************************/

                                var adEvents = [];
                                var amTop = [];
                                var amEvents = [];
                                var pmEvents = [];
                                var pmTop = [];
                                var sorted = [];

                                var k;
                                
                                for (k in dsElements)
                                {
                                        var current = dsElements[k];
                                                
                                        if(current.alldayevent === true)
                                        {adEvents.push(current);}
                                        else
                                        {
                                                //WORKS WITH LPAD OR NO LPAD.
                                                //var start = ''+current.start+'';
                                                var start = current.start;
                                                var ampm = start.substring(start.length-2,start.length);

                                                if(parseFloat(start.substring(0,2)).toFixed(0) == 12 && ampm == "AM")
                                                        {amTop.push(current);}
                                                else if (parseFloat(start.substring(0,2)).toFixed(0) == 12 && ampm=="PM")
                                                        {pmTop.push(current);}
                                                else if(ampm == "AM")
                                                        {amEvents.push(current);}
                                                else
                                                        {pmEvents.push(current);}       
                                        }       
                                }

                                
                                // SORT COMPARATOR
                                function compare(a,b)
                                {               
                                  /* DEBUG ALERT */
                                  //alert(" .. ST:" + a.start.substring(0,2).toString().replace(":",'') + "AS : "+ parseInt(parseFloat(a.start.substring(0,2)).toFixed(0).toString().replace(":",''),10) + "    ||  ST:"  + b.start.substring(0,2).toString().replace(":",'') + "AS : " +   parseInt(parseFloat(b.start.substring(0,2)).toFixed(0).toString().replace(":",''),10));

                                  if (parseInt(parseFloat(a.start.substring(0,2)).toFixed(0).toString().replace(":",''),10) <  parseInt(parseFloat(b.start.substring(0,2)).toFixed(0).toString().replace(":",''),10))
                                        { return -1;}
                                  if (parseInt(parseFloat(a.start.substring(0,2)).toFixed(0).toString().replace(":",''),10) > parseInt(parseFloat(b.start.substring(0,2)).toFixed(0).toString().replace(":",''),10))
                                        { return 1;}
                                  return 0;             
                                }

                                amTop.sort(compare);
                                amEvents.sort(compare);
                                pmEvents.sort(compare);
                                pmTop.sort(compare);
                                sorted = adEvents.concat(amTop).concat(amEvents).concat(pmTop).concat(pmEvents);

                                return sorted;  
                        };
                        
        




        base.defaultConfiguration=function()
        {
                var deflt={};

        /**********************************************
        // DEFAULT TICKER
        ***********************************************/
        deflt.ticker = {};      
        deflt.ticker.full_screen= false;
        deflt.ticker.items_to_show= 5;
        deflt.ticker.speed= 4000;
        deflt.ticker.intreval= 15000;
        deflt.ticker.polltime= 3600000;
        deflt.ticker.rowheight= "80px";
        deflt.ticker.scroll_direction= "down";
        deflt.ticker.scroll_off= false;
        deflt.ticker.calendar_select= "";
        deflt.ticker.calendar_link= "";
        deflt.ticker.show_past= true;
        deflt.ticker.time_diff= -4;

        /**********************************************
        // DEFAULT TICKER.ITEM
        ***********************************************/
        deflt.ticker.item = {};
        deflt.ticker.item.background_color= "#FFFFFF";
        deflt.ticker.item.src= "img/event_bg.jpg";
        deflt.ticker.item.background_opacity= 95;
        deflt.ticker.item.time_color= "#969696";


        /**********************************************
        // DEFAULT PAGE
        ***********************************************/
        deflt.ticker.page = {};
        deflt.ticker.page.title= "Default Title";
        deflt.ticker.page.fullscreen_background= 1;
        deflt.ticker.page.background_color= "#FFFFFF";  
        deflt.ticker.page.width= "auto";
        deflt.ticker.page.height= "auto";
        deflt.ticker.page.background_image= "img/stockholm.jpg";


        /**********************************************
        // DEFAULT PAGE.WIDGET
        ***********************************************/
        deflt.ticker.page.widget = {};
        deflt.ticker.page.widget.display_widget= 1;
        deflt.ticker.page.widget.src= "tetris.html";
        deflt.ticker.page.widget.width= "430px";
        deflt.ticker.page.widget.height= "auto";
        deflt.ticker.page.widget.position= "top";


        /**********************************************
        // DEFAULT PAGE.LOGO
        ***********************************************/
        deflt.ticker.page.logo = {};
        deflt.ticker.page.logo.src= "img/welcome_swedish.png";
        deflt.ticker.page.logo.position= "top";
        deflt.ticker.page.logo.width= "auto";
        deflt.ticker.page.logo.height= "auto";


        /**********************************************
        // DEFAULT PAGE.FOOTER
        ***********************************************/
        deflt.ticker.page.footer = {};
        deflt.ticker.page.footer.display_footer= 1;
        deflt.ticker.page.footer.text= "Firstclass Depot (c) 2012";
        deflt.ticker.page.footer.height = "18px";


        /**********************************************
        //DEFAULT PAGE.HEADER
        ***********************************************/
        deflt.ticker.page.header = {};
        deflt.ticker.page.header.src= "img/fc_logo_sm.png";
        deflt.ticker.page.header.position= "top";
        deflt.ticker.page.header.display_time = 1;
        deflt.ticker.page.header.width= "auto";
        deflt.ticker.page.header.height= "auto";
        deflt.ticker.page.header.text= "Header Text";
        deflt.ticker.page.header.color= "#FFFFFF";
        deflt.ticker.page.header.font_family= "Tahoma";
        deflt.ticker.page.header.font_size= "36px";
        deflt.ticker.page.header.text_decoration= "bold";

                deflt.elements={};

                return deflt;
        };






base.loadConfigurationFile=function()
{

var temp = {};

$.get('<!--#echo var="config_parameter" -->',
function(data)
{


        /**********************************************
        // GET TICKER
        ***********************************************/
        temp.ticker = {};
        temp.ticker.full_screen =data.Ticker['full-screen'];
        temp.ticker.items_to_show = data.Ticker['items-to-show'];
        temp.ticker.speed= data.Ticker['speed'];
        temp.ticker.intreval = data.Ticker['intreval'];
        temp.ticker.polltime = 8000;
        //temp.ticker.polltime = data.Ticker['polltime'];
        temp.ticker.rowheight =data.Ticker['rowheight'];
        temp.ticker.scroll_direction = data.Ticker['scroll-direction'];
        temp.ticker.scroll_off = data.Ticker['scroll-off'];     
        temp.ticker.calendar_select = data.Ticker['calendar-select'];   
        temp.ticker.calendar_link = data.Ticker['calendar-link'];       
        temp.ticker.show_past = data.Ticker['show-past'];
        temp.ticker.time_diff=data.Ticker['time-diff'];


        /**********************************************
        // GET TICKER.ITEM
        ***********************************************/
        temp.ticker.item = {};
        temp.ticker.item.background_color = data.Ticker.item['background-color'];               
        temp.ticker.item.src = data.Ticker.item['src']; 
        temp.ticker.item.background_opacity = data.Ticker.item['background-opacity'] -1;        
        temp.ticker.item.time_color = data.Ticker.item['time-color'];


        /**********************************************
        // GET PAGE
        ***********************************************/
        temp.ticker.page = {};
        temp.ticker.page.title = data.Page['title'];
        temp.ticker.page.fullscreen_background = data.Page['fullscreen-background'];
        temp.ticker.page.background_color = data.Page['background-color'];              
        temp.ticker.page.width = data.Page['width'];
        temp.ticker.page.height = data.Page['height'];
        temp.ticker.page.background_image = data.Page['background-image'];


        /**********************************************
        // GET PAGE.WIDGET
        ***********************************************/
        temp.ticker.page.widget = {};
        temp.ticker.page.widget.display_widget = data.Page.widget['display-widget'];
        temp.ticker.page.widget.src =data.Page.widget['src'];
        temp.ticker.page.widget.width = data.Page.widget['width'];
        temp.ticker.page.widget.height = data.Page.widget['height'];
        temp.ticker.page.widget.position = data.Page.widget['position'];


        /**********************************************
        // GET PAGE.LOGO
        ***********************************************/
        temp.ticker.page.logo = {};
        temp.ticker.page.logo.src = data.Page.logo['src'];
        temp.ticker.page.logo.position = data.Page.logo['position'];
        temp.ticker.page.logo.width = data.Page.logo['width'];
        temp.ticker.page.logo.height = data.Page.logo['height'];


        /**********************************************
        // GET PAGE.FOOTER
        ***********************************************/
        temp.ticker.page.footer = {};
        temp.ticker.page.footer.display_footer = data.Page.footer['display-footer'];
        temp.ticker.page.footer.text = data.Page.footer['text'];
        temp.ticker.page.footer.height = data.Page.footer['height'];


        /**********************************************
        // GET PAGE.HEADER
        ***********************************************/
        temp.ticker.page.header = {};
        temp.ticker.page.header.src =data.Page.header['src'];
        temp.ticker.page.header.position = data.Page.header['position'];
        temp.ticker.page.header.display_time = data.Page.header['display-time'];
        temp.ticker.page.header.width = data.Page.header['width'];
        temp.ticker.page.header.height = data.Page.header['height'];
        temp.ticker.page.header.text = data.Page.header['text'];
        temp.ticker.page.header.color = data.Page.header['color'];
        temp.ticker.page.header.font_family= data.Page.header['font-family'];   
        temp.ticker.page.header.font_size = data.Page.header['font-size'];
        temp.ticker.page.header.text_decoration= data.Page.header['text-decoration'];



                        console.log("(1)... loading configuration file ...");

if ($.param(temp.ticker,null,2) !=$.param(base.json.ticker,null,2) )
{
        console.log("<!>  Configuration File Change Detected - re-applying page styles and reloading ticker");
        base.json.ticker = temp.ticker;
        base.applyPage();
        base.applyCalendarEvents();
}

        base.loadCalendarEvents();



}, "json")
.error(function(jqXHR, textStatus, errorThrown){
        alert("An error occured while loading the congifuration file. \n\n" + textStatus + "\n\n"+jqXHR.responseText );
        console.log("Config Load Error :" + textStatus + "\n\n Incoming Text :" + jqXHR.responseText);
});
};





                base.loadCalendarEvents = function()
                {
        


                     if(typeof base.json.ticker.calendar_link != "undefined" )
                      {

                        console.log("(2)... loading calendar events ...");

                function changeDetection(nw)
                {
                        if($.param(nw,null,2) !=$.param(base.json.elements,null,2) )
                        {
                                console.log(" <!> Event List Change Detected - reloading ticker");
                                base.json.elements = nw;
                                base.applyCalendarEvents();
                        }
                }

                        //Sel=0 :: FC
                        //Sel=1 :: GCAL
                        //Sel=2 :: CONFIG
                        var sel = (base.json.ticker.calendar_link.indexOf("google")<0)?0:1;


                        //CURRENT DATE-TIME VARS
                        var now = new Date();
                        var ch = now.getHours();
                        var cm = now.getMinutes();
                        var mm = (((now.getMonth()+1)).length==2)?(now.getMonth()+1):('0'+(now.getMonth()+1));
                        var dd = (((now.getDate()+2)).length==2)?(now.getDate()):('0'+(now.getDate()));
                        dd = dd.substring(dd.length-2,dd.length);


                        //CAL URL PARAMS INIT (XHR ENTRY)
                        //Note: If params is null, then eparams starts with '?'
                        var calURL = "";
                        var params = "";        
                        var eparams = "";
                        var url = "";


                        /**********************************************
                        //MASTER SWITCH
                        ***********************************************/        
                        switch(sel)
                        {
                                case 0:
                                /**********************************************
                                // [FC] First Class Calendar Elements
                                ***********************************************/        
                                 //calURL = 'http://'+location.hostname + base.json.ticker.calendar_link;
                                 calURL = base.json.ticker.calendar_link;
                                 params = "";
                                 eparams = "";                                          
                                 url =  calURL + params + eparams;                      

                                $.get(url,function(data)
                                {
                        
                                        /**********************************************
                                        // FC Pull
                                        ***********************************************/
                                        //DS ELEMENTS INTO ARRAY STRUCT
                                        var dsElements = [];

                                        var k;

                                        for( k in data.Elements)
                                         {

                                                //WE WANT PROPER ELEMENTS ONLY
                                                if(typeof data.Elements[k]['no'] !== 'undefined')
                                                {
                                                        var msg = {};
                                                        var current = data.Elements[k];
        
                                                        msg.no = current['no'];
                                                                
                                                        //PARSE VARS FOR TIME
                                                        var tmin = "All Day";
                                                        var st = current['start_time'];
                                                        var p = st.indexOf(":");
                                                        var now = false;
                                                        
                                                        if(p<0)
                                                        {
                                                                        msg.alldayevent=true;
                                                                        msg.start = "";
                                                                        msg.end = "";
                                                                        msg.duration = "All Day";
                                                        }
                                                        else
                                                {               
                                                                        /**********************************************
                                                                        //PARSE THE TIME (12H)
                                                                        ***********************************************/        
                
                                                                        //START TIME EXPLODED (0L PADDED) LEN:8
                                                                        st = current['start_time'];
                                                                        p = st.indexOf(":");
                                                                        var s0 = (st.substring(0,p).length==1)?'0'+st.substring(0,p):st.substring(0,p);
                                                                        var s1 = st.substring(st.length-5,st.length-3);
                                                                        var s2 = st.substring(st.length-2,st.length);

                                                                        //END TIME EXPLODED (0L PADDED) LEN:8
                                                                        var en = current['end_time'];
                                                                        var d = en.indexOf(":");
                                                                        var e0 = (en.substring(0,d).length==1)?'0'+en.substring(0,d):en.substring(0,d);
                                                                        var e1 = en.substring(en.length-5,en.length-3);
                                                                        var e2 = en.substring(en.length-2,en.length);
                                                                                

                                                                        /**********************************************
                                                                        //CURRENT EVENT INDICATORS (BOOL1 && BOOL2)=OUT
                                                                        ***********************************************/
                                                                        var bool1 = (ch==parseInt(cv12[s2][s0],10))? ((cm>=parseInt(s1,10))?true:false):((ch>parseInt(cv12[s2][s0],10))?true:false);
                                                                        var bool2 = (ch==parseInt(cv12[e2][e0],10))? ((cm<=parseInt(e1,10))?true:false):((ch<parseInt(cv12[e2][e0],10))?true:false);
                                                                        msg.indicator = (bool1 && bool2);
                                                                                
                                                                                
                                                                        /**********************************************
                                                                        //CONVERT THE TIME TO 24Hr (For Duration)
                                                                        ***********************************************/
                                                                        //alert(s0 + ":" + s1 + s2 + " to " + e0 + ":" + e1 + e2);
                                                                        var s0i = parseInt(parseFloat(cv12[s2][s0],10).toFixed(0),10);
                                                                        var e0i = parseInt(parseFloat(cv12[e2][e0],10).toFixed(0),10);
                                                                                

                                                                        var hrs = 0;
                                                                        if(s0i >=13 && e0i <=11)
                                                                                {hrs = parseInt(24-s0i,10) + parseInt(e0i,10);}
                                                                        else
                                                                                {hrs = parseInt(e0i,10) - parseInt(s0i,10);}
                                                                                
                                                                        tmin = ((60*hrs) + (parseInt(e1,10) - parseInt(s1,10)));
                                                                        msg.alldayevent = false;
                                                                        msg.duration = Math.floor(tmin/60) + "Hr " +  (tmin%60) + "Min";
                                
                                                                        msg.start = (s0) + ":" + s1 + ((parseInt(s0i,10)<12)?" AM":" PM");                                                                  
                                                                        msg.end = (e0) + ":" + e1 + ((parseInt(e0i,10)<12)?" AM":" PM");                
                                                        }
                                                                
                                                                        
                                                                //msg.backgroundcolor = current['background-color'];
                                                                msg.title =  "<!--<img src= \"img/fc.png\"  style=\"width:30px;   height:30px; padding-top:4px; padding-right:4px; \"/>--> " + current['title'];
                                                                msg.subject = current['subject'];
                                                                msg.href = current['href'];

                                                                /**********************************************
                                                                //PAST EVENT CHECK
                                                                ***********************************************/
                                                                var past = (typeof(base.json.ticker.show_past) == "undefined")? true : base.json.ticker.show_past;
                                                                var bool3 = (ch==e0i)?((cm>parseInt(e1,10))?false:true):((ch>e0i)?false:true);
                                                                if((!past && bool3) || past || msg.alldayevent)
                                                                                {dsElements.push(msg);}
                                                }
                                        }
                                        changeDetection(base.sortElements(dsElements));
                                },'json');
                                break;

                                case 1:
                                /**********************************************
                                // [GCAL] Google Calendar Elements [CROSS DOMAIN/CROSS SITE SCRIPTING; TRANSPORT: JSONP (ALT)]
                                ***********************************************/        
                                
//TimeZone Issue (Non Persistent)

var o = base.json.ticker.time_diff;
o = (parseInt(o,10)>0)?("+"+o):(o);
o = o.length>2?o: o.substring(0,1) +'0' + o.substring(1,2);
o = o + ":00";
o = o.replace('+', '%2B');
//o = "%2D00:00";


                                //GCAL XHR PARAMS
                                var startmin = now.getFullYear() +"-" +mm+"-"+dd+"T00:01:00"+o;
                                var startmax = now.getFullYear() +"-" +mm+"-"+dd+"T23:59:59"+o;
                                //alert(startmin + "\n" + startmax);

                                var singleevents = "true";
                                var sortorder = "ascending";
                                var alt = "json";

                                //BUILD XHR URL
                                 //params = "?alt="+alt+"&start-min="+startmin+"&start-max="+startmax+"&sortorder="+sortorder;
                                 params = "?alt="+alt+"&start-min="+startmin+"&start-max="+startmax;
                                 eparams = "";
                                 calURL = base.json.ticker.calendar_link;
                                 url = calURL + params + eparams;
        

                                $.get(url,function(data)
                                {               


                                        /* Note: No JSON Data Type, Responce is Text(?) And we use eval to get the JSON inside the callback function.
                                        (This is only relevant if using callback function (2.eparams) */        

                        //var data = eval(data);



                                        /* Note :: If there exists a event the night before at (XX:XX -> 00:00), it will display for one cycle and then get deleted. */
                                        //WE WANT PROPER ELEMENTS ONLY


                                        if(typeof(data.feed.entry) != 'undefined')
                                        {
                                                /**********************************************
                                                //GOOGLE CALENDAR DEV
                                                ***********************************************/        
                                                var dsElements = [];
                                                var calFullTitle = data.feed.title.$t;
                                                var calSubTitle = data.feed.subtitle.$t;
                                                var author = data.feed.author[0].name.$t;

                                                $.each(data.feed.entry,function(i,entry)
                                                {
                                                        var msg = {};
                                                        msg.no = entry.id.$t;   
                                                                                
                                                        var startTime;
                                                        var endTime;
var p =-2;
var n =0;

        
                                                        try
                                                        {
                                                        //PARSE VARS FOR TIME
startTime = entry.gd$when[0].startTime;
endTime = entry.gd$when[0].endTime;
p = startTime.indexOf("T");
n = startTime.indexOf(":",p);
}catch(err){}


//GOOGLE CALENDAR BUG FIX (FEED PARAM. BUG (start-min/max) All Day)
                                                        var fail = false;

                                                        if(p==-1)
                                                        {
                                                                if(startTime.substring(startTime.length-2)==dd)
                                                                {
                                                                        msg.alldayevent=true;
                                                                        msg.start = "";
                                                                        msg.end = "";
                                                                        msg.duration = "All Day";
                                                                }
else
{
        fail=true;
}
                                                        }
                                                        else
                                                        {
                                                                /**********************************************
                                                                //PARSE THE TIME (24H)
                                                                ***********************************************/        

                        //INDC 001
                                                                //START TIME EXPLODED (0L PADDED) LEN:5 (s0)
                        var s0 = startTime.substring(p+1,p+3);
                        var s1 = startTime.substring(n+1,n+3);

                        p = endTime.indexOf("T");
                        n = endTime.indexOf(":",p);
                                                                
                                                                //END TIME EXPLODED (0L PADDED) LEN:5  (e0)
                        var e0 = endTime.substring(p+1,p+3);
                        var e1 = endTime.substring(n+1,n+3);

                                                                /**********************************************
                                                                //CURRENT EVENT INDICATORS (BOOL1 && BOOL2)=OUT
                                                                ***********************************************/
                                                                var bool1 = (ch==parseInt(s0,10))? ((cm>=parseInt(s1,10))?true:false):((ch>parseInt(s0,10))?true:false);
                                                                var bool2 = (ch==parseInt(e0,10))? ((cm<=parseInt(e1,10))?true:false):((ch<parseInt(e0,10))?true:false);

                                                                msg.indicator = (bool1 && bool2);
                                                                        
                                                                /**********************************************
                                                                //DURATION COMPUTE
                                                                ***********************************************/
                                                                var s0i = parseInt(parseFloat(s0.substring(0,2)).toFixed(0),10);
                                                                var e0i = parseInt(parseFloat(e0.substring(0,2)).toFixed(0),10);
                                                                        
                                                                var hrs = 0;
                                                                if(s0i >=13 && e0i <=11)
                                                                        {hrs = parseInt(24-s0i,10) + parseInt(e0i,10);}
                                                                else
                                                                        {hrs = parseInt(e0i,10) - parseInt(s0i,10);}
                                                                        
                                                                var tmin = ((60*hrs) + (parseInt(e1,10) - parseInt(s1,10)));
                                                                msg.alldayevent = false;
                                                                msg.duration = Math.floor(tmin/60) + "Hr " +  (tmin%60) + "Min";
                                
                                                                msg.start = (cv24[s0]) + ":" + s1 + ((parseInt(s0i,10)<12)?" AM":" PM");                                                                         
                                                                msg.end = (cv24[e0]) + ":" + e1 + ((parseInt(e0i,10)<12)?" AM":" PM");          
                                                        }                       
                                                                
                                                        //msg.backgroundcolor = "#0064ce";
                                                        msg.title = "<!--<img src=\"img/gcal.jpg\" style=\"width:30px; height:30px; padding-top:4px; padding-right:4px; \"/>--> <a href="+entry.id.$t+">"+ entry.title.$t + "</a>";
                                                        msg.subject = entry.content.$t ;
                                                        msg.href = entry.id.$t;

                                                        /**********************************************
                                                        //PAST EVENT CHECK
                                                        ***********************************************/
                                                        var past = (typeof(base.json.ticker.show_past) == "undefined")? true : base.json.ticker.show_past;
                                                        var bool3 = (ch==e0i)?((cm>parseInt(e1,10))?false:true):((ch>e0i)?false:true);

                                                        if(((!past && bool3) || past || msg.alldayevent)&& !fail)
                                                        {dsElements.push(msg);}
                                                        
                                                });                     
                                        
                                        }
                                        changeDetection(base.sortElements(dsElements));
                                },'jsonp');
                                break;
                        
        
                                case 2:
                                        alert("iCAL PENDING ...");
                                break;
                        

                                default:
                                        alert("Configuration Error - Bad Calendar Selector");
                                break;
                        }

                        

                      }
                };
                
                



                base.applyPage = function()
                {

        document.title = base.json.ticker.page.title;

        /**********************************************
                        // APPLY HEIGHTS
                        ***********************************************/
                        var hi = (base.json.ticker.full_screen == true)?'auto' :(base.json.ticker.items_to_show * base.json.ticker.rowheight.replace(/px/i, ''));
$('#wrapper').css({"height" :hi});
$('#vertical-ticker').css({"height" : hi});     
$('#footer').css({"height" :base.json.ticker.page.footer.height });


                        /**********************************************
                        // APPLY COLORS
                        ***********************************************/        
$('#vertical-ticker').css({"background-color" : base.json.ticker.page.background_color});       
$('#pagewidth').css({"background-color" : base.json.ticker.page.background_color});     


                        /**********************************************
                        // APPLY BACKGROUND IMAGES
                        ***********************************************/        
$(!base.json.ticker.page.fullscreen_background?'#pagewidth' : '#vertical-ticker').css({
"background-image" : "none",
"background-repeat": "repeat",
"background-position": "",
"margin" : "",
"padding" : ""
});     

$(base.json.ticker.page.fullscreen_background?'#pagewidth' : '#vertical-ticker').css({
"background-image" : "url('"+base.json.ticker.page.background_image+"')",
"background-repeat": "repeat"
});     


                        /**********************************************
                        //APPLY HEADER
                        ***********************************************/
                        var d = base.json.ticker.page.header.text_decoration=="Italic"?"font-style":( base.json.ticker.page.header.text_decoration == "bold" ?"font-weight":"text-decoration");
                        var j = (typeof(base.json.ticker.page.header.text)=="undefined"?"":base.json.ticker.page.header.text) ;
                        

var builtHeader = "";

if(base.json.ticker.page.header.position == "top")
{
builtHeader = "<img src=\""+base.json.ticker.page.header.src+"\"    style=\"display:"+((base.json.ticker.page.header.src=="")?'none':'block')+"; width:"+base.json.ticker.page.header.width+";   height:"+base.json.ticker.page.header.height+";  \" />";
builtHeader+= "<span class=\"none\" style=\"text-align:left; color:"+base.json.ticker.page.header.color+"; font-size:"+base.json.ticker.page.header.font_size+"; font-family:"+base.json.ticker.page.header.font_family+";"+d+":"+base.json.ticker.page.header.text_decoration+"; \">"+ j + "</span>";
}
else if (base.json.ticker.page.header.position == "bottom")
{
builtHeader = "<span style=\"text-align:left; color:"+base.json.ticker.page.header.color+"; font-size:"+base.json.ticker.page.header.font_size+"; font-family:"+base.json.ticker.page.header.font_family+";"+d+":"+base.json.ticker.page.header.text_decoration+"; \">"+ j + "</span>";
builtHeader += "<img src=\""+base.json.ticker.page.header.src+"\"    style=\"display:"+((base.json.ticker.page.header.src=="")?'none':'block')+"; width:"+base.json.ticker.page.header.width+";   height:"+base.json.ticker.page.header.height+";  \" />";
}
else if (base.json.ticker.page.header.position == "left" || base.json.ticker.page.header.position == "right")
{
builtHeader ="<img src=\""+base.json.ticker.page.header.src+"\"    style=\"float:"+base.json.ticker.page.header.position+";  display:"+((base.json.ticker.page.header.src=="")?'none':'block')+"; width:"+base.json.ticker.page.header.width+";   height:"+base.json.ticker.page.header.height+";  \" /><p style=\" padding:0px; margin:0px;  text-align:left; color:"+base.json.ticker.page.header.color+"; font-size:"+base.json.ticker.page.header.font_size+"; font-family:"+base.json.ticker.page.header.font_family+";        "+d+":"+base.json.ticker.page.header.text_decoration+";  \">"+ j + "</p>";
}

                        
                        (base.json.ticker.page.header.src == "")?$('#top > img').hide():$('#top > img').show();


                        $('#header').html() != builtHeader?$('#header').html(builtHeader):'';
                        
                

                        /**********************************************
                        //APPLY LOGO
                        ***********************************************/
                        var builtLogo ="<img src=\""+base.json.ticker.page.logo.src+"\"    style=\"width:"+base.json.ticker.page.logo.width+";   height:"+base.json.ticker.page.logo.height+";\" />";
                var sp = "logo_bottom"; 


                if(base.json.ticker.page.logo.position == 'top')
                {
                        $('#logo_top').css({"display" :"block"});
                        $('#logo_bottom').css({"display" :"none"});
                         sp = "logo_top";       
                }
                else
                {
                        $('#logo_top').css({"display" :"none"});
                        $('#logo_bottom').css({"display" :"block"});
                                 sp = "logo_bottom";
                }
                        (base.json.ticker.page.logo.src == "")?$('#'+sp).hide():$('#'+sp).show();
                        $('#'+sp).html() != builtLogo?$('#'+sp).html(builtLogo):'';



                        /**********************************************
                        //APPLY FOOTER
                        ***********************************************/
                        if(base.json.ticker.page.footer.display_footer==1)
                        {
        $('#footer').css({"display" :"block"});
                                var builtFooter ="<p>"+base.json.ticker.page.footer.text+"</p>";
                                $('#footer').html() != builtFooter?$('#footer').html(builtFooter):'';
                        }
                        else
                        {
        $('#footer').css({"display" :"none"});
                        }
                        


                        /**********************************************
                        //APPLY WIDGET
                        ***********************************************/
                        if(base.json.ticker.page.widget.display_widget ==1)
                        {

                                //Frame Size
                        var h = base.json.ticker.page.widget.height;
                        var w = base.json.ticker.page.widget.width;

                                //Frame Source
                        var x = "/plugins/RWDDigitalSign/PreDefined_Widgets/" +(  (base.json.ticker.page.widget.src=== "")?( "?plugin=RWDDigitalSign&Templates=WidgetLists&panel_height="+h+"&panel_width="+w) :(base.json.ticker.page.widget.src)  );

                        //Strip Google Branding
function stripGoogle()
{
                                            if ($($('#frame')).contents().find('tr:last-child').text() == "Gadgets powered by Google")
                                        {
                                                try
                                                {
                                                        $($('#frame')).contents().find('tr:first-child').remove();
                                                        $($('#frame')).contents().find('tr:last-child').remove();
                                                }
                                catch(err){}
                                        }
}

                        //Frame Sizing Function
                        function sizeFrame(h,w)
                        {

                //Frame Sizing width
                if(w=="auto"){$('#frame').width($($($('#frame'))).contents().width());}
else {$('#frame').width(w);}

                                        //Frame Sizing height
                if(h=="auto") {$('#frame').height($($($('#frame'))).contents().height());}
                                        else{$('#frame').height(h);}

                $('#widget').height($($($('#frame'))).contents().height());
                $('#widget').width($($($('#frame'))).contents().width());
                        }

                        //IE BG-Color Fix, ETC.
function cleanWidget()
{
        $($($('#frame'))).contents().find("body").css({"margin-left":"0px"});
        $($($('#frame'))).contents().find("body").css({"background-color":"transparent"});
}


                        //Frame Loader
                        if(x != $($('#frame')).attr('src') && typeof(base.json.ticker.page.widget.src) != "undefined")
                {
                        $($('#frame')).attr('src',x);

                        //When Loaded,
                                        $('iframe#frame').load(function()
                                        {
                stripGoogle();
                                        sizeFrame(h,w);
                cleanWidget();
                                        });

                }
                
                sizeFrame(h,w);
        $('#widget').css({"display" :"block"});

}
else
                        {
        $('#widget').css({"display" :"none"});
                }

                };
                



                base.applyCalendarEvents=function()
                {       
                        //Apply the structure to the HTML doc
                        var tickerHTML = "";

var i;
for (i in base.json.elements)
{


tickerHTML+= "<li class=\"content\">";

tickerHTML+="<div class=\"tickeritem\"    style=\"height:"+base.json.ticker.rowheight+";\"        >";

                        
tickerHTML+="<div class=\"bg\" style=\"background-image: url('"+base.json.ticker.item.src+"'); background-color:"+ base.json.ticker.item.background_color+";   opacity:"+(base.json.ticker.item.background_opacity/100)+";   filter: alpha(opacity="+(base.json.ticker.item.background_opacity)+");\"></div>";
tickerHTML+="<div class=\"content\">";


tickerHTML+="<div class=\"left\">";
tickerHTML+="<div id=\"top\"> "+base.json.elements[i].start+" </div>";
tickerHTML+="<div id=\"bot\" style=\"background-color:navy;\"> <p>..</p></div>";
tickerHTML+="</div>";
        
        
tickerHTML+="<div class=\"right\">";
tickerHTML+="<div id=\"top\"  style=\"background-color:red;\"> <p> .. </p> </div>";
tickerHTML+="<div id=\"bot\"  style=\"background-color:white;\"> <p>.. </p> </div>";
tickerHTML+="</div>";
        
tickerHTML+="<div class=\"middle\" align=\"center\">";
tickerHTML+="<div id=\"top\"> <!--top-area--!></div>";
tickerHTML+="<div id=\"mid\"  style=\" background-color:"+base.json.ticker.item.time_color+"; \" > "+base.json.elements[i].title+" </div>";
tickerHTML+="<div id=\"bot\"> "+base.json.elements[i].start+" to "+base.json.elements[i].end+" -  ("+base.json.elements[i].duration+") </div>";


tickerHTML+="</div>";
tickerHTML+="</div>";


tickerHTML+="<br clear=\"all\">";
tickerHTML+="</div>";
tickerHTML+="</li>";


}




                        if(base.json.ticker.scroll_off)
                        {
                                var mi = (base.json.ticker.full_screen===true)?(   Math.floor(  parseInt(((typeof(window.innerHeight)=='undefined'?document.documentElement.clientHeight:window.innerHeight)-$('#header').height()-$('#footer').height()) ,10)    /    parseInt(base.json.ticker.rowheight.replace(/px/i, '') ,10))):(base.json.ticker.items_to_show);


                                var output = "";
                                var s;
                                for (s=0; i<mi; i++)
                                {
                                        /**********************************************
                                        //BLANK STYLE, STYLE AS NOTHING
                                        ***********************************************/
                                        

output+= "<li class=\"padding\">";
output+="<div class=\"none\" style=\"height:"+base.json.ticker.rowheight+";\">";
                        
output+="<div class=\"bg\"></div>";
output+="<div class=\"content\">";


output+="<div class=\"left\">";
output+="<div id=\"top\"> </div>";
output+="<div id=\"bot\"> </div>";
output+="</div>";
        
        
output+="<div class=\"right\">";
output+="<div id=\"top\"> </div>";
output+="<div id=\"bot\"> </div>";
output+="</div>";
        
output+="<div class=\"middle\" align=\"center\">";
output+="<div id=\"top\"> </div>";
output+="<div id=\"mid\"> </div>";
output+="<div id=\"bot\"> </div>";


output+="</div>";
output+="</div>";


output+="<br clear=\"all\">";
output+="</div>";
output+="</li>";


                                }
                                tickerHTML += output;
                        }

                        $("#vertical-ticker").html(tickerHTML);         

                base.reset_interval();
                
                };
                                        

        
                base.updateClock = function(){  
                        if (base.json.ticker.page.header.display_time==1)
                        {
                                var mydate=new Date();
                                var year=mydate.getYear();
                                if (year < 1000)
                                {year+=1900;}
                                var day=mydate.getDay();
                                var month=mydate.getMonth();
                                var daym=mydate.getDate();
                                if (daym<10)
                                {daym="0"+daym;}
                
                                var hour = mydate.getHours();
                                var min = mydate.getMinutes();
                                var sec = mydate.getSeconds();
                                var time;
                                
                                if(min<=9){min="0"+min;}
                                if(sec<=9){sec ="0"+sec;}
                                        if(hour>12){hour=hour-12;add=" <span class='ampm'>pm</span>";}
                                        else{add=" <span class='ampm'>am</span>";}
                                        //else{hour=hour;add=" <span class='ampm'>am</span>";}

                                if(hour==12){add="<span class='ampm'>pm</span>";}
                                if(hour==0){hour="12";} time=((hour<=9)?"0"+hour:hour)+":"+min+add;
                                
                                var dayarray=new Array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday");
                                var montharray=new Array("January","February","March","April","May","June","July","August","September","October","November","December");
                                
                                $('#theTime').html(time);
                                $('#theDate').html("<small><font color='white' face='Arial'><b>"+dayarray[day]+", "+montharray[month]+" "+daym+", "+year+"</b></font></small>");
        
                                var mc =  ($('#top').css('height').replace(/px/i,'')/2) -  ($('.dateTime').css('height').replace(/px/i,'')/2);
        $('.dateTime').css({"top" :   (mc<0)?'0px':mc + 'px'     });

                        }
                        else
                        {
                                $('#theTime').html('');
                                $('#theDate').html('');
                        }
                };
                                
                base.start_dataPollIntreval = function ()
                {
                        base.loadConfigurationFile();
                        $('#pagewidth').show();
                        setInterval(base.updateClock, 1000);
                        setInterval(base.loadConfigurationFile, base.json.ticker.polltime);
                };
                                
                base.start_ticker = function()
                {
                        //Clear out any existing interval
                        clearInterval(base.ticker);

                        if (base.json.ticker.scroll_direction == "down")
                        {
                                //If the direction has been set to up
                                base.ticker = setInterval(function()
                                {
                                base.$el.find('li:last').detach().prependTo(base.$el).css('marginTop', '-' + base.json.ticker.rowheight);
                                base.$el.find('li:first').animate({marginTop: '0px'}, base.json.ticker.speed, function () { /*Callback functions go here*/ });
                                }, base.json.ticker.intreval);


                        }
                        else if (base.json.ticker.scroll_direction == "up")
                        {
                                base.ticker = setInterval(function() {
                                base.$el.find('li:first').animate({marginTop: '-' + base.json.ticker.rowheight }, base.json.ticker.speed, function() { $(this).detach().css('marginTop', '0').appendTo(base.$el); });
                                }, base.json.ticker.intreval);
                        }
                };
                
                base.reset_interval = function(){                       
                        clearInterval(base.ticker);
                        base.start_ticker();
                };
                        
                base.stop_interval = function(){
                        clearInterval(base.ticker);
                };
                
                base.format_ticker = function(){
                
                           if(typeof(base.json.ticker.items_to_show) != "undefined" && base.json.ticker.items_to_show !== null)
                        {       
                                var mi = (base.json.ticker.items_to_show.full_screen===true)?('auto'): ((base.json.ticker.items_to_show *base.json.ticker.rowheight.replace(/px/i, ''))  + 'px');
                                base.$el.css({
                                        height          : mi,
                                        overflow        : 'hidden'
                                });
                        }
                        else
                        {
                                //No heights were specified, so just doublecheck overflow = hidden
                                base.$el.css({
                                        overflow        : 'hidden'
                                });
                        }       
                };
                
                
                //Make it go!
                base.init();
 };
 
  
        $.fn.ds = function( options )
        {
        return this.each(
                function()
                {
                        (new $.omr.ds(this, options));
                });

        };
 
})( jQuery );