﻿// JScript File
/*
FILE:       YourCallv2.js
AUTHOR:	    Adriano Grimaldi
CREATED:	06.23.2009
DESC:		Used to create the YourCall object in the browser application.
*/
var YourCall = function(intArticleID) {
    var self = this;
    var submitted = false;
    var arrComments = [];
    this.ArticleID = intArticleID;
    this.PageNumber = (Comments.length / 20) - ((Comments.length % 20) / 20);
    this.YourCall_CurrentPage;
    if(self.YourCall_CurrentPage === undefined)
    {
        self.YourCall_CurrentPage = 1;
    }
    this.YourCall_StartingComment = (self.YourCall_CurrentPage - 1) * 20;
    this.YourCall_EndingComment = self.YourCall_StartingComment + 20;
    if(self.YourCall_EndingComment > Comments.length)
    {
        self.YourCall_EndingComment = Comments.length;
    }   
    
    //Comment Sorting
    var arrHighestScoreSort = function(a,b)
    {
        return (a.VoteScore === b.VoteScore ? 0 : b.VoteScore > a.VoteScore ? 1:-1);
    };
    var arrLowestScoreSort = function(a,b)
    {
        return (a.VoteScore === b.VoteScore ? 0 : b.VoteScore < a.VoteScore ? 1:-1);
    };
    var arrLatestSort = function(a,b)
    {
       return (a.SubDateTime === b.SubDateTime ? 0 : b.SubDateTime > a.SubDateTime ? 1:-1);
    };
    var arrOldestSort = function(a,b)
    {
        return (a.SubDateTime === b.SubDateTime ? 0 : b.SubDateTime < a.SubDateTime ? 1:-1);
    };
    var arrControversySort = function(a,b)
    {
        if(a.stdDev === 0) {
            return -1;
        }
        if(b.stdDev === 0) {
            return 1;
        }
        return (a.stdDev === b.stdDev ? 0 : a.stdDev > b.stdDev ? 1:-1);
    };
    var CommentSorter = function()
    {
        if(this.selectedIndex === 0)
        {
            arrComments = arrComments.sort(arrLatestSort);
        }
        if(this.selectedIndex === 1)
        {
            arrComments = arrComments.sort(arrOldestSort);
        }
        if(this.selectedIndex === 2)
        {
            arrComments = arrComments.sort(arrHighestScoreSort);
        }
        if(this.selectedIndex === 3)
        {
            arrComments = arrComments.sort(arrLowestScoreSort);
        }
        //if(this.selectedIndex === 4)
        //{
        //    arrComments = arrComments.sort(arrControversySort);
        //}
        //Remove Comment Nodes
        if(document.getElementById('YourCallComments'))
        {
            var ctrl;
            ctrl = document.getElementById('YourCallComments');        
            removeChildNodes(ctrl);
            //Write New Comments
            for(var i = self.YourCall_StartingComment; i < self.YourCall_EndingComment; i++)
            {           
                document.getElementById('YourCallComments').appendChild(arrComments[i].HTMLCommentRenderer());
            }
        }
        if(document.getElementById('ycBot'))
        {
            var ctrl;
            ctrl = document.getElementById('ycBot');        
            removeChildNodes(ctrl);
                       
            var ycBottomArray = new Array();
            ycBottomArray = self.ycBotHTMLRenderer();
            for(var i = 0; i < ycBottomArray.length; i++)
            {
                document.getElementById('ycBot').appendChild(ycBottomArray[i]);
            }
        }
    }; 
        
    var pager = function()
    {
        var cookie = LoggedIn();
        if(cookie != null)
        { 
            self.YourCall_CurrentPage = this.getAttribute("id");
            self.YourCall_StartingComment = (self.YourCall_CurrentPage - 1) * 20;
            self.YourCall_EndingComment = self.YourCall_StartingComment + 20;
            if(self.YourCall_EndingComment > Comments.length)
            {
                self.YourCall_EndingComment = Comments.length;
            }        
        }
        else
        {
            self.YourCall_CurrentPage = this.getAttribute("id");
            self.YourCall_StartingComment = (self.YourCall_CurrentPage - 1) * 20;
            self.YourCall_EndingComment = self.YourCall_StartingComment + 20;
            if(self.YourCall_EndingComment > Comments.length)
            {
                self.YourCall_EndingComment = Comments.length;
            }        
        }
        
        //Remove Comment Nodes
        if(document.getElementById('YourCallComments'))
        {
            var ctrl;
            ctrl = document.getElementById('YourCallComments');        
            removeChildNodes(ctrl);
            //Write New Comments
            for(var i = self.YourCall_StartingComment; i < self.YourCall_EndingComment; i++)
            {           
                document.getElementById('YourCallComments').appendChild(arrComments[i].HTMLCommentRenderer());
            }
        }
        var ycBottomArray = new Array();
        ycBottomArray = self.ycBotHTMLRenderer();
        for(var i = 0; i < ycBottomArray.length; i++)
        {
            document.getElementById('ycBot').appendChild(ycBottomArray[i]);
        }
    };
    
    //arrComments populator
    if(Comments != '')
    {
        for(var i = 0; i < Comments.length; i++)
        {
            objComment = Comments[i];
            arrComments.push(new Comment(objComment));            
        }
    }
    else{
        alert("Sorry there was an error loading the YourCall comments, please try again.");
    }
    //Default Sort
	arrComments = arrComments.sort(arrLatestSort);
	
    this.HTMLRenderer = function()
    {   
        var YourCallStoryArray = new Array();
        var cookie = LoggedIn();
        
        //Header Writer
        var ycHeaderLinkBanner = _createElement('a',null,{'href':'/community/'});
        var ycHeader = _createElement('div',ycHeaderLinkBanner,{'className':'ycHeader','name':'YourCallTop'});
        YourCallStoryArray.push(ycHeader);
        YourCallStoryArray.push(self.ycTopHTMLRenderer());
        
        //PostComment Brick
        if(cookie != null){
            var CookieArray = cookie.split("&");
            var IFrame = _createElement('iframe',null,{'src':'/YourCall/CommentSubmit.aspx?username=' + ExtractStringFromArray(CookieArray, /^user_name=(.*)/) + '&userid=' + ExtractStringFromArray(CookieArray, /^user_id=(.*)/) + '&articleid=' + this.ArticleID + '&parentid=0&submitted=' + submitted,'height':'135','width':'430','scrolling':'no','frameborder':'no'});
            var PostCommentDiv = _createElement('div',IFrame,{'className':'PostComment','id':'PostComment'});
            var imgSpacer = _createElement('img',null,{'src':'http://images.tsn.ca/images/silver/yourcall/spacer.gif','alt':''});
            var SpacerDiv = _createElement('div',imgSpacer,null);
            //Add to document
            YourCallStoryArray.push(PostCommentDiv);
            YourCallStoryArray.push(SpacerDiv);
        }
        
            //Write New Comments
            var YourCallCommentsArray = new Array();
            for(var i = self.YourCall_StartingComment; i < self.YourCall_EndingComment; i++)
            {           
                YourCallCommentsArray[i] = (arrComments[i].HTMLCommentRenderer());
            }
            var CommentDiv = _createElement('div',YourCallCommentsArray,{'id':'YourCallComments'});
            YourCallStoryArray.push(CommentDiv);

        //Write Bottom Nav Bar
        var ycBarBot = _createElement('div',self.ycBotHTMLRenderer(),{'className':'ycBar','id':'ycBot'});
        YourCallStoryArray.push(ycBarBot);
        //Write YourCall Element
        var ycStoryElementTest = _createElement('div',YourCallStoryArray,null);
        //Add YourCall Element to Page
        document.getElementById("tsnYourCallStory").appendChild(ycStoryElementTest);
        //Add Sort Bar Options
        appendOptionLast('Latest');
        appendOptionLast('Oldest');
        appendOptionLast('Highest Score');
        appendOptionLast('Lowest Score');
        //appendOptionLast('Hotlist');
        //Add YourCall Actions
        JQueryAddOns();
        
    };

    this.ycTopHTMLRenderer = function()
    {
        var cookie = LoggedIn();
        //Header Writer
        if(cookie != null){
            var barLinkText = _createElement('a','post a comment',{'href':'#'});
        }
        else
        {
           var barLinkText = _createElement('a','log in',{'href':'/mytsn/login.aspx?'});
        }
        //CommentSorter('HighestScore');
        var barLink = _createElement('div',barLinkText,{'className':'barLink floatRight','id':'HaveYourSay'});
        var SortSelectDrop = _createElement('select',null,{'id':'sortDrop','className':'sortDrop','onchange':CommentSorter});
        var sortBar = _createElement('div',SortSelectDrop,{'className':'sortBar floatLeft'});
        var ycBarTop = _createElement('div',[barLink, sortBar],{'className':'ycBar','id':'LOGIN'});
        //Add to document

        return ycBarTop;
        //YourCallStoryArray.push(ycBarTop);
    };
    
    this.ycBotHTMLRenderer = function()
    {
        var cookie = LoggedIn();
        if(document.getElementById('ycBot'))
        {
            var ctrl;
            ctrl = document.getElementById('ycBot');        
            removeChildNodes(ctrl);
        }   
        //Bottom Nav Bar
        if(cookie != null){
            var barLinkTextBot = _createElement('a','post a comment',{'href':'#YourCallTop','id':'HaveYourSayBot'});
        }
        else
        {
           var barLinkTextBot = _createElement('a','log in',{'href':'/mytsn/login.aspx?','id':'HaveYourSayBot'});
        }
        
        var barLinkBot = _createElement('div',barLinkTextBot,{'className':'barLink floatLeft'});
            
        var PageArr = new Array();
        for (var i = 1; i < this.PageNumber + 2; i++) {
            if(i == self.YourCall_CurrentPage)
            {
                PageArr.push(_createElement('i','' + i.toString() + '',null));
            }
            else
            {
                PageArr.push(_createElement('a','' + i.toString() + '',{'href':'#YourCallTop','onclick':pager,'id':i}));
            };
            PageArr.push(' ');
        }
        var PagerDiv = _createElement('div',PageArr,{'className':'barLink floatRight'});
        var ycBottomArray = new Array();
        ycBottomArray[0] = barLinkBot;
        ycBottomArray[1] = PagerDiv;
        return ycBottomArray;
    };
    
    
};

