﻿(function () {

    var DomReady = window.DomReady = {};
    var userAgent = navigator.userAgent.toLowerCase();
    var browser = {
        version: (userAgent.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/) || [])[1],
        safari: /webkit/.test(userAgent),
        opera: /opera/.test(userAgent),
        msie: (/msie/.test(userAgent)) && (!/opera/.test(userAgent)),
        mozilla: (/mozilla/.test(userAgent)) && (!/(compatible|webkit)/.test(userAgent))
    };

    var readyBound = false;
    var isReady = false;
    var readyList = [];

    function domReady() {
        if (!isReady) {
            isReady = true;
            if (readyList) {
                for (var fn = 0; fn < readyList.length; fn++) {
                    readyList[fn].call(window, []);
                }
                readyList = [];
            }
        }
    };

    function addLoadEvent(func) {
        var oldonload = window.onload;
        if (typeof window.onload != 'function') {
            window.onload = func;
        }
        else {
            window.onload = function () {
                if (oldonload) {
                    oldonload();
                }
                func();
            }
        }
    };

    function bindReady() {
        if (readyBound) {
            return;
        }
        readyBound = true;

        if (document.addEventListener && !browser.opera) {
            document.addEventListener("DOMContentLoaded", domReady, false);
        }

        if (browser.msie && window == top) (function () {
            if (isReady) return;
            try {
                document.documentElement.doScroll("left");
            } catch (error) {
                setTimeout(arguments.callee, 0);
                return;
            }
            domReady();
        })();

        if (browser.opera) {
            document.addEventListener("DOMContentLoaded", function () {
                if (isReady) return;
                for (var i = 0; i < document.styleSheets.length; i++)
                    if (document.styleSheets[i].disabled) {
                        setTimeout(arguments.callee, 0);
                        return;
                    }
                domReady();
            }, false);
        }

        if (browser.safari) {
            var numStyles;
            (function () {
                if (isReady) return;
                if (document.readyState != "loaded" && document.readyState != "complete") {
                    setTimeout(arguments.callee, 0);
                    return;
                }
                if (numStyles === undefined) {
                    var links = document.getElementsByTagName("link");
                    for (var i = 0; i < links.length; i++) {
                        if (links[i].getAttribute('rel') == 'stylesheet') {
                            numStyles++;
                        }
                    }
                    var styles = document.getElementsByTagName("style");
                    numStyles += styles.length;
                }
                if (document.styleSheets.length != numStyles) {
                    setTimeout(arguments.callee, 0);
                    return;
                }
                domReady();
            })();
        }

        addLoadEvent(domReady);
    };

    DomReady.ready = function (fn, args) {
        bindReady();

        if (isReady) {
            fn.call(window, []);
        }
        else {
            readyList.push(function () { return fn.call(window, []); });
        }
    };

    bindReady();

})();

var site = 'http://www.startupafisha.ru/';
var site = 'http://www.startupafisha.ru/';

if (!Array.indexOf) {
    Array.prototype.indexOf = function (obj) {
        for (var i = 0; i < this.length; i++) {
            if (this[i] == obj) {
                return i;
            }
        }
        return -1;
    }
}

var JSONP = function (global) {
    // (C) WebReflection Essential - Mit Style
    // 216 bytes minified + gzipped via Google Closure Compiler
    function JSONP(uri, callback) {
        function JSONPResponse() {
            try { delete global[src] } catch (e) {
                // kinda forgot < IE9 existed
                // thanks @jdalton for the catch
                global[src] = null
            }
            documentElement.removeChild(script);
            callback.apply(this, arguments);
        }
        var 
			src = prefix + id++,
			script = document.createElement("script")
		;

        global[src] = JSONPResponse;
        documentElement.insertBefore(
			script,
			documentElement.lastChild
		).src = uri + "=" + src;
    }
    var 
		id = 0,
		prefix = "__JSONP__",
		document = global.document,
		documentElement = document.documentElement
	;
    return JSONP;
} (this);

