﻿  var scriptName = "NewsFeed";
  var feedUrl = "http://feeds.mortgagenewsdaily.com/";
  var headlineResults = "newsResults";
  var storyResults = "newsResults";
  var numHeadlines = 10;
  var storyUrlFormat = "javascript:GetStory(\'{0}\');";
  var showReturnLink = true;
  var returnLinkUrl = "javascript:GetNews();";
  var returnLinkText = "Return to Headlines";
  var storyIdParam = "storyId";
  var showTitleOnly = false;
  var subscriberKey = "";
  var loadingText = "Stories loading...";
  var showLoadingText = true;
  
function FormatNews(jsonData){
    var root = eval( "(" + jsonData + ")" );   
    var entries = root.Stories;          
    var html = ['<div class="StoryItems">'];
    for (var i = 0; i < entries.length; ++i) {
      var entry = entries[i];
      var title = entry.Title;
      var desc = entry.Description;

      html.push('<div class="' + ((i%2==0)?"StoryItem":"StoryItemAlt")  +'"><div class="StoryTitle">');
      var storyUrl = "";
      storyUrl = format(storyUrlFormat, entry.Id);
      
      html.push(format('<a href="{0}">{1}</a>',storyUrl, title), '</div>');
      
      if(!showTitleOnly)
        html.push('<div class="StoryText">', desc, '</div>');
      
      html.push('</div>');
    }

    html.push('</div>');
    var newsResults = document.getElementById(headlineResults);
    if(!newsResults)
    {
      AddNewsResultsDiv();
      newsResults = document.getElementById(headlineResults);
    }
    newsResults.innerHTML = html.join("");

  }
  
  function FormatStory(jsonData){   
    var root = eval( "(" + jsonData + ")" );
    var story = root.Story;         
    var html = ['<div class="StoryItems">'];
    var title = story.Title;
    var desc = story.Body;

    if(showReturnLink)
      html.push('<div class="HeadlineLink"><a href="', returnLinkUrl , '">', returnLinkText, '</a></div>');
    html.push('<div class="SingleStoryItem"><div class="SingleStoryTitle">', title, '</div><div class="SingleStoryText">', desc, '</div></div>');
    html.push(GetCopyright());
    html.push('</div>');
    var newsResults = document.getElementById(storyResults);
    if(!newsResults)
    {
      AddNewsResultsDiv();
      newsResults = document.getElementById(storyResults);
    }
    newsResults.innerHTML = html.join("");

  }
  
  function AddLoadingText()
  {
    var html = ['<div class="StoryItems">'];
    html.push('<div class="StoryText">', loadingText, '</div>');
    html.push('</div>');

    var newsResults = document.getElementById(headlineResults);
    if(!newsResults)
    {
        newsResults = document.getElementById(storyResults);
        if (!newsResults) {
            AddNewsResultsDiv();
            newsResults = document.getElementById(headlineResults);
        }
    }
    newsResults.innerHTML = html.join("");
  }
  
  function Init()
  {
    var params = GetSubscriberParameters();
    
    if(params.subscriberKey)
    {
      subscriberKey = params.subscriberKey;
    }      
    if(params.HeadlineResults)
    {
      headlineResults = params.HeadlineResults;
    }
    if(params.StoryResults)
    {
      storyResults = params.StoryResults;
    }
    if(params.NumHeadlines)
    {
      numHeadlines = params.NumHeadlines;  
    }
    if(params.StoryIdParam)
    {
      storyIdParam = params.StoryIdParam;
    }
    if(params.StoryUrl)
    {
      storyUrlFormat = params.StoryUrl;
      if(storyUrlFormat.indexOf("?") > 0)
        storyUrlFormat += format("&{0}=", storyIdParam);
      else 
        storyUrlFormat += format("?{0}=", storyIdParam);
      storyUrlFormat += "{0}";
    }
    if(params.ShowReturnLink != null)
    {
      showReturnLink = params.ShowReturnLink;
    }
    if(params.ReturnLinkUrl)
    {
      returnLinkUrl = params.ReturnLinkUrl;
    }
    if(params.ReturnLinkText)
    {
      returnLinkText = params.ReturnLinkText;
    }
    if(params.ShowTitleOnly != null)
    {
      showTitleOnly = params.ShowTitleOnly;
    }
    if(params.LoadingText)
    {
      loadingText = params.LoadingText;
    }
    if(params.ShowLoadingText != null)
    {
      showLoadingText = params.ShowLoadingText;
    }
    
    if(showLoadingText)
    {
      AddLoadingText();
    }
    if(params.StoryId)
    {
      GetStory(params.StoryId);
    }
    else if(window.location.querystring[storyIdParam])
    {
      GetStory(window.location.querystring[storyIdParam]);
    }
    else
    {
      GetNews();
    }
  }
  
  function GetNews()
  {          
    var randomnumber = Math.floor(Math.random()*10000);
    var url = feedUrl + subscriberKey + "/" + GetDomain(document.URL) + "/news.mvc?numResults=" + numHeadlines + "&" + randomnumber;       
    runScript(url,scriptName);
  }
  
  function GetStory(storyId)
  { 
    var randomnumber = Math.floor(Math.random()*10000);         
    var url = feedUrl + subscriberKey + "/" + GetDomain(document.URL) + "/news.mvc/" + storyId + "?" + randomnumber;          
    runScript(url,scriptName);
  }  
  
   function runScript(url, id) {
      var s = document.createElement('script');
      s.id = id;
      s.type ='text/javascript';
      s.src = url;
      document.getElementsByTagName('head')[0].appendChild(s);
   }
   
   function removeScript (id) {
      var s = '';
      if (s = document.getElementById(id)) {
         s.parentNode.removeChild(s);
      }
   }
   
   function GetDomain(url) {
        if(url.lastIndexOf('/') == url.length - 1)
          url = url.substr(0, url.length-1);
          
        var regexPattern = '^(http|https|ftp)\\://([a-zA-Z0-9\\.\\-]+(\\:[a-zA-Z0-9\\.&amp;%\\$\\-]+)*@)?((25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])|([a-zA-Z0-9\\-]+\\.)*[a-zA-Z0-9\\-]+\\.[a-zA-Z]{2,4})(\\:[0-9]+)?(/[^/][a-zA-Z0-9\\.\\,\\?\\\'\\\\/\\+&amp;%\\$#\\=~_\\-@]*)*$';
        var regex = new RegExp(regexPattern);
        var matches = regex.exec(url);        
        return matches[4];
    }
    function GetSubscriberParameters()
    {
      var retVal = "";
      var scriptHolder = document.getElementById("MNDNewsFeed");
      var paramJSON = {};
      if(scriptHolder){        
        try {
           paramJSON = eval( '(' + scriptHolder.innerHTML.replace('\n','') + ')' );           
        }
        catch(err) { }
      }
      return paramJSON;
    }
    function AddNewsResultsDiv()
    {
      var scriptHolder = document.getElementById("MNDNewsFeed");
      if(scriptHolder){
        var newsResults = document.createElement('DIV');
        newsResults.id = headlineResults;
        if(scriptHolder.parentNode.childNodes.length == 2)
          scriptHolder.parentNode.appendChild(document.createTextNode(" "));
        scriptHolder.parentNode.insertBefore(newsResults, scriptHolder);
      }
    }
    function GetCopyright()
    {      
      var today = new Date;
      var thisYear = today.getFullYear();
      var styleInfo = "color:#888888;font-family:Arial,Helvetica,sans-serif;font-size:8pt;font-style:normal;font-weight:normal;text-decoration:none;text-align:center;";
      var copyRight = "All Content Copyright © 2003 - " + thisYear + " Brown House Media, Inc. All Rights Reserved.<br />" +
                      "Reproduction in any form without permission of MortgageNewsDaily.com is prohibited.";
      var retVal = "<div style='" + styleInfo + "'>" + copyRight + "</div>";
      return retVal;
    }
    function format(str)
    {
      for(i = 1; i < arguments.length; i++)
      {
        str = str.replace('{' + (i - 1) + '}', arguments[i]);
      }
      return str;     
    }
    function addLoadEvent(func) {
        if(window.attachEvent) {
            window.attachEvent("onload", func); 
         } else if(window.addEventListener) {
            window.addEventListener("load", func, true);
         }            
    }

    location.querystring = (function() {
	    // The return is a collection of key/value pairs
	    var result = {};

	    // Gets the query string with a preceeding '?'
	    var querystring = location.search;

	    // document.location.search is empty if a query string is absent
	    if (!querystring)
		    return result;

	    // substring(1) to remove the '?'
	    var pairs = querystring.substring(1).split("&");
	    var splitPair;

	    // Load the key/values of the return collection
	    for (var i = 0; i < pairs.length; i++) {
		    splitPair = pairs[i].split("=");
		    result[splitPair[0]] = splitPair[1];
	    }

	    return result;
    })();


   addLoadEvent(Init);
