twoNets = new Object();
twoNets.lang = new Object();

window.addEvent('domready', function() {

    $$(".utc_time").each(function(el) {
        var arr = Array();
        arr['time'] = el.innerHTML;
        el.innerHTML = convertTimeUTC(arr);
    });

});

if (typeof(HTMLElement) != "undefined") {
    var _emptyTags = {
        "IMG": true,
        "BR": true,
        "INPUT": true,
        "META": true,
        "LINK": true,
        "PARAM": true,
        "HR": true
    };

    HTMLElement.prototype.__defineGetter__("outerHTML", function () {
        var attrs = this.attributes;
        var str = "<" + this.tagName;
        for (var i = 0; i < attrs.length; i++)
            str += " " + attrs[ i ].name + "=\"" + attrs[ i ].value + "\"";

        if (_emptyTags[this.tagName])
            return str + ">";

        return str + ">" + this.innerHTML + "</" + this.tagName + ">";
    });

    HTMLElement.prototype.__defineSetter__("outerHTML", function (sHTML) {
        var r = this.ownerDocument.createRange();
        r.setStartBefore(this);
        var df = r.createContextualFragment(sHTML);
        this.parentNode.replaceChild(df, this);
    });
}

var fucked_IE = false;
if (navigator.userAgent.indexOf ("MSIE") != -1) fucked_IE = true;
var toggles = Array();

var tree;
var treeArray;

/*
params - набор значений и параметров, где
	params['time'] - время в unix timestamp;
	params['onlyDate'] - флаг только дата;
	params['utc'] - добавлять ко времени (GMT+3);
	params['server_time_utc'] - utc сервера;
*/
function convertTimeUTC(params) {
    if (!isInteger(params['time'])) return params['time'];
    var time = parseInt(params['time']);
    if (!time > 0) return '';
    var onlyDate = (isNaN(params['onlyDate'])) ? 0 : params['onlyDate'];
    var utc = (isNaN(params['utc'])) ? 1 : params['utc'];
    var serverTimeUtc = (isNaN(params['server_time_utc'])) ? 3 : params['server_time_utc'];
    var userUtc = Cookie.read("user_time_utc");
    if (userUtc == null) userUtc = serverTimeUtc;
    var userUtcText = '';

    var date = new Date((time-(serverTimeUtc-userUtc)*60*60)*1000);
    if (userUtc > 0) userUtcText = '+' + userUtc;
    else if (userUtc < 0) userUtcText = userUtc;

    var day = date.getDate();
    var month = date.getMonth();
    var hours = date.getHours();
    var minutes = date.getMinutes();

    if (day < 10) day = '0'+day;
    if (hours < 10) hours = '0'+hours;
    if (minutes < 10) minutes = '0'+minutes;
    switch (month) {
        case 0:
            month = 'января';
            break;
        case 1:
            month = 'февраля';
            break;
        case 2:
            month = 'марта';
            break;
        case 3:
            month = 'апреля';
            break;
        case 4:
            month = 'мая';
            break;
        case 5:
            month = 'июня';
            break;
        case 6:
            month = 'июля';
            break;
        case 7:
            month = 'августа';
            break;
        case 8:
            month = 'сентября';
            break;
        case 9:
            month = 'октября';
            break;
        case 10:
            month = 'ноября';
            break;
        case 11:
            month = 'декабря';
            break;
    }
    if (onlyDate) return day + ' ' + month + ' ' + date.getFullYear() + ' г.';
    else return day + ' ' + month + ' ' + date.getFullYear() + ' г. ' + hours + ':' + minutes + ((utc) ? ' (GMT'+userUtcText+')' : '');
}

function isInteger(str) {
	if (str == "") return false;
	for (var i = 0; i < str.length; i++) {
		if ((str.charAt(i) < '0') || (str.charAt(i) > '9')) return false;
	}
	return true;
}

function showTree(jsonStr, loadTree, loadStr)
{
    if (jsonStr == "") return;
    var json = JSON.parse(jsonStr);
    tree = new Mif.Tree(
    {
        container: $('interests_tree'),
        forest: true,
        initialize: function(){
            this.initCheckbox('simple');
            new Mif.Tree.KeyNav(this);
        },
        types:
        {
            folder:{
                openIcon: 'mif-tree-open-icon',
                closeIcon: 'mif-tree-close-icon'
            }
        },
        onCheck: function(node){
            if (node.name == "") return;
            arr.push(node.id);
            $('tvrubrics_tree').value = arr.join(";");
        },
        onUnCheck: function(node){
            if (node.name == "") return;
            arr.erase(node.id);
            $('tvrubrics_tree').value = arr.join(";");
        },
        dfltType:'folder',
        height:20
    });
    tree.load({
        json: json
    });
    if (loadTree) {
        treeArray = Array();
        treeArray = loadStr.split(";");

        tree.root.recursive( function() {
            if (treeArray.indexOf(String(this.id)) != -1) {
                this['switch']();
            }

        } );
    }
}

