/**
 * event.renderer.js
 * 2.25.10
 *
 * Provides event rendering for Hope event pages.
 *
 * @author Ryan Hardy
 * @version 1.0
 */
(function() {
    var ns = jwyre.module("org.hopesb");
    var ens = jwyre.module("org.hopesb.Event");
    
    var weekdays = ["Sunday", "Monday", "Tuesday", "Wendesday", "Thursday", "Friday", "Saturday"];
    
    var page = window.location.pathname;
    
    if ("/" == page || "/index.htm" == page) {
        ens.render = mainPageRender;
    } else {
        ens.render = regPageRender;
    }
        
    /**
     *
     * @param {Event || string} event
     * @param {object} pageLinks
     */
    function mainPageRender(event, pageLinks) {
        // this is the element to populate on the main Hope page
        var element = jwyre.element("#rightColumn");// || document.body; // use body for testing
        if (!element) {
			var parent = jwyre.element("#contentInner");
			element = jwyre.create("<div id='rightColumn'></div>");
			jwyre.append(parent, element);
		}
        jwyre.empty(element);
        var content = jwyre.create("<div class='moduletable'></div>");
        jwyre.append(element, content);
        if (event.length) {
            renderSummary(event, content, pageLinks);
            
            
            
        } else {
            // this should never happen
            wendigo.log(new Error("A call to org.hopesb.Event.render() occured without an Event list."));
        }
        
        function renderSingle(event, link) {
            var dateStr = "";
            if (event.eventDate) {
                var date = jwyre.date(event.eventDate);
                dateStr += weekdays[date.getWeekDay()] + ", ";
                dateStr += jwyre.Date.MONTHS[date.getMonth()].name + " ";
                dateStr += date.getDay() + " ";
                dateStr += date.getYear();
                dateStr += " " + event.eventTime;
            }
            
            var html = jwyre.create(
                "<table class='contentpaneopen'>" + 
                    "<tbody>" + 
                        "<tr>" + 
                            "<td class='contentheading' rowspan='1' colspan='1' width='100%'>" + 
                                event.name +
                            "</td>" + 
                        "</tr>" + 
                    "</tbody>" + 
                "</table>" + 
                "<table class='contentpaneopen'>" + 
                    "<tbody>" + 
                        "<tr>" + 
                            "<td rowspan='1' colspan='1' valign='top'>" + 
                                "<p>" + 
                                     dateStr + 
                                "</p>" + 
                                "<p>" + 
                                "</p>" + 
                            "</td>" + 
                        "</tr>" + 
                        "<tr>" + 
                            "<td rowspan='1' colspan='1' valign='top'>" + 
                                "<a href='"+link+"' class='readmore' shape='rect'>Read more...</a>" + 
                            "</td>" + 
                        "</tr>" + 
                    "</tbody>" + 
                "</table>",
				true
            );      
            return html;
        }
    
        function renderSummary(events, content, pageLinks) {
            var hdr = jwyre.create("<div class='tog'><h3>News and Upcoming Events</h3></div>");
            jwyre.append(content, hdr);
            
            var outer = jwyre.create("<div style='margin: 0px; overflow: hidden;'></div>");
            var inner = jwyre.create("<div style='margin: 0px;' class='cont'></div>");
            jwyre.append(outer, inner);
            jwyre.append(content, outer);
            
            content = inner;
            
            for (var i = jwyre.array(events).iterator(); i.hasNext();) {
                var evt = i.next();
                var link = pageLinks[evt.appId];
                var html = renderSingle(evt, link);
				html.each(function() {
                    jwyre.append(content, this);		
				});
                
                if (i.hasNext()) {
                    var sep = jwyre.create("<span class='article_separator'>&nbsp;</span>");
                    jwyre.append(content, sep);             
                }
            }
        }
        
        //TEMP FIX FOR DATE FOR MARY KAY EVENT.  WILL NOT BE IN NEW VERSION.
        fixMaryKayEvent();
    }
    
    /**
     *
     * @param {Event || string} event
     * @param {object} pageLinks
     */
    function regPageRender(event, pageLinks) {
        // this is the default element on Hope template page
        var element = jwyre.element("#contentInner") || document.body; // use body for testing
        var content = jwyre.create("<div style='width: 94%; margin: 0pt auto;'></div>");
        jwyre.append(element, content);
        if (event.length) {
            renderSummary(event, content, pageLinks);
        } else {
            renderSingle(event, content, false);
        }
        
        function renderSingle(event, content, isSummary) {
            var html = jwyre.create("<div class='eventContainer'></div>");
            jwyre.append(content, html);
            var hdr = jwyre.create("<div class='eventHeader'>" + event.name + "</div>");
            jwyre.append(html, hdr);
            
            var dateStr = "";
            if (event.eventDate) {
                var date = jwyre.date(event.eventDate);
                dateStr += weekdays[date.getWeekDay()] + ", ";
                dateStr += jwyre.Date.MONTHS[date.getMonth()].name + " ";
                dateStr += date.getDay() + " ";
                dateStr += date.getYear();
                dateStr += " " + event.eventTime;
            }
            var time = jwyre.create("<div class='eventTime'>" + dateStr + "</div>");
            jwyre.append(html, time);
            var sbj = jwyre.create("<div class='eventSubject'>" + event.subject + "</div>");
            jwyre.append(html, sbj);
            
            if (isSummary) {
                return html;
            }
            
            wendigo.doAjax({
                "request": event.fileUrl,
                "doWait": false,
                "parseJson": false,
                "callback": function(ajax) {
                    var eContent = jwyre.create("<div class='eventContent'></div>");
                    var eHtml = jwyre.create(ajax.getText(), true);
                    eHtml.each(function() {
                        jwyre.append(eContent, this);
                    });
                    jwyre.append(html, eContent);
                }
            });	
            
          //TEMP FIX FOR DATE FOR MARY KAY EVENT.  WILL NOT BE IN NEW VERSION.
            fixMaryKayEvent();
        }
        
        function renderSummary(events, content, pageLinks) {
            var hdr = jwyre.create("<div class='componentheading'>News and Upcoming Events at Hope</div>");
            jwyre.append(content, hdr);
            for (var i = jwyre.array(events).iterator(); i.hasNext();) {
                var evt = i.next();
                var html = renderSingle(evt, content, true);
                var link = pageLinks[evt.appId];
                
                if (link) {
                    var rdMore = jwyre.create("<div class='readMoreBox'><a class='readon' href='" + link + "'>Read more...</a></div>");
                    jwyre.append(html, rdMore);
                } else {
                    var rdMore = jwyre.create("<div class='readMoreBox'><span class='readon'>Read more...</span></div>");
                    jwyre.append(html, rdMore);
                }
                
                var sep = jwyre.create("<span class='article_separator'>&nbsp;</span>");
                jwyre.append(content, sep);
            }
        }  
        
      //TEMP FIX FOR DATE FOR MARY KAY EVENT.  WILL NOT BE IN NEW VERSION.
        fixMaryKayEvent();
    }
    
  //TEMP FIX FOR DATE FOR MARY KAY and DENVER MATTRESS EVENTS.  WILL NOT BE IN NEW VERSION.
    function fixMaryKayEvent(){   	
        $("p").each(function(index) {
		    if($(this).text() == "Sunday, October 23 2011 "){
		    	$(this).text("Now through December 7th");
		    }
		    else if($(this).text() == "Friday, November 11 2011 "){
		    	$(this).text("From November 11-24");
		    }
		}); 
        
        $(".eventTime").each(function(index) {
		    if($(this).text() == "Sunday, October 23 2011 "){
		    	$(this).text("Now through December 7th");
		    }
		    else if($(this).text() == "Friday, November 11 2011 "){
		    	$(this).text("From November 11-24");
		    }
		});
    }
    

})();