//COMMENT CLASS
var Comment = function(objComment) {
    
    var self = this;
    this.HasVoted = false;
    this.HasReported = false;
    
    var ReportComment = function()
    {
        if(self.HasReported)
        {
            return false;
        }
        
        self.HasReported = true;
        var cookie = LoggedIn();
        if(cookie != null){
            var CookieArray = cookie.split("&");
            var myInput = _createElement('script',null,{'src':'/YourCall/ReportComment.aspx?userid=' + ExtractStringFromArray(CookieArray, /^user_id=(.*)/) + '&report=1&commentid=' + self.CommentID,'type':'text/javascript'}) ;
            document.getElementsByTagName('head')[0].appendChild(myInput) ;
            return false;
        }
        else
        {
            alert("sorry, you must be logged in to use this feature.");
            return false;
        }
    };
    var VoteUpDown = function()
    {
        if(self.HasVoted)
        {
            return false;
        }
        
        self.HasVoted = true;
        var cookie = LoggedIn();
        var strVoteScore = new Array();
        if(cookie != null){
            var CookieArray = cookie.split("&");
            var s, vote;
            if(this != undefined){
                s = this.getAttribute("alt");
                if(s === 'Yeah!'){
                    vote = 1;
                    self.VoteScore++;
                }
                else{
                    vote = -1;
                    self.VoteScore--;
                    
                }
                //Remove Comment Nodes
                if(document.getElementById(self.CommentID))
                {
                    var ctrl;
                    ctrl = document.getElementById(self.CommentID);        
                    removeChildNodes(ctrl);
                    strVoteScore = self.VoteScoreGenerator();
                    for(var i = 0; i < strVoteScore.length; i++)
                    {
                        document.getElementById(self.CommentID).appendChild(strVoteScore[i]);
                    }
                }
            }
            var myInput = _createElement('script',null,{'src':'/YourCall/VoteUpDown.aspx?user_id=' + ExtractStringFromArray(CookieArray, /^user_id=(.*)/) + '&vote=' + vote + '&comment_id=' + self.CommentID,'type':'text/javascript'}) ;
            document.getElementsByTagName('head')[0].appendChild(myInput);
            return true;
        }
        else
        {
            alert("sorry, you must be logged in to use this feature.");
            return true;
        }
    };

    //Comment HTML Renderer
    for(var s in objComment)
    {
        if(objComment.hasOwnProperty(s))
        {
            this[s] = objComment[s];
        }    
    }
    this.HTMLCommentRenderer = function()
    {
        //Score Element Generator
        var strVoteScore = new Array();
        strVoteScore = self.VoteScoreGenerator();
        var karmaSpan = _createElement('span','Karma: ' + (self.Karma * 10),{'className':'ycToolTipLeft ycTTUser','id':self.CommentID + 'ktt'});
        var ScoreSpan = _createElement('span',self.VoteUp + ' Yeahs/' + self.VoteDown + ' Boos',{'className':'ycToolTipRight ycTTRating','id':self.CommentID + 'stt'});
        var YeahSpan = _createElement('span','Yeah',{'className':'ycToolTipRight ycTTYeah','id':self.CommentID + 'ytt'});
        var BooSpan = _createElement('span','Boo',{'className':'ycToolTipRight ycTTBoo','id':self.CommentID + 'btt'});
        var ReportSpan = _createElement('span','report this comment',{'className':'ycToolTipLeft ycTTReportLeft','id':self.CommentID + 'rtt'});

        var aVote = _createElement('a',strVoteScore,{'href':'#YourCallTop','className':'InfoLink','onmouseover':toggleDisplays,'onmouseout':toggleDisplays,'name':self.CommentID + 'stt'});
        var divInfoRate = _createElement('div',aVote,{'className':'infoRating','id':self.CommentID}); // ADD TO INFO-WRAP
        var imgYeah = _createElement('img',null,{'src':'http://images.tsn.ca/images/silver/yourcall/icon_yeah_off.gif','alt':'Yeah!','width':'21','height':'25','onclick':VoteUpDown});
        var aVoteUp = _createElement('a',imgYeah,{'href':'#YourCallTop','className':'VoteUp','onclick':VoteUpDown,'onmouseover':toggleDisplays,'onmouseout':toggleDisplays,'name':self.CommentID + 'ytt'});
        var imgBoo = _createElement('img',null,{'src':'http://images.tsn.ca/images/silver/yourcall/icon_boo_off.gif','alt':'Boo!','width':'21','height':'25','onclick':VoteUpDown});
        var aVoteDown = _createElement('a',imgBoo,{'href':'#YourCallTop','className':'VoteDown','onmouseover':toggleDisplays,'onmouseout':toggleDisplays,'name':self.CommentID + 'btt'});
        var divInfoVote = _createElement('div',[aVoteUp,aVoteDown],{'className':'infoVote'}); // ADD TO INFO-WRAP
        var aUserName = _createElement('a',this.UserName,{'className':'User','onmouseover':toggleDisplays,'onmouseout':toggleDisplays,'name':self.CommentID + 'ktt'});
        var divUserName = _createElement('div',aUserName,{'className':'userName'});
        var divPostDate = _createElement('div',formatDate(this.SubDateTime,'MMM d, y h:mma'),{'className':'postDate'});
        var divInfoUser = _createElement('div',[divUserName,divPostDate],{'className':'infoUser'}); // ADD TO INFO-WRAP
        var divInfoWrap = _createElement('div',[karmaSpan,ScoreSpan,YeahSpan,BooSpan,divInfoRate,divInfoVote,divInfoUser],{'className':'infoWrap'});
        var imgReport = _createElement('img',null,{'src':'http://images.tsn.ca/images/silver/yourcall/icon_report_off.gif','alt':'Report this comment!','width':'14','height':'13','onclick':ReportComment});
        var aReport = _createElement('a',imgReport,{'href':'#YourCallTop','className':'Report','onmouseover':toggleDisplays,'onmouseout':toggleDisplays,'name':self.CommentID + 'rtt'});
        var span = _createElement('span',[getLastWord(this.CommentText),' ',aReport, ReportSpan],{'className':'ycLast'});
        var p = _createElement('p',[CommentTrim(this.CommentText),span],null); // ADD TO Comment
        var ycComment = _createElement('div',[divInfoWrap,p],{'className':'ycComment'});

        return ycComment;
    };
    this.VoteScoreGenerator = function()
    {
        //Score Element Generator
        var strVoteScore = new Array();
        for(var i = 0; i < this.VoteScore.toString().length; i++) {
            var temp = new String(this.VoteScore.toString());  
            if(i == 0)
            {
                if(temp.charAt(i) === '-') {
                    strVoteScore.push(_createElement('img',null,{'src':'http://images.tsn.ca/images/silver/yourcall/no_-.gif'}));
                }
                else if(temp.charAt(i) === '0')
                {
                    strVoteScore.push(_createElement('img',null,{'src':'http://images.tsn.ca/images/silver/yourcall/no_0.gif'}));
                }
                else{
                    strVoteScore.push(_createElement('img',null,{'src':'http://images.tsn.ca/images/silver/yourcall/no_+.gif'}));
                    strVoteScore.push(_createElement('img',null,{'src':'http://images.tsn.ca/images/silver/yourcall/no_' + temp.charAt(i) + '.gif'}));
                }
            }
            else
            {
               strVoteScore.push(_createElement('img',null,{'src':'http://images.tsn.ca/images/silver/yourcall/no_' + temp.charAt(i) + '.gif'}));
            }
        }
        return strVoteScore;
    };
    var toggleDisplays = function (){
	    var TempVar = this.getAttribute('name');
	    var TempEle = document.getElementById(TempVar);
	    if (TempEle.style.display=='inline'){
		   document.getElementById(TempVar).style.display='none';
		   TempEle.style.display='none';
		    }
	    else {
	        document.getElementById(TempVar).style.display='block';
	        TempEle.style.display='inline';
		}
    };
};

