﻿var ajax_cursor_html = '<img src="' + SitePath + 'img/hour-glass.gif" width="25" height="25" alt="Подождите...">';
var ajax_wait_message = 'Пожалуйста, подождите, пока загрузятся данные с сервера.';
var ajax_cursor_class_name = 'hour-glass';
var cursor_x_shift = -12;
var cursor_y_shift = -12;

function ClearText(object) {
    if (object.value == object.defaultValue) {
        object.value = '';
    } // end if
} // end function

function NextTag(object, tagName) {
    var next = object.nextSibling;
    while ((next) && (!(next.tagName) || (next.tagName.toLowerCase() != tagName.toLowerCase())))
        next = next.nextSibling;
    return next;
} // end function

function ChildTags(object, tagName) {
    var tags = new Array();
    var current = object.firstChild;
    while (current) {
        if ((current.tagName) && (current.tagName.toLowerCase() == tagName.toLowerCase()))
            tags.push(current);
        current = current.nextSibling;
    } // end while
    return tags;
} // end function

function CheckSearchForm(form) {
    if (form.Query.onfocus) form.Query.onfocus();
    return (form.Query.value == '') ? false : true;
} // end function

function LoadPage(id, uri, callback) {
	var container = document.getElementById(id);
	if (container) {
		var event = 
			function (result) {
				container.innerHTML = result;
				if (callback) callback();
			} // end event
		HttpRequest(SitePath + uri, null, id, event);
	} // end if
	return false;
} // end function

function LoadTab(button, id, uri) {
    if (button.className != 'active') {
		var callback = 
			function () {
				var buttons = button.parentNode.getElementsByTagName('div');
				for (var i = 0; i < buttons.length; i++) buttons[i].className = '';
				button.className = 'active';
			} // end event
		LoadPage(id, uri, callback);
    } // end if
	return false;
} // end function

function ProcessSubscribeForm(form) {
    if (form.email.onfocus) form.email.onfocus();
    var event = 
	    function (result) {
		    var root = XmlRootByText(result);
		    var message = GetXmlNodeValue(GetXmlNodeByTagName(root, 'message'));
		    var success = GetXmlNodeValue(GetXmlNodeByTagName(root, 'success'));
		    if (success) form.email.value = '';
		    alert(message);
	    } // end event
    HttpRequest(SitePath + 'AJAX/ProcessSubscribeForm.aspx', 'Email=' + escape(form.email.value), 'subscribe', event);
	return false;
} // end function

function SwitchArticleBody(link, id) {
    var container = link.parentNode.parentNode;
    if (container.className == 'obgect') {
        var blocks = ChildTags(container, 'div');
        var image = blocks[0];
        if (image.className != 'news_image') {
            image = null;
        } else {
            blocks.shift();
        } // end if
        var lead = blocks[0];
        var body = blocks[1];
        var more = blocks[2];
        if (body.style.display == 'none') {
            if (body.innerHTML.length > 0) {
                if (image) image.style.display = 'none';
                lead.style.display = 'none';
                body.style.display = 'block';
                more.className = 'detail_link off';
            } else {
		        var event = 
			        function (result) {
				        body.innerHTML = result;
                        if (image) image.style.display = 'none';
                        lead.style.display = 'none';
                        body.style.display = 'block';
                        more.className = 'detail_link off';
			        } // end event
		        HttpRequest(SitePath + 'AJAX/GetArticleBody.aspx?ArticleID=' + id, null, 'articles_container', event);
            } // end if
        } else {
            more.className = 'detail_link on';
            body.style.display = 'none';
            lead.style.display = 'block';
            if (image) image.style.display = 'block';
        } // end if
    } // end if
    return false;
} // end function

function LoadSendArticleForm(link, id) {
    var container = link.parentNode.parentNode;
    if (container.className == 'sendlink') {
        var event = 
	        function (result) {
		        container.innerHTML = result;
	        } // end event
        HttpRequest(SitePath + 'AJAX/LoadSendArticleForm.aspx?ArticleID=' + id, null, 'articles_container', event);
    } // end if
    return false;
} // end function

