Object.addNamespace("Mantis.Reut.Client");
Object.addNamespace("Site");

Mantis.Reut.Client.ToggleProblematicTagVisibility=function (parent,tag,b) {
	if (!Browser.IE6) return;
	$A(parent.getElementsByTagName(tag)).each(function (o) {
		o=$(o);
		if (!b) o.setAttribute("lastVisibility",o.getStyle("visibility"));
		o.setStyle({visibility:b ? o.getAttribute("lastVisibility") : "hidden"});
	});
};
Mantis.Reut.Client.OuterShadow={
	Apply:function (el,amount,begin,alpha) {
		var shadow=_("div",el);
		alpha=alpha || 2;
		shadow.setStyle({
			height:Math.min(MAX_CSS_VALUE,el.offsetHeight)+"px",
			width:amount+"px"
		});
		if (Mantis.Reut.Client.Language.Direction) shadow.setStyle({right:(-amount)+"px"});
		else shadow.setStyle({left:(-amount)+"px"});

		shadow.className="shadow";
		var height=shadow.offsetHeight;
		for (var i=0;i<amount;i++) {
			var div=_("div",shadow);
			div.setStyle({height:height+"px"});
			div.setOpacity((begin-(i*alpha))/100);
		}

		return shadow;
	},
	ApplyBottom:function (el,amount,begin,alpha) {
		var shadow=_("div",el);
		shadow.addClassName("shadowVertical");
		alpha=alpha || 2;
		shadow.setStyle({
			width:el.offsetWidth+"px",
			height:amount+"px",
			bottom:(-amount)+"px"
		});

		var width=shadow.offsetWidth;
		for (var i=0;i<amount;i++) {
			var div=_("div",shadow);
			div.setStyle({width:width+"px"});
			div.setOpacity((begin-(i*alpha))/100);
		}
	}
};
Mantis.Reut.Client.FixAnchors=function () {
	var as=$A(document.getElementsByTagName("a"));
	var anchors=[];
	var targets={};
	
	as.each(
		function (a) {
			a=$(a);
			if (!a._anchorFixed && /#/.test(a.href)) anchors.push(a);
			if (a.name) targets[a.name]=a;

			if (a.makelink!=null) a.makeLink();
		}
	);
	anchors.each(
		function (a) {
			$(a);
			a.observe("click",function (e) {
				if (/#(.*)/.test(a.href)) {
					var target=targets[decodeURIComponent(RegExp.$1)];
					if (target) {
						document.documentElement.scrollTop=Position.cumulativeOffset(target)[1];
						a.blur();
						target.focus();
					}
				}
				Event.stop(e);
			});
			a._anchorFixed=true;
		}
	);
};
Mantis.Reut.Client.LoginValidate={
	UserNameFilled:function (sender,args) {
		args.IsValid=this.ValidateInput($(sender.controltovalidate),sender.errormessage);
		this.UserNameFilled.Valid=args.IsValid;
	},
	PasswordFilled:function (sender,args) {
		if (!this.UserNameFilled.Valid) return;
		args.IsValid=this.ValidateInput($(sender.controltovalidate),sender.errormessage);
		this.UserNameFilled.Valid=false;
	},
	ValidateInput:function (input,msg) {
		if (!input.value) {
			input.focus();
			alert(msg);
		}
		return input.value!="";
	}
};
Mantis.Reut.Client.NewsletterSignupValidator=function (sender,args) {
	args.IsValid=args.Value!="";
	if (!args.IsValid) alert(sender.errormessage);
};
Mantis.Reut.Client.CreatUserValidate={
	CountryFilled:function (sender,args) {
		args.IsValid=this.ValidateInput($(sender.controltovalidate),sender.errormessage);
		this.CountryFilled.Valid=args.IsValid;
	},	
	ValidateInput:function (input,msg) {
		if (!input.value) {
			input.focus();
			input.style.border='1px solid red';
			//alert(msg);
		}		
		return input.value!="";
	}
};
function OpenPopup(url,name,width,height,scroll,resizable) {
	open(url,name,"toolbar=no,status=yes,scrollbars="+(scroll ? "yes" : "no")+",resizable="+(resizable ? "yes" : "no")+",width="+width+",height="+height+"");
	return false;
}
function OpenInOpener(url) {
	if (opener && !opener.closed) {
		opener.location.href=url;
		opener.focus();
	}
	else {
		open(url).focus();
	}
	close();
	return false;
}

Object.addNamespace("Mantis.Reut.Client.Language");
Mantis.Reut.Client.Language.GetString=function (s) {
	return Mantis.Reut.Client.Language.Strings[s];
};

Paging.ShowAmount=9;
function Paging(numberOfPages,currentPage,loadFunction,anchorUrl) {
	// don't bother if no more that one page
	if (this.TotalPages<=1) return;

	var t=this;

	this.Page=currentPage;
	this.TotalPages=numberOfPages;

	// paging, numbers, next & prev elements
	var paging,numbers,next,prev;

	// returns a page by number
	var pageByNumber={};

	// the ragnge of pages to show
	var startPage,endPage;

	// the prev & next page anytime
	var prevPage,nextPage;

	function printNumbers() {
		if (currentPage>numberOfPages) currentPage=numberOfPages;
		if (currentPage<1) currentPage=1;

		var showFromEachSide=Math.floor(Paging.ShowAmount/2);

		var lastStartPage,lastEndPage;

		startPage=Math.max(1,currentPage-showFromEachSide);
		endPage=Math.min(numberOfPages,currentPage+showFromEachSide);

		if (currentPage-showFromEachSide<1) endPage+=Math.abs(currentPage-showFromEachSide)+1;
		if (currentPage+showFromEachSide>numberOfPages) startPage-=(currentPage+showFromEachSide)-numberOfPages;

		startPage=Math.max(1,startPage);
		endPage=Math.min(endPage,numberOfPages);

		if (lastStartPage==startPage && lastEndPage==endPage) return;

		if (numbers) numbers.remove();
		numbers=_("div",paging,null,paging.lastChild);
		pageByNumber={};
		numbers.addClassName("numbers");

		$R(startPage,endPage).each(function (i) {
			var page=_("a",numbers);
			pageByNumber[i]=page;
			//page.href=anchorUrl ? anchorUrl+i : "";
			page.makeLink();
			page._anchorFixed=true;
			page.innerHTML=i;
			page.onclick=function () {
				loadPage(i);
			};
		});

		$(numbers.firstChild).addClassName("first");

		var sum=0;
		$A(numbers.childNodes).each(function (o) {
			o=$(o);
			var width=
				o.offsetWidth+
				(parseInt(o.getStyle("margin-left")) || 0)+
				(parseInt(o.getStyle("margin-right")) || 0)+
				(parseInt(o.getStyle("border-left-width")) || 0)+
				(parseInt(o.getStyle("border-right-width")) || 0);
			sum+=width;
		});
		pageByNumber[currentPage].addClassName("curr");
		numbers.setStyle({width:sum+"px"});
		numbers.onselectstart=function () { return false; };

		setStyle();
	}

	this.Print=function (parent) {
		paging=_("div");
		paging.addClassName("paging");

		parent.appendChild(paging);

		t.Element=paging;
		t.Parent=parent;

		t.Parent=parent;

		if (true) {
			prev=_("a",paging,{className:"prev cornered nav"});
			prev.innerHTML=Mantis.Reut.Client.Language.GetString("index_previous");
			_("span",prev,{className:"tl"}); _("span",prev,{className:"tr"});
			_("span",prev,{className:"bl"}); _("span",prev,{className:"br"});

			prev.onselectstart=function () { return false; };
			prev._anchorFixed=true;
			prev.onclick=function () {
				loadPage(prevPage);
			};
			prev.makeLink();
		}

		if (true) {
			next=_("a",paging,{className:"next cornered nav"});
			next.innerHTML=Mantis.Reut.Client.Language.GetString("index_next");
			_("span",next,{className:"tl"}); _("span",next,{className:"tr"});
			_("span",next,{className:"bl"}); _("span",next,{className:"br"});
			next.onselectstart=function () { return false; };
			next._anchorFixed=true;
			next.onclick=function () {
				loadPage(nextPage);
			};
			next.makeLink();
		}

		printNumbers();
	};

	function setStyle() {
		prevPage=Math.max(1,currentPage-1);
		nextPage=Math.min(currentPage+1,numberOfPages);

		var totalWidth=
			(numbers ? numbers.offsetWidth : 0)+
			(next ? next.offsetWidth : 0)+
			(prev ? prev.offsetWidth : 0);

		paging.setStyle({width:totalWidth+"px"});
		var style=paging.getStyle("position")=="absolute" ? "right" : Mantis.Reut.Client.Language.Direction==Mantis.Reut.Client.Language.LanguageDirection.LTR ? "marginLeft" : "marginRight";
		paging.style[style]=((t.Parent.offsetWidth-paging.offsetWidth)/2)+"px";

		//next.href=anchorUrl ? anchorUrl+nextPage : "";
		//prev.href=anchorUrl ? anchorUrl+prevPage : "";
	}

	var lastPage=currentPage;
	function loadPage(newPage) {
		currentPage=newPage;
		//alert("lastPage:"+lastPage+"\nnewPage:"+newPage+"\n"+h(pageByNumber));
		//pageByNumber[lastPage].removeClassName("curr");
		//pageByNumber[newPage].addClassName("curr");
		printNumbers();
		lastPage=newPage;
		loadFunction(newPage);
		t.Page=newPage;
	}
}
Paging.prototype.Print=function (parent) {
};


$dl(function () {
	if ($("contentMenu")) Mantis.Reut.Client.OuterShadow.Apply($("contentMenu"),6,12);
	if ($("contentMain") && !$("contentMain").hasClassName("disableShadow")) Mantis.Reut.Client.OuterShadow.Apply($("contentMain"),4,8);
	Mantis.Reut.Client.FixAnchors();
	Object.addNamespace("AjaxPro");
	AjaxPro.onError=function (error) {
		if (error && Debug.State) {
			alert("Error:\n\n"+h(error));
		}
		//else alert("Connection Failure.");
	};
});
function GoogleSearch(q) {
	var url="Search.aspx?Q="+encodeURIComponent(q)+"&SearchLanguageId="+Mantis.Reut.Client.Language.LanguageId;
	
	//This is the query string information that Google requires:
	url+="&google=true&cx=006605637605946867234:2a4ip1zxubc&cof=FORID:11&ie=UTF-8&sa=Search&sitesearch=";
	var radio=document.getElementsByName("sitesearch");
	for(var i = 0; i < radio.length; i++)
	{
	    if(radio[i].checked)
	        url+=radio[i].value;
	}
	//You can't make the iframe go right-to-left through css; but the hl=iw flag in the querystring does it.
	//Add some kind of "if language needs rtl..."
    if (Mantis.Reut.Client.Language.Definitions.direction=="rtl") url+="&hl=iw";
    
    location.href=Site.RootPath+url;
}
function SiteSearch(q,fromDate,toDate,subjectId,publicationTypes,searchIn) {
	//if (!q) return alert(Mantis.Reut.Client.Language.GetString("common_search_query_required"));

	var url="Search.aspx?Q="+encodeURIComponent(q)+"&SearchLanguageId="+Mantis.Reut.Client.Language.LanguageId;
	url+="&google=false";
	if (fromDate instanceof Date) url+="&FromDate="+fromDate.Format("Y-M-D");
	if (toDate instanceof Date) url+="&ToDate="+toDate.Format("Y-M-D");
	if (publicationTypes instanceof Array) url+="&PublicationTypes="+publicationTypes.join(",");
	if (subjectId) url+="&SubjectId="+subjectId;
	if (searchIn) url+="&SearcIn="+searchIn;

	location.href=Site.RootPath+url;
}
Mantis.QS={
	Length:0,
	Data:[],
	Init:function () {
		this.Length=0;
		this.Data.length=0;
		var qs=location.search.substr(1),item;
		if (!qs) return;
		qs=qs.split("&");
		for (var i=0;i<qs.length;i++) {
			item=qs[i].split("=");
			item[1]=decodeURIComponent(item[1]) || "";
			this.Data[item[0].toLowerCase()]=item[1];
			this.Data[i]=new Mantis.QS.Item(item[0],item[1]);
			this.Length++;
		}
		this.Item.prototype.toString=function () { return this.Name+"="+this.Value; };
	},
	Get:function (item) {
		return this.Data[(item+"").toLowerCase()];
	},
	Item:function (name,value) {
		this.Name=name;
		this.Value=value;
	},
	Add:function () {
		var a;
		if (typeof arguments[0]=="string" && arguments[1]!=undefined) a=[new this.Item(arguments[0],arguments[1])];
		else if (arguments[0] instanceof Array) a=arguments[0];
		else a=arguments;
		var qs="",hash="",rxQS,item,value;
		if (/\?([^#]*)(#.*)?$/.test(location.href)) {
			qs=RegExp.$1;
			hash=RegExp.$2;
		}
		for (var i=0;i<a.length;i++) {
			if (!(a[i] instanceof this.Item)) continue;
			item=a[i].Name;
			value=a[i].Value;
			rxQS=new RegExp("(^|&)"+item.ToRx()+"=?[^\&#]*?(#|&|$)");
			qs=rxQS.test(qs) ? qs.replace(rxQS,"$1"+item+"="+value+"$2") : qs+(qs ? "&" : "")+item+"="+value;
		}
		location.href="?"+qs+hash;
	}
};
Mantis.QS.Init();

Site.ProtectAnonymous=function (forceNotAuth,page) {
	if (forceNotAuth || Site.UserId==null) {
		open(Site.RootPath+"ProtectedPage.aspx?Page="+page,"protectedPage","width=300,height=270");
		return false;
	}
	return true;
};


var Debug={
	State:false,
	getArgumentsString:function (args) { var a=[];for (var i=0;i<args.length;i++) a.push(args[i]);return a.join("\n"); },
	Alert:function () { if (Debug.State) alert(this.getArgumentsString(arguments)); },
	Copy:function (s) { if (Debug.State && window.clipboardData) clipboardData.setData("Text",this.getArgumentsString(arguments)); },
	Confirm:function (s,f) { if (Debug.State) { if (confirm(s)) f(); } }
};

window.copy=function () { Debug.Copy.apply(Debug,arguments); };
window.r=function () { Debug.Alert.apply(Debug,arguments); };

var Browser={
	Detect:function () {
		var agent=navigator.userAgent.toLowerCase();

		this.IE=agent.indexOf("msie")!=-1;
		this.IE6=agent.indexOf("msie 6")!=-1;
		this.IE7=agent.indexOf("msie 7")!=-1;
		this.Gecko=agent.indexOf("gecko")!=-1;
		this.Opera=agent.indexOf("opera")!=-1;
		this.Safari=agent.search(/(konqueror|safari|khtml)/i)>-1;
		this.Other=!this.IE && !this.Gecko && !this.Safari;
	}
};
Browser.Detect();

if (Browser.IE) document.write('<script type="text/vbscript">\nfunction VBGetSwfVer(i)\non error resume next\ndim swControl,swVersion\nswVersion=0\nset swControl=CreateObject("ShockwaveFlash.ShockwaveFlash."&CStr(i))\nif (IsObject(swControl)) then swVersion=swControl.GetVariable("$version")\nVBGetSwfVer=swVersion\nend function</s\cript>');
function JSGetSwfVer(i) {
	if (navigator.plugins!=null && navigator.plugins.length>0) {
		if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {
			var swVer2=navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
      		var flashDescription=navigator.plugins["Shockwave Flash"+swVer2].description;
			descArray=flashDescription.split(" ");
			tempArrayMajor=descArray[2].split(".");
			versionMajor=tempArrayMajor[0];
			versionMinor=tempArrayMajor[1];
			if (descArray[3]!="") tempArrayMinor=descArray[3].split("r");
			else tempArrayMinor=descArray[4].split("r");
			versionRevision=tempArrayMinor[1]>0 ? tempArrayMinor[1] : 0;
			flashVer=versionMajor+"."+versionMinor+"."+versionRevision;
      	}
		else flashVer=-1;
	}
	else flashVer=-1;
	return flashVer;
}
function DetectFlashVer(reqMajorVer,reqMinorVer,reqRevision) {
 	reqVer=parseFloat(reqMajorVer+"."+reqRevision);
	for (i=25;i>0;i--) {
		if (typeof(VBGetSwfVer)!="undefined") versionStr=VBGetSwfVer(i);
		else versionStr=JSGetSwfVer(i);

		if (versionStr==-1) return false;
		else if (versionStr!=0) {
			if (typeof(VBGetSwfVer)!="undefined") versionArray=versionStr.split(" ")[1].split(",");
			else versionArray=versionStr.split(".");

			versionMajor=versionArray[0];
			versionMinor=versionArray[1];
			versionRevision=versionArray[2];

			versionString=versionMajor+"."+versionRevision;   // 7.0r24 == 7.24
			versionNum=parseFloat(versionString);

			if (versionMajor>reqMajorVer && versionNum>=reqVer) return true;
			else return versionNum>=reqVer && versionMinor>=reqMinorVer;
		}
	}
	return reqVer ? false : 0.0;
}
function InsertFlash(url,trans,width,height,bgColor,id) {
	document.write(GetFlashHtml.apply(null,arguments));
};
GetFlashHtml.RequiredMajor=8;
GetFlashHtml.RequiredMinor=0;
GetFlashHtml.RequiredRevision=0;
function GetFlashHtml(url,trans,width,height,bgColor,id) {
	//return '<object id='+id+' type=application/x-shockwave-flash height='+height+' width='+width+' data='+url+'><param name="movie" value="' + url + '" /></object>';

	if (GetFlashHtml.Detected==undefined) GetFlashHtml.Detected=DetectFlashVer(GetFlashHtml.RequiredMajor,GetFlashHtml.RequiredMinor,GetFlashHtml.RequiredRevision);

	if (GetFlashHtml.Detected) {
		var html=[];
		html.push('<object '+(Browser.IE ? 'classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0"' : '')+' type="application/x-shockwave-flash" data="'+url+'" '+(width ? ' width="'+width+'"' : '')+' '+(height ? ' height="'+height+'"' : '')+' '+(trans ? ' wmode="transparent"' : '')+' '+(bgColor ? ' bgColor="'+bgColor+'"' : '')+' menu="false" id="'+id+'">');
		if (trans) html.push('<param name="wmode" value="transparent" />');
		if (!Browser.Opera) html.push('<param name="menu" value="false" />');
		if (width) html.push('<param name="width" value="'+width+'" />');
		if (height) html.push('<param name="height" value="'+height+'" />');
		if (bgColor) html.push('<param name="bgColor" value="'+bgColor+'" />');
		html.push('<param name="movie" value="'+url+'" />');
		html.push('<param name="allowScriptAccess" value="sameDomain" /><param name="quality" value="high" />');
		html.push('</object>');

		//if (url.indexOf("Map/Map.swf")>-1) alert(html.join(""));

		return html.join("");
	}
	else return '<div class="noflash">Flash player 8 not detected. <a href="http://www.macromedia.com/go/getflash/" target="_blank">Get Flash!</a></div>';
};

var HiderIframe={
	Show:function (clone) {
		if (!/msie/i.test(navigator.userAgent)) return;
		$("hider-iframe").show();

		Position.clone(clone,$("hider-iframe"));
		$("hider-iframe").setStyle({"z-index":clone.getStyle("z-index")-1});
		$("hider-iframe").setStyle({border:"10px solid red"});
		$("hider-iframe").setOpacity(1);
	},
	Hide:function () {
		$("hider-iframe").hide();
	}
};

var Cookies={
	get:function (name) {
		if (document.cookie && new RegExp("\\b"+name+"=([^;]*)").test(document.cookie)) return unescape(RegExp.$1);
	},
	set:function (name,value) {
		var d=new Date();d.setTime(d.getTime()+365*24*3600*1000);
		document.cookie=name+"="+escape(value)+"; expires="+d.toGMTString();/*path=/; */
	},
	del:function (name) {
		if (this.get(name)) document.cookie=name+"=; expires=Thu, 01-Jan-70 00:00:01 UTC";
	}
};

try{document.execCommand("BackgroundImageCache",false,true);}catch(ex){}
