/**
 * object that is responsible for managing news services actions
 */
var ndNews = {
		/**
		 * object that keep track of user information
		 */
		ndUser : {
				/**
				 * @var Number
				 */
				_userId : null,
				
				/**
				 * @return Number
				 */
				setUserId : function(id)
				{
					return (this._userId = id);
				},
				
				/**
				 * @return Number
				 */
				getUserId : function()
				{
					return (this._userId);
				}
		}

};

ndNews.prototype = {};

/**
 * return: no return value
 * show search div container
 * @return	bool
 */
ndNews.openSearchPopup = function()
{
	$("#advancedSearchInput").val($("#searchBarInput").val());
	$("html").css("overflow", "hidden");
	$("#newsSearchPopup").dialog("option", "title", 'Recherche Avancée'); // TODO : traduc
	$("#newsSearchPopup").dialog("open");
};

/**
 * return: no return value
 * hide search div container
 */
ndNews.closeSearchPopup = function()
{
	$("#newsSearchPopup").dialog("close");
	$("html").css("overflow", "auto");
},

ndNews.expandArticleRow = function(elementId, width, height)
{
	var element = document.getElementById(elementId);
	if (!element || element.className.indexOf("close") == -1)
		return (false);
	element.className = element.className.replace(new RegExp("(close)", "g"), "open");
	$('#'+elementId+'.articlePicture').resizeImages( {width: 150, height: 100, center: true});
	/*var media = new MediaItem(elementId);
	media.getItem('picture-'+elementId, "articlePicture", 0, false, width, height);*/
};

ndNews.collapseArticleRow = function(elementId)
{
	var element = document.getElementById(elementId);
	if (!element || element.className.indexOf("open") == -1)
		return (false);
	element.className = element.className.replace(new RegExp("(open)", "g"), "close");
};

ndNews.insertAllMedia = function()
{
	$(".articlePreviewRow").each(function()
			{
				if (this.id.split("-")[1])
				{
					var elementId = this.id.split("-")[1];
					var media = new MediaItem(elementId);
					media.getItem('picture-'+elementId, "articlePicture", 0, true, 150, 150, false);
				}
			});
};

/**
 *  show source selection menu in advance search mode
 */
ndNews.openSourceMenu = function()
{
	$("#sourcelist").addClass("open");
	$("#selectbutton").addClass("hidden");
	$("#allbutton").removeClass("selected");
	return (true);
};

/**
 * hide source selection menu in advance search mode
 * @return bool
 */
ndNews.closeSourceMenu = function()
{
	$("#sourcelist").removeClass("open");
	$("#selectbutton").removeClass("hidden");
	$("#allbutton").addClass("selected");
	return (true);
};

ndNews.checkAllSources = function()
{
	$("#sourcelist .newspapers input:checkbox").attr("checked", "checked");
	return (true);
};

ndNews.uncheckAllSources = function()
{
	$("#sourcelist .newspapers input:checkbox").removeAttr("checked");
	return (true);
};

/**
 * make date conversion for period quick selection
 * @return bool
 */
ndNews.dateHelper = function(value)
{
	var fromDate = document.getElementById("fromDate");
	var	toDate = document.getElementById("toDate");
	var now = new Date();
	var aDay = 3600 * 24 * 1000;
	var newDate = new Date();
	if (value.length > 0)
	{
		newDate.setTime(now - (aDay * value));
		//toDate.value = "";
		fromDate.value = $.PHPDate("Ymd", newDate);
	}
	else
	{
	//	toDate.value = "";
		fromDate.value = "";
	}
	return (true);
};

/**
 * return: no return value
 * show error message
 * @return bool
 */
ndNews.showSearchError = function(message)
{
	var label = document.getElementById('advanceSearchError');
	if (message != null)
	{
		label.innerHTML = message;
	}
	label.style.display = "block";
	return (true);
};

/**
 * return: no return value
 * hide error message
 * @return bool
 */
ndNews.hideSearchError = function()
{
	var label = document.getElementById('advanceSearchError');
	label.innerHTML = "";
	label.style.display = "none";
	return (true);
};

