onDomReady(function () {

	// init
	userpage.initialize();
});


var userpage = {

	//user page vars
	SortBy:'TT', // or V -- Views
	PageNum:0,
	PageMax:0,
	PerPage:12,
	userId: 0,
	//timer for updating time out
	updateTime: 50000,
	userTimer:0,
	myFans: new Array(),
	fanOf: new Array(),
	myMovies: new Array(),
	imageServer: '',
	thumbServer: '',
	userId: 0,
	fansTab: 'MyFansTab',

	initialize: function(){
		userpage.PerPage = 12;
		
               
        //userpage.userId = window.location.search.replace('?userId=','');
		var tr = $("userId").getElementsByTagName("li"); 
        userpage.userId = tr[0].firstChild.nodeValue; 
        
        
        flix.showReloader('Update...','update'); // Violet
		var updater = new Ajax('/userprofile/data?userId='+userpage.userId, {method: 'get', onComplete:function(){
			userpage.updateUserInfo(this.transport.responseXML.documentElement);

			flix.hideReloader(); // hide reloader
		}}).request();


		/*----turns on the 5 minutes timer for live movie Ajax refresh---*/
		clearTimeout(userpage.userTimer);
		userpage.updateLiveMovie();

		//Moviews List Sort  - set default button on
		if($("TT")){
			$(userpage.SortBy).addClass('current');
		}

	},
	
	updateUserInfo: function(userData){
		userData = userData.childNodes;
		
		for(var i=0;i<userData.length;i++)
		{
			if (userData[i].tagName)
				switch(userData[i].tagName.toLowerCase())
				{
					case "fullname":
						$("fullName").innerHTML = userData[i].firstChild.data;
						//$("titleFullName").innerHTML = userData[i].firstChild.data;
					break;
					case "username":
						//$("userName").innerHTML = userData[i].firstChild.data;
						$("titleUserName").innerHTML = userData[i].firstChild.data+"'s flix  ";
					break;
                    case "avatar":
                        var el  = document.getElementById("usericon");
                        el.src = userData[i].firstChild.data;
                    break;
					case "userimagesserverurl":
						userpage.imageServer = userData[i].firstChild.data;
					break;
					case "countryname":
						$("countryName").innerHTML = userData[i].firstChild.data;
					break;
					case "age":
                        if(userData[i].firstChild != null)
                        {
                           $("userAge").innerHTML = 'Age: '+ userData[i].firstChild.data;
                        }
                        else
                        {
                            $("userAge").style.display = 'none';
                            //debugger; 
                        
                        }						
					break;
					case "joindate":
						$("joinDate").innerHTML = userData[i].firstChild.data;
					break;
					case "lastlogin":
						if(userData[i].firstChild != null)
                        {
                           $("lastLogin").innerHTML = userData[i].firstChild.data;
                        }
					break;
					case "videoswatched":
                        if(userData[i].firstChild != null)
                        {
                            $("videosWatched").innerHTML = userData[i].firstChild.data;

                        }
                    break;
					case "aboutme":
						if(userData[i].firstChild)
							$("aboutMe").innerHTML = userData[i].firstChild.data;
						else
							$("aboutMe").style.display = "none";
					break;
                    case "loggedin":
                        if(userData[i].firstChild.data == 0)
                        {
                             $("joinnow").style.display = "";
                             $("flixeeBox").style.display = "none";
                        }
                        else
                        {
                             $("joinnow").style.display = "none";
                             $("flixeeBox").style.display = "";
                        }
                        break;
                    case "loggedinname":
                        if(userData[i].firstChild.data)
                        {
                             flixee.userName = userData[i].firstChild.data;
                        }
                        break;
                    case "showbecomefan":
                        if(userData[i].firstChild.data == 0)
                        {
                             $("becomeFanLink").style.display = "none";
                        }
                        break;
					case "fans":
						userpage.fanOf = new Array();
						userpage.myFans = new Array();
						for(var n=0;n<userData[i].childNodes.length;n++)
						{
							if(userData[i].childNodes[n].tagName)
							{
								var fansList = userData[i].childNodes[n].childNodes;
								for (var f=0;f<fansList.length;f++)
								{
									if (fansList[f].tagName && 
											(fansList[f].tagName.toLowerCase() == 'myfan' || fansList[f].tagName.toLowerCase() == 'fanof'))
									{
										var fanArray = new Array();
										for (var p=0;p<fansList[f].childNodes.length;p++)
										{
											if (fansList[f].childNodes[p].tagName)
											{
												switch(fansList[f].childNodes[p].tagName.toLowerCase())
												{
													case "userid":
														fanArray.id = fansList[f].childNodes[p].firstChild.data;
													break;
													case "username":
														fanArray.userName = fansList[f].childNodes[p].firstChild.data;
													break;
													case "fullname":
														fanArray.fullName = fansList[f].childNodes[p].firstChild.data;
													break;
													case "numberofmovies":
														fanArray.movies = fansList[f].childNodes[p].firstChild.data.replace(' ','');
													break;
												}
											}
										}
										switch(userData[i].childNodes[n].tagName.toLowerCase())
										{
											case "myfans":
												userpage.myFans[userpage.myFans.length] = fanArray;
											break;
											case "fansof":
												userpage.fanOf[userpage.fanOf.length] = fanArray;
											break;
										}
									}
								}
							}
						}
					break;
					case "thumbnailsserverurl":
						userpage.thumbServer = userData[i].firstChild.data;
					break;
					case "movieslist":
						userpage.myMovies = new Array();
						for(var m=0;m<userData[i].childNodes.length;m++)
						{
							if (userData[i].childNodes[m].tagName && userData[i].childNodes[m].tagName.toLowerCase() == 'movie')
							{
								var movieArray = new Array();
								var currMovie = userData[i].childNodes[m].childNodes;
								for (var p=0;p<currMovie.length;p++)
								{
									if (currMovie[p].tagName)
									{
										switch(currMovie[p].tagName.toLowerCase())
										{
											case "id":
												movieArray.id = currMovie[p].firstChild.data;
											break;
											case "title":
												if(currMovie[p].firstChild != null)
                                                {
                                                   movieArray.title = currMovie[p].firstChild.data;
                                                
                                                }
                                                else
                                                {
                                                   movieArray.title = " ";

                                                }
											break;
											case "takeninstring":
												movieArray.takenString = currMovie[p].firstChild.data;
											break;
											case "takeninnumber":
												movieArray.takenNumber = currMovie[p].firstChild.data;
											break;
											case "numofviews":
												movieArray.views = parseInt(currMovie[p].firstChild.data);
											break;
                                            case "thumb":
                                                movieArray.thumb = currMovie[p].firstChild.data;
                                            break;
										}
									}
								}
								userpage.myMovies[userpage.myMovies.length] = movieArray;
							}
						}
					break;
				}
		}
		userpage.resortList();
		userpage.PageNum = 0;
		userpage.PageMax = Math.floor((userpage.myMovies.length-1)/userpage.PerPage);
		
		
		userpage.updateFans($("MyFansTab"));
		userpage.updateFans($("FanOfTab"));
		userpage.changeSortBy($("TT"));
	},

	updateFans: function(o){
		if (o.id == 'MyFansTab')
			var fansArray = userpage.myFans;
		else if (o.id == 'FanOfTab')
			var fansArray = userpage.fanOf;
		var containerId = o.id.replace("Tab","");
		$(containerId).innerHTML = '';
		for (var f=0;f<fansArray.length;f++)
		{
			var currFan = fansArray[f];
			var itemDiv = new Element("DIV");
			itemDiv.className = 'item';
			var fanImg = new Element("IMG");
			fanImg.alt = '';
			fanImg.style.border = "0px;";
			fanImg.align = "left";
			fanImg.hspace = 5;
			fanImg.style.height="29px";
			fanImg.style.width="29px";
			fanImg.src = userpage.imageServer+currFan.id+"_small.gif";
			itemDiv.appendChild(fanImg);
			var nickSpan = new Element("SPAN");
			nickSpan.className = 'nick';
			nickSpan.innerHTML = "<a class='nick' href='/"+currFan.userName+"'>"+currFan.userName+"</a>";
			itemDiv.appendChild(nickSpan);
			if(currFan.fullName)
            {
               itemDiv.innerHTML += ' ('+currFan.fullName.replace(' ','&nbsp;')+') ';
            
            }
            //else
            
			var moviesSpan = new Element("SPAN");
			moviesSpan.className = 'movies';
			moviesSpan.innerHTML = currFan.movies+' flix';
			itemDiv.appendChild(moviesSpan);
			$(containerId).appendChild(itemDiv);
		}
		var counterId = o.id.replace("Tab","Count");
		$(counterId).innerHTML = '('+fansArray.length+')';
	},

	becomeFan: function() {
		if(flix.isLogin()) {
			flix.showReloader('Update...','update'); // Violet
	
			var updater = new Ajax('/userprofile/AddAsFan?userId='+userpage.userId, {method: 'get', onComplete:function(){

				if (this.transport.responseXML == null)
					return false;

				userpage.myFans = new Array();

				var fansData = this.transport.responseXML.childNodes;
				
				for(var f=0;f<fansData.length;f++)
				{
					if (fansData[f].tagName && fansData[f].tagName.toLowerCase() == 'myfans')
					{
						var fanData = fansData[f].childNodes;
						for(var ff=0;ff<fanData.length;ff++)
						{
							if (fanData[ff].tagName && fanData[ff].tagName.toLowerCase() == 'myfan')
							{
								var paramData = fanData[ff].childNodes;
								fanArray = new Array();
								for(var p=0;p<paramData.length;p++)
								{
									if(paramData[p].tagName)
									{
										switch(paramData[p].tagName.toLowerCase())
										{
									 		case "userid":
									 			fanArray.id = paramData[p].firstChild.data;
									 		break;
									 		case "username":
									 			fanArray.userName = paramData[p].firstChild.data;
									 		break;
									 		case "fullname":
									 			fanArray.fullName = paramData[p].firstChild.data;
									 		break;
									 		case "numberofmovies":
									 			fanArray.movies = paramData[p].firstChild.data;
									 		break;
										}
									}
								}
								userpage.myFans[userpage.myFans.length] = fanArray;
							}
						}
					}
				}
				userpage.updateFans($("MyFansTab"));
                $("becomeFanLink").style.display = "none"; 
                

				flix.hideReloader(); // hide reloader
			}}).request();
		} else {
			flix.login($("becomeFanLink"));
		}
	},
	
	changeFansTab: function(o){
		if ($(userpage.fansTab) == o)
			return;
		$(userpage.fansTab).removeClass('current');
		o.addClass('current');
		$(userpage.fansTab.replace("Tab","")).style.display = "none";
		$(o.id.replace("Tab","")).style.display = "block";
		userpage.fansTab = o.id;
	},

	// AJAX content - refresh the live movie, every 5 seconds
	updateLiveMovie: function() {

		var updater = new Ajax('/userprofile/PollForLiveMovies?userId='+userpage.userId , {method: 'get', onComplete:function(){
			var liveMovies = this.transport.responseXML.childNodes;
			var liveArray = new Array();
			for(var lm=0;lm<liveMovies.length;lm++)
			{
				if (liveMovies[lm].tagName && liveMovies[lm].tagName.toLowerCase()=='userlivemovies')
				{
					for(var m=0;m<liveMovies[lm].childNodes.length;m++)
					{
						if (liveMovies[lm].childNodes[m].tagName && liveMovies[lm].childNodes[m].tagName.toLowerCase()=='livemovie')
						{
							var movieParams = liveMovies[lm].childNodes[m].childNodes;
							for(var p=0;p<movieParams.length;p++)
							{
								if (movieParams[p].tagName)
									switch(movieParams[p].tagName.toLowerCase())
									{
										case"id":
											liveArray.id = movieParams[p].firstChild.data;
										break;
										case"title":
											liveArray.title = movieParams[p].firstChild.data;
										break;
                                        case"thumb":
                                            liveArray.thumb = movieParams[p].firstChild.data;
                                        break;
									}
							}
						}
					}
				}
			}
			if (liveArray.id)
			{
				$("GoLiveMovie").href = 'javascript:Common.JumpTo("'+liveArray.id+'");';
				$("ClickLiveMovie").href = 'javascript:Common.JumpTo("'+liveArray.id+'");';
				$("LinkLiveNow").href = 'javascript:Common.JumpTo("'+liveArray.id+'");';
				$("ThumbLiveMovie").src = liveArray.thumb;
				$("ThumbLiveMovie").style.width = "160px";
				$("ThumbLiveMovie").style.height = "120px";
				$("ThumbLiveMovie").onerror = Common.ShowDefaultImage;
				$("LiveMovieName").innerHTML = liveArray.title;
				$("LiveMovieContainer").style.display = 'block';
				if (userpage.PerPage == 12)
				{
					userpage.PerPage = 8;
					userpage.updateMovies();
					$("videosContent").style.height = "500px"
				}
			}
			else
			{
				$("LiveMovieContainer").style.display = 'none';
				if (userpage.PerPage == 8)
				{
					$("videosContent").style.height = "673px"
					userpage.PerPage = 12;
					userpage.updateMovies();
				}
			}
			
		}}).request();

		//set off the function every 5 minute
		userpage.userTimer = setTimeout("userpage.updateLiveMovie()", userpage.updateTime);
	},    

	// change sort by for user
	changeSortBy: function(o) {
		if ($(o).className.search('current') < 0)
		{
			$(userpage.SortBy).removeClass('current');
			userpage.SortBy = $(o).id;
			$(userpage.SortBy).addClass('current');
			userpage.resortList();
		}
		userpage.updateMovies();
	},

	resortList: function(){
		var tempList = userpage.myMovies;
		
		for (var n=0;n<tempList.length;n++)
		{
			for(var i=0;i<(tempList.length-1-n);i++)
			{
				switch(userpage.SortBy)
				{
					case"V":
						var increase = (tempList[i].views >= tempList[i+1].views);
					break;
					case"TT":
						var increase = (tempList[i].takenNumber >= tempList[i+1].takenNumber);
					break;
				}
				if (increase)
				{
					var tmpItem = tempList[i];
					tempList[i] = tempList[i+1]
					tempList[i+1] = tmpItem;
				}
			}
		}
		userpage.myMovies = new Array();
		for(var n=(tempList.length-1);n>=0;n--)
		{
			userpage.myMovies[tempList.length-1-n] = tempList[n];
		}
	},

	// paging for user videos
	setPage: function(page){
		userpage.PageNum = parseInt(page);
		userpage.updateMovies();
	},



	//----------------------------------------------------------------------------------//
	//update user page content(Ajax content)
	updateMovies: function() {


		if (userpage.myMovies.length == 0)
			return;
		userpage.PageMax = Math.floor((userpage.myMovies.length-1)/userpage.PerPage);
		if (userpage.PageNum>userpage.PageMax)
			userpage.PageNum = userpage.PageMax;
		var startMovie = userpage.PageNum*userpage.PerPage;
		var endMovie = ((userpage.PageNum+1)*userpage.PerPage > userpage.myMovies.length)?userpage.myMovies.length:(userpage.PageNum+1)*userpage.PerPage;
		
		$("videosContent").innerHTML = '';
		var itemsDiv = new Element("DIV");
		itemsDiv.className = 'items';
		var itemsDDiv = new Element("DIV");
		itemsDDiv.className = 'itemsDetals';
		for (var m=startMovie;m<endMovie;m++)
		{
			if (itemsDiv.childNodes.length == 4)
			{
				$("videosContent").appendChild(itemsDiv);
				$("videosContent").appendChild(itemsDDiv);
				var itemsDiv = new Element("DIV");
				itemsDiv.className = 'items';
				var itemsDDiv = new Element("DIV");
				itemsDDiv.className = 'itemsDetals';
			}
			var currMovie = userpage.myMovies[m];
			var thumbLink = new Element("A");
			thumbLink.href = 'javascript:Common.JumpTo("'+currMovie.id+'");';
			var thumbImg = new Element("IMG");
			thumbImg.src = currMovie.thumb;
			thumbImg.style.width = "160px";
			thumbImg.style.height = "120px";
			thumbImg.onerror = Common.ShowDefaultImage;
			thumbImg.alt='';
			thumbLink.appendChild(thumbImg);
			itemsDiv.appendChild(thumbLink);
			
			var itemDiv = new Element("DIV");
			itemDiv.className = 'item';
			var nameLink = new Element("A");
			nameLink.className = 'name';
			nameLink.href = '/watch/'+currMovie.id;
			nameLink.innerHTML = currMovie.title;
			itemDiv.appendChild(nameLink);
			var aired = new Element("P");
			aired.className = 'Aired';
			aired.innerHTML = 'Aired : '+currMovie.takenString+' <br> '+Common.FormatNumber(currMovie.views)+' '+Common.GetViewsLabel(currMovie.views);
			itemDiv.appendChild(aired);
			itemsDDiv.appendChild(itemDiv);
		}
		$("videosContent").appendChild(itemsDiv);
		$("videosContent").appendChild(itemsDDiv);

		$("paging").innerHTML = '';
		if (userpage.PageMax>0)
		{
			var backLink = new Element("A");
			backLink.href="#x";
			backLink.className = 'back';
			backLink.style.visibility = (userpage.PageNum == 0) ? "hidden" : "visible";
			if (userpage.PageNum > 0)
				backLink.onclick = userpage.funcAlias('userpage.setPage('+(userpage.PageNum-1)+')');
			$('paging').appendChild(backLink);

			if (userpage.PageNum > 4)
			{
				var startPage = userpage.PageNum-4;
				var endPage = userpage.PageNum;
			}
			else
			{
				var startPage = 0;
				var endPage = (userpage.PageMax > 4)?4:userpage.PageMax;
			}
			
			for(var p=startPage;p<=endPage;p++)
			{
				var pageLink = new Element("A");
				pageLink.href = '#x';
				pageLink.className = (userpage.PageNum == p) ? 'currentNum' : 'num';
				pageLink.innerHTML = (p+1);
				pageLink.onclick = userpage.funcAlias('userpage.setPage('+p+')');
				$('paging').appendChild(pageLink);
			}

			var nextLink = new Element("A");
			nextLink.href="#x";
			nextLink.className = 'next';
			nextLink.style.visibility = (userpage.PageNum == userpage.PageMax) ? "hidden" : "visible";
			if (userpage.PageNum < userpage.PageMax)
				nextLink.onclick = userpage.funcAlias('userpage.setPage('+(userpage.PageNum+1)+')');
			$('paging').appendChild(nextLink);
		}

	},

	funcAlias: function(code)
	{
		return function(){eval(code)}
	}


};