function ProcessSendArticleForm(form, id) {
    if (form.email.onfocus) form.email.onfocus();
    var event = 
	    function (result) {
		    var root = XmlRootByText(result);
		    var message = GetXmlNodeValue(GetXmlNodeByTagName(root, 'message'));
		    var success = GetXmlNodeValue(GetXmlNodeByTagName(root, 'success'));
		    if (success) form.email.value = '';
		    alert(message);
	    } // end event
    HttpRequest(SitePath + 'AJAX/ProcessSendArticleForm.aspx?ArticleID=' + id, 'Email=' + escape(form.email.value), 'articles_container', event);
	return false;
} // end function

function SetArticleRating(link, id, rating) {
    var container = link.parentNode.parentNode;
    if (container) {
        var event = 
	        function (result) {
		        var root = XmlRootByText(result);
		        var message = GetXmlNodeValue(GetXmlNodeByTagName(root, 'message'));
		        var rating = GetXmlNodeValue(GetXmlNodeByTagName(root, 'rating'));
		        container.innerHTML = message;
		        var ri = container;
		        while (ri.className != 'dots') ri = ri.parentNode;
		        ri = ChildTags(ChildTags(ChildTags(NextTag(ri, 'div'), 'div')[0], 'p')[0], 'span')[1];
		        ri.innerHTML = rating;
	        } // end event
        HttpRequest(SitePath + 'AJAX/SetArticleRating.aspx?ArticleID=' + id, 'Rating=' + escape(rating), 'articles_container', event);
    } // end if
    return false;
} // end function

function ProcessArticlesSearchForm(form) {
    var container = document.getElementById('articles_container');
    if (container) {
        var start = form.StartDate.value;
        if (start == form.StartDate.defaultValue) start = '';
        var end = form.EndDate.value;
        if (end == form.EndDate.defaultValue) end = '';
        var data = 'StartDate=' + escape(start) + '&EndDate=' + escape(end) + '&ArticleQuery=' + escape(form.ArticleQuery.value);
        if (form.UseQuery.checked) data += '&UseQuery=1';
        var event = 
	        function (result) {
    	        container.innerHTML = result;
	        } // end event
        HttpRequest(SitePath + 'AJAX/GetArticlesPage.aspx?' + data, null, 'articles_container', event);
    } // end if
    return false;
} // end function

function MemberTypeChanged(select) {
    var type = select.value;
    var nodes = select.parentNode.parentNode.getElementsByTagName('LI');
    for (var i = 1; i < nodes.length - 1; i++) {
        nodes[i].style.display = ((type != '') && ((nodes[i].className == 'all') || (nodes[i].className.indexOf(type) >= 0))) ? 'list-item' : 'none';
    } // end for
} // end function

function ProcessRegistrationForm(form) {
    var container = document.getElementById('registration_container');
    if (container) {
        var data = '';
        for (var i = 0; i < form.elements.length; i++) {
            var element = form.elements[i];
            if (element.name) data += element.name + '=' + escape(element.value) + '&';
        } // end for
        var event = 
            function (result) {
	            var root = XmlRootByText(result);
	            var message = GetXmlNodeValue(GetXmlNodeByTagName(root, 'message'));
	            var html = GetXmlNodeValue(GetXmlNodeByTagName(root, 'html'));
	            if (message) alert(message);
	            if (html) container.innerHTML = html;
            } // end event
        HttpRequest(SitePath + 'AJAX/ProcessRegistrationForm.aspx', data, 'registration_container', event);
    } // end if
    return false;
} // end function

