$(document).ready(f_docready);

function f_docready() {
	$(".hList").each(function (a, b) {
		new clsViewer(b);
	});
}

function clsViewer(tab) {
	var _class = this;
	this.tab     = tab;
	this.jtab    = $(tab);
	this.name    = this.jtab.parent().attr("id");
	this.first   = 0;
	this.last    = 0;
	this.current = 0;
	this.max     = 0;
	this.show    = 3;
	this.hScr    = this.jtab.find(".hScroll");
	this.hSel    = this.jtab.find(".sel");
	this.hItems  = this.jtab.find(".item");
	this.hPager  = this.jtab.find(".hPager");
	this.hArrP   = this.jtab.find(".arrowprev");
	this.hLitP   = this.hPager.find(".litprev");
	this.hPos    = this.hPager.find(".pos");
	this.hArrN   = this.jtab.find(".arrownext");
	this.hLitN   = this.hPager.find(".litnext");
	this.hFicha  = this.jtab.find(".hFicha");
	this.btns    = clsViewerBtns;
	this.refresh = clsViewerRefresh;
	this.arrpreva = false; this.arrprevmo = false;
	this.arrnexta = false; this.arrnextmo = false;
	this.litpreva = false; this.litprevmo = false;
	this.litnexta = false; this.litnextmo = false;
	this.setArrowPrev = f_setArrowPrev;
	this.setArrowNext = f_setArrowNext;
	this.setLitPrev   = f_setLitPrev;
	this.setLitNext   = f_setLitNext;
	this.hScr.ready(function () { _class.hScr.css("display", "block") });

	this.hItems.each(function (iter) {
		var jthis = $(this);
		jthis.attr("pos", jthis.attr("class").substr(7));
		jthis.attr("pos", iter).css({
			position: "absolute",
			left: 230*iter
		}).click(function () {
			_class.current = parseInt($(this).attr("pos"));
			_class.refresh();
			return false;
		});
		_class.max++;
	});
	this.last = this.show * parseInt((this.max-1)/this.show);
	fprev = function() {
		if(!_class.arrpreva) return false;
		_class.first   -= _class.show;
		_class.current -= _class.show;
		_class.refresh();
		return false;
	}
	fnext = function() {
		if(!_class.arrnexta) return false;
		_class.first   += _class.show;
		_class.current  = Math.min(_class.current+_class.show, _class.max-1);
		_class.refresh();
		return false;
	}
	this.hArrP.click(fprev).hover(function () { _class.arrprevmo = true; _class.btns(); }, function () { _class.arrprevmo = false; _class.btns(); });
	this.hArrN.click(fnext).hover(function () { _class.arrnextmo = true; _class.btns(); }, function () { _class.arrnextmo = false; _class.btns(); });
	this.hLitP.click(fprev).hover(function () { _class.litprevmo = true; _class.btns(); }, function () { _class.litprevmo = false; _class.btns(); });
	this.hLitN.click(fnext).hover(function () { _class.litnextmo = true; _class.btns(); }, function () { _class.litnextmo = false; _class.btns(); });

	this.refresh();
}

function clsViewerBtns() {
	this.setArrowPrev(this.arrpreva ? (this.arrprevmo ? 3 : 2) : 1);
	this.setArrowNext(this.arrnexta ? (this.arrnextmo ? 3 : 2) : 1);	
	this.setLitPrev  (this.litpreva ? (this.litprevmo ? 3 : 2) : 1);
	this.setLitNext  (this.litnexta ? (this.litnextmo ? 3 : 2) : 1);
}

function f_setArrowPrev(sts) {
	this.hArrP.removeClass("arrowprev1").removeClass("arrowprev2").removeClass("arrowprev3").addClass("arrowprev"+sts);
}
function f_setArrowNext(sts) {
	this.hArrN.removeClass("arrownext1").removeClass("arrownext2").removeClass("arrownext3").addClass("arrownext"+sts);
}
function f_setLitPrev(sts) {
	this.hLitP.removeClass("litprev1").removeClass("litprev2").removeClass("litprev3").addClass("litprev"+sts);
}
function f_setLitNext(sts) {
	this.hLitN.removeClass("litnext1").removeClass("litnext2").removeClass("litnext3").addClass("litnext"+sts);
}

function clsViewerRefresh() {
	var sPos = " | <strong>"+(this.current+1)+"</strong> / "+this.max+" | ";
	var nMax = Math.min(this.max, this.first+this.show);
	this.hPos.html(sPos);
	this.arrpreva = (this.first!=0        );
	this.arrnexta = (this.first!=this.last);
	this.litpreva = (this.first!=0        );
	this.litnexta = (this.first!=this.last);
	this.hLitP.html(sLitAnt);
	this.hLitN.html(this.litnexta ? sLitMas : sLitSig);
	this.btns();
	
	var nDes = this.current % this.show;
	this.hSel.animate({ left: 60+(230*nDes)       }, "slow");
	this.hScr.animate({ left:  0-(230*this.first) }, "slow");
	
	var cls = this.hScr.find(".item:eq("+this.current+")").attr("class");
	if(cls!=null) {
		var id = cls.substr(7);
		var nc = (new Date()).getTime();
	//	prompt("", sURL + id + "&nc=" + nc);
		var me = this;
		if(typeof(gmap)!="undefined") GUnload();
		this.hFicha.load(sURL + id + "&nc=" + nc, function (data) { 
			if(typeof(lbListeners)!="undefined") lbListeners();
			if(typeof(msClick)    !="undefined") msClick();
//			f_streetview();
			$("#gsv,#gmap").css({ display: "none" });
		});
	}
}

// var gmap, gll, gmrk;
// var gsv = new GStreetviewClient();
	
function f_streetview() {
	var lat = $("#lat").css({ display: "none" }).html();
	var lon = $("#lon").css({ display: "none" }).html();
	

	var div2 = document.getElementById("gsv");
	var div1 = document.getElementById("gmap");
	var gico = new GIcon();
	gico.image      = sIcon;
	gico.iconSize   = new GSize(34, 35);
	gico.iconAnchor = new GPoint(17, 16);
	gmap = new GMap2(div1);
	gll = new GLatLng(lat, lon);
	gmap.setCenter(gll, 15);
	gmap.addControl(new GLargeMapControl());
	gmap.addControl(new GMapTypeControl());
	gmrk = new GMarker(gll, gico);
	gmap.addOverlay(gmrk);
	
	gsv.getNearestPanorama(gll, function (gsvd) {
		if(gsvd!=null) {
			if(gsvd.code==200) {
				$("#gmap").height(225);
				var gsvp = new GStreetviewPanorama(div2, {
					latlng: gsvd.location.latlng,
					pov: gsvd.location.pov
				});
			} else {
				$("#gsv").css({ display: "none" });
			}
		} else {
			$("#gsv").css({ display: "none" });
		}
	});
}