/*
HELPER FUNCTIONS - BELOW
1) _createElement(t,v,a) t = tagname, v = tag value, a = attribute list (creates an HTML element)
2) ExtractStringFromArray(arr, r) arr = aray of attribute and value, r = regular expression (returns matched value)
3) getLastWord(x) x = string of words (returns last word)
4) CommentTrim(x) x = string of words (returns trims string of last word and returns it)
5) removeChildNodes(ctrl)  ctrl = HTML Element (removes child nodes from element)
*/

//HTML Element Writer
//_createElement code writen by Andrew Adamson
// 03/05/2009
var _createElement = function(t,v,a){ // t = tagname, v = tag value, a = attribute list
    var n,s;
    if(t == 'option')
    {
        var objTag = new Option();
        objTag.text = v;
        objTag.value = v;
        v = undefined;
    }
    else
    {
        var objTag = document.createElement(t);
    }
    if (v != undefined && v != null) {
          if (typeof(v) == 'string') {
                v = document.createTextNode(v);
                objTag.appendChild(v)
          }
          else if(v.length > 0) {
                for (var i=0;i<v.length;i++) {
                      if(t == 'select') {
                        objTag.options[objTag.options.length] = new Option('ahhhhh');
                      }
                      else if (typeof(v[i]) == 'string') {
                        v1 = document.createTextNode(v[i]);
                        objTag.appendChild(v1);
                      }
                      else {
                        objTag.appendChild(v[i]);
                      }     
                }
          }
          else {
                objTag.appendChild(v);
          }
    }
    if (a != undefined && a != null) {
          for (s in a) {
                if (a.hasOwnProperty(s)) {
                      if (s.indexOf('on') === 0 || s === 'className') {
                            objTag[s] = a[s];
                      }
                      else {
                            n = document.createAttribute(s);
                            n.value = a[s];
                            objTag.setAttributeNode(n);
                      }
                }
          }
    }
    return objTag;
};

