/* encoding: utf-8
**** linkify plugin for jQuery - automatically finds and changes URLs in text content into proper hyperlinks ****
Version: 1.0
Copyright (c) 2009
Már Örlygsson (http://mar.anomy.net/) &
Hugsmiđjan ehf. (http://www.hugsmidjan.is)
Dual licensed under a MIT licence (http://en.wikipedia.org/wiki/MIT_License)
and GPL 2.0 or above (http://www.gnu.org/licenses/old-licenses/gpl-2.0.html).
-----------------------------------------------------------------------------
Demo and Qunit-tests:
* <./jquery.linkify-1.0-demo.html>
* <./jquery.linkify-1.0-test.html>
Documentation:
* ...
Get updates from:
* <http://github.com/maranomynet/linkify/>
* <git://github.com/maranomynet/linkify.git>
-----------------------------------------------------------------------------
Requires:
* jQuery (1.2.6 or later)
Usage:
jQuery('.articlebody').linkify();

*/
(function(jq){
  var url1 = /(^|"|&lt;|\s)(www\..+?\..+?)(\s|&gt;|"|$)/g,
      url2 = /(^|"|&lt;|\s)(((https?|ftp):\/\/|mailto:).+?)(\s|&gt;|"|$)/g;
  jq.fn.linkify = function () {
    return this.each(function () {
      var childNodes = this.childNodes,
          i = childNodes.length;
      while(i--)
      {
        var n = childNodes[i];
        if (n.nodeType == 3) {
          var html = n.nodeValue;
          if (/\S/.test(html))
          {
            html = html.replace(/&/g, '&amp;')
                       .replace(/</g, '&lt;')
                       .replace(/>/g, '&gt;')
                       .replace(url1, '$1<a href="http://$2">$2</a>$3')
                       .replace(url2, '$1<a href="$2">$2</a>$5');
            jq(n).after(html).remove();
          }
        }
        else if (n.nodeType == 1 && !/^(a|button|textarea)$/i.test(n.tagName)) {
          arguments.callee.call(n);
        }
      };
    });
  };
})(jQuery);

   
var BlogManager = {
numberOfTweetPost : 5,
guid : '',
domain : document.domain,
pagingPage:0,
htmlTemplate : '<div class="BlogPost"><h3 class="Title">${title}</h3><span class="Date">${pubDate}</span><span class="Text">{{html text}}</span><a href=\"${link}\">Read more</a></div>'
}

BlogManager.AttachGetMoreEvents = $(".MoreBlogPosts").live("click",function(){
    BlogManager.GetBlogPosts();
return false;
});

BlogManager.GetBlogPosts = function(){
var hiddenFieldPageId = $(".BlogPage input").first();
var hiddenFieldCount = $(".BlogPage input").last();
if(hiddenFieldPageId.size() != 0 && hiddenFieldPageId.val() != undefined &&
hiddenFieldCount.size() != 0 && hiddenFieldCount.val() != undefined){    
    
	 $.post(
       'http://'+ BlogManager.domain+'/WebServices/Common.asmx/GetBlogPosts',
        {pageId : hiddenFieldPageId.val(), numberOfItems : hiddenFieldCount.val(),guid : BlogManager.guid,pagingPage : BlogManager.pagingPage},
     function(msg) {
     
     msg = msg.replace('<?xml version="1.0" encoding="utf-8"?>','').replace('<string xmlns="http://tempuri.org/">','').replace('</string>','');
     var result = jQuery.parseJSON(msg);
     BlogManager.guid = result.guid;
     BlogManager.pagingPage = result.pagingPage;
     if(result.isLastPage){
     $(".MoreBlogPosts").hide();
     }
     for(var i = 0; i < result.results.length;i++){
     result.results[i].text = result.results[i].text.replace(/&amp;/g,'&').replace(/&lt;/g,'<').replace(/&gt;/g,'>');
     }
        $.tmpl(BlogManager.htmlTemplate, result.results).appendTo(".BlogPosts");
        },"text"
    );
    $(".BlogPost").linkify();
    }
}



var TwitterManager = {
numberOfTweetPost : 5,
htmlTemplate : '<div class="TwitterPost"><img src="${profile_image_url}"/><span class="Name">${from_user}</span><span class="Date">${created_at}</span><div class="Text"><span>${text}</span></div></div><div style="clear:both"></div>'

}