function ProcessPasswordResetForm(form) {
    var container = document.getElementById('password_reset_container');
    if (container) {
        var event = 
            function (result) {
	            var root = XmlRootByText(result);
	            var message = GetXmlNodeValue(GetXmlNodeByTagName(root, 'message'));
	            var html = GetXmlNodeValue(GetXmlNodeByTagName(root, 'html'));
	            if (message) alert(message);
	            if (html) container.innerHTML = html;
            } // end event
        HttpRequest(SitePath + 'AJAX/ProcessPasswordResetForm.aspx', 'Email=' + escape(form.email.value), 'password_reset_container', event);
    } // end if
    return false;
} // end function

function ProcessFeedbackForm(form) {
    var container = document.getElementById('feedback_container');
    if (container) {
        var data = 'Subject=' + escape(form.subject.value) + '&Body=' + escape(form.body.value);
        var event = 
            function (result) {
	            var root = XmlRootByText(result);
	            var message = GetXmlNodeValue(GetXmlNodeByTagName(root, 'message'));
	            var html = GetXmlNodeValue(GetXmlNodeByTagName(root, 'html'));
	            if (message) alert(message);
	            if (html) container.innerHTML = html;
            } // end event
        HttpRequest(SitePath + 'AJAX/ProcessFeedbackForm.aspx', data, 'feedback_container', event);
    } // end if
    return false;
} // end function

function ProcessAuthForm(form) {
    var container = document.getElementById('auth_container');
    if (container) {
        var data = 'Login=' + escape(form.login.value) + '&Password=' + escape(form.password.value);
        var event = 
            function (result) {
	            var root = XmlRootByText(result);
	            var message = GetXmlNodeValue(GetXmlNodeByTagName(root, 'message'));
	            var html = GetXmlNodeValue(GetXmlNodeByTagName(root, 'html'));
	            if (message) alert(message);
	            if (html) container.innerHTML = html;
            } // end event
        HttpRequest(SitePath + 'AJAX/ProcessAuthForm.aspx', data, 'auth_container', event);
    } // end if
    return false;
} // end function

function ProcessLogout() {
    var container = document.getElementById('auth_container');
    if (container) {
        var event = 
            function (result) {
	            container.innerHTML = result;
            } // end event
        HttpRequest(SitePath + 'AJAX/ProcessLogout.aspx', null, 'auth_container', event);
    } // end if
    return false;
} // end function

function ProcessChangePasswordForm(form) {
    var container = document.getElementById('change_password_container');
    if (container) {
        var data = '';
        for (var i = 0; i < form.elements.length; i++) {
            var element = form.elements[i];
            if (element.name) data += element.name + '=' + escape(element.value) + '&';
        } // end for
        var event = 
            function (result) {
	            var root = XmlRootByText(result);
	            var message = GetXmlNodeValue(GetXmlNodeByTagName(root, 'message'));
	            var html = GetXmlNodeValue(GetXmlNodeByTagName(root, 'html'));
	            if (message) alert(message);
	            if (html) container.innerHTML = html;
            } // end event
        HttpRequest(SitePath + 'AJAX/ProcessChangePasswordForm.aspx', data, 'change_password_container', event);
    } // end if
    return false;
} // end function

function CatalogueMapNodeClick(button, id) {
    var container = button.parentNode.parentNode;
    if (container.className == 'collapsed') {
        var childs = ChildTags(container, 'ul');
        if (childs.length > 0) {
            container.className = 'expanded';
        } else {
            var event = 
                function (result) {
                    container.innerHTML = container.innerHTML + result;
                    container.className = 'expanded';
                } // end event
            HttpRequest(SitePath + 'AJAX/GetCatalogueMapBranch.aspx?ParentGroupID=' + id, null, 'catalogue_map', event);
        } // end if
    } else {
        container.className = 'collapsed';
    } // end if
    return false;
} // end function

