/**
 * @author Danil
 */
var UserAlbumsTriptich = {
	//private properties
	_template : 			
			'<dd class="rightblockAlbumsList" id="userAlbum">'
            +   '<dl>'
            +       '<dt class="otherAlb-dd-head" style="height:25px; padding-top:5px;">'
            +          '<span class="header1">альбом</span>'
            +          '<span class="categoryName"><a class="link" href="albumview.html#aid" id="albumTitle"></a></span>'
            +       '</dt>'
            +      '<dd>'
            +         '<div class="albumbg">'
            +           '<div id="albumLeftImage" class="albumPreviewImage" style="background: #E2E2E2;"></div>'
			+	        '<div id="albumRightImage" class="albumPreviewImage" style="background: #E2E2E2;"></div>'
			+		    '<div class="clear"></div>'
            +          '</div>'			          
            +          '<div class="albumQuantityRight header3"><img id="albumsWait" src="img/loader.gif"><span id="albCountVisible" class="hide"><span id="count">0</span><br/>фото</span></div>'
            +          '<div class="clear"></div>'
            +      '</dd>'
            +      '<dd class="ddAlbumFooter header1">обновлен <span id="dateModified"></span></dd>'
            +   '</dl>'
            +'</dd>',
            
	
	//public methods 	
	
	servletUrl: "ListAlbumPhotosServlet",
	
	createEmptyAlbums: function(num){
		$("[id=userAlbum]", "#userAlbums").remove();
		for(var i=0; i<num; i++){
			var userAlbumDiv = $(this._template);
			userAlbumDiv.appendTo("#userAlbums");
		}
	},
	
	createTriptich: function(data) {
	    var triptychData = UserAlbumsTriptich._getTriptyckh(data);	
	    
	    UserAlbumsTriptich.createEmptyAlbums(triptychData.length);
		
		if(triptychData.length > 0) {
			$("#userAlbums").parent().removeClass("hide");
			
		    for(var i=0; i<triptychData.length; i++) {
		        //var userAlbumDiv = $(this._template).attr("id", "userAlbum");
				var userAlbumDiv = $("#userAlbums").find("[id=userAlbum]").eq(i);
		        var userAlbumData = data[triptychData[i]];
		
		        $("#albumTitle", userAlbumDiv).
		                text(userAlbumData.albumTitle).
						attr("href","albumview.html#aid="+userAlbumData.albumId);//.get(0).href = "/album-view.html#aid=" + userAlbumData.albumId;
		        $("#dateModified", userAlbumDiv).html(getReadableDate(userAlbumData.dateModified, true));
		
		        //userAlbumDiv.appendTo("#userAlbums");
		        UserAlbumsTriptich._setTriptychPhotos(i, userAlbumData.albumId);        
		    }
		}
	},
	
	_setTriptychPhotos: function(triptychNo, albId) {
	    // Get album photos        
	    zwsGetJSON(this.servletUrl,{albumId: albId}, function(data){ 
	
	        if(data.status) {
	            switch(data.status) {
	                case 404:
						var userAlbumDiv = $("#userAlbums").find("dd[id=userAlbum]").eq(triptychNo);                    
						userAlbumDiv.find("#albumsWait").addClass("hide");
						userAlbumDiv.find("#albCountVisible").removeClass("hide");
			            userAlbumDiv.find("#count").html("нет");
	                    break;
	            }
	        } else {
	            var userAlbumDiv = $("#userAlbums").find("dd[id=userAlbum]").eq(triptychNo);                    
				userAlbumDiv.find("#albumsWait").addClass("hide");
				userAlbumDiv.find("#albCountVisible").removeClass("hide");
	            userAlbumDiv.find("#count").html(data.length);
				if(data.length==0)
					userAlbumDiv.find("#count").html("нет");
				
				if(data.length > 0) {		
					userAlbumDiv.find("#albumLeftImage").css("background","url("+data[0].url+") no-repeat center");
			    }
			
			    if(data.length > 1) {
					userAlbumDiv.find("#albumRightImage").css("background","url("+data[1].url+") no-repeat center");
			    }
	        }
	    });    
	},
	
	//private method
	_getRandomInterval: function(interval) {
	        var randNo = Math.random();
	        randNo = randNo * interval;
	        return Math.ceil(randNo);
	}, 
	
	_getActiveAlbumIndex: function(data, albumId) {
		var index = -1;
		for(var i=0; i<data.length; i++) {
			if(data[i].albumId == albumId) {
				index = i;
				break;
			}
		}
		
		return index;
	},
	
	_getRandomIntervalExcept: function(interval, exceptArr) {
	        var result;
	
	        if(exceptArr.length == 0) {
	            result = UserAlbumsTriptich._getRandomInterval(interval);
	        } else {
	            var insetCounter = 0;
	            while(insetCounter < exceptArr.length) {
	                insetCounter = 0;
	                result = UserAlbumsTriptich._getRandomInterval(interval);
	                for(var i=0; i<exceptArr.length; i++) {
	                    if(exceptArr[i] != result - 1) {
	                            ++insetCounter;
	                    }
	                }
	            }
	        }
	
	        result = (result > 0) ? result - 1 : 0;
	        return result;
	},
		
	_getTriptyckh: function(data) {	
	    var result = [];
	
	    if(data.length < 4) {
	        for(var i=0; i<data.length; i++) {
	            result.push(UserAlbumsTriptich._getRandomIntervalExcept(data.length, result));
	        }
	    } else {
	        result.push(UserAlbumsTriptich._getRandomIntervalExcept(data.length, result));
	        result.push(UserAlbumsTriptich._getRandomIntervalExcept(data.length, result));
	        result.push(UserAlbumsTriptich._getRandomIntervalExcept(data.length, result));
	    }
	
		var query = $.getQuery();
		if(query) {
			if(query["aid"]) {
				result = [];
				result.push(UserAlbumsTriptich._getActiveAlbumIndex(data, query["aid"]));
			
				if(data.length < 4) {
					for(var i=0; i<data.length - 1; i++) {
						result.push(UserAlbumsTriptich._getRandomIntervalExcept(data.length, result));
					}
				} else {
					result.push(UserAlbumsTriptich._getRandomIntervalExcept(data.length, result));
					result.push(UserAlbumsTriptich._getRandomIntervalExcept(data.length, result));
					result.push(UserAlbumsTriptich._getRandomIntervalExcept(data.length, result));
				}
				
				if(data.length > 1) {
					var sub = [];
					for(var i=1; i<result.length; i++) {
						sub.push(result[i]);
					}
					result = sub;
				} else {
					result = [];
				}
			}
		}
		
		return result;
	}
}

$(document).ready(function(){
	$("#userAlbums").parent().addClass("hide");
	
	if($("#userAlbums").length==0)
		return;	
	//UserAlbumsTriptich.createEmptyAlbums();
	if(pageConf && pageConf.pageType == "public")
		return;
	// Get album list
    zwsGetJSON("ListUserAlbumsServlet", {}, function(dt){ 
		if(dt.status && dt.status=="401" || dt.status=="404"){
	    	return;
	    }
		
		UserAlbumsTriptich.createTriptich(dt);     		
	});	
});