function calendar(holder) {
    this.cur_region = '';
    this.oDate = new Date();
    this.year = (this.year == null) ? this.oDate.getFullYear() : this.year;
    this.month = this.oDate.getMonth();
    this.today = this.oDate.getDay()
    this.daysTotal = new Date(this.year, this.month + 1, 0).getDate();
    this.firstDay = new Date(this.year, this.month, 1).getDay();

    this.holder = holder;
    this.months = ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'];
    this.days = ['Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб', 'Вс'];

    this.countMonth = countMonth;

    function countMonth() {
        this.daysTotal = new Date(this.year, this.month + 1, 0).getDate();
        this.firstDay = new Date(this.year, this.month, 1).getDay();
    }

    this.render = function () {
        var cal_obj = this;
        JSONP(site + 'events/get_event/?year=' + cal_obj.year + '&month=' + cal_obj.month + '&region=' + cal_obj.cur_region + '&jsonp=',
			function (_response) {

			    function dc(el) {
			        return document.createElement(el);
			    }

			    function ct(el) {
			        return document.createTextNode(el);
			    }

			    var div_header = dc('div');
			    div_header.id = 'head_calendar';

			    var header_link = dc('div');
			    header_link.id = 'head_link';

			    var table = dc("table");
			    table.id = "table_calendar";

			    var origin_size = 100;
			    if (document.getElementById('__startupafisha').offsetWidth <= 700) {
			        var size_holder = document.getElementById('__startupafisha').style.fontSize;
			        if (origin_size == 0) { origin_size = size_holder; } else { size_holder = origin_size }
			        var global_font_size = document.getElementById('__startupafisha').offsetWidth / 700 * size_holder;
			        document.getElementById('__startupafisha').style.fontSize = global_font_size * 0.3 + 'px';
			        div_header.style.fontSize = global_font_size * 0.3 + 'px';
			        header_link.style.fontSize = global_font_size * 0.4 + 'px';
			        table.style.fontSize = global_font_size + 'px';
			    }

			    hlink = dc('a');
			    hlink.setAttribute('href', 'http://startupafisha.ru/');
			    hlink.setAttribute('target', '_blank');
			    hlink.setAttribute('title', 'Календарь Стартап Афиши');
			    ltext = ct('Календарь Стартап Афиши');
			    hlink.appendChild(ltext);
			    header_link.appendChild(hlink);
			    div_header.appendChild(header_link);


			    var region = dc('select');
			    region.id = "select_reg";
			    var reg = { "all": "\u0412\u0441\u0435 \u0440\u0435\u0433\u0438\u043e\u043d\u044b", "samara": "\u0421\u0430\u043c\u0430\u0440\u0430", "novosibirsk": "\u041d\u043e\u0432\u043e\u0441\u0438\u0431\u0438\u0440\u0441\u043a", "izhevsk": "\u0418\u0436\u0435\u0432\u0441\u043a", "moskva": "\u041c\u043e\u0441\u043a\u0432\u0430", "kitaj": "\u041a\u0438\u0442\u0430\u0439", "kaliningrad": "\u041a\u0430\u043b\u0438\u043d\u0438\u043d\u0433\u0440\u0430\u0434", "malajziya": "\u041c\u0430\u043b\u0430\u0439\u0437\u0438\u044f", "perm": "\u041f\u0435\u0440\u043c\u044c", "yaroslavl": "\u042f\u0440\u043e\u0441\u043b\u0430\u0432\u043b\u044c", "tajland": "\u0422\u0430\u0438\u043b\u0430\u043d\u0434", "krasnodar": "\u041a\u0440\u0430\u0441\u043d\u043e\u0434\u0430\u0440", "europe": "\u0415\u0432\u0440\u043e\u043f\u0430", "korea": "\u041a\u043e\u0440\u0435\u044f", "ekaterinburg": "\u0415\u043a\u0430\u0442\u0435\u0440\u0438\u043d\u0431\u0443\u0440\u0433", "omsk": "\u041e\u043c\u0441\u043a", "kaluga": "\u041a\u0430\u043b\u0443\u0433\u0430", "nizhnij-novgorod": "\u041d\u0438\u0436\u043d\u0438\u0439 \u041d\u043e\u0432\u0433\u043e\u0440\u043e\u0434", "tomsk": "\u0422\u043e\u043c\u0441\u043a", "ukraina": "\u0423\u043a\u0440\u0430\u0438\u043d\u0430", "kazan": "\u041a\u0430\u0437\u0430\u043d\u044c", "ssha": "\u0421\u0428\u0410", "minsk": "\u041c\u0438\u043d\u0441\u043a", "voronezh": "\u0412\u043e\u0440\u043e\u043d\u0435\u0436", "sankt-peterburg": "\u0421\u0430\u043d\u043a\u0442-\u041f\u0435\u0442\u0435\u0440\u0431\u0443\u0440\u0433", "almaty": "\u0410\u043b\u043c\u0430\u0442\u044b", "saratov": "\u0421\u0430\u0440\u0430\u0442\u043e\u0432", "cheboksary": "\u0427\u0435\u0431\u043e\u043a\u0441\u0430\u0440\u044b" };
			    for (i in reg) {
			        var option = dc('option')
			        //option.text = reg[i];
			        option.appendChild(ct(reg[i]));
			        option.value = i;
			        if (cal_obj.cur_region == i) {
			            option.setAttribute('selected', 'true');
			            //region.title = reg[i];
			        }
			        region.appendChild(option);
			    }

			    region.onchange = function (selected) {
			        selected = this;
			        //selected = (selected) ? selected : this;
			        //selected = (selected.currentTarget) ? selected.currentTarget : selected.srcElement;
			        //cal_obj.cur_region = region[selected.selectedIndex].value;
			        cal_obj.cur_region = selected.value;
			        cal_obj.render();
			    };
			    div_header.appendChild(region);

			    if (cal_obj.cur_region == '') {
			        cal_obj.cur_region = region[region.selectedIndex].value;
			    }

			    var mo = dc('select');
			    mo.id = "select_mo";
			    for (var i = 0; i < cal_obj.months.length; i++) {
			        var option = dc('option')
			        //option.text = cal_obj.months[i];
			        option.appendChild(ct(cal_obj.months[i]));
			        option.value = i;
			        if (i == cal_obj.month) {
			            option.setAttribute('selected', 'true');
			        }
			        mo.appendChild(option);
			    }
			    mo.onchange = function (selected) {
			        selected = this;
			        //selected = (selected.currentTarget) ? selected.currentTarget : selected.srcElement;
			        cal_obj.month = selected.selectedIndex;
			        cal_obj.countMonth();
			        cal_obj.render();
			    };
			    div_header.appendChild(mo);

			    var ye = dc('select');
			    ye.id = "select_ye";
			    var option = dc('option')
			    //option.text = cal_obj.year;
			    option.appendChild(ct(cal_obj.year));
			    option.value = cal_obj.year;
			    ye.appendChild(option);
			    div_header.appendChild(ye);

			    var tbody = dc("tbody");
			    var tr = dc("tr");

			    for (i = 0; i < 7; i++) {
			        var day_caption = ct(cal_obj.days[i]);
			        var th = dc("th");
			        th.appendChild(day_caption);
			        tr.appendChild(th);
			        tbody.appendChild(tr);
			    }

			    table.appendChild(tbody);

			    if (cal_obj.firstDay == 0) cal_obj.firstDay = 7;
			    var v = Math.ceil((cal_obj.daysTotal + cal_obj.firstDay - 1) / 7)
			    var tbody = dc("tbody");
			    var day = 1;
			    for (i = 0; i < v; i++) {
			        var tr = dc("tr");
			        for (j = 0; j < 7; j++) {
			            if (day <= cal_obj.daysTotal && (i > 0 || j >= cal_obj.firstDay - 1)) {
			                var day_n = ct(day);
			                var td = dc("td");
			                if (_response.indexOf(day) != -1) {
			                    ahref = dc('a');
			                    ahref.setAttribute('href', site + 'events/' + cal_obj.cur_region + '/' + cal_obj.year + '/' + (cal_obj.month + 1) + '/' + day + '/');
			                    ahref.appendChild(day_n);
			                    ahref.onclick = function () {
			                        document.getElementById('popup').className = 'show';
			                        document.getElementById('popupoverlay').className = 'show';
			                        document.getElementById('framik').src = this.href;
			                        return false;
			                    }
			                    td.appendChild(ahref);
			                    td.className = "number current";
			                }
			                else {
			                    td.className = "number";
			                    td.appendChild(day_n);
			                }
			                tr.appendChild(td)
			                day = day + 1;
			            }
			            else {
			                var empty = document.createTextNode(" ");
			                var td = dc("td");
			                td.className = "number";
			                td.appendChild(empty);
			                tr.appendChild(td);
			            }
			            tbody.appendChild(tr)
			        }
			        table.appendChild(tbody);
			    }
			    var holder = document.getElementById(cal_obj.holder);
			    if (holder.lastChild) holder.removeChild(holder.lastChild);
			    if (holder.lastChild) holder.removeChild(holder.lastChild);
			    holder.appendChild(div_header);
			    holder.appendChild(table);

			    cal_obj.cells = document.getElementById(cal_obj.holder).getElementsByTagName("tbody")[1].getElementsByTagName('td');
			}
		);
    }
}

