﻿// JScript File
var cont = null;
var Blog=new Class(
{

	initialize:function (options) 
	{
		this.setOptions(options);
	},
	
	inject:function (menu,container,blogId) 
	{
		this._container=$(container);
		this._menu=$(menu);
        this._blogId = blogId;

        this.getBlog();

	},
	getBlog:function()
	{
        if(this._menu)this.showWaitingIcon(this._menu);
        if(this._container)this.showWaitingIcon(this._container);
        
        var script = document.createElement('script');
        var src = 'http://www.blogger.com/feeds/'+this._blogId+'/posts/default?alt=json-in-script&callback='+this.options.objName+'.onGetDataComplete';
        if(this.options.orderBy)
            src += '&orderby='+this.options.orderBy;
        
        script.setAttribute('src', src);
        script.setAttribute('id', 'blogJsonScript_' + this._blogId);
        script.setAttribute('type', 'text/javascript');
        document.documentElement.firstChild.appendChild(script);
	},
	onGetDataComplete:function(jsonObj)
	{
	    this._jsonObj = jsonObj;
	    if(this.options.type && this.options.type == 'accordion')
	    {
           this._container.empty();
           var accordion = new Accordion('h3.atStart', 'div.atStart', {
                    opacity: false,
                    onActive: function(toggler, element){toggler.addClass('sel-item');},
                    onBackground: function(toggler, element){toggler.removeClass('sel-item');}
                    }, this._container);
         
            for (var i = 0; i < jsonObj.feed.entry.length; i++) 
            {
                var entry = jsonObj.feed.entry[i];
                var title = entry.title.$t;
                var content = entry.content.$t;
                var contentDiv = new Element("div",{'class': 'element'}).setHTML(content);
                var titleElems = contentDiv.getElements('span.title');
                var titleElem = new Element('h3');
                titleElems.inject(titleElem);
                
                var titleDiv = new Element('div',{'class': 'toggler'});
                var updatedCtr = new Element('span',{'class': 'date'}).setText(this.parseDate(entry.updated.$t).toLocaleString());
                titleElem.inject(titleDiv);
                updatedCtr.inject(titleDiv);
                
 
//                var links = contentDiv.getElements('a.mylink');
//                links.setParam
//                var titlesEn = content.match(/<span class="en title">(.*?)<\/span>/i);

                
                accordion.addSection(titleDiv, contentDiv, 0);
            }
	    }
	    else
	    {
	        $('rss-div').empty();
            var rssSrc = "http://www.blogger.com/feeds/{BLOG_ID}/posts/default?alt=rss";
            rssSrc = rssSrc.replace(/{BLOG_ID}/g,this._blogId)
            var rss = new Element("a").addClass('rss-link').setProperty('href',rssSrc).setProperty('target','_blank').setText('RSS').injectInside($('rss-div'));
	        
            this.fillMenu(jsonObj);
            if(jsonObj.feed.entry.length > 0)
            {
                if(Site.qsParm.getValue("postId"))
                {
                    this.fillContent(Site.qsParm.getValue("postId"));
                }
                else
                    this.fillContent(this.getPostId(jsonObj.feed.entry[0].id.$t));
            }
        }
        Site.setCtrlsLang(this._menu);
        Site.setCtrlsLang(this._container);
		cont = this._container;
	//	setTimeout(function(){var obj = new Element("div").setHTML('<script type="text/javascript">google_ad_client = "pub-1370752798816511";/* 468x60, Small Travel */ google_ad_slot = "3342112969"; google_ad_width = 468; google_ad_height = 60; </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>').injectInside(cont);},1);

	},
	fillMenu:function(jsonObj)
	{
	    if(this._menu)
	    {
	        var menu = this._menu;
            menu.empty();
            var thisBlog = this;
            for (var i = 0; i < jsonObj.feed.entry.length; i++) 
            {
                var entry = jsonObj.feed.entry[i];
 
                var title = entry.title.$t;
                var content = entry.content.$t;
                var contentDiv = new Element("div",{'class': 'element'}).setHTML(content);
                var titleElems = contentDiv.getElements('.title');
                var titleElem = new Element('h3',{'class': 'menu-item button'});
                titleElems.injectInside(titleElem);
                titleElem.injectInside(menu);
                titleElem.id = this.options.objName+'menu-item-'+i;
                titleElem._postId = this.getPostId(entry.id.$t);
                titleElem.addEvent("click",function(){thisBlog.fireEvent("onMenuItemClick",this);});
                var obj = new Element("span").addClass('date-time published').setHTML(this.parseDate(entry.published.$t).toLocaleString()).injectInside(menu);
                obj = new Element("span").addClass('date-time updated').setHTML(this.parseDate(entry.updated.$t).toLocaleString()).injectInside(menu);
                obj = new Element("div").addClass('sep').injectInside(menu);
            }
       }
	},
	getPostId:function(str)//tag:blogger.com,1999:blog-1245842140842952559.post-8440107583554598594
	{
	    return str.replace('tag:blogger.com,1999:blog-'+this._blogId+'.post-','');
	},
	fillContent:function(postId)
	{
	    if(this._container)
	    {
            Site.qsParm.setValue("postId",postId);
            
	        var entry = this._jsonObj.feed.entry[0]
	        for(var i=0;i<this._jsonObj.feed.entry.length;i++)
	        {
	            if(this.getPostId(this._jsonObj.feed.entry[i].id.$t) == postId)
	            {
	                entry = this._jsonObj.feed.entry[i];
	            }
	        }
	        var container = this._container;
            container.empty();
            var content = entry.content.$t;
            if(this.options.replace)
            {
                for(var i=0;i<this.options.replace.keys.length;i++)
                {
                    content = content.replace(this.options.replace.keys[i],this.options.replace.values[i]);
                }
            }
			//Remove google advertizing
			var startIndx = content.indexOf('<script type="text/javascript">google_ad_client');
			var endIndx = content.indexOf('show_ads.js')+22;
			content = content.replace(content.substring(startIndx,endIndx),'');
            var obj = new Element("div").addClass('blog_content').setHTML(content).injectInside(container);
           
        }
	},	
    remove:function()
	{
	    this.removeOldJSONScriptNodes();
	    this._container.empty();  
            
        Site.qsParm.removeKey("postId");
	},
    removeOldJSONScriptNodes:function() 
    {
      var jsonScript = document.getElementById('blogJsonScript_' + this._blogId);
      if (jsonScript) 
      {
            jsonScript.parentNode.removeChild(jsonScript);
      }
    },
    showWaitingIcon:function(el)
    {
        el.empty();
        var div = new Element('div').addClass('waiting-img').setHTML('Loading...').injectInside(el);
    },
    parseDate:function(strDate)//"2007-09-30T14:24:19.129-07:00"
    {
        var now = new Date();
        
        var arr = strDate.split("T");
        var dateArr = arr[0].split("-");
        var timeArr = arr[1].split("-");
        var sign = -1;
        if(timeArr.length < 2)
        {
            timeArr = arr[1].split("+");
            sign = 1;
        }
        var offsetArr = timeArr[1].split(":");
        timeArr = timeArr[0].split(":");
       
        var updatedSec = new Date(dateArr[0],dateArr[1]-1,dateArr[2],timeArr[0],timeArr[1],timeArr[2].split(".")[0]).getTime();
        updatedSec += offsetArr[0]*3600*1000*sign;
        updatedSec += (now.getTimezoneOffset()/60)*3600*1000;
        return new Date(updatedSec);
    }
});

Blog.implement(new Events,new Options);
