function Circular(){
	var O = arguments.length ? arguments[0] : {};
	
	Array.prototype.min = function(){ return Math.min.apply({},this); }
	Array.prototype.max = function(){ return Math.max.apply({},this); }


var S = {
		Radius: (O.Radius ? O.Radius : 70),
		XtoY: (O.XtoY ? O.XtoY : 3),
		Corner: {
			Def: (O.Default ? O.Default : 0),
			Real: 0, Sys: 0, Dole: 0,
			Step: (O.Step ? O.Step : 3)
		},
		TimeDelay: (O.TimeDelay ? O.TimeDelay : 20),
		BigTimeDelay: (O.BigTimeDelay ? O.BigTimeDelay : 3000),
		MinScale: (O.MinScale ? O.MinScale : 0.6), // от 0 до 1
		MP_String: (O.Parent ? O.Parent : ".CirclePhoto>.in"),
		MIE_String: (O.Child ? O.Child : ".Photos .e"),
		Except: (O.Exception ? O.Exception : ".Photos .e")
	},
	Doles,
	MP,
	MIE,
	VarPI = Math.PI;


function CtoXY(){
	var PC = (arguments.length ? arguments[0] : 0) * VarPI / 180,
		Y = Math.cos(PC) * S.Radius+0.0001,
		X = Math.sin(PC) * S.Radius*S.XtoY+0.0001;
	return { x: X, y: Y };
}

function XYZpos(){
	var TempCorner = arguments.length ? arguments[0] : 0,
		X = [],Y = [],Z = [],T = [],
		Harray = [],
		BaseZ = 50;
	
	for(var i=0;i<Doles;i++){
		var A = CtoXY(TempCorner);
		Harray[i] = Y[i] = A.y;
		X[i] = A.x;
		Z[i] = -25000;
		T[i] = (1-S.MinScale)*(A.y + S.Radius)/(2*S.Radius) + S.MinScale;
		if(T[i] > 1) T[i] = 1;
		TempCorner += S.Corner.Dole;
	}
	
	for(var j=0;j<Doles;j++){
		var TempMax = Harray.max();
		for(var i=0;i<Doles;i++){ if(Harray[i] === TempMax){
			Z[i] = BaseZ;
			Harray[i] = -25000;
			BaseZ--;
			break;
		} }
	}
	
	for(var i=0;i<Doles;i++) MIE.eq(i).css({
		"left":X[i],"top":Y[i],"z-index":Z[i],
		"-moz-transform":"scale("+T[i]+")",
		"-webkit-transform":"scale("+T[i]+")",
		"-o-transform":"scale("+T[i]+")",
		"-ms-transform":"scale("+T[i]+")",
		"transform":"scale("+T[i]+")"
	});
}


function CoreAnime(){ if(BgAnim.Circle === true){
	var a = arguments,
		Dir = a.length ? a[0] : "L",
		LimitCorner = a.length > 1 ? a[1] : "none";
	S.Corner.Real += (Dir === "L" ? 1 : -1) * S.Corner.Step;
	XYZpos(S.Corner.Real);
	
	if( (Dir === "L" && S.Corner.Real < LimitCorner) || (Dir === "R" && S.Corner.Real > LimitCorner) ) setTimeout(function(){ CoreAnime(Dir,LimitCorner); },S.TimeDelay); // Рекурсивно вызываем функцию, пока его не получим
	else BgAnim.Circle = false;
} }


var BgAnime = false;
var Coords = { x1:0,x2:0,y1:0,y2:0 };
function ResizeCoords(){
	var cWidth = MP.outerWidth(),
		cHeight = MP.outerHeight(),
		eWidth = MIE.children().outerWidth(),
		WarZone = eWidth + S.Radius*S.XtoY*2;
	Coords.x1 = MP.offset().left + (cWidth - WarZone)/2;
	Coords.x2 = Coords.x1 + WarZone;
	Coords.y1 = MP.offset().top;
	Coords.y2 = Coords.y1 + cHeight;
}


var BgAnim = {
	L:false,
	R:false,
	Circle:false,
	One:false
}

function OneTurn(){
	var a = arguments,
		Dir = a.length ? a[0] : "L",
		SourceString = a.length > 1 ? a[1] : "none",
		TempSource = SourceString.split(" "),
		Source = TempSource[0],
		SourceNum = TempSource[1],
		Through = a.length > 2 ? a[2] : 0,
		PrevDir = BgAnim.One === false ? "" : BgAnim.One.split(" ",2)[0],
		PrevSource = BgAnim.One === false ? "" : BgAnim.One.split(PrevDir+" ")[1],
		MainAction = function(){
			BgAnim.One = Dir+' '+SourceString;
			BgAnim.Circle = true;
			S.Corner.Sys += (Dir === "L" ? 1 : -1) * S.Corner.Dole;
			setTimeout(function(){ CoreAnime(Dir,S.Corner.Sys); },S.TimeDelay);
			setTimeout(function(){ OneTurn(Dir,SourceString,1); },S.BigTimeDelay);
		},
		ShortRecurcy = function(){ setTimeout(function(){ OneTurn(Dir,SourceString,1); },10); };
	
	if(BgAnim.One === false && BgAnim.Circle === false){
		switch(SourceString){
			case "hover": SourceString = "hover 1"; break;
			default: SourceString = Source+' '+(SourceString.split(" ",2)[1]*1 + 1);
		}
		MainAction();
	}
	else if(Through == 1 && (Dir+' '+SourceString) === BgAnim.One){
		if( (BgAnim.L && Dir === "L") || (BgAnim.R && Dir === "R") ){
			if(BgAnim.Circle === false) BgAnim.One = false;
			ShortRecurcy();
		}
		else BgAnim.One = false;
	}
	else switch(Source){
		case "hover": {
			if( (BgAnim.L && Dir === "L" && PrevDir === "R") || (BgAnim.R && Dir === "R" && PrevDir === "L") ){ ShortRecurcy(); }
			break;
		}
		case "click": {
			if(BgAnim.Circle === false && Through == 0){
				switch(PrevSource){
					case "hover": SourceString = "click"; break;
					case "click": SourceString = "click 1"; break;
					default: SourceString = Source+' '+(PrevSource.split(" ",2)[1]*1 + 1);
				}
				MainAction();
			}
			break;
		}
	}
}

$(document).bind("mouseover",function(e){
	function Closer(){ BgAnim.L = BgAnim.R = false; }
	var Xmid = Math.round(Coords.x2/2 + Coords.x1/2),
		EX = e.pageX, EY = e.pageY;
	if(EY <= Coords.y2 && EY >= Coords.y1){
		if(Xmid > EX && EX >= Coords.x1){
			BgAnim.L = true; BgAnim.R = false;
			OneTurn("L","hover");
		}
		else if(Coords.x2 >= EX && EX >= Xmid){
			BgAnim.L = false; BgAnim.R = true;
			OneTurn("R","hover");
		}
		else Closer();
	}
	else Closer();
});


$(window).bind("resize",function(){ ResizeCoords(); });


$(function(){
	var a = [];
	MP = $(S.MP_String).eq(0);
	MIE = MP.find(S.MIE_String);
	MP.css({opacity:0}).show().bind("click",function(e){
		var Xmid = Math.round(Coords.x2/2 + Coords.x1/2),
			EX = e.pageX,
			ET = $(e.target);
		if( !ET.parents().filter(S.Except).length && !ET.is(S.Except) ){
			if(EX < Xmid && EX >= Coords.x1) OneTurn("L","click");
			else if(EX <= Coords.x2 && EX >= Xmid) OneTurn("R","click");
		}
	});
	Doles = MIE.length;
	S.Corner.Dole = 360 / Doles;
	
	XYZpos(S.Corner.Def);
	for(var i=0;i<Doles;i++) a[i] = MIE.eq(i).children(".in").outerHeight();
	var CornerVZone = a.max() + S.Radius;
	
	ResizeCoords();
	MP.css({"height":CornerVZone,"padding-top":S.Radius,"width":(Coords.x2 - Coords.x1),"margin":"0 auto",opacity:1})
	ResizeCoords();
});

}

