﻿var _templateCache = {};
function safe(stringValue) {
	if (!stringValue)
		return '';
	return stringValue.replace('"', '\"');
}
function select(value) {
	if (value)
		return " selected=\"selected\"";
	return "";
}
function check(value) {
	if (value)
		return " checked=\"checked\"";
	return "";
}
$.fn.template = function(templateName, data) {
	var func = _templateCache[templateName];
	if (!func) {
		var str = $("#" + templateName).html();
		var strFunc = "var p=[],print=function(){p.push.apply(p,arguments);};with(obj){p.push('" +
            str.replace(/[\r\t\n]/g, " ")
               .replace(/'(?=[^#]*#>)/g, "\t")
               .split("'").join("\\'")
               .split("\t").join("'")
               .replace(/<#=(.+?)#>/g, "',$1,'")
               .split("<#").join("');")
               .split("#>").join("p.push('")
               + "');}return p.join('');";
		func = new Function("obj", strFunc);
		_templateCache[templateName] = func;
	}
	return (this).html(func(data));
}
var userImagesLoaded, userFunnyImagesLoaded, userImagePage = 0, userFunnyImagePage = 0, userImagesPerPage = 15, imagesPerLine = 3;
var articlesPage = 0, articlesPerPage = 10, articlesLoaded;
var editImageTemplate, image, album, updateFunction;
var albumsLoaded;

function deleteImage(id) {
	if (confirm('Confirmaţi ştergerea acestei imagini ?'))
		remove('galerie', id, updateFunction);
}
function loadPagerTemplate(selector, result, selectedPage, selectFunction) {
	$(selector).template('pager-template',
		{ "Count": result.Count,
			"PageCount": userImagesPerPage,
			"SelectedPage": selectedPage,
			"SelectFunction": selectFunction
		});
	}
function loadPagerArticleTemplate(selector, result, selectedPage, selectFunction) {
		$(selector).template('pager-template',
		{ "Count": result.Count,
			"PageCount": articlesPerPage,
			"SelectedPage": selectedPage,
			"SelectFunction": selectFunction
		});
	}
function loadImagesTemplate(result) {
	$('#userImagesBox').template('user-images-template', result);
	loadPagerTemplate('#userImagesPager', result, userImagePage, 'selectUserImagePage');
	loadPagerTemplate('#userImagesPagerBottom', result, userImagePage, 'selectUserImagePage');
	userImagesLoaded = true;
}
function loadFunnyImagesTemplate(result) {
	$('#userFunnyImagesBox').template('user-images-template', result);
	loadPagerTemplate('#userFunnyImagesPager', result, userFunnyImagePage, 'selectFunnyImagePage');
	loadPagerTemplate('#userFunnyImagesPagerBottom', result, userFunnyImagePage, 'selectFunnyImagePage');
	userFunnyImagesLoaded = true;
}
function loadAlbumsTemplate(result) {
	$('#userAlbumsBox').template('albums-template', result);
}
function loadArticlesTemplate(result) {
	$('#userArticleBox').template('articles-template', result);
	loadPagerArticleTemplate('#userArticlesPager', result, articlesPage, 'selectArticlePage');
	loadPagerArticleTemplate('#userArticlesPagerBottom', result, articlesPage, 'selectArticlePage');
}
function deleteAlbum(id) {
	if (confirm('Confirmaţi ştergerea acestui album ?'))
		remove('albume', id, updateFunction);
}

function editImage(id) {
	Pets.Web.Services.ProfileService.GetImage(id, function(result) {
		if (result) {
			image = result;
			$('#edit-image').template('edit-image-template', result);
			$('#edit-image').dialog('open');
		}
	});
}
function editAlbum(id) {
	Pets.Web.Services.ProfileService.GetAlbum(id, function(result) {
		if (result) {
			album = result;
			$('#edit-album').template('edit-album-template', result);
			$('#edit-album').dialog('open');
		}
	});
}
function loadUserImages() {
	if (!userImagesLoaded) 
		Pets.Web.Services.ProfileService.GetImages(user, userImagePage, userImagesPerPage, loadImagesTemplate);	
}
function loadFunnyImages() {
	if (!userFunnyImagesLoaded)
		Pets.Web.Services.ProfileService.GetFunnyImages(user, userFunnyImagePage, userImagesPerPage, loadFunnyImagesTemplate);
}
function loadArticles() {
	if (!articlesLoaded)
		Pets.Web.Services.ProfileService.GetArticles(user, articlesPage, articlesPerPage, loadArticlesTemplate);
}
function loadAlbums() {
	if (!albumsLoaded)
		Pets.Web.Services.ProfileService.GetAlbums(user, loadAlbumsTemplate);
}
function selectUserImagePage(page) {
	userImagesLoaded = false;
	userImagePage = page;
	loadUserImages();
}
function selectFunnyImagePage(page) {
	userFunnyImagesLoaded = false;
	userFunnyImagePage = page;
	loadFunnyImages();
}
function selectArticlePage(page) {
	articlesLoaded = false;
	articlesPage = page;
	loadArticles();
}
function updateImage() {
	if (image) {
		image.Name = $get('image_name').value;
		image.Description = $get('image_description').value;
		image.PetTypeId = $get('image_category').value;
		if (image.TypeId == '')
			image.TypeId = null;
		image.IsEmailPublic = $get('show_email').checked;
		image.IsPostcard = $get('is_postcard').checked;
		image.PostcardOwner = $get('postcard_owner').value;
		var value = $get('move').value;
		if (value != '') {
			if (value == 'gallery') {
				image.AlbumId = null;
				image.IsFunny = false;
			}
			else if (value == 'gallery_funny') {
				image.AlbumId = null;
				image.IsFunny = true;
			}
			else {
				image.AlbumId = value;
				image.IsFunny = false;
			}
		}
		Pets.Web.Services.ProfileService.UpdateImage(image, updateFunction);
	}
}
function updateAlbum() {
	if (album) {
		album.Name = $get('album_name').value;
		album.Description = $get('album_description').value;
		
		Pets.Web.Services.ProfileService.UpdateAlbum(album, updateFunction);
	}
}
function onDocumentReady() {
	var tabControl = $("#profile_tabs").tabs({
		selected: -1,
		select: function(evt, ui) {
			if (ui.panel.id == 'userImages') {
				updateFunction = function() { selectUserImagePage(userImagePage) };
				loadUserImages();
			}
			else if (ui.panel.id == 'userFunnyImages') {
				updateFunction = function() { selectFunnyImagePage(userFunnyImagePage) };
				loadFunnyImages();
			}
			else if (ui.panel.id == 'userAlbums') {
				updateFunction = function() { albumsLoaded = false; loadAlbums(); }
				loadAlbums();
			}
			else if (ui.panel.id == 'userArticles') {
				loadArticles();
			}
		}
	});
	$("#content").show();
	$("#edit-image").dialog({
		bgiframe: true,
		autoOpen: false,
		modal: true,
		width: 590,
		buttons: {
			'Salvează': function() { updateImage(); $(this).dialog("close") }
		}
	});
	$("#edit-album").dialog({
		bgiframe: true,
		autoOpen: false,
		modal: true,
		width: 590,
		buttons: {
			'Salvează': function() { updateAlbum(); $(this).dialog("close") }
		}
	});
	$("#profile_tabs").tabs('select',0);
}
$(document).ready(onDocumentReady);
