(function($) {

//SETTING UP OUR POPUP
//0 means disabled; 1 means enabled;
var popupStatus = 0;
var name_popup = '';

//loading popup with jQuery magic!
window.loadPopup = function(name) {
	//loads popup only if it is disabled

	if (name == undefined) name = '';
	if(name_popup == ''){
		$("#backgroundHeaderPopup").css({
			"opacity": "0.7"
		});
		$("#backgroundHeaderPopup").fadeIn("slow");
		$("#popup"+name+"").show("slow");

		
		$("#backgroundHeaderPopup").height($(document).height()>screen.availHeight? $(document).height() : screen.availHeight);
		
		name_popup = name;
	}
}

//disabling popup with jQuery magic!
window.disablePopup = function() {
	//disables popup only if it is enabled
	if(name_popup != ''){
		$("#backgroundHeaderPopup").fadeOut("slow");
		var name = name_popup;
		$("#popup"+name+"").fadeOut("slow");
		$('select').css('visibility', 'visible');

		name_popup = '';
	}
}

//centering popup
window.centerPopup = function(name) {	//request data for centering
	if (name == undefined) name = '';
	var windowWidth = document.documentElement.clientWidth;
	var offh = document.documentElement.scrollTop;
	var windowHeight = document.documentElement.clientHeight;
		var popupHeight = $("#popup"+name+"").height();
	var popupWidth = $("#popup"+name+"").width();
	//centering
	$("#popup"+name+"").css({
		"position": "absolute",
		"top": windowHeight/2-popupHeight/2 + offh,
		"left": windowWidth/2-popupWidth/2
	});
	
	var ieVersion = 0;
	var appVersion = navigator.appVersion;
	if (appVersion.indexOf("MSIE") != -1) {
		ieVersion = parseFloat(appVersion.split("MSIE")[1]);
	}
	if (ieVersion == 6) {
		this.setElementOpacity('backgroundHeaderPopup', 0.7);
		$('select').css('visibility', 'hidden');
	}
}

window.setElementOpacity = function(sElemId, nOpacity) {
	var opacityProp = this.getOpacityProperty();
	var elem = document.getElementById(sElemId);

	// Если не существует элемент с указанным id или браузер не поддерживает ни один из известных функции способов управления прозрачностью
	if (!elem || !opacityProp) return;
	
	// Internet Exploder 5.5+
	if (opacityProp=="filter") {
		$("#"+sElemId).css({
			"height": this.getDocumentHeight(),
			"width": document.documentElement.clientWidth
		});
	
		nOpacity *= 100;

		// Если уже установлена прозрачность, то меняем её через коллекцию filters, иначе добавляем прозрачность через style.filter
		var oAlpha = elem.filters['DXImageTransform.Microsoft.alpha'] || elem.filters.alpha;
		if (oAlpha)
			oAlpha.opacity = nOpacity
		else // Для того чтобы не затереть другие фильтры используем "+="
			elem.style.filter += "progid:DXImageTransform.Microsoft.Alpha(opacity="+nOpacity+")";
	} else { // Другие браузеры
		elem.style[opacityProp] = nOpacity;
	}
}

window.getOpacityProperty = function() {
	// CSS3 compliant (Moz 1.7+, Safari 1.2+, Opera 9)
	if (typeof document.body.style.opacity == 'string') {
		return 'opacity';
	} else // Mozilla 1.6 и младше, Firefox 0.8
	if (typeof document.body.style.MozOpacity == 'string') {
		return 'MozOpacity';
	} else // Konqueror 3.1, Safari 1.1
	if (typeof document.body.style.KhtmlOpacity == 'string') {
		return 'KhtmlOpacity';
	}  else // Internet Exploder 5.5+
	if (document.body.filters && navigator.appVersion.match(/MSIE ([\d.]+);/)[1]>=5.5) {
		return 'filter';
	}
	return false;
}

//Размер документа по вертикали
window.getDocumentHeight = function()
{
    return (document.body.scrollHeight > document.body.offsetHeight)?document.body.scrollHeight:document.body.offsetHeight;
}

//Размер документа по горизонтали
window.getDocumentWidth = function()
{
    return (document.body.scrollWidth > document.body.offsetWidth)?document.body.scrollWidth:document.body.offsetWidth;
}

//CONTROLLING EVENTS IN jQuery
$(document).ready(function() {
	//CLOSING POPUP
	//Click the x event!
	$(".popup a.close").click(function(){

		disablePopup();
	});
	//Click out event!
	$("#backgroundHeaderPopup").click(function(){
		disablePopup();
	});
	//Press Escape event!
	$(document).keypress(function(e){
		if(e.keyCode==27){
			disablePopup();
		}
	});

	$('.popup_close').click(function(){
		disablePopup();
	});

	isEmpty = function(str) {
		for (var i = 0; i < str.length; i++)
			if (" " != str.charAt(i))
				return false;
		return true;
	}
	
	checkForm = function(f) {
		var errMSG = "";
		// check all fields except condition
		for (var i = 0; i<f.elements.length; i++) {
			if (null!=f.elements[i].getAttribute("required")) {
				if (null!=f.elements[i].getAttribute("condition")) {
					continue;
				}
				if (isEmpty(f.elements[i].value)) {
					if (f.elements[i].name == 'phone') {
						errMSG = "Пожайлуста, введите свой телефон";
						alert(errMSG);
						return false;
					} else if (f.elements[i].name == 'name') {
						errMSG = "Пожайлуста, введите Ваше имя";
						alert(errMSG);
						return false;
					} else {
						errMSG += "  " + f.elements[i].name + "\n";
					}
				}
			}
		}
		if ("" == errMSG) {
			// check required condition fields
			var condition_elements = [];
			for (var i = 0; i<f.elements.length; i++) {
				if (null!=f.elements[i].getAttribute("required") && null!=f.elements[i].getAttribute("condition")) {
					if (isEmpty(f.elements[i].value)) {
						condition_elements.push(f.elements[i].name);
					}
				}
			}
			if (condition_elements.length > 1) {
				for (var i = 0; i < condition_elements.length; i++) {
					errMSG += '"'+condition_elements[i]+'"';
					if (i < condition_elements.length - 1) {
						errMSG += " либо ";
					}
				}
			}
		}
		if ("" != errMSG) {
			alert("Не заполнены обязательные поля:\n" + errMSG);
			return false;
		}
		return true;
	}

	$('#popupCallback form').submit(function(){
		if (checkForm(this)) {
			var address = $(this).attr('action');
			$.post(address, {
				name: $(this).find('.input_name').val(),
				phone: $(this).find('.input_phone').val()
			}, function(response){alert(response);});
			disableCallbackPopup();
		}
		return false;
	});
});
})(jQuery);