function getBodyScrollTop(){
	return self.pageYOffset || (document.documentElement && document.documentElement.scrollTop) || (document.body && document.body.scrollTop);
}


function trust_guard_context(){
	var d = new Date();
	alert('Copying Prohibited by Law - This image and all included logos are copyrighted by trust-guard \251 '+d.getFullYear()+'.');
	return false;
}
$('a[name="trustlink"]').live('click',function(){
	var link = $(this).attr('href'),
			nonwin = navigator.appName!='Microsoft Internet Explorer'?'yes':'no';
	window.open(link.replace('http','https'),'welcome','location='+nonwin+',scrollbars=yes,width=517,height='+screen.availHeight+',menubar=no,toolbar=no');
	return false;
});

$(function(){
	$(".shielded").each(function(){
		var shieldText = $(this).find(".shieldText");
		$(this).find(".shield").click(function(){
			if(shieldText.is(":hidden")){
				shieldText.show();
				$("body").bind("click","Helper",function(el){
					var e = $(el.target);
					if( !e.hasClass("shieldTextIn") && !e.hasClass("shieldText") && !e.hasClass("shield") ){ shieldText.hide(); $("body").unbind("click","Helper"); }
				});
			}
			else shieldText.hide();
		});
	});
	
// Flags - let's automate this
	$(".countriesSelect .flags .item").each(function(){
		var item = $(this);
		with(item){
		var LinkToCountry = find("a"),
				Flag = find("b");
		}
		var A = item.hasClass("english"),
				B = item.hasClass("espanol"),
				C = item.hasClass("chinese"),
				D = item.hasClass("russian"),
				E = item.hasClass("german"),
				FlagBefore = function(T){ return {width:"28px", height:"508px", marginLeft:"-15px", top:T}; },
				FlagAfter = function(T){ return {width:"35px",height:"635px",marginLeft:"-18px",top:T} };
		
		LinkToCountry.hover(
			function(){
						 if(A) Flag.animate(FlagBefore(2),200);
				else if(B) Flag.animate(FlagBefore(-59),200);
				else if(C) Flag.animate(FlagBefore(-120),200);
				else if(D) Flag.animate(FlagBefore(-180),200);
				else if(E) Flag.animate(FlagBefore(-362),200);
			},
			function(){
						 if(A) Flag.animate(FlagAfter(0),200);
				else if(B) Flag.animate(FlagAfter(-76),200);
				else if(C) Flag.animate(FlagAfter(-152),200);
				else if(D) Flag.animate(FlagAfter(-228),200);
				else if(E) Flag.animate(FlagAfter(-455),200);
			}
		);
	});
	
	
	var payBg = $(".darkBg"),
			payBlock = $(".iframeBlock"),
			payBlockAjax = $(".iframeBlock>.iframeBlockIn>.iframeBlockContent"),
			linkToIframe = $(".iframeDarked .iframePreview a"),
			closeButton = $(".iframeBlock .iframeClose>span");
	
	linkToIframe.click(function(){
		var scrolledBy = getBodyScrollTop()+50,
				iframeLink = $(this).attr("href");
		with( $(this).parent() ){
		var iframeImgTop = prev().html(),
				iframeImgBottom = next().html();
		}
		
		payBlockAjax.html('<div class="top">'+
		iframeImgTop+'</div>'+'<iframe src="'+iframeLink+'" width="740" height="350" scrolling="yes" frameborder="0"></iframe>'+
		'<a href="http://fapturbo.com/link.php?prodid=1">'+iframeImgBottom+'</a>');
				
		payBlock.css({"display":"block","opacity":"0",top:(scrolledBy)+'px'});
		payBg.css({"display":"block","opacity":"0"});
		payBg.animate({opacity:0.6},"300");
		payBlock.animate({opacity:1},"300");
		
		return false;
	});
	
	closeButton.add(payBg).click(function(){
		payBg.add(payBlock).fadeOut("300");
		payBlockAjax.html("");
	});
	
});
