﻿//карта
var map = new Array();
var maptype = new Array();
var mapstatus = new Array();
//Размерность карты
var hcount,wcount;

var imgVH = 425;
var imgVW = 568;
var bder = 10;
var maxImg = 0;

var cc = $.readCookie('sc');
if (cc){
	var tt = parseInt(cc/20);
	var scale = (tt<=10)&&(tt>=1) ? tt*20 : 60;
}else{
	var scale = 60;	
}
var bscale = scale+bder;
//lim map positions
var lb;
var rb;
var tb;
var bb;

function zoomIn(){
	if (scale+20<=200) ChangeScale(20);	
}

function zoomOut(){
	if (scale-20>=20) ChangeScale(-20);	
}

function setScale(){
	$(".ldiv").css({"height":bscale*3+"px","width":bscale*3+"px"});
	$(".bigImg").css({"height":scale*3+20+"px","width":scale*3+20+"px"});
	$(".medImg").css({"height":scale*2+10+"px","width":scale*2+10+"px"});
	$(".smaImg").css({"height":scale+"px","width":scale+"px"});
	$("#map").css({"width" : wcount*3*bscale+"px","height" : hcount*3*bscale+"px"});
	DefineLimits();
	DefineSliders();
	RestorePos();
	LoadVisible();
}

function ChangeScale(delta){
	var last=bscale;
	scale+=delta;
	bscale=scale+bder;
	var t = parseInt($("#map").css("left"));
	$("#map").css("left",Math.round(imgVW/2-(bscale/last)*(imgVW/2-t)));
	t = parseInt($("#map").css("top"));
	$("#map").css("top",Math.round(imgVH/2-(bscale/last)*(imgVH/2-t)));
	setScale();
	$.setCookie('sc', scale, {duration: 255});
}

function DefineLimits(){
	rb=Math.round((imgVW-bscale)/2);
	lb=(Math.round((imgVW+bscale)/2)-3*bscale*wcount);
	tb=(Math.round((imgVH+bscale)/2)-3*bscale*hcount);
	bb=Math.round((imgVH-bscale)/2);
}

function LoadVisible(){
	var mpl = parseInt($("#map").css('left'));
	var mpt = parseInt($("#map").css('top'));
	
	var lst = -Math.ceil(mpl/(3*bscale));	if (lst<0) lst=0;
	var lsp = Math.ceil((imgVW-mpl)/(3*bscale));	if (lsp>=wcount) lsp=wcount-1;
	var tst = -Math.ceil(mpt/(3*bscale));	if (tst<0) tst=0;
	var tsp = Math.ceil((imgVH-mpt)/(3*bscale));	if (tsp>=hcount) tsp=hcount-1;
	
	for( var i = tst; i<=tsp; i++) {
		for (var j=lst; j<=lsp; j++) {
			if (mapstatus[i][j]!=-1){
				var t = scale>100 ? 1 : 2;
				var tmp = scale>100 ? 'images/' : 'sub_images/';
				if (mapstatus[i][j]!=t){
					mapstatus[i][j]=t;
					var imas = $("#c"+i+"c"+j).find("img");
					var lmas = imas.length;
					for (var k = 0;k<lmas;k++){
						imas[k].src = tmp+map[i][j][k]+'.jpg';	
					}
				}
			}
		}
	}
}	

function DefineSliders(){
	$("#slg").slider('option','max',-lb);
	$("#slg").slider('option','min',-rb);
	$("#slv").slider('option','max',bb);
	$("#slv").slider('option','min',tb);
}

function SetSliders(){
	$("#slg").slider('option','value',-parseInt($("#map").css('left')));
	$("#slv").slider('option','value',parseInt($("#map").css('top')));
}