var appendOptionLast = function(v)
{
  var elOptNew = document.createElement('option');
  elOptNew.text = v;
  elOptNew.value = v;
  var elSel = document.getElementById('sortDrop');

  try {
    elSel.add(elOptNew, null); // standards compliant; doesn't work in IE
  }
  catch(ex) {
    elSel.add(elOptNew); // IE only
  }
};
//Function Delcarations
function ExtractStringFromArray(arr, r) {
    var arrMatches;
    var strElement;
    for (var i = 0; i < arr.length; i++) {
        strElement = arr[i];
        arrMatches = strElement.match(r);
        if (arrMatches && arrMatches.length > 0) {
            return arrMatches[1]
        }
    }
    return '';
};
function getLastWord(x)
{
    var reNewbie = new RegExp(/[\w|\d|\S|\.]*$/);
    var y = reNewbie.exec(x);
    return y[0];
};
function CommentTrim(x)
{
    var x = x.replace(/[\w|\d|\S|\.]*$/,"");
    return x;
};
function removeChildNodes(ctrl)
{
  while (ctrl.childNodes[0])
  {
    ctrl.removeChild(ctrl.childNodes[0]);
  }
};
// ===================================================================
// Author: Matt Kruse <matt@mattkruse.com>
// WWW: http://www.mattkruse.com/
//
// ------------------------------------------------------------------
// These functions use the same 'format' strings as the 
// java.text.SimpleDateFormat class, with minor exceptions.
// The format string consists of the following abbreviations:
// 
// Field        | Full Form          | Short Form
// -------------+--------------------+-----------------------
// Year         | yyyy (4 digits)    | yy (2 digits), y (2 or 4 digits)
// Month        | MMM (name or abbr.)| MM (2 digits), M (1 or 2 digits)
//              | NNN (abbr.)        |
// Day of Month | dd (2 digits)      | d (1 or 2 digits)
// Day of Week  | EE (name)          | E (abbr)
// Hour (1-12)  | hh (2 digits)      | h (1 or 2 digits)
// Hour (0-23)  | HH (2 digits)      | H (1 or 2 digits)
// Hour (0-11)  | KK (2 digits)      | K (1 or 2 digits)
// Hour (1-24)  | kk (2 digits)      | k (1 or 2 digits)
// Minute       | mm (2 digits)      | m (1 or 2 digits)
// Second       | ss (2 digits)      | s (1 or 2 digits)
// AM/PM        | a                  |
//
// NOTE THE DIFFERENCE BETWEEN MM and mm! Month=MM, not mm!
// Examples:
//  "MMM d, y" matches: January 01, 2000
//                      Dec 1, 1900
//                      Nov 20, 00
//  "M/d/yy"   matches: 01/20/00
//                      9/2/00
//  "MMM dd, yyyy hh:mm:ssa" matches: "January 01, 2000 12:30:45AM"
// ------------------------------------------------------------------