ndNews.sendArticleByMail = function()
{
	var email = document.getElementById("friendMail").value;
	if (email.length == 0)
	{
		ndNewsUtils.alertTranslation("no email address");
		return (false);
	}	
	//TODO : email validation
	$("#mailSender #articleUrl").val(window.location);
	$("#mailSender #titleArticle").val(ndNewsUtils.trim($("#articleTitle").text()));
	$("#mailSender #previewArticle").val(ndNewsUtils.trim($("#summaryContent").text()));
	if($("#mailSender #titleNewsPaper").val($("#newspaperlogo").attr("alt")))
			$("#mailSender #titleNewsPaper").val($("#newspaperlogo").attr("alt").split("-",1));
	$.post("index.php?controller=News&action=sendArticleByMail", $("#mailSender").serialize(),
			function() {
			  ndNewsUtils.alertTranslation(ndNewsUtils.getTranslation("Your email has been sent to ")+" " + email);
			  /*ndNewsUtils.alertTranslation("Your email has been sent to " + email);*/
	        } );
	return (true);
};
/*************************************************************/
ndNews.openConnexionView = function(){
	
	jQuery.ajax(
			{
				url: "index.php?controller=News&action=getConnect",
				success: ndNews.createConnexionDialog
			});
};
ndNews.openResetPwdView = function(){
	
	jQuery.ajax(
			{
				url: "index.php?controller=News&action=getResetView",
				success: ndNews.resetPasswordDialog
			});
};

ndNews.resetPasswordDialog = function(data, textStatus, jqXHR){
	ndSettings.initLoginFormValidation();
	var dialogDiv = document.createElement("div");
	$(dialogDiv).attr("title","Récupération du mot de passe");
	$(dialogDiv).attr("id", "resetDiv");
	$(dialogDiv).append(data);
	$(dialogDiv).dialog({
		height:	300,
		width:	500,
		draggable: false,
		resizable: false,
		modal: true,
		dialogClass: "test",
		open: function(){$('.ui-widget-overlay').click(function()
				{
					$("TestDiv").dialog('close');
				});},
		close: function(event, ui){this.parentNode.removeChild(this);}
	});
};
ndNews.sendResetMail = function(){
	var url = "index.php?controller=Settings&action=sendResetPassword";
	$.post(url, $("#loginForm").serialize(),
			function(data,textStatus) {
			ndNewsUtils.alertTranslation(ndNewsUtils.getTranslation("Mail envoyé"));
	});
	return (true);
};

ndNews.testConnexion = function(){
	if(document.getElementById("emailInput").value.length == 0 || document.getElementById("passwordInput").value.length == 0)
		return false;
	
	var url = "index.php?controller=News&action=login";
	$.post(url, $("#loginForm").serialize(),
			function(data,textStatus,dataType) {
				parent.location.reload();
				location.reload();
//				alert(data); // c'est du html
//		alert(dataType);
/*		$("#TestDiv").remove();	parent.location.reload();*/
/*				if(data=="true"){
					var dialogDiv = document.createElement("div");
					$(dialogDiv).attr("id","error");
					$(dialogDiv).text("erreur");
					$("#emailInput").append(dialogDiv);
				}else{
					$("#TestDiv").remove();
					//location.reload();
				}*/
	        } );	
	return false;
};
/*****/
ndNews.closeConnexion = function(){
	
	jQuery.ajax(
			{
				url: "index.php?action=logout",
				success:parent.location.reload()
			});
	return false;
};

/**********/
ndNews.switchArticleRowDisplay = function()
{
	if ($("#expandAllCheckbox").get(0).checked)
	{
		var rows = $(".articlePreviewRow");
		for (var i = 0; i < rows.length; i++)
		{
			ndNews.expandArticleRow(rows.get(i).id);
		}
		return (ndNews.setArticleRowOpenStateCookie(true));
	}
	else
	{
		var rows = $(".articlePreviewRow");
		for (var i = 0; i < rows.length; i++)
		{
			ndNews.collapseArticleRow(rows.get(i).id);
		}
		return (ndNews.setArticleRowOpenStateCookie(false));
	}
};

