YAHOO.namespace('dmd.util');

YAHOO.dmd.util.feedbackPanel = null;

YAHOO.util.Event.onDOMReady(function() {
    if (YAHOO.util.Dom.get("feedback-link")) {

        YAHOO.util.Dom.getElementsBy(function() {return true;}, 'body', null, function(el) {
                var panelContainer = document.createElement('div');
                YAHOO.util.Dom.addClass(panelContainer, "hidden");
                panelContainer.setAttribute("id", "panel-feedback");

                var panelHeader = document.createElement('div');
                YAHOO.util.Dom.addClass(panelHeader, "hd");
                var panelBody = document.createElement('div');
                YAHOO.util.Dom.addClass(panelBody, "bd");

                panelContainer.appendChild(panelHeader);
                panelContainer.appendChild(panelBody);
                YAHOO.util.Dom.insertAfter(panelContainer, YAHOO.util.Dom.getLastChild(el));

                YAHOO.dmd.util.feedbackPanel = new YAHOO.widget.Panel("panel-feedback", {width: "600px", fixedcenter: false, center: true, close:true, visible: false, draggable:false, modal: true} );
                YAHOO.dmd.util.feedbackPanel.setHeader('Обратная связь');


                var cont = document.createElement("div");
                cont.setAttribute("id", "feedback-panel-main");
                var pDescription = document.createElement("p");
                pDescriptionText = document.createTextNode("Отправить вопрос по работе и функционированию сайта. Опишите, пожалуйста, возникшую проблему подробнее для более оперативного её решения. Если вопрос касается конкретного объявления, включите в текст обращения ссылку на объявление.");
                pDescription.appendChild(pDescriptionText);
                cont.appendChild(pDescription);

                var form = document.createElement("form");
                form.setAttribute("id", "feedback-form");

                var nameTitle = document.createElement("h3");
                YAHOO.util.Dom.setStyle(nameTitle, "margin", "1em 0 0.2em 0");
                YAHOO.util.Dom.setStyle(nameTitle, "font-size", "120%");
                nameTitle.appendChild(document.createTextNode("Ваше имя"));
                form.appendChild(nameTitle);
                var nameInput = document.createElement("input");
                nameInput.setAttribute("type", "text");
                nameInput.setAttribute("name", "name");
                nameInput.setAttribute("id", "input-feedback-name");
                YAHOO.util.Dom.setStyle(nameInput, "width", "30em");
                YAHOO.util.Dom.setStyle(nameInput, "font-size", "120%");
                form.appendChild(nameInput);

                var emailTitle = document.createElement("h3");
                YAHOO.util.Dom.setStyle(emailTitle, "margin", "1em 0 0.2em 0");
                YAHOO.util.Dom.setStyle(emailTitle, "font-size", "120%");
                emailTitle.appendChild(document.createTextNode("Контактный email"));
                form.appendChild(emailTitle);
                var emailInput = document.createElement("input");
                emailInput.setAttribute("type", "text");
                emailInput.setAttribute("name", "email");
                emailInput.setAttribute("id", "input-feedback-email");
                YAHOO.util.Dom.setStyle(emailInput, "width", "30em");
                YAHOO.util.Dom.setStyle(emailInput, "font-size", "120%");
                form.appendChild(emailInput);

                var textTitle = document.createElement("h3");
                YAHOO.util.Dom.setStyle(textTitle, "margin", "1em 0 0.2em 0");
                YAHOO.util.Dom.setStyle(textTitle, "font-size", "120%");
                textTitle.appendChild(document.createTextNode("Текст сообщения"));
                form.appendChild(textTitle);
                var textTextarea = document.createElement("textarea");
                textTextarea.setAttribute("name", "text");
                textTextarea.setAttribute("id", "textarea-feedback-text");
                YAHOO.util.Dom.setStyle(textTextarea, "width", "30em");
                YAHOO.util.Dom.setStyle(textTextarea, "height", "10em");
                YAHOO.util.Dom.setStyle(textTextarea, "font-size", "120%");
                form.appendChild(textTextarea);

                var codeTitle = document.createElement("h3");
                YAHOO.util.Dom.setStyle(codeTitle, "margin", "1em 0 0.2em 0");
                YAHOO.util.Dom.setStyle(codeTitle, "font-size", "120%");
                codeTitle.appendChild(document.createTextNode("Код подтверждения"));
                form.appendChild(codeTitle);
                var codeBlock = document.createElement("div");
                YAHOO.util.Dom.setStyle(codeBlock, "margin-bottom", "0.2em");
                var codeImg = document.createElement("img");
                codeImg.setAttribute("src", "/captcha.png?type=feedback&ts"+Math.random()*1000);
                codeImg.setAttribute("title", "обновить код");
                codeImg.setAttribute("id", "image-feedback");
                YAHOO.util.Dom.setStyle(codeImg, "cursor", "pointer");
                YAHOO.util.Event.addListener(codeImg, "click", function(e) {
                    YAHOO.util.Event.getTarget(e, true).src="/captcha.png?type=feedback&ts"+Math.random()*1000;
                    YAHOO.util.Dom.get("input-feedback-code").value = "";
                });
                codeBlock.appendChild(codeImg);
                form.appendChild(codeBlock);
                var codeInput = document.createElement("input");
                codeInput.setAttribute("type", "text");
                codeInput.setAttribute("name", "code");
                codeInput.setAttribute("maxlength", "5");
                codeInput.setAttribute("id", "input-feedback-code");
                YAHOO.util.Dom.setStyle(codeInput, "width", "5em");
                YAHOO.util.Dom.setStyle(codeInput, "font-size", "120%");
                form.appendChild(codeInput);

                var submitBlock = document.createElement("div");
                YAHOO.util.Dom.setStyle(submitBlock, "margin", "1em 0 0.2em 0");
                var submitInput = document.createElement("input");
                submitInput.setAttribute("type", "button");
                submitInput.setAttribute("value", "отправить");
                YAHOO.util.Event.addListener(submitInput, "click", function(e) {
                    var error = "";
                    if (YAHOO.util.Dom.get("input-feedback-name").value == "") {
                        error += "-\tне указано имя;\n";
                    }
                    if (YAHOO.util.Dom.get("input-feedback-email").value == "") {
                        error += "-\tне указан email;\n";
                    }
                    if (YAHOO.util.Dom.get("textarea-feedback-text").value == "") {
                        error += "-\tне указан текст сообщения;\n";
                    }
                    if (YAHOO.util.Dom.get("input-feedback-code").value == "") {
                        error += "-\tне указан код подтверждения;\n";
                    }
                    if (error) {
                        alert("Ошибка:\n\n"+error+"\nЗаполните недостающие поля и отправьте еще раз");
                    } else {
                        YAHOO.util.Dom.addClass("feedback-panel-main", "hidden");
                        YAHOO.util.Dom.removeClass("feedback-panel-loading", "hidden");
                        YAHOO.util.Dom.getElementsByClassName('container-close', 'span', 'panel-feedback', function(o) {YAHOO.util.Dom.addClass(o, 'hidden');});
                        var url = '/xmlservice/feedback.php',
                            cb = {
                                success: function(o) {
                                    try {
                                        response = YAHOO.lang.JSON.parse(o.responseText);
                                    } catch(e) {response = false;}
                                    if (response === false) {
                                        YAHOO.util.Dom.removeClass("feedback-panel-main", "hidden");
                                        YAHOO.util.Dom.addClass("feedback-panel-loading", "hidden");
                                        YAHOO.util.Dom.getElementsByClassName('container-close', 'span', 'panel-feedback', function(o) {YAHOO.util.Dom.removeClass(o, 'hidden');});
                                        alert('Ошибка отправки запроса.\n\nПопробуйте еще раз через некоторое время.');
                                    } else if (response.error) {
                                        YAHOO.util.Dom.removeClass("feedback-panel-main", "hidden");
                                        YAHOO.util.Dom.addClass("feedback-panel-loading", "hidden");
                                        YAHOO.util.Dom.getElementsByClassName('container-close', 'span', 'panel-feedback', function(o) {YAHOO.util.Dom.removeClass(o, 'hidden');});
                                        alert("Ошибка:\n\n"+response.error+"\n\nПопробуйте еще раз через некоторое время.");
                                    } else {
                                        alert("Ваше сообщение отправлено и в ближайшее время будет рассмотрено.\n\nСпасибо!");
                                        YAHOO.dmd.util.feedbackPanel.hide();
                                    }
                                },
                                failure: function(o) {
                                    YAHOO.util.Dom.removeClass("feedback-panel-main", "hidden");
                                    YAHOO.util.Dom.addClass("feedback-panel-loading", "hidden");
                                    YAHOO.util.Dom.getElementsByClassName('container-close', 'span', 'panel-feedback', function(o) {YAHOO.util.Dom.removeClass(o, 'hidden');});
                                    alert('Ошибка.\n\nПопробуйте еще раз через некоторое время.');
                                },
                                timeout: 10000,
                                cache: false
                            }
                        YAHOO.util.Connect.setForm("feedback-form");
                        YAHOO.util.Connect.asyncRequest('POST', url, cb);
                    }
                });
                YAHOO.util.Dom.setStyle(submitInput, "padding", "0.3em 0.6em");
                YAHOO.util.Dom.setStyle(submitInput, "font-size", "120%");
                submitBlock.appendChild(submitInput);
                form.appendChild(submitBlock);

                cont.appendChild(form);
                ///

                var loadingCont = document.createElement("div");
                loadingCont.setAttribute("id", "feedback-panel-loading");
                YAHOO.util.Dom.addClass(loadingCont, "hidden");
                YAHOO.util.Dom.setStyle(loadingCont, "text-align", "center");
                YAHOO.util.Dom.setStyle(loadingCont, "margin", "10em 4em");

                var loadingImage = document.createElement("img");
                loadingImage.setAttribute("src", "/i/loading-big.gif");
                YAHOO.util.Dom.setStyle(loadingImage, "margin-bottom", "1em");

                var loadingP = document.createElement("p");
                YAHOO.util.Dom.setStyle(loadingP, "font-style", "italic");
                loadingP.appendChild(document.createTextNode("производится отправка запроса, пожалуйста подождите..."));

                loadingCont.appendChild(loadingImage);
                loadingCont.appendChild(loadingP);

                var globalContainer = document.createElement("div");
                globalContainer.appendChild(cont);
                globalContainer.appendChild(loadingCont);

                YAHOO.dmd.util.feedbackPanel.setBody(globalContainer);
                YAHOO.dmd.util.feedbackPanel.render();

                YAHOO.dmd.util.feedbackPanel.showEvent.subscribe(function() {
                    YAHOO.util.Dom.removeClass("panel-feedback", "hidden");
                    YAHOO.dmd.util.feedbackPanel.center();
                    YAHOO.util.Dom.getElementsBy(function() {return true;}, 'object', 'container', function(o) {o.style.visibility='hidden';});
                    YAHOO.util.Dom.getElementsBy(function() {return true;}, 'embed', 'container', function(o) {o.style.visibility='hidden';});
                    YAHOO.util.Dom.getElementsBy(function() {return true;}, 'iframe', 'container', function(o) {o.style.visibility='hidden';});
                }, YAHOO.dmd.util.feedbackPanel, true);
                YAHOO.dmd.util.feedbackPanel.hideEvent.subscribe(function() {
                    YAHOO.util.Dom.getElementsBy(function() {return true;}, 'object', 'container', function(o) {o.style.visibility='visible';});
                    YAHOO.util.Dom.getElementsBy(function() {return true;}, 'embed', 'container', function(o) {o.style.visibility='visible';});
                    YAHOO.util.Dom.getElementsBy(function() {return true;}, 'iframe', 'container', function(o) {o.style.visibility='visible';});
                    YAHOO.util.Dom.get("input-feedback-name").value = "";
                    YAHOO.util.Dom.get("input-feedback-email").value = "";
                    YAHOO.util.Dom.get("textarea-feedback-text").value = "";
                    YAHOO.util.Dom.get("input-feedback-code").value = "";
                    YAHOO.util.Dom.get("image-feedback").src = "/captcha.png?type=feedback&ts"+Math.random()*1000;
                    YAHOO.util.Dom.removeClass("feedback-panel-main", "hidden");
                    YAHOO.util.Dom.addClass("feedback-panel-loading", "hidden");
                }, YAHOO.dmd.util.feedbackPanel, true);
        });

        YAHOO.util.Event.addListener('feedback-link', "click", function(e) { YAHOO.dmd.util.feedbackPanel.show(); });
    }
});