var MONTH_NAMES=new Array('January','February','March','April','May','June','July','August','September','October','November','December','Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
var DAY_NAMES=new Array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sun','Mon','Tue','Wed','Thu','Fri','Sat');
function LZ(x) {return(x<0||x>9?"":"0")+x}

// ------------------------------------------------------------------
// formatDate (date_object, format)
// Returns a date in the output format specified.
// The format string uses the same abbreviations as in getDateFromFormat()
// ------------------------------------------------------------------
function formatDate(date,format) {
    var hours = 0;
    var minutes = 0;
    var days = 0;
    var difference = 0;
    
    difference = GMTTimeStamp - date;
    days = Math.round(difference/(1000*60*60*24));
    hours = Math.round(difference/(1000*60*60));
    minutes = Math.round(difference/(1000*60));

	if(days > 14)
	{
	    format=format+"";
	    var result="";
	    var i_format=0;
	    var c="";
	    var token="";
	    var y=date.getYear()+"";
	    var M=date.getMonth()+1;
	    var d=date.getDate();
	    var E=date.getDay();
	    var H=date.getHours();
	    var m=date.getMinutes();
	    var s=date.getSeconds();
	    var yyyy,yy,MMM,MM,dd,hh,h,mm,ss,ampm,HH,H,KK,K,kk,k;
	    // Convert real date parts into formatted versions
	    var value=new Object();
	    if (y.length < 4) {y=""+(y-0+1900);}
	    value["y"]=""+y;
	    value["yyyy"]=y;
	    value["yy"]=y.substring(2,4);
	    value["M"]=M;
	    value["MM"]=LZ(M);
	    value["MMM"]=MONTH_NAMES[M-1];
	    value["NNN"]=MONTH_NAMES[M+11];
	    value["d"]=d;
	    value["dd"]=LZ(d);
	    value["E"]=DAY_NAMES[E+7];
	    value["EE"]=DAY_NAMES[E];
	    value["H"]=H;
	    value["HH"]=LZ(H);
	    if (H==0){value["h"]=12;}
	    else if (H>12){value["h"]=H-12;}
	    else {value["h"]=H;}
	    value["hh"]=LZ(value["h"]);
	    if (H>11){value["K"]=H-12;} else {value["K"]=H;}
	    value["k"]=H+1;
	    value["KK"]=LZ(value["K"]);
	    value["kk"]=LZ(value["k"]);
	    if (H > 11) { value["a"]="PM"; }
	    else { value["a"]="AM"; }
	    value["m"]=m;
	    value["mm"]=LZ(m);
	    value["s"]=s;
	    value["ss"]=LZ(s);
	    while (i_format < format.length) {
		    c=format.charAt(i_format);
		    token="";
		    while ((format.charAt(i_format)==c) && (i_format < format.length)) {
			    token += format.charAt(i_format++);
		    }
		    if (value[token] != null) { result=result + value[token]; }
		    else { result=result + token; }
	    }
	    return result;
	}
	else
	{
        if(days > 0)
        {
            return (days == 1)?(days + ' day ago'):(days + ' days ago');
        }
        else if(hours > 0)
        {
            return (hours == 1)?(hours + ' hour ago'):(hours + ' hours ago');
        }
        else
        {
            return (minutes == 1)?(minutes + ' min ago'):(minutes + ' mins ago');
        }
	}
}

var BlankYourCall = function(intArticleID) {
    var self = this;
    var submitted = false;
    this.ArticleID = intArticleID;
        
    this.HTMLRenderer = function()
    {   
        var YourCallStoryArray = new Array();
        var cookie = LoggedIn();
        
        //Header Writer
        var ycHeaderLinkBanner = _createElement('a',null,{'href':'/community/'});
        var ycHeader = _createElement('div',ycHeaderLinkBanner,{'className':'ycHeader'});
        YourCallStoryArray.push(ycHeader);
        YourCallStoryArray.push(self.ycTopHTMLRenderer());
        
        //PostComment Brick
        if(cookie != null){
            var CookieArray = cookie.split("&");
            var IFrame = _createElement('iframe',null,{'src':'/YourCall/CommentSubmit.aspx?username=' + ExtractStringFromArray(CookieArray, /^user_name=(.*)/) + '&userid=' + ExtractStringFromArray(CookieArray, /^user_id=(.*)/) + '&articleid=' + this.ArticleID + '&parentid=0&submitted=' + submitted,'height':'135','width':'430','scrolling':'no','frameborder':'no'});
            var PostCommentDiv = _createElement('div',IFrame,{'className':'PostComment','id':'PostComment'});
            var imgSpacer = _createElement('img',null,{'src':'http://images.tsn.ca/images/silver/yourcall/spacer.gif','alt':''});
            var SpacerDiv = _createElement('div',imgSpacer,null);
            //Add to document
            YourCallStoryArray.push(PostCommentDiv);
            YourCallStoryArray.push(SpacerDiv);
        }
        var CommentDivBr = _createElement('p','Be the first to submit a comment!',{'className':'noComment'});
        var CommentDiv = _createElement('div',CommentDivBr,{'id':'YourCallComments'});
        YourCallStoryArray.push(CommentDiv);

        //Write Bottom Nav Bar
        var ycBarBot = _createElement('div',self.ycBotHTMLRenderer(),{'className':'ycBar','id':'ycBot'});
        YourCallStoryArray.push(ycBarBot);
        //Write YourCall Element
        var ycStoryElementTest = _createElement('div',YourCallStoryArray,null);
        //Add YourCall Element to Page
        document.getElementById("tsnYourCallStory").appendChild(ycStoryElementTest);
        //Add YourCall Actions
        JQueryAddOns();
        
    };

    this.ycTopHTMLRenderer = function()
    {
        var cookie = LoggedIn();
        //Header Writer
        if(cookie != null){
            var barLinkText = _createElement('a','post a comment',{'href':'#', 'name':'YourCallTop'});
        }
        else
        {
           var barLinkText = _createElement('a','log in',{'href':'/mytsn/login.aspx?', 'name':'YourCallTop'});
        }
        //CommentSorter('HighestScore');
        var barLink = _createElement('div',barLinkText,{'className':'barLink floatRight','id':'HaveYourSay'});
        var ycBarTop = _createElement('div',[barLink],{'className':'ycBar','id':'LOGIN'});
        //Add to document

        return ycBarTop;
        //YourCallStoryArray.push(ycBarTop);
    };
    
    this.ycBotHTMLRenderer = function()
    {
        var cookie = LoggedIn();
        if(document.getElementById('ycBot'))
        {
            var ctrl;
            ctrl = document.getElementById('ycBot');        
            removeChildNodes(ctrl);
        }   
        //Bottom Nav Bar
        if(cookie != null){
            var barLinkTextBot = _createElement('a','post a comment',{'href':'#YourCallTop','id':'HaveYourSayBot'});
        }
        else
        {
           var barLinkTextBot = _createElement('a','log in',{'href':'/mytsn/login.aspx?','id':'HaveYourSayBot'});
        }
        
        var barLinkBot = _createElement('div',barLinkTextBot,{'className':'barLink floatLeft'}); 
        return barLinkBot;
    };
    
    
};