ndNews.setArticleRowOpenStateCookie = function(open)
{
	var statestring = open ? "open" : "close";
	ndNewsUtils.setCookieWithLifetime("articlerowstate", statestring, 366);
	return (open);
};

ndNews.buyArticle = function(itemid)
{
	//var articlePrice = 3;
	//var warningMessage = ndNewsUtils.getTranslation("You are about to buy the current article content, do you agree?") + "\n" + ndNewsUtils.getTranslation("Price") + " : " + articlePrice + " Corpus€uro";
	//ndNewsUtils.confirm(ndNewsUtils.getTranslation(warningMessage), function(){ndNews.buyArticleFromServer(itemid);});
	ndNews.buyArticleFromServer(itemid);
};

/**
 * make a request to server to buy an article and return the content or null
 * @return string HTML
 */
ndNews.buyArticleFromServer = function(itemid)
{
	var url = "index.php?controller=News&action=buyArticle&itemId="+itemid;
	jQuery.ajax(
			{
				url	:		url,
				success	:	function(data)
				{
					var id = window.location.hash.split("-")[1];
					$("#computedSummary").remove();
					$("#textContent").html(data);
					$("#buttonBuy").remove();
					//mark as read
					$("[id^='article'][id$='" + itemid + "']").addClass("read");
					//log item view
					ndNews.addNewspaperPageLink($("#textContent #pageurl").attr("href"));
					window.setTimeout("ndNews.logView(" + id + " );", 3000);
					ArticleItem.focus();
				},
				error	:	function(xhr)
				{
					ndNewsUtils.confirm(
							$(xhr.responseXML).find("message").text(),
							function(){ndSettings.openCreditAccountPage(function(){ndNews.buyArticle(itemid);});}
							);
				}
			});
	return (true);
};

ndNews.AddToStarredItems = function(itemid){

	var url = "index.php?controller=News&action=setStarredItems&itemId="+itemid+"&IsStarred=true"; //&type=1
	jQuery.ajax(
			{
				url	:		url,
				success	:	function(){$("#article-"+ itemid).removeClass("unstarred");
									   $("#article-"+ itemid).addClass("starred");
									   $("#shareLinks").removeClass("unstarred");
									   $("#shareLinks").addClass("starred");}
			});
	return (true);
};

ndNews.RemoveToStarredItems = function(itemid){

	var url = "index.php?controller=News&action=setStarredItems&itemId="+itemid;
	jQuery.ajax(
			{
				url	:		url,
				success	:	function(){$("#article-"+ itemid).removeClass("starred");
									   $("#article-"+ itemid).addClass("unstarred");
									   $("#shareLinks").removeClass("starred");
									   $("#shareLinks").addClass("unstarred");}
			});
	return (true);
};

ndNews.addNewspaperPageLink = function(url)
{
	if (url == null || url.length == 0)
		return (false);
	var li = document.createElement("li");
	var button = document.createElement("button");
	$(button).attr("class", "newspaperPage");
	$(button).text(ndNewsUtils.getTranslation("Read the article in paper format"));
	$(button).click(function(){ndNews.displayNewsPaperPage(url);});
	$(button).css('cursor', 'pointer');
	$(li).append(button);
	$("#options.articleMenuItem ul").append(li);
};

/**
 * send a log request to the server about the current article
 * @return bool
 */
ndNews.logView = function(id)
{
	var url = window.location.toString();
	var queryString = url.split("?")[1];
	var url = "index.php?controller=News&action=logItemView&itemId=" + id + "&url=" + encodeURIComponent(queryString);
	jQuery.ajax(
			{
				url	:	url
			});
	return (true);
};

ndNews.onHashChange = function(event, data)
{
	var hash = window.location.hash;
	if (hash.length <= 1)
	{
		ArticleItem.removeFullscreenContainer();
		return (true);
	}
	if (hash.indexOf("image") != -1)
	{
		var imageId =  hash.split("-")[1]+'-'+hash.split("-")[2];
		//MediaItem.switchToFullscreen($("#picture-" + imageId).get(0));
		return (true);
	}
	if (hash.indexOf("article") != -1)
	{
		if ($("#ndNewsMediaPlayerFullscreenContainer").length > 0)
		{
			var imageId =  hash.split("-")[1];
		//	MediaItem.removeFullscreenContainer($("#picture-" + imageId).get(0));
		}
		else
		{
			var articleId =  hash.split("-")[1];
			if ($("#ndNewsArticleViewer-" + articleId).length == 0)
				new ArticleItem(articleId).getItem();
		}
		return (true);
	}
	return (true);
};