function RestorePos(){	
	var mpl = parseInt($("#map").css('left'));
	if ((mpl<0)&&(lb>mpl)) $("#map").css("left",lb+"px");
	
	mpl = parseInt($("#map").css('left'));
	if (mpl>0) {
		if (mpl>rb) $("#map").css("left",rb+"px");
		var tmp = rb-wcount*3*bscale;
		if (mpl<tmp) $("#map").css("left",tmp+"px");
	}
	
	mpl = parseInt($("#map").css('top'));
	if ((mpl<0)&&(tb>mpl)) $("#map").css("top",tb+"px");

	mpl = parseInt($("#map").css('top'));
	if (mpl>0) {
		if (mpl>bb) $("#map").css("top",bb+"px");
		tmp = bb-hcount*3*bscale;
		if (mpl<tmp) $("#map").css("top",tmp+"px");
	}
	SetSliders();
}

//Инициализация и заполнение карты
function mapInitialize(data,ih,iw){
	//Инициализация размеров карты
	imgVH = ih;
	imgVW = iw;
	//Инициализация Слайдеров карты
	$("#slg").slider({
		slide: function(event, ui){$("#map").css("left",-ui.value+"px");},
		stop : function(event, ui){LoadVisible();}
	});
	$("#slv").slider({
		orientation: 'vertical',
		slide: function(event, ui){$("#map").css("top",ui.value+"px");},
		stop : function(event, ui){LoadVisible();}
	});
	$("#sls").slider({
		orientation:'vertical',
		max:200,
		min:20,
		step:20,
		value:scale,
		stop: function(event,ui){ChangeScale(ui.value-scale)}					
					});
	//Кол-во изображений
	var scount = data[0].length;
	var mcount = data[1].length;
	var lcount = data[2].length;
	
	var bcount = Math.ceil(lcount+mcount+((scount-mcount*5)<0 ? 0:(scount-mcount*5))/9);
	wcount = Math.ceil(Math.sqrt(4*bcount/3));
	hcount = Math.ceil(Math.sqrt(3*bcount/4));
	
	//set map width
	$("#map").css({"width" : 3*wcount*bscale+"px","height" : 3*hcount*bscale+"px"});
	
	//create map itself
	for (var i=0;i<hcount;i++){
		var tmpstr='';
		map[i] = new Array();
		maptype[i] = new Array();
		mapstatus[i] = new Array();
		for (var j=0;j<wcount;j++){
			maptype[i][j] = 0;
			mapstatus[i][j] = -1;
			map[i][j] = new Array();
			tmpstr+='<div class="ldiv" id="c'+i+'c'+j+'"></div>';
		}
		$("#myMap").append(tmpstr);
	}

	var sc=0;
	var mc=0;
	var lc=0;
	
	if (lcount!=0) {
		var lwcount = Math.ceil(Math.sqrt(4*lcount/3));
		var lhcount = Math.ceil(Math.sqrt(3*lcount/4));
		for (var i=Math.floor((hcount-lhcount)/2);(i<=lhcount)&&(lc<lcount);i++){
			for (var j=Math.floor((wcount-lwcount)/2);(j<=lwcount)&&(lc<lcount);j++){
				maptype[i][j]=3;
				mapstatus[i][j]=0;
				map[i][j][0]=data[2][lc];
				maxImg = maxImg<map[i][j][0] ? map[i][j][0] : maxImg;
				$("#c"+i+"c"+j).append("<img class='bigImg' ondblclick='MyClick("+map[i][j][0]+");' src='../css/images/loading.gif' title='Двойной щелчок для просмотра' />");
				lc++;
			}
		}
	}
	if (mcount!=0) {
		var mwcount = Math.ceil(Math.sqrt(4*(lcount+mcount)/3));
		var mhcount = Math.ceil(Math.sqrt(3*(lcount+mcount)/4));
		for (var i=Math.floor((hcount-mhcount)/2);(i<=mhcount)&&(mc<mcount);i++){
			for (var j=Math.floor((wcount-mwcount)/2);(j<=mwcount)&&(mc<mcount);j++){
				if (maptype[i][j]==0) {
					maptype[i][j]=2;
					mapstatus[i][j]=0;
					map[i][j][0]=data[1][mc];
					maxImg = maxImg<map[i][j][0] ? map[i][j][0] : maxImg;
					$("#c"+i+"c"+j).append("<img class='medImg'  ondblclick='MyClick("+map[i][j][0]+");' src='../css/images/loading.gif' title='Двойной щелчок для просмотра' />");
					mc++;
					if (sc<scount){
						for (var k=0;((k<5)&&(sc<scount));k++){
							map[i][j][k+1]=data[0][sc];
							maxImg = maxImg<map[i][j][k+1] ? map[i][j][k+1] : maxImg;
							$("#c"+i+"c"+j).append("<img class='smaImg' ondblclick='MyClick("+map[i][j][k+1]+");' src='../css/images/loading.gif' title='Двойной щелчок для просмотра' />");
							sc++;
						}
					}
				}
			}
		}
	}
	if ((scount!=0)&&(sc<scount)){
		for (var i=0;((i<hcount)&&(sc<scount));i++){
			for (var j=0;((j<wcount)&&(sc<scount));j++){
				if (maptype[i][j]==0){
					maptype[i][j]=1;
					mapstatus[i][j]=0;
					for (var k=0;((k<9)&&(sc<scount));k++){
						map[i][j][k]=data[0][sc];
						maxImg = maxImg<map[i][j][k] ? map[i][j][k] : maxImg;
						$("#c"+i+"c"+j).append("<img class='smaImg'  ondblclick='MyClick("+map[i][j][k]+");' src='../css/images/loading.gif' title='Двойной щелчок для просмотра' />");
						sc++;
					}
				}
			}
		}
	}
	setScale();
	$("#map").draggable({
		drag: function(event, ui) {SetSliders();},
		stop: function(event, ui) {
			RestorePos();
			LoadVisible();
		}
	});
	LoadVisible();
	RestorePos();
}