function cdd(tag, elclass, id) {
    var _ = document.createElement(tag);
    if (id != '') {
        _.id = id;
    }
    if (elclass != '') {
        _.className = elclass;
    }
    return _;
}

function cd(elclass, id) {
    var _ = document.createElement('div');
    if (id != '') {
        _.id = id;
    }
    if (elclass != '') {
        _.className = elclass;
    }
    return _;
}

DomReady.ready(function () {
    //alert('dom is ready');
    var sa_css = document.createElement('link');
    sa_css.rel = 'stylesheet';
    sa_css.href = '/content/startupafisha.css';
    sa_css.type = 'text/css';
    var tag_head = document.getElementsByTagName('head');
    tag_head[0].appendChild(sa_css);

    var iframe = document.createElement('iframe');
    iframe.id = 'framik';
    iframe.scrolling = "auto";
    iframe.frameborder = "0";
    iframe.style.border = '0';
    iframe.style.overflow = 'hidden';
    iframe.style.width = '100%';
    iframe.style.height = '500px';
    iframe.style.backgroundColor = '#F4F4F4';
    iframe.allowTransparency = false

    var _a = cd('hide', 'popup');
    var _b = cd('close_wrap', '');
    var _c = cdd('a', 'close_btn', 'clsbtb');
    _b.appendChild(_c);
    _a.appendChild(_b);
    var _e = cd('popup_body', '');
    var _j = cd('block_content');
    _j.appendChild(iframe);
    _e.appendChild(_j);
    _a.appendChild(_e);

    var _b = cd('hide', 'popupoverlay');
    var _main = cd('', 'main__startupafisha');
    document.getElementById('__startupafisha').appendChild(_main);
    document.getElementById('__startupafisha').appendChild(_a);
    document.getElementById('__startupafisha').appendChild(_b);

    document.getElementById('clsbtb').onclick = function () {
        document.getElementById('popup').className = 'hide';
        document.getElementById('popupoverlay').className = 'hide';
    }
    document.getElementById('popupoverlay').onclick = function () {
        document.getElementById('popup').className = 'hide';
        document.getElementById('popupoverlay').className = 'hide';
    }
    document.getElementById('popup').onclick = function () {
        document.getElementById('popup').className = 'hide';
        document.getElementById('popupoverlay').className = 'hide';
    }

    cal = new calendar("main__startupafisha");
    cal.render();
});

