function createCookie(name,value,days) {
    if (days) {
        var date = new Date();
        date.setTime(date.getTime()+(days*24*60*60*1000));
        var expires = "; expires="+date.toGMTString();
    }
    else var expires = "";
    document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1,c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
    }
    return null;
}

function eraseCookie(name) {
    createCookie(name,"",-1);
}


onDomReady(function () {
	// init
	category.initialize();
});


var category = {
    categories:new Array("My Life", "My Movies", "News", "Events", "Sports", "Travel", "Entertainment", "Music", "Shopping"),
   // BatchNumber:1, // coockie
    LastRecievedId:0, // coockie
    SortBy:1,   // coockie
    CategoryId:1,        // coockie
    CurrentTag:"",  // coockie
    ThmbnailsServerURL:"",
    LiveMoviesNumber:0,
    StoredMoviesNumber:0,
    Tags:new Array(),
    CURRENT_PAGE:0, // coockie
    STORED_BATCH: {},
    SelectedTag: "",


	initialize: function()
    {
        
       
        Common.UpdateTopNavigation("categories");
		
        if(!readCookie("browse_sortby"))
        {
            createCookie("browse_sortby",1,null);
        }
        else
        {
           this.SortBy = readCookie("browse_sortby");
        }
        if(!readCookie("browse_catid"))
        {
            createCookie("browse_catid",1,null);
        }
        else
        {
           this.CategoryId = readCookie("browse_catid");
        }
        if(!readCookie("browse_tag"))
        {
            createCookie("browse_tag","",null);
            this.CurrentTag = "";
        }
        else
        {
           //debugger;
           this.CurrentTag = readCookie("browse_tag");
           if(this.CurrentTag == null || this.CurrentTag == "undefined")
           {
                  this.CurrentTag = "";
           }
        }
        if(!readCookie("browse_page"))
        {
            createCookie("browse_page",0,null);
        }
        else
        {
           this.CURRENT_PAGE = readCookie("browse_page");
        }
        
        this.LoadCategory(this.CategoryId,this.CurrentTag);
	},
	findCategoryByName: function(name)
    {
		for (var i=0;i<this.categories.length;i++) {
			if (this.categories[i] == name) return i;
		}
		return null;
	},
	
    GetCategory: function(id, tag)
    {
		this.CURRENT_PAGE = 0;
		createCookie("browse_page",0,null);
        this.STORED_BATCH = {};
		this.StoredMoviesNumber = 0;
		this.LiveMoviesNumber = 0;
		Common.SetCategoryName(this.categories[id-1]);
        createCookie("browse_catid",id,null);
        //this.LastRecievedId = 0;
        createCookie("browse_tag",tag,null); 
		this.LoadCategory(id, tag);
	},
	
    LoadCategory: function(id, tag)
    {
		flix.showReloader('Loading...','load');
		this.CurrentTag = tag;
        createCookie("browse_tag",this.CurrentTag,null);    
        createCookie("browse_catid",id,null);    
        
        var url;
        var categoryName =  this.categories[id-1];
        
        if(typeof(tag) != "undefined" && tag != "")
        {
           url =  "/categories/"+categoryName+"/"+tag+"/"+this.CURRENT_PAGE+"/"+this.SortBy;
        }
        else
        {
           url =  "/categories/"+categoryName+"/"+this.CURRENT_PAGE+"/"+this.SortBy;
        }
        
        //debugger;
        
        
        
        var loader = new Ajax(url, {method:'get', onComplete:function() {
			flix.hideReloader();
			category.reload(this.transport.responseXML.documentElement);
		}}).request();
	},
	
    reload: function(data) {
		this.data = data;
		var children = data.childNodes;
		this.Tags = new Array();
		this.SelectedTag = "";
		for (var i=0;i<children.length;i++) {
			switch (children[i].nodeName) {
				case "CategoryId":
				case "SortBy":
				//case "BatchNumber":
				case "ThmbnailsServerURL":
				case "LiveMoviesNumber":
				case "StoredMoviesNumber":
				case "SelectedTag":
					this[children[i].nodeName] = children[i].firstChild.nodeValue;
					break;
				case "Tags":
					var tags = children[i].getElementsByTagName("Tag");
					for(var t=0;t<tags.length;t++) {
						this.Tags.push(tags[t].firstChild.nodeValue.replace(/(^[ ]*|[ ]$)/, ""));
					}
					break;
			}
		}
		
		this.FillSort();
		this.FillCategory();
		this.FillTags();
		this.FillResults();
        //this.LastRecievedId = data.getElementsByTagName("LastId")[0].firstChild.nodeValue;

        
        
	},
	FillSort: function() {
		$("__sortType0").className = (this.SortBy == "0") ? "current" : "";
		$("__sortType1").className = (this.SortBy == "1") ? "current" : "";
	},
	FillCategory: function() {
		for (var i=1;i<10;i++) $("category"+i).className = "icon";
		$("category"+this.CategoryId).className = "icon current";
		//$("__currentCategory").innerHTML = this.categories[this.CategoryId-1];
	},
	FillTags: function() {
		var html = (this.Tags.length > 0) ? this.categories[this.CategoryId-1]+" Buzz: " : "";
		for (var i=0;i<this.Tags.length;i++) {
			var selected = (this.Tags[i] == this.SelectedTag);
			html += "<a href='javascript:void(0);' class='"+(selected ? "current" : "")+"' onclick='category.GetCategory(category.CategoryId, \""+this.Tags[i]+"\");'>"+this.Tags[i]+",</a> ";
		}
		$("__buzz").innerHTML = html.replace(/,<\/a> $/, "</a>");
	},
	FillResults: function() {
		var live_list = new Array();

		var liveNodes = this.data.getElementsByTagName("LiveMovie");
		for (var i=0;i<liveNodes.length && i < 5;i++) {
			live_list.push({id:Common.GetElementByName(liveNodes[i], "Id"), title:Common.GetElementByName(liveNodes[i],"Title"), location:Common.GetElementByName(liveNodes[i], "UserName"), thumb:Common.GetElementByName(liveNodes[i], "Thumb")});
		}
		
		$("liveTab").style.display = (live_list.length > 0) ? "" : "none";
		$("happeningContent").style.display = (live_list.length > 0) ? "" : "none";

		this.live_data = live_list;

		this.drawLive(this.live_data);

		var stored_list = new Array();

		var storedNodes = this.data.getElementsByTagName("StoredMovie");

		for (var i=0;i<storedNodes.length;i++)
        {
            var taken = Common.formatDate(storedNodes[i].getElementsByTagName("Taken")[0].firstChild.nodeValue);
            stored_list.push({id:Common.GetElementByName(storedNodes[i], "Id"), taken:taken, title:Common.GetElementByName(storedNodes[i], "Title"), views:Common.GetElementByName(storedNodes[i], "Views"), location:Common.GetElementByName(storedNodes[i], "UserName"), thumb:Common.GetElementByName(storedNodes[i], "Thumb")});
		} // End of for

		this.stored_data = stored_list;

		this.drawStored(this.stored_data);
	},
	drawLive: function(data) {

		var thumbs_container  = $('liveThumbs');
		var details_container = $('liveDetails');
		thumbs_container.innerHTML  = '';
		details_container.innerHTML = '';

		this.live_length = (this.LiveMoviesNumber>5?5:this.LiveMoviesNumber);

		$('liveNum').innerHTML = '('+this.live_length+')';
		for(var i=0;i<this.live_length;i++)
		{
			this.drawThumbnail({id:data[i].id,location:data[i].location,title:data[i].title,thumb:data[i].thumb}, true, thumbs_container, details_container);
		}
	},
	drawStored: function(data) {
		//debugger;
        var stored_container  = $('videosContent');
		stored_container.innerHTML  = '';

		var row_count = ((Math.floor(this.StoredMoviesNumber/5)+1)>3 ? 3 : (Math.floor(this.StoredMoviesNumber/5)+1));

		var page_container = $('page_container');
		page_container.innerHTML = '';
		
		if (this.StoredMoviesNumber == 0) {
			var thumbs_container = stored_container.appendChild(document.createElement("DIV"));
			var div = thumbs_container.appendChild(document.createElement("div"));
			div.innerHTML = "<i>No flix found</i>";
			div.className = "noResults";
			return;
		} 
		
        var startAt = 0;//r*5+(this.CURRENT_PAGE % 5)*15;
        var endAt = 4;//max_in_row+(this.CURRENT_PAGE % 5)*15;
        for (var r=0;r<row_count;r++)
		{
			var thumbs_container = document.createElement("DIV");
			thumbs_container.className = "items";
			var details_container = document.createElement("DIV");
			details_container.className = "itemsDetals";

			var max_in_row = ((r*5+5)>data.length?data.length:(r*5+4));
			for(var i=startAt;i<=endAt;i++)
			{
				if (data[i]) 
                {
                    this.drawThumbnail({id:data[i].id,taken:data[i].taken,views:data[i].views,location:data[i].location,title:data[i].title,thumb:data[i].thumb}, false, thumbs_container, details_container);
                }
			}
            var startAt = startAt+5;//r*5+(this.CURRENT_PAGE % 5)*15;
            var endAt = startAt+4;//max_in_row+(this.CURRENT_PAGE % 5)*15;

			stored_container.appendChild(thumbs_container);
			stored_container.appendChild(details_container);

			thumbs_container = null;
			details_container = null;
		}

		var page_count = Math.ceil(this.StoredMoviesNumber/15);

		var prev_page = document.createElement('A');
		prev_page.href = 'javascript:category.viewPage('+(this.CURRENT_PAGE-1)+');';
		prev_page.style.visibility = (this.CURRENT_PAGE > 0) ? "visible" : "hidden";
		prev_page.className='back';
		page_container.appendChild(prev_page);

		if (page_count > 1) {
			var firstPage = (this.CURRENT_PAGE-2 > 0) ? this.CURRENT_PAGE-2 : 0;
			var lastPage = (firstPage+5 < Math.ceil(this.StoredMoviesNumber/15)) ? firstPage+5 : Math.ceil(this.StoredMoviesNumber/15);
		
			if (lastPage-firstPage < 5) {
				firstPage = Math.max(Math.ceil(this.StoredMoviesNumber/15)-5, 0);
				lastPage = Math.ceil(this.StoredMoviesNumber/15);
			}
			for (var i=firstPage;i<lastPage;i++) {
				var a = page_container.appendChild(document.createElement("a"));
				a.href = "javascript:category.viewPage("+i+")";
				a.innerHTML = eval(i+1);
				a.className = (i == this.CURRENT_PAGE) ? "currentNum" : "num";
			}
		}
		
		var next_page = document.createElement('A');
		var nextNum =  parseInt(this.CURRENT_PAGE)+1;
        next_page.href = 'javascript:category.viewPage('+nextNum+');';
        next_page.style.visibility = (this.CURRENT_PAGE < page_count-1) ? "visible" : "hidden";
		next_page.className='next';
		page_container.appendChild(next_page);

		next_page = null;
		prev_page = null;
		page_container = null;

		//debugger;
        this.STORED_BATCH[this.CURRENT_PAGE] = data;
	},
	drawThumbnail: function(thumbnail, isLive, thumbs_container, details_container)
	{
		this.thumbLink = document.createElement("A");
		this.thumbLink.href = 'javascript:Common.JumpTo("'+thumbnail.id+'");';
		this.thumbImg = document.createElement("IMG");
		this.thumbImg.src = thumbnail.thumb;
		this.thumbImg.style.width = "160px";
		this.thumbImg.style.height = "120px";
		this.thumbImg.onerror = Common.ShowDefaultImage;
		this.thumbImg.alt = '';
		this.thumbLink.appendChild(this.thumbImg);
		thumbs_container.appendChild(this.thumbLink);

		this.detailDiv = document.createElement("DIV");
		this.detailDiv.className = "item";
		this.detailLink = document.createElement("A");
		this.detailLink.href = 'javascript:Common.JumpTo("'+thumbnail.id+'");';
		this.detailLink.className = 'name';
		this.detailLink.innerHTML = thumbnail.title;
		this.detailDiv.appendChild(this.detailLink);
		this.detailLoc = document.createElement("SPAN");
		this.detailLoc.className = 'place';
		this.detailLoc.innerHTML = thumbnail.location;
		this.detailDiv.appendChild(this.detailLoc);
		if (isLive == false)
		{
			this.detailAdd = document.createElement("P");
			this.detailAdd.className = 'Aired';
			this.detailAdd.innerHTML = 'Aired: '+thumbnail.taken+' <br> '+Common.FormatNumber(thumbnail.views)+' '+Common.GetViewsLabel(thumbnail.views);
			this.detailDiv.appendChild(this.detailAdd);
		}
		details_container.appendChild(this.detailDiv);
	},
	viewPage: function(page) {
		//debugger;
        this.CURRENT_PAGE = page;
        createCookie("browse_page",this.CURRENT_PAGE,null);    

		if (this.STORED_BATCH[this.CURRENT_PAGE])
        {
			//this.BatchNumber = Math.floor(page/5)+1;
			this.drawStored(this.STORED_BATCH[this.CURRENT_PAGE]);
		} 
        else
        {
			//this.BatchNumber = parseInt(this.BatchNumber, 10)+1;
			this.LoadCategory(this.CategoryId, this.CurrentTag);
		}
	},
	Sort: function(sortBy)
    {
		this.CURRENT_PAGE = 0;
		this.SortBy = sortBy;
        //this.LastRecievedId = 0;
        createCookie("browse_page",this.CURRENT_PAGE,null);    
		createCookie("browse_sortby",this.SortBy,null);    
        this.LoadCategory(this.CategoryId,this.CurrentTag);

	},
    gup: function(name)
    {
          name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
          var regexS = "[\\?&]"+name+"=([^&#]*)";
          var regex = new RegExp( regexS );
          var results = regex.exec( window.location.href );
          if( results == null )
            return "";
          else
            return results[1];
    }   

};