TwitterManager.SetDate = function(data){
if(data != undefined && data.results != undefined){
    for(var n = 0; n < data.results.length;n++){
        data.results[n].created_at = data.results[n].created_at.replace(' +0000','');
    }
    }
}
TwitterManager.AttachGetMoreEvents = $(".MoreTwitterPosts").live("click",function(){
var query = $(this).attr('href');
if(query != undefined && query != '#'){
   var result = $.getJSON( 
   "http://search.twitter.com/search.json"+ query+"&callback=?", 
    function(data) {
TwitterManager.SetDate(data);
	$.tmpl(TwitterManager.htmlTemplate, data.results).appendTo(".TwitterPosts");
	$(".TwitterPost").linkify();
    TwitterManager.SetMoreLink(data.next_page);
	} ,
	function(error){
	alert(error);
	} ); 
}
return false;
});
TwitterManager.SetMoreLink = function(next_page){
var moreLink =$(".MoreTwitterPosts");
if(moreLink.size() > 0 && next_page != undefined){
    moreLink.attr('href', next_page);
}
else{
moreLink.hide();
}
}


TwitterManager.GetTwitterPosts = function(){
var hiddenFieldTag = $(".Twitter input").first();
var hiddenFieldCount = $(".Twitter input").last();
if(hiddenFieldTag.size() != 0 && hiddenFieldTag.val() != undefined &&
hiddenFieldCount.size() != 0 && hiddenFieldCount.val() != undefined){    
    var query = encodeURI(hiddenFieldTag.val());
TwitterManager.numberOfTweetPost = hiddenFieldCount.val();
    var result = $.getJSON( 
    "http://search.twitter.com/search.json?tag="+query+"&result_type=recent&rpp="+TwitterManager.numberOfTweetPost+"&callback=?", 
    function(data) { 

    TwitterManager.SetDate(data);
	$.tmpl(TwitterManager.htmlTemplate, data.results).appendTo(".TwitterPosts");
	$(".TwitterPost").linkify();
    TwitterManager.SetMoreLink(data.next_page);
  
	} ,
	function(error){
	alert(error);
	} ); 
    }
}






TwitterManager.GetTwitterAliasPosts = function(){
var hiddenFieldTag = $(".Twitter input").first();
var twitterAlias = $(".Tweets input").eq(1);
var maxCharacters = $(".StartPageTwitter input").eq(2).val();
var startPage = $(".StartPageTwitter input").last();
var hiddenFieldCount = $(".Twitter input").last();


// declare global arrays
var combinedArray = [];
var resultArray = [];

// pushes object onto array
function pusher(array,elm) {
	array.push(elm);	
}


if(hiddenFieldTag.size() != 0 && hiddenFieldTag.val() != undefined &&
hiddenFieldCount.size() != 0 && hiddenFieldCount.val() != undefined){    
    var query = encodeURI(hiddenFieldTag.val());
    
TwitterManager.numberOfTweetPost = hiddenFieldCount.val();
//var url1 = "http://api.twitter.com/1/statuses/public_timeline.json?callback=?";
var url1 = "http://search.twitter.com/search.json?tag="+query+"&result_type=recent&rpp="+TwitterManager.numberOfTweetPost+"&callback=?";
    var result = $.getJSON(url1, 
    function(data) { 
        $.each(data.results, function(i, item) {
  		    item.created_at = new Date(Date.parse(item.created_at)).toGMTString().replace(' GMT','');
			pusher(combinedArray, item);		
		});
  


        for (i=0;i<hiddenFieldCount.val();i++)
        {
           if(hiddenFieldCount.val() == startPage.val() && combinedArray[i].text.length > maxCharacters)
            {
                combinedArray[i].text = combinedArray[i].text.substring(0, maxCharacters) + ' ...';
            }
            resultArray[i] = combinedArray[i];
        }


    $.tmpl(TwitterManager.htmlTemplate, resultArray).appendTo("#TwitterPosts");
	//$(".TwitterPost").linkify();
    //TwitterManager.SetMoreLink(data.next_page);
      
       
	} ,
	function(error){
	alert(error);
	}); 
    }
}

$(document).ready(function(){

BlogManager.GetBlogPosts();
TwitterManager.GetTwitterPosts();
});