function MyClick(num) {
	$.getJSON("../php/getaffirmation.php?a="+num,
		function(data){
			if ((data!=1)){
				$("#aAffirmation").html(data[0]);
				$("#aTags").html(tags[data[5]]+' '+tags[data[6]]);
				$("#aName").html(data[1]);
				$("#aName").attr('href','user.php?n='+data[1]);
				var t = 'Просмотров: '+data[3];
				if (data[4]==1) $("#aAvatar").attr('src','/avatar/'+data[2]+'.jpg');
				else  $("#aAvatar").attr('src','/avatar/0.jpg');
				$("#aImage").attr('src','images/'+num+'.jpg');
				$.fn.colorbox({inline:true,href:"#aWindow",scrolling:false,title:t});
			}
	});
}

function Next(type) {
	$.getJSON("../php/getrandom.php?t="+type,
		function(data){
			if ((data!=1)){
				$("#aAffirmation").html(data[0]);
				$("#aTags").html(tags[data[5]]+' '+tags[data[6]]);
				$("#aName").html(data[1]);
				$("#aName").attr('href','user.php?n='+data[1]);
				if (data[4]==1) $("#aAvatar").attr('src','/avatar/'+data[2]+'.jpg');
				else  $("#aAvatar").attr('src','/avatar/0.jpg');
				$("#aImage").attr('src','images/'+data[7]+'.jpg');
				$("#cboxTitle").html('Просмотров: '+data[3]);
				$.fn.colorbox.resize();
			}
	});
}

function GetRandom(type){
	$.getJSON("../php/getrandom.php?t="+type,
		function(data){
			if ((data!=1)){
				$("#aAffirmation").html(data[0]);
				$("#aTags").html(tags[data[5]]+' '+tags[data[6]]);
				$("#aName").html(data[1]);
				$("#aName").attr('href','user.php?n='+data[1]);
				if (data[4]==1) $("#aAvatar").attr('src','/avatar/'+data[2]+'.jpg');
				else  $("#aAvatar").attr('src','/avatar/0.jpg');
				$("#aImage").attr('src','images/'+data[7]+'.jpg');
				var t = 'Просмотров: '+data[3];
				$.fn.colorbox({inline:true,href:"#aWindow",scrolling:false,title:t});
			}
	});
}