function clearElement(elName, inner)
{
    var el = $(elName);
    if (inner) {
        while (el.firstChild.childNodes.length > 0){
            el.firstChild.removeChild(el.firstChild.firstChild);
        }
        el.innerHTML = "";
    }
    else {
        el.value = "";
    }
}

function checkSpaces(el, inner, alertText)
{
    var str = "";
    if (inner) {
        str = $(el).outerHTML;
        alert(str);
    }
    else str = $(el).value;
    str = str.replace(/[\s+]/g, "");
    if (str.length == 0) {
        alert("В поле \"" + alertText + "\" не должны содержаться только пробелы, символы табуляции и переноса!");
        return false;
    }
    else return true;
}

function checkMaxTextSize(el, elCaption, maxSize)
{
    var str = $(el).value;
    if (str.length > maxSize) {
        alert("Текст в поле \"" + elCaption + "\" превышает " + maxSize + " символов. Вы ввели " + str.length + " символов");
        return false;
    }
    else return true;
}

function showCustomTree(jsonStr, el, onSelectFunc)
{
    if (jsonStr == "") return;
    var json = JSON.parse(jsonStr);
    var tree = new Mif.Tree({
        container: $(el),
        forest: true,
        types: {
            folder:{
                openIcon: 'mif-tree-open-icon',
                closeIcon: 'mif-tree-close-icon'
            }
        },
        onSelect: onSelectFunc,
        dfltType:'folder',
        height:20
    });
    tree.load({
        json: json
    });
}


function setTogglesFromCookie()
{
    if (Cookie.read("toggles") == null) return;
    toggles = Cookie.read("toggles").split(".");
    toggles.each(function(el) {
        var box = $(el + "_innertube");
        var toggler = $(el);
		
        if (toggler == null) return;
        if (box == null) return;
		
        box.style.height = "0px";
		
        toggler.style.backgroundImage = "url(assets/templates/cab/img/blockopener.jpg)";
        toggler.store("toggled", true);
    });
}

function setClass(el, className)
{
    if (fucked_IE) {
        $(el).className = className;
    }
    else {
        $(el).setAttribute("class", className);
    }
}

function expandSearch()
{
    setClass("search_menu_div", "hidden_el");
    setClass("search_menu_div_exp", "search_menu_div_exp");
    if ($("search_str").value == "Поиск...") $("search_str_exp").value = "";
    $("search_str_exp").focus();
}

function collapseSearch()
{
    if ($("search_str_exp").value != "") return;
    $("search_str").value = "Поиск...";
    setClass("search_menu_div_exp", "hidden_el");
    setClass("search_menu_div", "search_menu_div");
}

MochaUI.composeMsgWnd = function(content) {
    new MochaUI.Window({
        id: 'composemsg',
        title: 'Создание сообщения',
        content: content,
        resizable: false,
        width: 520,
        height: 280
    });
};

function composeMessage() {
    new Request({
        method: "post",
        data: "action=" + "web/message/compose",
        onSuccess: function(response) {
            MochaUI.composeMsgWnd(response);
        },
        onFailure: function() {
            MochaUI.notification("Ошибка при выполнении запроса!");
        },
        url: "assets/components/2nets/connector.php"
    }).send();
}

function sendMsgToUser(id) {
    new Request({
        method: "get",
        data: "id=" + id,
        onSuccess: function(response) {
            $("user_msg_div").innerHTML = response;
        },
        onFailure: function() {
            MochaUI.notification("Ошибка при создании сообщения");
        },
        url: "ajaxrequest?action=composemsgforuser"
    }).send();
}

function sendMessage(id) {
    if ($("msg_theme").value == "") {
        alert("Введите тему сообщения!");
        return;
    }
    if ($("msg_content").value == "") {
        alert("Введите содержание сообщения!");
        return;
    }
    new Request({
        method: "post",
        data: "action=" + "web/message/add" +
        "&id=" + id + "&theme=" + $('msg_theme').value + "&content=" + $('msg_content').value,
        onSuccess: function(response) {
            MochaUI.closeWindow($("composemsg"));
        },
        onFailure: function() {
            //MochaUI.notification("Ошибка при отправке сообщения");
            MochaUI.notification(_("request_error"));
        },
        //url: "ajaxrequest?action=sendmessage"
        url: "assets/components/2nets/connector.php"
    }).send();

/*
        data: "action=" + "web/partner/getform",
        onSuccess: function(response) {
            resp = JSON.parse(response);
            if (resp.success) {
                MochaUI.addPartnerWnd(resp.message);
                searchPartners(1);
            }
            else {
                MochaUI.notification(resp.message);
            }
        },
        onFailure: function() {
            MochaUI.notification(_("request_error"));
        },
        url: "assets/components/2nets/connector.php"
    }).send();*/

}

function searchUsersForMsg() {
    if ($("msg_search_type").value == 1) {
        currentUsersMsgSearch = $("search_msg_str").value;
        showUsersPage(1);
    }
    if ($("msg_search_type").value == 2) {
        currentPartnersMsgSearch = $("search_msg_str").value;
        showPartnersPage(1);
    }
}

function cancelSendMessage() {
    MochaUI.closeWindow($("composemsg"));
}

