var site = {};

site.openUploadForm = function(elem, part, pubid) {
	var form   = getParentByTagName(elem, 'form');
	var formId = form.id;

	if (!formId) {
		form.id = getRandomInt(0, 999999);
		formId = form.id;
	}

	var url = '/upload.mhtml?Part=' + part + '&PubID=' + pubid + '&name=' + elem.rel + '&form=' + formId;

	var width  = 300;
	var height = 120;

	var left = (screen.availWidth  - width)  / 2;
	var top  = (screen.availHeight - height) / 2;

	var wnd = window.open(url, 'upload', 'toolbar=no,scrollbars=no,directories=no,status=yes,menubar=no,resizable=yes,width='
	        + width + ',height=' + height +  ',left=' + left + ',top=' + top);

	return false;
};

site.setUploadedFileAndCloseForm = function(path, formId, name) {
	var openerDoc = window.opener.document;

	var frm = openerDoc.getElementById(formId);
	var field = frm.elements[name];
	field.value = path;

	var linkElem = $('A[rel="' + name + '"]', openerDoc).get(0);
	var linkTxtNode = linkElem.firstChild;
	linkTxtNode.nodeValue = 'загрузить другой';

	var dd = linkElem.parentNode;
	var ddFirstChild = dd.firstChild;

	if (ddFirstChild.nodeName == 'A') {
		var strong = openerDoc.createElement('strong');
		var preTxt = openerDoc.createTextNode('Файл загружен | ');
		strong.appendChild(preTxt);
		dd.insertBefore(strong, ddFirstChild);
	}

	window.close();
};

site.initLightbox = function() {
	$('A.lightbox').lightBox();
};

site.initShowHide = function() {
	$('DL.showhide > DT').live('click', function() {
		var jthis = $(this);
		jthis.children('SPAN').toggleClass('hide');
		jthis.next('DD').toggleClass('hidden');
	});

	$('DL.showhide').each(function() {
		var jthis = $(this);
		var span = $(document.createElement('span'));
		jthis.children('DT').prepend(span).addClass('inited').next('DD').addClass('inited');

		if (jthis.hasClass('show')) {
			var dt = jthis.children('DT');
			$('SPAN', dt).addClass('hide');
			dt.next().removeClass('hidden');
		}
		else {
			jthis.children('DD').addClass('hidden');
		}
	});
};

site.initExternalLinks = function() {
	$('A[rel="external"]').live('click', function() {
		this.target = '_blank';
	});
};

site.initDoubledNav = function() {
	var bot = $('#bot');
	var nav = $(document.createElement('div')).addClass('nav').prependTo(bot);
	var hr = $(document.createElement('hr'));

	var botserv = $('#serv').clone();
	botserv.attr('id', 'bot-serv');

	var botmnu = $('#mnu').clone();
	$('LI:first-child', botmnu).remove();
	botmnu.attr('id', 'bot-mnu');

	nav.append(botserv).append(hr.clone()).append(botmnu).append(hr.clone());

	var bothotline = $('#hotline').clone().attr('id', 'bot-hotline');

	$('.txt', bot).append(hr).append(bothotline);
};

site.initSearch = function() {
	var text  = $('#search LEGEND').text().toLowerCase();
	var input = $('#frm-search-text');

	input.val(text)
		.focus(function() {
			if (input.val() === text) {
				input.val('');
			}
		}).blur(function() {
			if (!input.val()) {
				input.val(text);
			}
		});
};

site.initMap = function(d1,d2,d3) {
	var mapEl = document.getElementById('map');

	if (!mapEl) {
		return;
	}

	$(mapEl).addClass('inited');

	var center = new google.maps.LatLng(d1,d2);

	var options = {
		zoom: d3,
		center: center,
		mapTypeId: google.maps.MapTypeId.ROADMAP
	}

	site.map = new google.maps.Map(mapEl, options);
};

site.addMarker = function(data) {
	var map = site.map;

	if (data.content) {
		var contentEl = data.content;
		$(contentEl).addClass('map-balloon');
		var title = '';
	}
	else {
		var contentEl = document.createElement('dl');
		$(contentEl).addClass('map-balloon');
		$('#content-d').append(contentEl);

		contentEl.innerHTML = '<dt>' + data.title + '</dt>'
			+ '<dd>' + data.text + '</dd>';

		var title = data.title;
	}

	var infowindow = new google.maps.InfoWindow({
		content: contentEl
	});

	jContentEl = $(contentEl);

	var mapHeight = $('#map').outerHeight();
	var maxWndHeight = mapHeight - 182;

	var contentElHeight = jContentEl.outerHeight(true);

	if (maxWndHeight < contentElHeight) {
		contentElHeight = maxWndHeight;
		jContentEl.addClass('map-balloon-scrollable');
	}
	else {
		contentElHeight += 15;
	}

	jContentEl.css('height', contentElHeight);

	var marker = new google.maps.Marker({
		position: new google.maps.LatLng(data.lat, data.lng),
		map: site.map,
		title: title
	});

	google.maps.event.addListener(marker, 'click', function() {
		infowindow.open(map, marker);
	});
};

site.initDomMarkers = function() {
	$('.points > DL').each(function() {
		site.addMarker({
			'content' : this,
			'lat' : $(this).attr('data-lat'),
			'lng' : $(this).attr('data-lng')
		});
	});

	$('.points').addClass('points-inited');
};

$(document).ready(function() {
	site.initExternalLinks();
	site.initLightbox();
	site.initShowHide();
	site.initDoubledNav();
	site.initSearch();
});


