﻿var Case={};
Case.Init=function () {
	this.CaseElement=$("case");
	this.Element=$("mycaseElement");
	this.CountElement=$("caseCount");
	this.Opener=$("contentMenu");
	if (this.CaseElement) {
		this.Position=Position.cumulativeOffset(this.CaseElement);
		this.CaseElement.makeLink();
	}
};
Case.Add=function (element,publicationId) {
	if (!Site.ProtectAnonymous(false,"Case")) return false;
	if (!this.Position) return false;

	var link=_("a",null);
	//link.innerHTML=Mantis.Reut.Client.Language.GetString("link_to_case");
	link.addClassName("caseClone");

	document.body.appendChild(link);

	Position.clone(element,link);

	var pos=Position.cumulativeOffset(link);
	
	link.setOpacity(.6);
	
	var ajaxFinished=false,
		effectFinished=false;

	var count;
	
	Mantis.Reut.Code.DAL.AjaxSetUserPublication(
		publicationId,
		function (res) {
			if (+res.value) {
				count=+res.value;
				if (effectFinished) Case.CountElement.innerHTML=res.value;
				ajaxFinished=true;
			}
		}
	);

	new Effect.Move(link,{
		x:this.Position[0]-pos[0]+40,
		y:this.Position[1]-pos[1],
		afterFinish:function () {
			link.remove();
			new Effect.Pulsate(Case.CaseElement,{duration:1,from:.4});
			if (ajaxFinished) {
				Case.CountElement.innerHTML=count;
				updated=true;
			}
			effectFinished=true;

			if (typeof(urchinTracker)=="function") {
				urchinTracker("Briefcase/Add");
				urchinTracker("Briefcase/Add/"+publicationId);
			}
		}
	});

	return false;
};
$dl(function () { Case.Init(); });
Event.observe(window,"resize",function () { Case.Init(); });

Case.LoadPublications=function (page,callback,first) {
	Case.Page=page;

	Case.Stair.Wait(true);
	Mantis.Reut.Code.DAL.AjaxGetUserPublicationsPaged(
		page || 1,
		function (res) {
			if (res.value) {
				var ps=res.value;
				Case.PrintPublications(ps.Collection,page);
				/*if (first) */Case.PrintPublicationsPaging(ps.PageSetData);
				if (typeof(callback)=="function") callback();
				Case.Stair.Wait(false);
			}
		}
	);
};
Case.Open=function () {
	if (Case.Stair && Case.Stair.Opened) {
		Case.Stair.Remove(2);
		return;
	}

	StairwayToHeaven.RemoveAll();

	var stair=new Stair(this.Opener);
	var div=stair.Element;
	div.id="mycase";
	stair.Wait(true);

	div.appendChild(this.Element);

	Case.Stair=stair;

	Mantis.Reut.Client.OuterShadow.ApplyBottom(div,4,20);

	Case.LoadPublications(
		1,
		function () {
			stair.Move(null,1);
		},
		true
	);
};
Case.PrintPublications=function (pubs,currentPage) {
	var div=Case.Stair.Element;

	var pubList=_("div",div);
	div.addClassName("publications");
	pubList.addClassName("pubList");

	pubs.each(
		function (p) {
			var div=_("div",pubList);
			div.addClassName("pub");

			var typeString='';
			if (Mantis.Reut.Client.Language.Direction==Mantis.Reut.Client.Language.LanguageDirection.RTL) typeString='<div class="typeIcon typeIcon'+p.PublicationType.PublicationTypeId+'" title="'+Mantis.Text.Escape(p.PublicationType.Header)+'"></div><a>'+p.PublicationType.Header+'</a>';
			else typeString='<a>'+p.PublicationType.Header+'</a><div class="typeIcon typeIcon'+p.PublicationType.PublicationTypeId+'" title="'+Mantis.Text.Escape(p.PublicationType.Header)+'"></div>';

			div.innerHTML='\
	<div class="properties">\
		<div class="type">'+typeString+'</div>\
		<div class="date">'+p.PublicationDate.Format(Mantis.Reut.Client.Language.Definitions["clientdateformat"])+'</div>\
	</div>\
	<div>\
		<div class="right"></div>\
		<div class="left">\
			<h2><a href="/en/Publication.aspx?PublicationId='+p.PublicationId+'">'+p.MapHeader+'</a></h2>\
		</div>\
	</div>\
	<div class="remove" onclick="Case.Remove(this,'+p.PublicationId+')" title="'+Mantis.Reut.Client.Language.GetString("index_case_remove")+'"></div>\
			';

			//_("div",div,{ className:"hr" });
		}
	);

	if (Case.pubList) Case.pubList.remove();
	Case.pubList=pubList;	
};
Case.Remove=function (pub,publicationId) {
	pub=Event.findElementByFunction(pub,function (o) { return $(o).hasClassName("pub"); });

	Mantis.Reut.Code.DAL.AjaxDelUserPublication(
		publicationId,
		function (res) {
			Case.CountElement.innerHTML=res.value;
			new Effect.Pulsate(Case.CaseElement,{duration:1,from:.4});
			new Effect.Fade(
				pub,
				{
					afterFinish:function () {
						pub.remove();
						Case.LoadPublications(Case.Page,Case.Stair);
					}
				}
			);
		}
	);
};
Case.PrintPublicationsPaging=function (psd) {
	if (Case.Stair.Paging && Case.Stair.Paging.Element) Case.Stair.Paging.Element.remove();

	var paging=new Paging(
		psd.TotalPages || 1,
		psd.PageIndex,
		function loadFunction(newPage) {
			Case.LoadPublications(newPage);
		},
		"#Stair=Case&Page="
	);

	Case.Stair.Paging=paging;

	if (Case.Page>psd.TotalPages) Case.LoadPublications(psd.TotalPages);

	paging.Print(Case.Stair.Element);
};
