﻿var escapeFeedbackChars = ['\\', '"'];

function oSendFeedback(captcha) {
    this.Data = { Captch: captcha };
    this.CaptchElm = "#FeedBackCaptcha";
    this.Elm = "#feedbackModule";
    instSendFeedback = this;
    this.GetImageCaptcha = oCommentsItem.prototype.GetImageCaptcha;

    this.Show = function() {
        $(this.Elm).show();
    }
    
    this.Hide = function() {
        $(this.Elm).hide();
        $("#feedbackMessage").val("");
        oCommentsItem.prototype.RemoveCaptcha();
    }
    // feedback("обратная связь")
    this.checkAndSendFeedback = function(rblFeedbackType) {
        var success = true;
        var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
        this.Data.email = $("#feedbackEmail").val();
        this.Data.name = $("#feedbackName").val();
        this.Data.message = $("#feedbackMessage").val();
        this.Data.feedbackType = $("input[type='radio'][name='" + rblFeedbackType + "']:checked").val();
        this.Data.listingId = getListingId();
        if (this.Data.email == "") {
            alert('Заполните поле "Email"');
            success = false;
        }
        else if (!reg.test(this.Data.email)) {
            success = false
            alert('Поле "Email" должно иметь соответствующий формат');
        }
        else if (this.Data.name == "" || containWrongSymbols(this.Data.name)) {
            alert('Заполните поле "Ваше имя"' + getWrongCharsMsg());
            success = false;
        }
        else if (this.Data.message == "") {
            alert('Введите сообщение');
            success = false;
        }

        if (success) {
            this.Data.message = this.Data.message.replace(/\"/g, "''").replace(/\\/g, "/");
            this.Data.Captch.ImageNumber = $(this.Elm + ' input[name="Captch.ImageNumber"]').val();
            this.Data.Captch.ImageCapture = "введите число на картинке.";
            this.Data.Captch.ScriptObj = "instSendFeedback";
            this.sendFeedback();
        }
    }

    this.sendFeedback = function () {
        $.ajax({
            type: "POST",
            url: "/WebServices/Notification.asmx/SendFeedback",
            contentType: "application/json; charset=utf-8",
            data: $.toJSON(this.Data),
            dataType: "json",
            success: onSendFeedbackSuccess,
            error: onSendFeedbackError
        });
    }

    function onSendFeedbackSuccess(dataObj) {
        var data = dataObj.d;
        if (data.IsSuccess) {
            alert(data.OutMessage);
            instSendFeedback.Hide();
        }
        else {
            if (data.Param && data.Param > ' ') {
                instSendFeedback.CaptchUrl = data.Param;
                instSendFeedback.GetImageCaptcha();
            }
            if (data.OutMessage && data.OutMessage > ' ')
                alert(data.OutMessage);
        }
    }

    function onSendFeedbackError(XMLHttpRequest, textStatus, errorThrown) {
        alert("При запросе или во время возвращения данных произошел сбой\n" + XMLHttpRequest.responseText);
    }
}




function oSendListingError(listingId, captcha) {
    this.Data = { listingId: listingId, Captch: captcha };
    this.CaptchElm = "#ListingErrorCaptcha";
    this.Elm = "#reportProblemDialog";
    instSendListingError = this;
    this.GetImageCaptcha = oCommentsItem.prototype.GetImageCaptcha;

    this.Show = function() {
        $(this.Elm).show();
    }

    this.Hide = function() {
        $(this.Elm).hide();
        $("#messageListingError").val("");
        oCommentsItem.prototype.RemoveCaptcha();
    }
    // ListingError("Сообщить об ошибке - в обьявлении")
    this.checkAndSendListingError = function() {
        var success = true;
        var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
        this.Data.email = $("#emailListingError").val();
        this.Data.name = $("#nameListingError").val();
        this.Data.listingErrorType = $("#ddlListingErrorType option:selected").val();
        this.Data.message = $("#messageListingError").val();
        if (this.Data.name == "" || containWrongSymbols(this.Data.name)) {
            alert('Заполните поле "Ваше имя"' + getWrongCharsMsg());
            success = false;
        }
        else if (this.Data.message == "") {
            alert('Опишите проблему');
            success = false;
        }
        else if (this.Data.email == "") {
            alert('Заполните поле "Email"');
            success = false;
        }
        else if (!reg.test(this.Data.email)) {
            success = false;
            alert('Поле "Email" должно иметь соответствующий формат');
        }

        if (success) {
            this.Data.message = this.Data.message.replace(/\"/g, "''").replace(/\\/g, "/");
            this.Data.Captch.ImageNumber = $(this.Elm+' input[name="Captch.ImageNumber"]').val();
            this.Data.Captch.ScriptObj = "instSendListingError";
            this.Data.Captch.ImageCapture = "";
            this.sendListingError();
        }
    }
    this.sendListingError = function() {
        $.ajax({
            type: "POST",
            url: "../../../WebServices/Notification.asmx/ListingError",
            contentType: "application/json; charset=utf-8",
            data: $.toJSON(this.Data),
            dataType: "json",
            success: sendListingErrorSuccess,
            error: sendsendListingErrorError
        });
    }
    function sendListingErrorSuccess(dataObj) {
        var data = dataObj.d;
        if (data.IsSuccess) {
            alert(data.OutMessage);
            instSendListingError.Hide();
        }
        else {
            if (data.Param && data.Param > ' ') {
                instSendListingError.CaptchUrl = data.Param;
                instSendListingError.GetImageCaptcha();
            }
            if (data.OutMessage && data.OutMessage > ' ')
                alert(data.OutMessage);
        }
    }

    function sendsendListingErrorError(XMLHttpRequest, textStatus, errorThrown) {
        alert("При запросе или во время возвращения данных произошел сбой\n" + XMLHttpRequest.responseText);
    }

}
// begin tenantAsk

var oAskTenant = function(listingId, url) {
    if (listingId)
        this.listingIds = listingId;
    this.Data = { listingId: this.listingIds || 0 };
    this.CaptchElm = "#ListingAskTenant";
    this.GetImageCaptcha = oCommentsItem.prototype.GetImageCaptcha;

    this.Elm = '#asktenantDialog';
    this.FormUrl = url;
    this.Show = function(lUrl) {
        $(this.Elm).remove();
        $.ajax({
            type: 'POST',
            url: lUrl ? lUrl : this.FormUrl,
            data: '',
            dataType: 'html',
            success: function(data) {
                $("body").append(data);
                validationRules.Prepare();
            }
        })
    };
    this.Hide = function() {
        $(this.Elm).remove();
    };
    this.checkAndSendAskTenant = function() {
        var mails = "";
        validationRules.beginErrGroup();
        $("#nameAskTenant,#emailAskTenant").change();
        if (validationRules.endErrGroup())
            return;
        $("[name=chkAskTenantEmail]").each(function(i, e) {
            if (e.checked)
                mails += (mails == "" ? "" : ";") + e.value;
        })
        if (mails == "") {
            alert("Выберете адрес для отправления сообщения!");
            return;
        }
        this.Data.mails = mails;
        this.Data.message = $("#messageAskTenant").val();
        if (this.Data.message == "") {
            alert('Наберите текст сообщения!');
            return;
        }
        this.Data.email = $("#emailAskTenant").val();
        this.Data.name = $("#nameAskTenant").val();
        this.Data.phone = $("#phoneAskTenant").val();
        this.Data.askTenantType = $("#ddlAskTenantType").val();

        this.Data.Captch.ImageNumber = $(this.Elm + ' input[name="Captch.ImageNumber"]').val();
        this.Data.Captch.ImageCapture = "";
        this.Data.Captch.NumberSize = "70px"
        this.Data.Captch.ScriptObj = "instAskTenant";
        this.Data.message = this.Data.message.replace(/\"/g, "''").replace(/\\/g, "/");
        var msg = this.Data.message;
        $.ajax({
            type: "POST",
            url: "../../../WebServices/Notification.asmx/AskTenant",
            contentType: "application/json; charset=utf-8",
            data: $.toJSON(this.Data),
            dataType: "json",
            success: function(dataObj) {
                var data = dataObj.d;
                if (data.IsSuccess) {
                    alert(data.OutMessage);
                    if (notes != null) {
                        notes.AskTenantAdd(msg);
                    }
                    instAskTenant.Hide();
                }
                else {
                    if (data.Param && data.Param > ' ') {
                        instAskTenant.CaptchUrl = data.Param;
                        instAskTenant.GetImageCaptcha();
                    }
                    if (data.OutMessage && data.OutMessage > ' ')
                        alert(data.OutMessage);
                }
            }
        });
    }
};


// end tenantAsk

// begin BookInComplex

var oBookInComplex = function(developerId, complexId, url, complexName) {
    this.Data = { complexId: complexId, developerId: developerId, complexName: complexName };
    this.CaptchElm = "#BookInComplexCaptute";
    this.GetImageCaptcha = oCommentsItem.prototype.GetImageCaptcha;
    instBookInComplex = this;

    this.Elm = '#asktenantDialog';
    this.FormUrl = url;
    this.Show = function() {
        $(this.Elm).remove();
        $.ajax({
            type: 'POST',
            url: this.FormUrl,
            dataType: 'html',
            success: function(data) {
                $("body").append(data);
                validationRules.Prepare();
            }
        })
    };
    this.Hide = function() {
        $(this.Elm).remove();
    };
    this.checkAndBookInComplex = function() {
        validationRules.beginErrGroup();
        $(this.Elm + " [id^=BookIn_]").change();
        if (validationRules.endErrGroup())
            return;
        var o = this.Data;
        $(this.Elm + " [id^=BookIn_]").each(function(i, e) { o[e.id.replace("BookIn_", "")] = $(e).val(); });
        this.Data.Captch.ImageNumber = $(this.Elm + ' input[name="Captch.ImageNumber"]').val();
        this.Data.Captch.ImageCapture = "повторите код";
        this.Data.Captch.NumberSize = "70px"
        this.Data.Captch.ScriptObj = "instBookInComplex";
        this.Data.message = this.Data.message.replace(/\"/g, "''").replace(/\\/g, "/");
        $.ajax({
            type: "POST",
            url: "/WebServices/Notification.asmx/BookInComplex",
            contentType: "application/json; charset=utf-8",
            data: $.toJSON(this.Data),
            dataType: "json",
            success: function(dataObj) {
                var data = dataObj.d;
                if (data.IsSuccess) {
                    alert(data.OutMessage);
                    instBookInComplex.Hide();
                }
                else {
                    if (data.Param && data.Param > ' ') {
                        instBookInComplex.CaptchUrl = data.Param;
                        instBookInComplex.GetImageCaptcha();
                    }
                    if (data.OutMessage && data.OutMessage > ' ')
                        alert(data.OutMessage);
                }
            }
        });
    }
};


// end tenantAsk  
$(document).ready(function() { $("[name=\"contactInfo\"]").click(ContactInfoClick); })
function ContactInfoClick() {
    var email = $("#feedbackEmail").val();
    $("[name=\"contactInfo\"]").unbind("click", ContactInfoClick);
    $.ajax({
        type: "POST",
        url: "/WebServices/Notification.asmx/ContactInfoClick",
        contentType: "application/json; charset=utf-8",
        data: '{"email":"' + (email ? email:"") + '",' +
				'"listingId":"' + getListingId() + '"}',
        dataType: "json",
        success: null,
        error: null
    });
}

function containWrongSymbols(text) {
	for (var i = 0; i < escapeFeedbackChars.length; i++)
		if (text.indexOf(escapeFeedbackChars[i]) > -1)
			return true;
		return false;
	}

function getWrongCharsMsg() {
	var theChars = "";
	for(var i = 0;i < escapeFeedbackChars.length; i++)
		theChars=theChars+escapeFeedbackChars[i]
		+(escapeFeedbackChars.length-1!=i?" , ":"");
	return ". Также поле не должно содержать символы: " + theChars;
}

function getListingId() {
    var listingId = 0;
    var str = $("#bListingId").html();
    if (str && str > " ")
        listingId = parseInt(str);
    return listingId;
}

new (function() {
    this.listingIds = [];
    sendToFriend = this;
    this.Data = {};
    this.CaptchElm = "#captchaSendToFriend";

    this.Elm = "#sendtofriendDialog";

    this.windowResize = function() {
        var oWait = $("#sendtofriendDialog");
        oWait[0].style.top = (parseInt(getScrollTop(), 10) + ((getViewportHeight() - oWait.height()) / 2)) + "px";
        oWait[0].style.left = (parseInt(document.body.scrollLeft, 10) + ((getViewportWidth() - oWait.width()) / 2)) + "px";
    };
    this.resize = function() {
        if (sendToFriend.timeOut)
            clearTimeout(sendToFriend.timeOut);
        sendToFriend.timeOut = window.setTimeout(sendToFriend.windowResize, 6)
    };
    this.Show = function(obj) {
        if (!this.GetImageCaptcha)
            this.GetImageCaptcha = oCommentsItem.prototype.GetImageCaptcha;
        if (obj)
            this.listingIds = [obj];
        $(this.Elm).show();
    };
    this.Hide = function() {
        $(this.Elm).hide();
        oCommentsItem.prototype.RemoveCaptcha();
    };
    this.checkAndSendToFriend = function() {
        validationRules.beginErrGroup();
        $("#nameFriend,#emailFriend,#emailUser,#nameUser").change();
        if (validationRules.endErrGroup())
            return;
        this.Data.email = $("#emailUser").val();
        this.Data.name = $("#nameUser").val();
        this.Data.mailFriend = $("#emailFriend").val();
        this.Data.nameFriend = $("#nameFriend").val();

        var ids = [], urls = [];
        $(this.listingIds).each(function(i, e) { ids.push(e.id); urls.push(e.url); });
        this.Data.listingIds = ids;
        this.Data.urls = urls;
        this.Data.Captch.ImageCapture = "";
        this.Data.Captch.NumberSize = "70px"
        this.Data.Captch.ScriptObj = "sendToFriend";
        this.Data.Captch.ImageNumber = $(this.Elm + ' input[name="Captch.ImageNumber"]').val();
        $.ajax({
            type: "POST",
            url: "../../../WebServices/Notification.asmx/SendToFriend",
            contentType: "application/json; charset=utf-8",
            data: $.toJSON(this.Data),
            dataType: "json",
            success: function(dataObj) {
                var data = dataObj.d;
                if (data.IsSuccess) {
                    alert(data.OutMessage);
                    sendToFriend.Hide();
                }
                else {
                    if (data.Param && data.Param > ' ') {
                        sendToFriend.CaptchUrl = data.Param;
                        sendToFriend.GetImageCaptcha();
                    }
                    if (data.OutMessage && data.OutMessage > ' ')
                        alert(data.OutMessage);
                }
            }


        });
    }
})();

/// BEGIN Send request on selection REALTY or CREDIT ///

var reqRecPopup, urls, reqType, oldUrls, oldReqType;

function RequestReceiverGoBack() {
    if (oldUrls)
        urls = oldUrls;
    if (oldReqType)
        reqType = oldReqType;
    if (oldAppraiserVars)
        appraiserVars = oldAppraiserVars;
    if (oldJuristVars)
        juristVars = oldJuristVars;
    oldUrls = oldReqType = oldAppraiserVars = oldJuristVars = null;
}


function InitRequestReceiverForm(url, urlSave, reqReal, reqCred) {
    if (urls)
        oldUrls = urls;
    urls = { FormUrl: url, UrlSave: urlSave };
    if (reqType)
        oldReqType = reqType;
    reqType = { Realty: reqReal, Credit: reqCred };
}

function StartRequestReceiverFormPopup(popupId, reqTypeId, regTagExpr, regEmailExpr, data) {
    reqRecPopup = new oReqRecPopup(popupId, reqTypeId, regTagExpr, regEmailExpr, data);
}

oReqRecPopup = function(popupId, reqTypeId, regTagExpr, regEmailExpr, data) {

    this.Elm = '#' + popupId;
    this.RegTagExpr = regTagExpr;
    this.RegEmailExpr = regEmailExpr;
    this.ReqTypeId = reqTypeId;
    this.DataShow = data ? data : {};
    this.SendBtn = { Realty: '#realtySendBtn', Credit: '#creditSendBtn' };
    this.Hldr = { Realty: 'div .popupContent div[id="realty"]', Credit: 'div .popupContent div[id="credit"]' };

    this.GetImageCaptcha = oCommentsItem.prototype.GetImageCaptcha;

    this.Show = function() {
        $(this.Elm).remove();
        $.ajax({
            type: 'POST',
            url: urls.FormUrl,
            data: this.DataShow,
            dataType: 'html',
            success: function(data) {
                $("body").append(data);
                $(document).ready(validationRules.Prepare);
            }
        })
        this.DataShow.IsNotLog = true;
    }

    this.Hide = function() {
        $(this.Elm).remove();
        if (this.DataShow.IsGoBack)
            RequestReceiverGoBack();
    };

    this.Save = function() {
        var oData;
        var isValid;
        if (this.ReqTypeId == reqType.Realty) {
            oData = this.DataRealty();
            isValid = this.IsValidRealty(oData);
        }
        else if (this.ReqTypeId == reqType.Credit) {
            oData = this.DataCredit();
            isValid = this.IsValidCredit(oData);
        }
        if (isValid) {
            if (this.ReqTypeId == reqType.Credit) {
                $(this.Hldr.Credit).find(this.SendBtn.Credit).attr("disabled", "disabled");
                oData["Captch.ImageNumber"] = $(this.Hldr.Credit).find('input[name="Captch.ImageNumber"]').val();
            }
            else if (this.ReqTypeId == reqType.Realty) {
                $(this.Hldr.Realty).find(this.SendBtn.Realty).attr("disabled", "disabled");
                oData["Captch.ImageNumber"] = $(this.Hldr.Realty).find('input[name="Captch.ImageNumber"]').val();
            }
            var o = this;
            for (var e in this.Data.Captch)
                oData["Captch." + e] = this.Data.Captch[e];
            $.ajax(
			{
			    type: 'POST',
			    url: urls.UrlSave,
			    data: oData,
			    dataType: 'json',
			    success: function(data) {
			        if (data.IsSuccess) {
			            alert('Ваше сообщение отправлено. Спасибо!');
			            reqRecPopup.Hide();
			        }
			        else {
			            if (data.Param && data.Param > ' ') {
			                o.CaptchUrl = data.Param;
			                o.GetImageCaptcha();
			                if (o.ReqTypeId == reqType.Credit)
			                    $(o.Hldr.Credit).find(o.SendBtn.Credit).removeAttr("disabled");
			                else if (o.ReqTypeId == reqType.Realty)
			                    $(o.Hldr.Realty).find(o.SendBtn.Realty).removeAttr("disabled");
			            }
			            if (data.OutMessage && data.OutMessage > ' ')
			                alert(data.OutMessage);
			        }
			    }
			})
        }
    };

    this.CreditReculc = function() {
        this.DataShow.CreditSum = $(this.Elm).find("#CreditSum").val();
        this.DataShow.BankId = $(this.Elm).find("#BankId").val();
        this.DataShow.RequestCreditTypeId = $(this.Elm).find("#RequestCreditTypeId").val();
        this.DataShow.Name = $(this.Elm).find("#Name").val();
        this.DataShow.Phone = $(this.Elm).find("#Phone").val();
        this.DataShow.Email = $(this.Elm).find("#Email").val();
        this.Show();
    }

    this.IsValidRealty = function(oData) {

        var errors = "";

        // remove tags
        var regTags = new RegExp(this.RegTagExpr, 'ig');
        oData.Name = oData.Name.replace(regTags, '');
        oData.Phone = oData.Phone.replace(regTags, '');
        oData.Email = oData.Email.replace(regTags, '');
        oData.Description = oData.Description.replace(regTags, '');
        var regEmail = new RegExp(this.RegEmailExpr, 'ig');

        // Name validation
        if (oData.Name.length > 255)
            errors += "Длина поля 'Ваше имя' не должна превышать 255 символов<br />";
        else if (oData.Name.length == 0)
            errors += "Поле 'Ваше имя' не может быть пустым<br />";

        // Phone validation
        if (oData.Phone.length > 255)
            errors += "Длина поля 'Ваш телефон' не должна превышать 255 символов<br />";
        else if (oData.Phone.length == 0)
            errors += "Поле 'Ваш телефон' не может быть пустым<br />";

        // Email validation
        if (!regEmail.test(oData.Email))
            errors += "Некорректный формат e-mail<br />";
        else if (oData.Email.length == 0)
            errors += "Поле 'E-mail' не может быть пустым<br />";

        // Description validation
        if (oData.Description.length > 2000)
            errors += "Длина поля 'Текст заявки' не должна превышать 2000 символов<br />";
        else if (oData.Description.length == 0)
            errors += "Поле 'Текст заявки' не может быть пустым<br />";

        // Region Validation
        if (oData.RegionId == undefined || oData.RegionId == "") {
            errors += "Поле 'Регион' должно быть указано<br />";
        }

        // show errors
        if (errors != "") {
            $("#dvErrors").html(errors);
            return false;
        }
        return true;
    };

    this.IsValidCredit = function(oData) {

        var errors = "";

        // remove tags
        var regTags = new RegExp(this.RegTagExpr, 'ig');
        oData.CreditSum = oData.CreditSum.replace(regTags, '');
        oData.CreditInitialInstalmentSum = oData.CreditInitialInstalmentSum.replace(regTags, '');
        oData.CreditPeriod = oData.CreditPeriod.replace(regTags, '');
        oData.Name = oData.Name.replace(regTags, '');
        oData.Phone = oData.Phone.replace(regTags, '');
        oData.Email = oData.Email.replace(regTags, '');

        var regEmail = new RegExp(this.RegEmailExpr, 'ig');

        // RequestCreditTypeId
        if (!oData.RequestCreditTypeId)
            errors += "Не выбрано поле 'Цель кредита'<br />";

        // CreditSum
        if (oData.CreditSum.length > 255)
            errors += "Длина поля 'Сумма кредита' не должна превышать 255 символов<br />";
        else if (oData.CreditSum.length == 0 || oData.CreditSum == "0")
            errors += "Поле 'Сумма кредита' не может быть пустым(0)<br />";

        // CreditInitialInstalmentSum
        if (oData.CreditInitialInstalmentSum.length > 50)
            errors += "Длина поля 'Сумма первоначального взноса' не должна превышать 50 символов<br />";

        // CreditPeriod
        if (oData.CreditPeriod.length > 50)
            errors += "Длина поля 'Срок кредита' не должна превышать 50 символов<br />";

        // Name
        if (oData.Name.length > 255)
            errors += "Длина поля 'ФИО' не должна превышать 255 символов<br />";
        else if (oData.Name.length == 0)
            errors += "Поле 'ФИО' не может быть пустым<br />";

        // Phone
        if (oData.Phone.length > 255)
            errors += "Длина поля 'Ваш телефон' не должна превышать 255 символов<br />";
        else if (oData.Phone.length == 0)
            errors += "Поле 'Ваш телефон' не может быть пустым<br />";

        // Email
        if (!regEmail.test(oData.Email))
            errors += "Некорректный формат e-mail<br />";
        else if (oData.Email.length == 0)
            errors += "Поле 'E-mail' не может быть пустым<br />";

        // show errors
        if (errors != "") {
            $("#dvErrors").html(errors);
            return false;
        }
        return true;
    }

    this.DataRealty = function() {
        return {
            ListingActionId: $(this.Hldr.Realty).find("#ListingActionId").val(),
            RealtyTypeId: $(this.Hldr.Realty).find("#RealtyTypeId").val(),
            RegionId: $(this.Hldr.Realty).find("#RegionId").val(),
            Name: $(this.Hldr.Realty).find("#Name").val().trim(),
            Phone: $(this.Hldr.Realty).find("#Phone").val().trim(),
            Email: $(this.Hldr.Realty).find("#Email").val(),
            Description: $(this.Hldr.Realty).find("#Description").val().trim(),
            SubscriptionTypeId: $(this.Hldr.Realty).find("#SubscriptionTypeId").val(),
            reqre_inpFld: $(this.Hldr.Realty).find("#reqre_inpFld").val(),
            reqre_calcFld: $(this.Hldr.Realty).find("#reqre_calcFld").val(),
            reqre_origFld: $(this.Hldr.Realty).find("#reqre_origFld").val()
        };
    };

    this.DataCredit = function() {
        var d = {
            RequestCreditTypeId: $(this.Hldr.Credit).find("#RequestCreditTypeId").val(),
            CreditSum: $(this.Hldr.Credit).find("#CreditSum").val().trim(),
            CreditInitialInstalmentSum: $(this.Hldr.Credit).find("#CreditInitialInstalmentSum").val(),
            CreditPeriod: $(this.Hldr.Credit).find("#CreditPeriod").val(),
            Name: $(this.Hldr.Credit).find("#Name").val().trim(),
            Phone: $(this.Hldr.Credit).find("#Phone").val().trim(),
            Email: $(this.Hldr.Credit).find("#Email").val().trim(),

            ListingActionId: $(this.Hldr.Credit).find("#ListingActionId").val(),
            RealtyTypeId: $(this.Hldr.Credit).find("#RealtyTypeId").val(),
            RegionId: $(this.Hldr.Credit).find("#RegionId").val(),
            SubscriptionTypeId: $(this.Hldr.Credit).find("#SubscriptionTypeId").val(),
            URLReferer: $(this.Hldr.Credit).find("#URLReferer").val(),

            reqcr_inpFld: $(this.Hldr.Credit).find("#reqcr_inpFld").val(),
            reqcr_calcFld: $(this.Hldr.Credit).find("#reqcr_calcFld").val(),
            reqcr_origFld: $(this.Hldr.Credit).find("#reqcr_origFld").val()
        };
        if (this.DataShow.CompanyType)
            d.CompanyType = this.DataShow.CompanyType;
        return d;
    };

    this.Show();
}

// use in admin on tab Leads
function ChangeRequestType(reqRe, reqCr, reqMe, reqAp) {
    var reqtId = "#Receiver_SubscriptionTypeId";
    var rtId = "#Receiver_RealtyTypeId";
    var trId = "#Receiver_ListingActionId";
    var rId = "#Receiver_RegionId";
    var phId = "#Receiver_Phone";

    reqType = { Realty: reqRe, Credit: reqCr, Media: reqMe, Appraiser: reqAp };
    var selVal = $(reqtId + " option:selected").val();
    if (selVal == reqType.Credit || selVal == reqType.Media || selVal == reqType.Appraiser || selVal == '') {
        $(rtId).attr("disabled", "disabled");
        $(trId).attr("disabled", "disabled");
        $(rId).attr("disabled", "disabled");        
    }
    else {
        $(rtId).removeAttr("disabled");
        $(trId).removeAttr("disabled");
        $(rId).removeAttr("disabled");        
    }
    if (selVal == reqType.Appraiser)
        $(phId).removeAttr("disabled");
    else
        $(phId).attr("disabled", "disabled");    
}

//привязывает содержимое строки в списке через ajax
function edit(id, editMode, emailInputId, url) {
    EditRequestReceiver(
				 'ajaxContent' + id,
				 id, editMode, emailInputId, url);
}
function hide(id) {
    $('#ajaxContent' + id).hide();
}
function EditRequestReceiver(updateCtrlId, id, editMode, emailInputId, url) {
    var email = $('#' + emailInputId).val();
    $('#' + updateCtrlId).load(url, {
        'id': id,
        'editMode': editMode,
        'email': email
    });
}

/// END Send request on selection realty or credit ///

/// BEGIN Order Media ///

var mediaOrderPopup, mediaOrderVars;

function InitOrderMediaForm(url, urlSave, regTagExpr, regEmailExpr) {
    mediaOrderVars = new oMediaOrderVars(url, urlSave, regTagExpr, regEmailExpr);
}

function StartMediaOrderForm(popupId) {
    mediaOrderPopup = new oMediaOrderPopup(popupId);
}

oMediaOrderVars = function(url, urlSave, regTagExpr, regEmailExpr) {
    this.Urls = { UrlForm: url, UrlSave: urlSave };
    this.Regs = { Tags: regTagExpr, Email: regEmailExpr }
}

oMediaOrderPopup = function(popupId) {

    this.Elm = '#' + popupId;
    this.Hldr = 'div .popupContent div[id="mediaOrder"]';
    this.SendBtn = '#ordMediaSndBtn';
    this.ErrorHolder = '#dvErrorsOrderMedia';

    this.GetImageCaptcha = oCommentsItem.prototype.GetImageCaptcha;

    this.Show = function() {
        $(this.Elm).remove();
        $.ajax({
            type: 'GET',
            url: mediaOrderVars.Urls.UrlForm,
            dataType: 'html',
            success: function(data) {
                $("body").append(data);
                location.hash = '';
                location.hash = 'aOrderMedia';
            }
        })
    };

    this.Hide = function() {
        $(this.Elm).remove();
    };

    this.Save = function() {
        var oData = this.GetData();
        if (this.IsValid(oData)) {
            $(this.Hldr).find(this.SendBtn).attr("disabled", "disabled");
            var o = this;
            $.ajax({
                type: 'POST',
                url: mediaOrderVars.Urls.UrlSave,
                data: oData,
                dataType: 'json',
                success: function(data) {
                    if (data.IsSuccess) {
                        alert('Заказ 3-D тура отправлен. Спасибо!');
                        $(mediaOrderPopup.Elm).remove();
                    }
                    else {
                        if (data.Param && data.Param > ' ') {
                            o.CaptchUrl = data.Param;
                            o.GetImageCaptcha();
                            $(o.Hldr).find(o.SendBtn).removeAttr("disabled");
                        }
                        if (data.OutMessage && data.OutMessage > ' ')
                            alert(data.OutMessage);
                    }
                }
            });
        }
    };

    this.GetData = function() {
        var d = {
            Name: $(this.Hldr).find('#Name').val().trim(),
            Phone: $(this.Hldr).find('#Phone').val().trim(),
            Email: $(this.Hldr).find('#Email').val(),
            SubscriptionTypeId: $(this.Hldr).find('#SubscriptionTypeId').val(),
            reqmd_inpFld: $(this.Hldr).find("#reqmd_inpFld").val(),
            reqmd_calcFld: $(this.Hldr).find("#reqmd_calcFld").val(),
            reqmd_origFld: $(this.Hldr).find("#reqmd_origFld").val()
        };
        for (var e in this.Data.Captch)
            oData["Captch." + e] = this.Data.Captch[e];
        d["Captch.ImageNumber"] = $(this.Hldr).find('input[name="Captch.ImageNumber"]').val();
        return d;
    };

    this.IsValid = function(oData) {

        var errors = "";

        // remove tags
        var regTags = new RegExp(mediaOrderVars.Regs.Tags, 'ig');
        oData.Name = oData.Name.replace(regTags, '');
        oData.Phone = oData.Phone.replace(regTags, '');
        oData.Email = oData.Email.replace(regTags, '');
        var regEmail = new RegExp(mediaOrderVars.Regs.Email, 'ig');

        // Name validation
        if (oData.Name.length > 255)
            errors += "Длина поля 'Ваше имя' не должна превышать 255 символов<br />";
        else if (oData.Name.length == 0)
            errors += "Поле 'Ваше имя' не может быть пустым<br />";

        // Phone validation
        if (oData.Phone.length > 255)
            errors += "Длина поля 'Ваш телефон' не должна превышать 255 символов<br />";
        else if (oData.Phone.length == 0)
            errors += "Поле 'Ваш телефон' не может быть пустым<br />";

        // Email validation
        if (oData.Email.length == 0)
            errors += "Поле 'E-mail' не может быть пустым<br />";
        else if (!regEmail.test(oData.Email))
            errors += "Некорректный формат e-mail<br />";

        // show errors
        if (errors != "") {
            $(this.ErrorHolder).html(errors);
            return false;
        }
        return true;
    };

    this.Show();
}

/// END Order Media ///
/// BEGIN Jurist ///
/// End Jurist ///
var juristPopup, juristVars, oldJuristVars;
function PrepareDataJuristForm(url, urlSave, regTagExpr, regEmailExpr, lsId, rTId, lAId, rgnId, distrId, subDistrId, strId, strName, strNameId, bldingNum, num, prc) {
    if (juristVars)
        oldJuristVars = juristVars;
    juristVars = CreateAppraiserVars(url, urlSave, regTagExpr, regEmailExpr, lsId, rTId, lAId, rgnId, distrId, subDistrId, strId, strName, strNameId, bldingNum, num, prc, "#reqjur_inpFld", "#reqjur_calcFld", "#reqjur_origFld");
}

function CreateJuristForm(popupId, companyType, vjur) {
    juristPopup = CreateAppraiserPopup(popupId, '#juristSendBtn', 'div .popupContent div[id="juristDv"]', '#dvErrorsJurist', 'Ваше сообщение отправлено. Спасибо!', vjur || juristVars, companyType);
}
/// BEGIN Appraiser ///

var appraiserPopup, appraiserVars, oldAppraiserVars;

function PrepareDataAppraiserForm(url, urlSave, regTagExpr, regEmailExpr, lsId, rTId, lAId, rgnId, distrId, subDistrId, strId, strName, strNameId, bldingNum, num, prc) {
    if (appraiserVars)
        oldAppraiserVars = appraiserVars;
    appraiserVars = CreateAppraiserVars(url, urlSave, regTagExpr, regEmailExpr, lsId, rTId, lAId, rgnId, distrId, subDistrId, strId, strName, strNameId, bldingNum, num, prc, "#reqap_inpFld", "#reqap_calcFld", "#reqap_origFld");    
}

function CreateAppraiserForm(popupId, companyType) {
    appraiserPopup = CreateAppraiserPopup(popupId, '#appraiserSendBtn', 'div .popupContent div[id="appraiser"]', '#dvErrors', 'Запрос на оценку недвижимости отправлен. Спасибо!', appraiserVars, companyType);
}

function CreateAppraiserVars(url, urlSave, regTagExpr, regEmailExpr, lsId, rTId, lAId, rgnId, distrId, subDistrId, strId, strName, strNameId, bldingNum, num, prc, inpFld, calcFld, origFld) {
    var result = new Object;
    result.inpFld = inpFld;
    result.calcFld = calcFld;
    result.origFld = origFld;
    result.Urls = { UrlForm: url, UrlSave: urlSave };
    result.Regs = { Tags: regTagExpr, Email: regEmailExpr }
    result.Realty = { 
    LsId: lsId, 
    RTId: rTId, 
    LAId: lAId, 
    RgnId: rgnId, 
    DistrId: distrId, 
    SubDistrId: subDistrId, 
    StrId: strId,
    StrName: strName, 
    StrNameId: strNameId,
    BldingNum: bldingNum, 
    Num: num,
    Prc: prc
}
return result;
}

function CreateAppraiserPopup(popupId, sendBtn, hldr, errorHolder, successMessage, varsObj, companyType) {

    var result = new Object;
    result.SendBtn = sendBtn;
    result.Hldr = hldr;
    result.Elm = '#' + popupId;
    result.ErrorHolder = errorHolder;
    result.SuccessMessage = successMessage;
    result.GetImageCaptcha = oCommentsItem.prototype.GetImageCaptcha;

    result.Show = function() {
        $(result.Elm).remove();
        $.ajax({
            type: 'POST',
            url: varsObj.Urls.UrlForm,
            data: {
            ListingId: varsObj.Realty.LsId,
            RealtyTypeId: varsObj.Realty.RTId,
            ListingActionId: varsObj.Realty.LAId,
            RegionId: varsObj.Realty.RgnId,
            DistrictId: varsObj.Realty.DistrId == 0 ? '' : varsObj.Realty.DistrId,
            SubDistrictId: varsObj.Realty.SubDistrId == 0 ? '' : varsObj.Realty.SubDistrId,
            StreetId: varsObj.Realty.StrId == 0 ? '' : varsObj.Realty.StrId,
            StreetName: varsObj.Realty.StrName,
            StreetNameId: varsObj.Realty.StrNameId,
            BuildingNumber: varsObj.Realty.BldingNum,
            Number: varsObj.Realty.Num,
            Price: varsObj.Realty.Prc
            },
            dataType: 'html',
            success: function(data) {
                $("body").append(data);
            }
        })
    };

    result.Hide = function() {
        $(result.Elm).remove();
        if (this.companyType)
            RequestReceiverGoBack();
    };

    result.Save = function() {
        var oData = result.GetData();
        if (result.IsValid(oData)) {
            $(result.Hldr).find(result.SendBtn).attr("disabled", "disabled");
            $.ajax({
                type: 'POST',
                url: varsObj.Urls.UrlSave,
                data: oData,
                dataType: 'json',
                success: function(data) {
                    if (data.IsSuccess) {
                        alert(result.SuccessMessage);
                        $(result.Elm).remove();
                    }
                    else {
                        if (data.Param && data.Param > ' ') {
                            result.CaptchUrl = data.Param;
                            result.GetImageCaptcha();
                            $(result.Hldr).find(result.SendBtn).removeAttr("disabled");
                        }
                        if (data.OutMessage && data.OutMessage > ' ')
                            alert(data.OutMessage);
                    }
                }
            });
        }
    };

    result.GetData = function() {
        var d = {
            Name: $(result.Hldr).find('#Name').val().trim(),
            Phone: $(result.Hldr).find('#Phone').val().trim(),
            Email: $(result.Hldr).find('#Email').val(),
            SubscriptionTypeId: $(result.Hldr).find('#SubscriptionTypeId').val(),
            ListingId: $(result.Hldr).find('#ListingId').val(),
            RealtyTypeId: $(result.Hldr).find('#RealtyTypeId').val(),
            ListingActionId: $(result.Hldr).find('#ListingActionId').val(),
            RegionId: $(result.Hldr).find('#RegionId').val(),
            SubDistrictId: $(result.Hldr).find('#SubDistrictId').val(),
            DistrictId: $(result.Hldr).find('#DistrictId').val(),
            StreetId: $(result.Hldr).find('#StreetId').val(),
            StreetName: $(result.Hldr).find('#StreetName').val(),
            StreetNameId: $(result.Hldr).find('#StreetNameId').val(),
            BuildingNumber: $(result.Hldr).find('#BuildingNumber').val(),
            Number: $(result.Hldr).find('#Number').val(),
            Price: $(result.Hldr).find('#Price').val(),
            reqap_inpFld: $(result.Hldr).find(varsObj.inpFld).val(),
            reqap_calcFld: $(result.Hldr).find(varsObj.calcFld).val(),
            reqap_origFld: $(result.Hldr).find(varsObj.origFld).val(),
            Description: $(result.Hldr).find('#Description').val(),
            CompanyType: companyType
        };
        for (var e in this.Data.Captch)
            d["Captch." + e] = result.Data.Captch[e];
        d["Captch.ImageNumber"] = $(result.Hldr).find('input[name="Captch.ImageNumber"]').val();
        return d;
    };

    result.IsValid = function(oData) {

        var errors = "";

        // remove tags
        var regTags = new RegExp(varsObj.Regs.Tags, 'ig');
        oData.Name = oData.Name.replace(regTags, '');
        oData.Phone = oData.Phone.replace(regTags, '');
        oData.Email = oData.Email.replace(regTags, '');
        var regEmail = new RegExp(varsObj.Regs.Email, 'ig');

        // Name validation
        if (oData.Name.length > 255)
            errors += "Длина поля 'Ваше имя' не должна превышать 255 символов<br />";
        else if (oData.Name.length == 0)
            errors += "Поле 'Ваше имя' не может быть пустым<br />";

        // Phone validation
        if (oData.Phone.length > 255)
            errors += "Длина поля 'Ваш телефон' не должна превышать 255 символов<br />";
        else if (oData.Phone.length == 0)
            errors += "Поле 'Ваш телефон' не может быть пустым<br />";

        // Email validation
        if (oData.Email.length == 0)
            errors += "Поле 'E-mail' не может быть пустым<br />";
        else if (!regEmail.test(oData.Email))
            errors += "Некорректный формат e-mail<br />";


        if (oData.ListingId < ' ' && oData.Description<' ')
            errors += "Поле 'Описание' не может быть пустым<br />";
        
        // show errors
        if (errors != "") {
            $(result.ErrorHolder).html(errors);
            return false;
        }
        return true;
    };

    result.Show();
    return result;
}

/// END Appraiser ///

/// BEGIN Subscription on ALERT ///

var alertPopup, alertVars;

function InitAlertForm(url, urlSave) {
    alertVars = new oAlertVars(url, urlSave);
}

function StartAlertFormPopup(popupId) {
    alertPopup = new oAlertPopup(popupId);
}

oAlertVars = function(url, urlSave) {
    this.Urls = { UrlForm: url, UrlSave: urlSave };
}

oAlertPopup = function(popupId) {

    this.GetImageCaptcha = oCommentsItem.prototype.GetImageCaptcha;
    
    this.Elm = '#' + popupId;

    this.Show = function() {
        $(this.Elm).remove();
        $.ajax({
            type: 'POST',
            url: alertVars.Urls.UrlForm,
            data: '',
            dataType: 'html',
            success: function(data) {
                $("body").append(data);
            }
        })
    };

    this.Hide = function() {
        $(this.Elm).remove();
    };

    this.Save = function() {
        var oData = this.GetData();
        if (this.IsValid(oData)) {
            $.ajax({
                type: 'POST',
                url: alertVars.Urls.UrlSave,
                data: oData,
                dataType: 'json',
                success: function(data) {
                    if (data.IsSuccess) {
                        alert("Вы подписались на уведомления. Спасибо!");
                        $(alertPopup.Elm).remove();
                    }
                    else {
                        if (data.Param && data.Param > ' ') {
                            alertPopup.CaptchUrl = data.Param;
                            alertPopup.GetImageCaptcha();
                        }
                        if (data.OutMessage && data.OutMessage > ' ')
                            alert(data.OutMessage);
                    }
                }
            });
        }
    };

    this.GetData = function() {
        var fHldr = 'div .popupContent ';
        var subs = '';
        $(fHldr + 'input[name="cblSub"]:checked').each(function(index, el) {
            //alert(el.value);
            subs += ((index > 0) ? ',' : '') + el.value;
        });
        var d = {
            SubTypes: subs,
            ListingId: $(fHldr + 'div[id="alert"]' + ' #ListingId').val()
        };
        for (var e in this.Data.Captch)
            d["Captch." + e] = this.Data.Captch[e];
        d["Captch.ImageNumber"] = $(this.Elm+' input[name="Captch.ImageNumber"]').val();
        return d;
    };

    this.IsValid = function(oData) {

        var errors = "";

        // Name validation
        if (oData.SubTypes == '')
            errors += "Выберите тип уведомления";

        // show errors
        $("#dvErrors").html(errors);
        return errors == "";
    };

    this.Show();
}

/// END Subscription on ALERT ///

/// BEGIN Sindication ///
var CSindicationForm = function(popupId, popupUrl) {
    var Elm = '#' + popupId;
    this.Show = function(parentControl, isAnonimus) {
        var IsAnonimus = parseBool(isAnonimus);
        if ($(parentControl).attr('checked') && IsAnonimus) {
            $(Elm).remove();
            $.ajax({
                type: 'POST',
                url: popupUrl,
                data: '',
                dataType: 'html',
                success: function(data) {
                    $("body").append(data);
                }
            })
        }
        if (IsAnonimus) {
            $(parentControl).attr('checked', false);
        }

    };

    this.Hide = function() {
        $(Elm).remove();
    };
}
/// END Sindication ///

/// BEGIN Subscription ///

oSubscriptionCaptch = function(saveUrl, retUrl) {
    this.GetImageCaptcha = oCommentsItem.prototype.GetImageCaptcha;
    instSubscriptionCaptch = this;
    this.Save = function() {
        var oData = this.GetData();
        $.ajax({
            type: 'POST',
            url: saveUrl,
            data: oData,
            dataType: 'json',
            success: function(data) {
                if (data.IsSuccess) {
                    alert(data.OutMessage);
                    location.href = retUrl || location.href;
                }
                else {
                    if (data.Param && data.Param > ' ') {
                        instSubscriptionCaptch.CaptchUrl = data.Param;
                        instSubscriptionCaptch.GetImageCaptcha();
                    }
                    if (data.OutMessage && data.OutMessage > ' ')
                        alert(data.OutMessage);
                }
            }
        });
    };
    this.GetData = function() {
        var d = { subTypeIdsStr: "" };
        $('table.updatesSubscribtionModule input[name="SubTypeIds"]:checked').each(function(index, el) {
            d.subTypeIdsStr += ((index > 0) ? ',' : '') + el.value;
        });
        for (var e in this.Data.Captch)
            d["Captch." + e] = this.Data.Captch[e];
        d["Captch.ImageNumber"] = $('input[name="Captch.ImageNumber"]').val();
        return d;
    };
}





var subForm;

function ClickSubscription(popupId, urlPopup, urlNotPopup) {
    subForm = new oSubForm(popupId, urlPopup, urlNotPopup);
}

oSubForm = function(popupId, urlPopup, urlNotPopup) {

    if (popupId)
        this.Elm = '#' + popupId;

    this.Show = function(oData) {
        if (popupId) {
            $(this.Elm).remove();
            $.ajax({
                type: oData ? 'POST' : 'GET',
                url: urlPopup,
                data: oData ? oData : '',
                dataType: 'html',
                success: function(data) {
                    $("body").append(data);
                }
            })
        }
        else {
            location.href = urlNotPopup;
        }
    };

    this.Hide = function() {
        $(this.Elm).remove();
    };

    this.Subscribe = function(isPopup) {
        //alert(isPopup);
        var oData;
        oData = this.GetData();
        if (this.IsValid(oData)) {
            this.Show(oData);
        }
    };

    
    this.GetData = function() {
        var fHldr = 'div .popupContent #subscription ';
        var subs = '';
        $(fHldr + 'input[name="SubTypeIds"]:checked').each(function(index, el) {
            subs += ((index > 0) ? ',' : '') + el.value;
        });
        return { SubTypeIdsStr: subs };
    };

    this.IsValid = function(oData) {

        var errors = "";

        // Name validation
        if (oData.SubTypes == '')
            errors += "Выберите рассылки для подписки";

        // show errors
        if (errors != "") {
            $("#dvErrors").html(errors);
            return false;
        }
        return true;
    };

    this.Show();
}

function CheckSubscription(chb) {
    var checked = chb.hasAttribute('checked');
    if (checked == true) {
        chb.setAttribute('checked', 'checked');
    }
    else {
        chb.removeAttribute('checked');
    }
}

function ClickCancelSub(redirectUrl) {
    if (redirectUrl != '')
        location.href = redirectUrl;
}

/// END Subscription ///

function GetPhoneNumber(listingId, o) {
    if (o.hastip)
        return;
    
    try {
        _gaq.push(['_trackEvent', ' contactdetails', ' show']);
    }
    catch (e) { }
    $.ajax({
        type: "POST",
        url: "/WebServices/Notification.asmx/AskPhone",
        contentType: "application/json; charset=utf-8",
        data: '{"listingId":"' + listingId + '"}',
        dataType: "json",
        success: function(dataObj) {
            var data = dataObj.d;
            if (data.IsSuccess && !o.hastip) {
                ShowToolTip($(o.parentNode), "Контактный телефон: " + data.OutMessage, 'tooltipphone');
                o.hastip = true;
                o.title = "";
                $(o.parentNode).simpletip().show()
            }
            else
                alert("Произошел сбой во время обработки запроса !");
        },
        error: function() { alert("Произошел сбой во время обработки запроса !"); }
    });
}

function GetUsersHavingViewed(listingId, userId, o) {
    if (o.hastip|| o.sending)
        return;
    o.sending = true;
    $.ajax({
        type: "POST",
        url: "/WebServices/WSListing.asmx/GetUsersHavingViewed",
        contentType: "application/json; charset=utf-8",
        data: '{"listingId":"' + listingId + '","userId":"' + userId + '"}',
        dataType: "json",
        success: function(dataObj) {
            var data = dataObj.d;
            if (data && !o.hastip) {
                var str = "";
                var strph = "";
                var imges = $(o).find("div div");
                for (var i in data) {
                    if (data[i].IsShowPhone)
                        strph += data[i].UserName + " - " + data[i].StringDatePh + "<br />";
                    if (data[i].StringDate > ' ')
                        str += data[i].UserName + " - " + data[i].StringDate + "<br />";
                }
                var e;
                if (str > ' ') {
                    ShowToolTip(imges.eq(0), str, 'addressTooltipForList s' + listingId);
                    e = $('div[class="addressTooltipForList s' + listingId + ' fixed"]');
                    e.remove();
                    $("body").append(e);
                }
                if (strph > ' ') {
                    ShowToolTip(imges.eq(imges.length>1?1:0), strph, 'addressTooltipForList p' + listingId);
                    e = $('div[class="addressTooltipForList p' + listingId + ' fixed"]');
                    e.remove();
                    $("body").append(e);
                }
                imges.simpletip().show()
                o.hastip = true;
                o.onmousemove = null;
            }
            else
                alert("Произошел сбой во время обработки запроса !");
        },
        error: function() { alert("Произошел сбой во время обработки запроса !"); },
        complete: function() { o.sending = null; }
    });
}

function SubscribeOnUrl(_type, _url, urlpost, str, f) {
    if (confirm("Вы хотите подписаться на рассылку " + str + " ?"))
        $.ajax({
            type: "POST",
            url: urlpost,
            data: { type: _type, url: _url },
            dataType: "json",
            success: function() { if (f) f(); alert("Вы успешно подписались!") },
            error: function() { alert("Произошел сбой во время обработки запроса !"); }
        });
}

function UnSubscribeOnUrl(_type, urlpost, str, f) {
    if (confirm("Вы хотите отписаться от рассылки " + str + " ?"))
        $.ajax({
            type: "POST",
            url: urlpost,
            data: { type: _type },
            dataType: "json",
            success: function() { if (f) f(); alert("Вы успешно отписались!") },
            error: function() { alert("Произошел сбой во время обработки запроса !"); }
        });
}

/// example of parameter "_list": [{ "Type": "23", "Url": "url1" }, { "Type": "24", "Url": "url2"}];
function SubscribeOnUrlList(_list, urlpost, str) {
    if (confirm("Вы хотите подписаться на рассылку по запросу: " + str + "?"))

        $.ajax({
            type: "POST",
            url: urlpost,
            data: _list,
            dataType: "json",
            contentType: 'application/json; charset=utf-8',
            traditional: true,
            success: function() { alert("Вы успешно подписались!") },
            error: function() { alert("Произошел сбой во время обработки запроса !"); }
        });
    }

    oNewListingSubscribe = function(type, urlSubs, text, url, urlElm) {
        this.Elm = "#sNewListings";
        instNewListingSubscribe = this;
        this.Subscribe = function() {
            var o = this;
            $.ajax({
                type: "POST",
                url: urlSubs,
                data: { type: type, url: url },
                dataType: "json",
                success: function(data) { o.Hide(); },
                error: function() { alert("Произошел сбой во время обработки запроса !"); }
            });
        }
        this.Hide = function() { $(this.Elm).remove(); };
        this.Show = function() {
            var o = this;
            $.ajax({
                type: "POST",
                url: urlElm,
                dataType: "html",
                success: function(data) {
                    o.Hide();
                    $("body").append(data);
                    $(document).ready(function() { $(o.Elm + " #idLNText").html(text); });
                },
                error: function() { alert("Произошел сбой во время обработки запроса !"); }
            });
        }

    }