function CheckGoodsSearchRelevance(select, param) {
    var id = parseInt(select.value);
    var relevance, enabled, editors, k;
    var cites = select.parentNode.parentNode.getElementsByTagName('cite');
    for (var i = 0; i < cites.length; i++) {
        if (cites[i].className == param) {
            relevance = ',' + cites[i].innerHTML + ',';
            enabled = (!select.disabled && (!id || (relevance.indexOf(',' + id + ',') >= 0))) ? true : false;
            editors = cites[i].parentNode.getElementsByTagName('input');
            for (k = 0; k < editors.length; k++) {
                editors[k].disabled = !enabled;
                if (!enabled) editors[k].value = '';
            } // end for
            editors = cites[i].parentNode.getElementsByTagName('select');
            for (k = 0; k < editors.length; k++) {
                editors[k].disabled = !enabled;
                if (!enabled) editors[k].value = '';
                if (editors[k].onchange) editors[k].onchange();
            } // end for
        } // end if
    } // end for
} // end function

function ProcessCatalogueSearchForm(form, pageSize) {
    var container = document.getElementById('catalogue_container');
    if (container) {
        var data = '';
        for (var i = 0; i < form.elements.length; i++) {
            var element = form.elements[i];
            if (element.name) data += element.name + '=' + escape(element.value) + '&';
        } // end for
        data += 'PageIndex=0&PageSize=' + pageSize;
        var event = 
            function (result) {
	            container.innerHTML = result;
            } // end event
        HttpRequest(SitePath + 'AJAX/GetCatalogueSection.aspx?' + data, null, 'catalogue_container', event);
    } // end if
    return false;
} // end function

function AddGoodsToBag(id) {
    var event = 
        function (result) {
            var root = XmlRootByText(result);
            var message = GetXmlNodeValue(GetXmlNodeByTagName(root, 'message'));
            var html = GetXmlNodeValue(GetXmlNodeByTagName(root, 'html'));
            if (message) alert(message);
            if (html) {
                var container = document.getElementById('bag_state');
                if (container) container.innerHTML = html;
            } // end if
        } // end event
    HttpRequest(SitePath + 'AJAX/AddGoodsToBag.aspx?GoodsID=' + id, null, 'bag', event);
    return false;
} // end function

function BagGridHeaderClick(cb, rowName) {
    var container = cb.parentNode.parentNode.parentNode;
    var inputs = container.getElementsByTagName('input');
    for (var i = 0; i < inputs.length; i++)
        if ((inputs[i].name) && (inputs[i].name == rowName))
            inputs[i].checked = cb.checked;
} // end function

function BagGridRowClick(cb, headerName) {
    var container = cb.parentNode.parentNode.parentNode;
    var inputs = container.getElementsByTagName('input');
    var checked = true;
    var header = null
    for (var i = 0; i < inputs.length; i++) {
        if (inputs[i].name) {
            if (inputs[i].name == headerName) header = inputs[i];
            if (inputs[i].name == cb.name) checked = checked && (inputs[i].checked);
        } // end if
    } // end for
    if (header) header.checked = checked;
} // end function

function UpdateBagGoodsCount() {
    var container = document.getElementById('bag_goods_container');
    if (container) {
        var data = '';
        var inputs = container.getElementsByTagName('input');
        for (var i = 0; i < inputs.length; i++)
            if (inputs[i].changed)
                data += inputs[i].name + '=' + escape(inputs[i].value) + '&';
        if (data.length > 0) {
            var event = 
                function (result) {
                    var root = XmlRootByText(result);
                    var html = GetXmlNodeValue(GetXmlNodeByTagName(root, 'html'));
                    var state = GetXmlNodeValue(GetXmlNodeByTagName(root, 'state'));
                    container.innerHTML = html;
                    var bagState = document.getElementById('bag_state');
                    if (bagState) bagState.innerHTML = state;
                } // end event
            HttpRequest(SitePath + 'AJAX/UpdateBagGoodsCount.aspx', data, 'bag', event);
        } // end if
    } // end if
    return false;
} // end function