/**
 * AddCurrentArticleSectionToUserNewsPaper
 * @param Number sectionId
 * @return Boolean
 */
ndNews.AddCurrentArticleSectionToUserNewsPaper = function(sectionId,newspaperTitle)
{
	if (sectionId == null)
		return (false);
	var xhr = ndNewsUtils.getXHR();
	if (xhr == null)
		return (null);
	var url = "index.php?controller=NewsPaper&action=getUserNewsPaperListForSectionAdding&sectionId="+sectionId;
	xhr.open("GET", url, false);
	xhr.send(null);
	if (xhr.readyState == 4)
	{
		//init dialog content
		var dialogDiv = document.createElement("div");
		var newspaperTitle=($("#newspaperlogo").attr("alt"));
		var title = ndNewsUtils.getTranslation("Would you want to add the section")+" "+$("#viewerArticleCategory span").text()+" "+
		ndNewsUtils.getTranslation("of")+" ”"+newspaperTitle+"” "+
		ndNewsUtils.getTranslation("in some of your newspapers?");
		dialogDiv.setAttribute("title", title);
		//add received content to ul tag
		var list = document.createElement("ul");
		$(list).attr("id","userNewsPaperList");
		$(list).html(xhr.responseText);
		$(list).children("li").click(function()
				{
					//link "create new user news paper
					if ($(this).children("span").length < 1)
						return (true);
					//a span with the necessary information to add a section to an existing user newspaper
					var userNewsPaperId = $(this).children("span").get(0).id.split("-")[1];
					$(dialogDiv).dialog('close');
					NewsPaperElement.addSection(sectionId, userNewsPaperId);									
				});
		//add list in dialog content
		$(dialogDiv).append(list);
		//show dialog
		$(dialogDiv).dialog({dialogClass:"newsPaperBtClose",width:500, draggable: false, resizable: false, modal: true, close: function(event, ui){this.parentNode.removeChild(this);}});
		return (true);
	}
	ndNewsUtils.openDialog(	"Megalopolis :" + ndNewsUtils.getTranslation("Error"),
							ndNewsUtils.getTranslation("An Error occured when adding section"));
	return (false);
};

ndNews.openAuthorDialog = function(authorId)
{
	jQuery.ajax(
			{
				url: "index.php?controller=News&action=getAuthor&authorId=" + encodeURIComponent(authorId),
				success: ndNews.createAuthorDialog
			});
};

ndNews.createAuthorDialog = function(data)
{
	if ($("#author").length > 0 && $("#author").dialog('isOpen'))
		return (false);
	var dialogDiv = document.createElement("div");
	var closeButton = document.createElement("button");
	$(closeButton).attr("id", "articleViewerCloseBtn");
	$(closeButton).click(function() {
		$("#author").dialog('close');
	});
	$(dialogDiv).append(closeButton);
	$(dialogDiv).append(data);
	$(dialogDiv).attr("title", ndNewsUtils.getTranslation("Author desciption"));
	$(dialogDiv).attr("id", "author");
	$(dialogDiv).dialog({
		height:	422,
		width:	800,
		draggable: false,
		resizable: false,
		modal: true,
		dialogClass: "authorPopup",
		open: function(){$('.ui-widget-overlay').click(function()
				{
					$("#author").dialog('close');
				});},
		close: function(event, ui){this.parentNode.removeChild(this);}
	});
};

ndNews.changeDiv = function(j) {
	$('.authorarticles').each(function() {
		if($(this).attr('id') == 'moncalque'+j)
			$(this).css('display', 'block');
		else
			$(this).css('display', 'none');
	});
};