YAHOO.dmd.util.requestError = function (o)
{
	YAHOO.dmd.util.hideLoadingPanel();
	if (o.status == 404)
	{
		YAHOO.dmd.util.showError('Документ не найден.');
	}
	else if (o.status == 403)
	{
		YAHOO.dmd.util.showError('Нет доступа.');
	}
	else if (o.status == 500)
	{
		YAHOO.dmd.util.showError('Сбой сервера.');
	}
	else
	{
		YAHOO.dmd.util.showError(o.statusText);
	}
}

YAHOO.dmd.util.showError = function(message)
{
	alert("Ошибка!\n"+message);
}

YAHOO.dmd.util.showLoadingPanel = function()
{
	var panel = YAHOO.util.Dom.get('panel-loading');
	if( !panel )
	{
		panel = document.createElement('div');
		panel.id = 'panel-loading';
		var panel1 = document.createElement('div')
			t = document.createElement('table'),
			tb = document.createElement('tbody'),
			tr = document.createElement('tr'),
			td1 = document.createElement('td'),
			td2 = document.createElement('td'),
			img = document.createElement('img');
		img.src = '/i/loading.gif';
		td1.appendChild(img);
		td1.style.textAlign = 'center';
		td2.innerHTML = '5 сек&hellip;';
		tr.appendChild(td1);
		tr.appendChild(td2);
		tb.appendChild(tr);
		t.appendChild(tb);
		panel1.appendChild(t);
		panel.appendChild(panel1);
		document.body.insertBefore(panel, document.body.firstChild);
	}
	panel.style.display = '';
}