var currentUsersMsgSearch = "%";
function showUsersPage(page) {
    new Request({
        method: "post",
        data: "action=" + "web/message/searchusers" + "&str=" + currentUsersMsgSearch + "&page=" + page,
        onSuccess: function(response) {
            if ($("paginate")) $("paginate").destroy();
            $("user_msg_div").outerHTML = response;
        },
        onFailure: function() {
            MochaUI.notification("Ошибка при поиске");
        },
        url: "assets/components/2nets/connector.php"
    }).send();
}

var currentPartnersMsgSearch = "%";

function showPartnersPage(page) {
    new Request({
        method: "post",
        data: "action=" + "web/message/searchpartners" + "&str=" + currentPartnersMsgSearch + "&page=" + page,
        onSuccess: function(response) {
            if ($("paginate")) $("paginate").destroy();
            $("user_msg_div").outerHTML = response;
        },
        onFailure: function() {
            MochaUI.notification("Ошибка при поиске");
        },
        url: "assets/components/2nets/connector.php"
    }).send();
}

function sendMessageToUser(id) {
    MochaUI.composeMsgWnd('<div id="user_msg_div"></div>');
    sendMsgToUser(id);
}

MochaUI.presentationWnd = function(content) {
    new MochaUI.Window({
        id: 'presentation',
        title: 'Просмотр презентации',
        content: content,
        width: 800,
        height: 600
    });
};

function showPresentation(link) {
    new Request({
        method: "get",
        onSuccess: function(response) {
            MochaUI.presentationWnd(response);
        },
        onFailure: function() {
            MochaUI.notification("Ошибка при загрузке презентации");
        },
        url: link
    }).send();
    return false;
}

var togglers = Array();

function collectToggleElements() {
    togglers = $$(".hider");
    togglers.each(function(el) {
        var box = $(el.id + "_innertube");
        if (box != null) el.store("original_height", box.getHeight());
		
        el.onclick = function() {
            var toggled = this.retrieve("toggled");
            var box = $(this.id + "_innertube");
			
            if (box == null) return;
			
            if (toggled == null) {
                toggled = false;
            }
			
            var myEffect = new Fx.Morph(box, {
                duration: 'normal'
            });
            if (toggled) {
                myEffect.start({
                    'height': this.retrieve("original_height")
                });
                this.store("toggled", false);
				
                this.style.backgroundImage = "url(assets/templates/cab/img/blockcloser.jpg)";
				
                toggles.erase(this.id);
            }
            else {
                myEffect.start({
                    'height': 0
                });
                this.store("toggled", true);
                this.style.backgroundImage = "url(assets/templates/cab/img/blockopener.jpg)";
				
                toggles.include(this.id);
            }
			
            Cookie.write("toggles", toggles.join("."));
        };
    });
}

var datePickers;
var currentDatePicker = null;

function stopEvent(e) {
    var event = e;
    if (window.event) event = window.event;
    if (event.stopPropagation) event.stopPropagation();
    else event.cancelBubble = true;
}

function collectDatePickers() {
    datePickers = $$(".date_picker");
    datePickers.each(function(el) {
        if ($(el.id+'_input'))
            new InputMask($(el.id+'_input'), {
                mask: '39.19.2999'
            });
        if ($(el.id+'_time_input'))
            new InputMask($(el.id+'_time_input'), {
                mask: '29:59'
            });
        el.onclick = function(e) {
            stopEvent(e);
			
            if (currentDatePicker == this) return;
			
            if (currentDatePicker != null) {
                $("date_picker_div").destroy();
            }

            currentDatePicker = this;
			
            var datePickerDiv = new Element("div", {
                "id": "date_picker_div"
            });
			
            datePickerDiv.style.position = "absolute";
            datePickerDiv.style.top = currentDatePicker.getPosition().y + "px";
            datePickerDiv.style.left = (currentDatePicker.getPosition().x + currentDatePicker.getWidth()) + "px";
            datePickerDiv.innerHTML = '<div id="dp"></div>';
			
            $(document.body).appendChild(datePickerDiv);
			
            swfobject.embedSWF("/assets/flash/cl.swf", "dp", "185px",
                "165px", "9", "expressInstall.swf", null, null);
        };
    });
    $(document.body).onclick = function() {
        if (currentDatePicker == null) return;
        if ($("date_picker_div") != null) $("date_picker_div").destroy();
        currentDatePicker = null;
    };
}

function setDateDateNYAAA(str) {
    if ($(currentDatePicker.id + "_input") != null) $(currentDatePicker.id + "_input").value = str;
    if ($("date_picker_div") != null) $("date_picker_div").destroy();
    currentDatePicker = null;
}

var _ = function(s,v) {
    if (v != null && typeof(v) == "object") {
        var t = ""+twoNets.lang[s];
        for (var k in v) {
            t = t.replace("[[+"+k+"]]",v[k]);
        }
        return t;
    } else return twoNets.lang[s];
}

function redirectToLoginPage() {
    location = "http://" + domain + "/login?callback=" + encodeURIComponent(location.href);
}