/*******************************************/
ndNews.closeAuthorDialog = function()
{
	$("#author").dialog('close');
	$("#author").remove();
};


/**********************************************/

ndNews.displayNewsPaperPage = function(url)
{
	jQuery.ajax(
			{
				url : url,
				type : 'HEAD',
				success : function()
				{
					var thumbnail = document.createElement("img");
					var page = document.createElement("img");
					$(page).attr("id", "newspaperPage");
					$(page).attr("src", url);
					$(page).css("display", "none");
					$(page).css("position", "relative");
					$(page).click(ndNews.zoomOut);
					$(thumbnail).attr("id", "newspaperPageThumbnail");
					$(thumbnail).attr("src", url);
					$(thumbnail).click(ndNews.zoomIn);
					$(window).resize(ndNews.zoomOut);
					ndNewsUI.toForeground(thumbnail, function(){$(window).unbind("resize", ndNews.zoomOut);});
					$("#ndNewsPlayerFullscreenContainer").append(page);
					ndNews.zoomOut();
				},
				error :	function(xhr)
				{
					if (xhr.status == 404)
					{
						ndNewsUtils.alert("La page demandée n'existe pas.");
						return (false);
					}
					//not working
					if (xhr.status == 302)
					{
						ndNews.displayNewsPaperPage(xhr.location);
						return (true);
					}
					ndNewsUtils.alert("Une erreur s'est produite.");
				}
			}
	);
 	
};

ndNews.zoomIn = function()
{
	$("#newspaperPageThumbnail").css("display", "none");
	$("#newspaperPage").css("display", "block");
	$("#ndNewsPlayerFullscreenContainer").css("overflow", "auto");
	if ($("#newspaperPage").height() > 0)
		$("#fullscreenContainerBackground").css("height", $("#newspaperPage").height());
};

ndNews.zoomOut = function()
{
	var height = (ndNewsUtils.windowSize().height < $("body").height()) ? 
			$("body").height() : ndNewsUtils.windowSize().height;
	$("#newspaperPageThumbnail").resizeImages(
			{
				width:	0,
				height:	ndNewsUtils.windowSize().height,
				center: false,
				hideIfToSmall: false,
				force: true,
				display: "block", 
				clickable: false,
				border: 0
			});
	$("#newspaperPage").css("display", "none");
	$("#newspaperPageThumbnail").css("display", "block");
	$("#ndNewsPlayerFullscreenContainer").scrollTop(0);
	$("#ndNewsPlayerFullscreenContainer").css("overflow", "hidden");
	if ($("#newspaperPageThumbnail").height() > 0)
		$("#fullscreenContainerBackground").css("height", $("#newspaperPageThumbnail").height());
};

ndNews.sendSubscription = function(){
	
	var hello = "";
	if (document.getElementById("email").value.length == 0)
	{
		$("#emailError").text('Ne peut etre vide');
/*		var label = document.getElementById('emailError');
		label.innerHTML = "no email address";
		label.style.display = "inline";*/
		hello += 1;
	}
	if(document.getElementById("lastName").value.length == 0)
	{
		$("#lastNameError").text('Ne peut etre vide');
		hello += "email";
	}
	if(document.getElementById("firstName").value.length == 0)
	{
		$("#firstNameError").text('Ne peut etre vide');
		hello += "email";
	}
		if(document.getElementById("cellnumberInput").value.length == 0)
		{
			$("#cellnumberInputError").text('Ne peut etre vide');
			hello += "email";
		}
		if(document.getElementById("address1Input").value.length == 0)
		{
			$("#address1InputError").text('Ne peut etre vide');
			hello += "email";
		}
		if(document.getElementById("ZIPCodeInput").value.length == 0)
		{
			$("#ZIPCodeInputError").text('Ne peut etre vide');
			hello += "email";
		}
		if(document.getElementById("countryInput").value.length == 0)
		{
			$("#countryInputError").text('Ne peut etre vide');
			hello += "email";
		}
		if(document.getElementById("cityInput").value.length == 0)
		{
			$("#cityInputError").text('Ne peut etre vide');
			hello += "email";
		}
		
		if(hello=="")
			return true;
		else
			return (false);
};