YAHOO.dmd.util.hideLoadingPanel = function()
{
	var panel = YAHOO.util.Dom.get('panel-loading');
	if( panel ) panel.style.display = 'none';
}

YAHOO.dmd.util.showModalLoadingPanel = function()
{
	if (!YAHOO.util.modalLoadingPanel) {
		if( !YAHOO.util.Dom.get('modal-panel-loading'))
		{
			panel = document.createElement('div');
			panel.id = 'modal-panel-loading';
			var panel1 = document.createElement('div')
				t = document.createElement('table'),
				tb = document.createElement('tbody'),
				tr = document.createElement('tr'),
				td1 = document.createElement('td'),
				img = document.createElement('img');
			img.src = '/i/loading-big.gif';
			td1.appendChild(img);
			td1.style.textAlign = 'center';
			tr.appendChild(td1);
			tb.appendChild(tr);
			t.appendChild(tb);
			panel1.appendChild(t);
			panel.appendChild(panel1);
			document.body.insertBefore(panel, document.body.firstChild);
		}
		
		YAHOO.util.modalLoadingPanel = new YAHOO.widget.Panel("modal-panel-loading", {width: "300px", fixedcenter: true, close:false, visible: false, draggable:false, modal: true} );
	}
	
	YAHOO.util.modalLoadingPanel.show();
}

YAHOO.dmd.util.hideModalLoadingPanel = function()
{
	if (YAHOO.util.modalLoadingPanel) {
		YAHOO.util.modalLoadingPanel.hide();
	}
}