function RemoveGoodsFromBag() {
    var container = document.getElementById('bag_goods_container');
    if (container) {
        var ids = new Array();
        var inputs = container.getElementsByTagName('input');
        for (var i = 0; i < inputs.length; i++)
            if ((inputs[i].name) && (inputs[i].name == 'RemoveGoods') && (inputs[i].checked))
                ids.push(inputs[i].value);
        if (ids.length > 0) {
            var event = 
                function (result) {
                    var root = XmlRootByText(result);
                    var html = GetXmlNodeValue(GetXmlNodeByTagName(root, 'html'));
                    var state = GetXmlNodeValue(GetXmlNodeByTagName(root, 'state'));
                    container.innerHTML = html;
                    var bagState = document.getElementById('bag_state');
                    if (bagState) bagState.innerHTML = state;
                } // end event
            HttpRequest(SitePath + 'AJAX/RemoveGoodsFromBag.aspx', 'RemoveGoods=' + ids.join(','), 'bag', event);
        } // end if
    } // end if
    return false;
} // end function

function PaymentWayChanged(select) {
    var type = select.value;
    var nodes = select.parentNode.parentNode.getElementsByTagName('LI');
    for (var i = 1; i < nodes.length - 1; i++) {
        nodes[i].style.display = ((type != '') && ((nodes[i].className == 'all') || (nodes[i].className.indexOf(type) >= 0))) ? 'list-item' : 'none';
    } // end for
} // end function

function ProcessGoodsOrderForm(form) {
    var container = document.getElementById('bag_goods_container');
    if (container) {
        var data = '';
        for (var i = 0; i < form.elements.length; i++) {
            var element = form.elements[i];
            if (element.name) data += element.name + '=' + escape(element.value) + '&';
        } // end for
        var event = 
            function (result) {
	            var root = XmlRootByText(result);
	            var message = GetXmlNodeValue(GetXmlNodeByTagName(root, 'message'));
	            var html = GetXmlNodeValue(GetXmlNodeByTagName(root, 'html'));
                var orders = GetXmlNodeValue(GetXmlNodeByTagName(root, 'orders'));
                var state = GetXmlNodeValue(GetXmlNodeByTagName(root, 'state'));
	            if (message) alert(message);
	            if (html) container.innerHTML = html;
	            if (orders) {
                    var ordersContainer = document.getElementById('bag_orders_container');
                    if (ordersContainer) ordersContainer.innerHTML = orders;
	            } // end if
	            if (state) {
                    var bagState = document.getElementById('bag_state');
                    if (bagState) bagState.innerHTML = state;
                } // end if
            } // end event
        HttpRequest(SitePath + 'AJAX/ProcessGoodsOrderForm.aspx', data, 'bag', event);
    } // end if
    return false;
} // end function

function ChangeMemberOrder(operation, id) {
    var container = document.getElementById('bag_orders_container');
    if (container) {
        var data = 'Operation=' + escape(operation) + '&OrderID=' + id;
        var event = 
            function (result) {
                container.innerHTML = result;
            } // end event
        HttpRequest(SitePath + 'AJAX/ChangeMemberOrder.aspx', data, 'bag', event);
    } // end if
    return false;
} // end function

function ChangeMemberOrders(operation) {
    var container = document.getElementById('bag_orders_container');
    if (container) {
        var ids = new Array();
        var inputs = container.getElementsByTagName('input');
        for (var i = 0; i < inputs.length; i++)
            if ((inputs[i].name) && (inputs[i].name == 'SelectedOrders') && (inputs[i].checked))
                ids.push(inputs[i].value);
        if (ids.length > 0) {
            var data = 'Operation=' + escape(operation) + '&SelectedOrders=' + ids;
            var event = 
                function (result) {
	                container.innerHTML = result;
                } // end event
            HttpRequest(SitePath + 'AJAX/ChangeMemberOrders.aspx', data, 'bag', event);
        } // end if
    } // end if
    return false;
} // end function

