﻿var accordion = new Array();
accordion[0] = new Array();
accordion[1] = new Array();

var siteAccordion0State = new Array();
siteAccordion0State[0] = 0;
siteAccordion0State[1] = 0;

var W3CDOM = (document.createElement && document.getElementsByTagName);

function initFileUploads() {
	if (!W3CDOM) return;
	var fakeFileUpload = document.createElement('div');
	fakeFileUpload.className = 'fakefile';
	fakeFileUpload.appendChild(document.createElement('input'));
	var x = document.getElementsByTagName('input');
	for (var i=0;i<x.length;i++) {
		if (x[i].type != 'file') continue;
		if (x[i].parentNode.className != 'fileinputs') continue;
		x[i].className = 'file hidden';
		var clone = fakeFileUpload.cloneNode(true);
		x[i].parentNode.appendChild(clone);
		x[i].relatedElement = clone.getElementsByTagName('input')[0];
		x[i].onchange = x[i].onmouseout = function () {
			this.relatedElement.value = this.value;
		}
	}
}


function login(){
    $.ajax({ 
        type: "POST",  
        cache: false,
        url: "ajaxAccount.php",
        data: "mod=login&" + $('#loginForm').serialize(), 
        success: function(msg){
            if (msg.match(/1/)) $('#loginForm').submit();
            else $('#message').html('Вы ввели неверный логин или пароль!');
        }
    });
}

function statAccordion(i, child_id, period, site_id, since, to){
    if (accordion[i] == 1) $('#slideAl' + i).slideToggle(300);
    else if (accordion[i] != -1){
        accordion[i] = -1;
        $.ajax({
            type: "POST",
            cache: false,
            url: "ajaxAccount.php",
            data: "mod=statAccordion&child_id=" + child_id + "&period=" + period + "&site_id=" + site_id + "&since=" + since + "&to=" + to,
            success: function(msg){
                accordion[i] = 1;
                $('#slideAl' + i).html(msg);
                $('#slideAl' + i).slideToggle(300);
            }
        });
    }
}

function childAccordion(id){
    if (accordion[id] == 1){
        $('#slideAl' + id).slideUp(300);  // TODO: optimize ajax - delete from children in mysql
        if (id == 0) $('#niz').css('margin-top', '0');
        accordion[id] = 0;
    } else if (accordion[id] != -1){
        accordion[id] = -1;
        $.ajax({
            type: "POST",
            cache: false,
            url: "ajaxAccount.php",
            data: "mod=childAccordion&id=" + id,
            success: function(msg){
                accordion[id] = 1;
                $('#slideAl' + id).html(msg);
                $('#slideAl' + id).slideDown(300);
                if (id == 0) $('#niz').css('margin-top', '6px');
            }
        });
    }
}

function siteAccordion(id, state, blacklist){
	// для нижнего аккордеона
	if ((state == undefined) || ((state != 1) && (state != 2) && (state != 3))) state = 0;
	if (blacklist == undefined) blacklist = 0;
	
	if (($('#premium').attr('value') == '0') && (parseInt($('#special-sites-count-' + blacklist).attr('value')) > 3)){
		return;
	}
	
    if (accordion[blacklist][id] == 1){
        $("#slideAl" + blacklist + "-" + id).slideUp(100); 
        accordion[blacklist][id] = 0;
        if (id == 0){
        	if (state == siteAccordion0State[blacklist]) $('#niz' + blacklist).css('margin-top', '0');
        	else siteAccordion(0, state, blacklist);
        }
    } else if (accordion[blacklist][id] != -1){
        accordion[blacklist][id] = -1;
        $.ajax({
            type: "POST",
            cache: false,
            url: "ajaxAccount.php",
            data: "mod=siteAccordion&id=" + id + (state ? "&state=" + state : "") + "&blacklist=" + blacklist,
            success: function(msg){
                accordion[blacklist][id] = 1;
                $("#slideAl" + blacklist + "-" + id).html(msg);
                $("#slideAl" + blacklist + "-" + id).slideDown(100);
                if (id == 0){
                	siteAccordion0State[blacklist] = state;
                	$('#niz' + blacklist).css('margin-top', '6px');
                }
            }
        });
    }
}

var timemanager = new Array();

function updateCell(child_id, i, j, v){
    if (i == -1){
        var unselected = false;
        for (k = 0; k < 7; k++)
            if (timemanager[child_id][k][j] == 0){
                unselected = true;
                break;
            }

        if (unselected) v = 1;
        else v = 0;

        for (k = 0; k < 7; k++) updateCell(child_id, k, j, v);
        return;
    }
    if (j == -1){
        var unselected = false;
        for (k = 0; k < 24; k++)
            if (timemanager[child_id][i][k] == 0){
                unselected = true;
                break;
            }

        if (unselected) v = 1;
        else v = 0;

        for (k = 0; k < 24; k++) updateCell(child_id, i, k, v);
        return;
    }

	if (v == -1) v = (timemanager[child_id][i][j] - 1) * (-1);
	timemanager[child_id][i][j] = v;

	$('#cell' + child_id.toString() + '-' + i.toString() + '-' + j.toString()).css('background-image', v == 1 ? 'url("img/active_cell_bg.png")' : 'url("img/inactive_cell_bg.png")');
}

function highlight(id, isName){
    if (isName) id = "*[name='" + id + "']";
    $(id).css('background-color', '#FDD');
}

function fhighlight(formId, name){
	$("#" + formId + " *[name='" + name + "']").css('background-color', '#FDD');
}

function unhighlight(id){
    $(id).css('background-color', '');
}

function siteSave(id, blacklist){ 
    $.ajax({
        type: "POST",
        cache: false,
        url: "ajaxAccount.php",
        data: "mod=siteAddEdit&id=" + id + "&" + $('#siteForm' + id).serialize(),
        success: function(msg){
    		//alert(msg);return;
    		if (msg == '1') alert('Вы не выбрали ни одного ребенка.');
    		else if (msg == '2') alert('Некорректно введен адрес сайта.');
    		else if (msg == '3') alert('У Вас добавлено более 3-х сайтов. Редактировать сайты в стандартном аккаунте можно, когда их не более 3-х.');
    		else if (msg == '4') alert('Вы не можете добавить новый сайт. Лимит сайтов в стандартном аккаунте: 3.');
    		else {
                if (id == '0') location.reload();
                else {
                	el = msg.split('|');
                	$('#h3top' + blacklist + '-' + id).html(el[0]);
                	$('#ch' + blacklist + '-' + id).html(el[1]);
                    accordion[blacklist][id] = 0;
                    $('#slideAl' + blacklist + '-' + id).slideUp(300);
                }
            }
        }
    });
}

function deleteSite(id, blacklist){
    if (!confirm('Вы действительно хотите удалить сайт из списка?')) return true;
    $.ajax({
        type: "POST",
        cache: false,
        url: "ajaxAccount.php",
        data: "mod=siteDelete&id=" + id,
        success: function(msg){
    		if ($('#premium').attr('value') == '1'){
	            $('#slideTop' + blacklist + '-' + id).slideUp(300);
	            $('#slideAl' + blacklist + '-' + id).slideUp(300);
    		} else location.href = window.location;
        }
    });
}

function childSave(id, n){
    var tm = "";
    for (i = 0; i < 7; i++)
        for (j = 0; j < 24; j++)
            if (timemanager[id][i][j]) tm += "&tm[" + i + "][" + j + "]=1";

    $.ajax({
        type: "POST",
        cache: false,
        url: "ajaxAccount.php",
        data: "mod=childAddEdit&id=" + id + "&" + $('#childForm' + id).serialize() + tm,
        success: function(msg){
            if (msg == ""){
                if (n == '1') location.reload();
                else {
                    accordion[id] = 0;
                    $('#slideAl' + id).slideUp(300);
                }
            } else {
                if (msg.indexOf("2") != -1) fhighlight('childForm' + id, 'firstname');
                if (msg.indexOf("3") != -1) fhighlight('childForm' + id, 'secondname');
                if (msg.indexOf("4") != -1) fhighlight('childForm' + id, 'sex');
                if (msg.indexOf("5") != -1){
                	fhighlight('childForm' + id, 'hours');
                	fhighlight('childForm' + id, 'minutes');
                }
                if (msg.indexOf("6") != -1) fhighlight('childForm' + id, 'borndate');
            }
        }
    });
}

function deleteChild(id){
    if (!confirm('Вы действительно хотите удалить детский аккаунт?')) return true;
    $.ajax({
        type: "POST",
        cache: false,
        url: "ajaxAccount.php",
        data: "mod=childDelete&id=" + id,
        success: function(msg){
            $('#slideTop' + id).slideUp(300);
            $('#slideAl' + id).slideUp(300);
        }
    });
}

function getCityList(country, city){
    $.ajax({
        type: "POST",
        cache: false,
        url: "ajaxAccount.php",
        data: "mod=getCityList&country=" + country + "&city=" + city,
        success: function(msg){
            if (msg == "") $('#city').slideUp(300);
            else $('#city').slideDown(300);
            $('select[name="city_id"]').html(msg);
        }
    });
}

function settings(e){
	$('#editMessage').html('');
    $.ajax({
        type: "POST",
        cache: false,
        url: "ajaxAccount.php",
        data: "mod=registerEdit&" + $('#settings').serialize(),
        success: function(msg){ 
            if (!msg.match(/^\d+$/)){
                if (msg.match(/edited/)) $('#editMessage').html('Информация успешно сохранена!');
                else $('#btCont').html('Для завершения регистрации проследуйте по ссылке в письме, отправленном на Ваш адрес электронной почты.');
            } else {
            	if ((msg.indexOf("1") != -1) || (msg.indexOf("2") != -1)){
            		highlight('password', 1);
            		highlight('password2', 1);
            	}
                if (msg.indexOf("3") != -1) highlight('firstname', 1);
                if (msg.indexOf("4") != -1) highlight('secondname', 1);
                if (msg.indexOf("5") != -1) highlight('email', 1);
                if (msg.indexOf("6") != -1) highlight('email', 1);
                if (msg.indexOf("7") != -1) highlight('captcha', 1);
                if (msg.indexOf("8") != -1) highlight('phone', 1);
            }
        }
    });	
}

function changePassword(){
	$('#pswMessage').html('');
    $.ajax({
        type: "POST",
        cache: false,
        url: "ajaxAccount.php",
        data: "mod=changePassword&" + $('#passwords').serialize(),
        success: function(msg){
            if (!msg.match(/\d+/)){
                $('#pswMessage').html('Пароль успешно изменен');
            } else {
                if (msg.indexOf("1") != -1) highlight('curpass', 1);
                if (msg.indexOf("2") != -1){
                	highlight('password', 1);
                	highlight('password2', 1);
                }
                if (msg.indexOf("3") != -1){
                	highlight('password', 1);
                	highlight('password2', 1);
                }
            }
        }
    });
}

function remind(){
	$('#message').html('');
    $.ajax({
        type: "POST",
        cache: false,
        url: "ajaxAccount.php",
        data: "mod=remind&" + $('#remindForm').serialize(),
        success: function(msg){
            if (msg.match(/^1/)){
                $('#message').attr('class', 'message2');
                $('#message').html('Ваш новый пароль отправлен на e-mail');
            } else if (msg.match(/\-1/)) $('#message').html('Пароль не может быть восстановлен, так как не завершена процедура регистрации. Пожалуйста, проследуйте по ссылке, отправленной на Ваш адрес, для активации родительской учётной записи.');
            else $('#message').html('Такого e-mail нет в базе');
        }
    });
}

function gallerySelect(id, avatar){
	avatar = $('#av_' + avatar).attr('src');	
	var a = avatar.substr(9);
	
    $.ajax({
        type: "POST",
        cache: false,
        url: "ajaxAccount.php",
        data: "mod=gallerySelect&id=" + id + "&avatar=" + a,
        success: function(msg){
            $('#avatar' + id).css('background-image', 'url(' + avatar + ')');
            $.facebox.close();
        }
    });
}

function chPlus(id){
	if ($(id).attr('src') == 'img/plust.png') $(id).attr('src', 'img/minust.png');
	else $(id).attr('src', 'img/plust.png');
}

function statSelect(){
	if ($("input[name='stat_since']").attr("value").match(/\d{2}\.\d{2}\.\d{4}/)){
		if (!$("input[name='stat_to']").attr("value").match(/\d{2}\.\d{2}\.\d{4}/)) $("input[name='stat_to']").attr("value", date("d.m.Y", gmmktime()));
		window.location = "/child_account/statistic/" + $("input[name='stat_since']").attr("value") + "-" + $("input[name='stat_to']").attr("value") + "/";
	}
}

var tooltip = function(){
	var id = 'tt';
	var top = 0;
	var left = -303;
	var maxw = 300;
	var speed = 10;
	var timer = 20;
	var endalpha = 95;
	var alpha = 0;
	var tt,t,c,b,h;
	var ie = document.all ? true : false;
	return{
		show:function(v,w){
			if(tt == null){
				tt = document.createElement('div');
				tt.setAttribute('id',id);
				t = document.createElement('div');
				t.setAttribute('id',id + 'top');
				c = document.createElement('div');
				c.setAttribute('id',id + 'cont');
				b = document.createElement('div');
				b.setAttribute('id',id + 'bot');
				tt.appendChild(t);
				tt.appendChild(c);
				tt.appendChild(b);
				document.body.appendChild(tt);
				tt.style.opacity = 0;
				tt.style.filter = 'alpha(opacity=0)';
				document.onmousemove = this.pos;
			}
			tt.style.display = 'block';
			c.innerHTML = v;
			tt.style.width = w ? w + 'px' : 'auto';
			if(!w && ie){
				t.style.display = 'none';
				b.style.display = 'none';
				tt.style.width = tt.offsetWidth;
				t.style.display = 'block';
				b.style.display = 'block';
			}
			if(tt.offsetWidth > maxw){tt.style.width = maxw + 'px'}
			h = parseInt(tt.offsetHeight) + top;
			clearInterval(tt.timer);
			tt.timer = setInterval(function(){tooltip.fade(1)},timer);
		},
		pos:function(e){
			var u = ie ? event.clientY + document.documentElement.scrollTop : e.pageY;
			var l = ie ? event.clientX + document.documentElement.scrollLeft : e.pageX;
			tt.style.top = (u - h) + 'px';
			tt.style.left = (l + left) + 'px';
		},
		fade:function(d){
			var a = alpha;
			if((a != endalpha && d == 1) || (a != 0 && d == -1)){
				var i = speed;
				if(endalpha - a < speed && d == 1){
					i = endalpha - a;
				}else if(alpha < speed && d == -1){
					i = a;
				}
				alpha = a + (i * d);
				tt.style.opacity = alpha * .01;
				tt.style.filter = 'alpha(opacity=' + alpha + ')';
			}else{
				clearInterval(tt.timer);
				if(d == -1){tt.style.display = 'none'}
			}
		},
		hide:function(){
			clearInterval(tt.timer);
			tt.timer = setInterval(function(){tooltip.fade(-1)},timer);
		}
	};
}();

function gmmktime () {
    var no=0, i = 0, ma=0, mb=0, d = new Date(), dn = new Date(), argv = arguments, argc = argv.length;

    var dateManip = {
        0: function (tt){ return d.setUTCHours(tt); },
        1: function (tt){ return d.setUTCMinutes(tt); },
        2: function (tt){ var set = d.setUTCSeconds(tt); mb = d.getUTCDate() - dn.getUTCDate(); return set;},
        3: function (tt){ var set = d.setUTCMonth(parseInt(tt, 10)-1); ma = d.getUTCFullYear() - dn.getUTCFullYear(); return set;},
        4: function (tt){ return d.setUTCDate(tt+mb);},
        5: function (tt){
            if (tt >= 0 && tt <= 69) {
                tt += 2000;
            }
            else if (tt >= 70 && tt <= 100) {
                tt += 1900;
            }
            return d.setUTCFullYear(tt+ma);
        }
        // 7th argument (for DST) is deprecated
    };

    for (i = 0; i < argc; i++){
        no = parseInt(argv[i]*1, 10);
        if (isNaN(no)) {
            return false;
        } else {
            // arg is number, let's manipulate date object
            if (!dateManip[i](no)){
                // failed
                return false;
            }
        }
    }
    for (i = argc; i < 6; i++) {
        switch (i) {
            case 0:
                no = dn.getUTCHours();
                break;
            case 1:
                no = dn.getUTCMinutes();
                break;
            case 2:
                no = dn.getUTCSeconds();
                break;
            case 3:
                no = dn.getUTCMonth()+1;
                break;
            case 4:
                no = dn.getUTCDate();
                break;
            case 5:
                no = dn.getUTCFullYear();
                break;
        }
        dateManip[i](no);
    }

    return Math.floor(d.getTime()/1000);
}



function date (format, timestamp) {
    var that = this,
        jsdate = (
        (typeof timestamp === 'undefined') ? new Date() : // Not provided
        (timestamp instanceof Date) ? new Date(timestamp) : // Javascript Date()
        new Date(timestamp * 1000) // UNIX timestamp (auto-convert to int)
    ), //, tal= [], // Keep this here (works, but for code commented-out below for file size reasons)
        formatChr = /\\?([a-z])/gi,
        formatChrCb = function (t, s) {
            return f[t] ? f[t]() : s;
        },
        _pad = function (n, c) {
            if ((n = n + "").length < c) {
                return new Array((++c) - n.length).join("0") + n;
            } else {
                return n;
            }
        },
        txt_words = ["Sun", "Mon", "Tues", "Wednes", "Thurs", "Fri", "Satur",
        "January", "February", "March", "April", "May", "June", "July",
        "August", "September", "October", "November", "December"],
        txt_ordin = {1: "st", 2: "nd", 3: "rd", 21: "st", 22: "nd", 23: "rd", 31: "st"},
        f = {
        // Day
            d: function () {
                return _pad(f.j(), 2);
            },
            D: function () {
                return f.l().slice(0, 3);
            },
            j: function () {
                return jsdate.getDate();
            },
            l: function () {
                return txt_words[f.w()] + 'day';
            },
            N: function () {
                return f.w() || 7;
            },
            S: function () {
                return txt_ordin[f.j()] || 'th';
            },
            w: function () {
                return jsdate.getDay();
            },
            z: function () {
                return (jsdate - new Date(f.Y(), 0, 1)) / 864e5 >> 0;
            },

            W: function () {
                var c = new Date(f.Y(), f.n() - 1, f.j() - f.N() + 3);
                return 1 + Math.round((c - (new Date(c.getFullYear(), 0, 4))) / 864e5 / 7);
            },

            F: function () {
                return txt_words[6 + f.n()];
            },
            m: function () {
                return _pad(f.n(), 2);
            },
            M: function () {
                return f.F().slice(0, 3);
            },
            n: function () {
                return jsdate.getMonth() + 1;
            },
            t: function () {
                return (new Date(f.Y(), f.n() + 1, 0)).getDate();
            },

            L: function () {
                var y = f.Y();
                return (!(y & 3) && (y % 1e2 || !(y % 4e2))) ? 1 : 0;
            },
            o: function () {
                return f.Y() + (f.n() === 12 && f.W() < 9 ? -1 : (f.n() === 1 && f.W() > 9 ? 1 : 0));
            },
            Y: function () {
                return jsdate.getFullYear();
            },
            y: function () {
                return (jsdate.getFullYear() + "").slice(2);
            },

            a: function () {
                return jsdate.getHours() > 11 ? "pm" : "am";
            },
            A: function () {
                return f.a().toUpperCase();
            },
            B: function () {
                return _pad(Math.floor(((jsdate.getUTCHours() * 36e2) + (jsdate.getUTCMinutes() * 60) +
                                        jsdate.getUTCSeconds() + 36e2) / 86.4) % 1e3, 3);
            },
            g: function () {
                return jsdate.getHours() % 12 || 12;
            },
            G: function () {
                return jsdate.getHours();
            },
            h: function () {
                return _pad(f.g(), 2);
            },
            H: function () {
                return _pad(f.G(), 2);
            },
            i: function () {
                return _pad(jsdate.getMinutes(), 2);
            },
            s: function () {
                return _pad(jsdate.getSeconds(), 2);
            },
            u: function () {
                return _pad(jsdate.getMilliseconds() * 1000, 6);
            },

            e: function () {
                return 'UTC';
            },
            I: function () {
                return 0 + (((new Date(f.Y(), 0)) - Date.UTC(f.Y(), 0)) !== ((new Date(f.Y(), 6)) - Date.UTC(f.Y(), 6)));
            },
            O: function () {
                var a = jsdate.getTimezoneOffset();
                return (a > 0 ? "-" : "+") + _pad(Math.abs(a / 60 * 100), 4);
            },
            P: function () {
                var O = f.O();
                return (O.substr(0, 3) + ":" + O.substr(3, 2));
            },
            T: function () {

                return 'UTC';
            },
            Z: function () {
                return -jsdate.getTimezoneOffset() * 60;
            },

            c: function () {
                return 'Y-m-d\\Th:i:sP'.replace(formatChr, formatChrCb);
            },
            r: function () {
                return 'D, d M Y H:i:s O'.replace(formatChr, formatChrCb);
            },
            U: function () {
                return Math.round(jsdate.getTime() / 1000);
            }
        };
    return format.replace(formatChr, formatChrCb);
}

function avpage(page){
	var i;
	for (i = 1; i <= 16; i++) $('#av_' + i).attr('src', '/avatars/std_' + (i + (page - 1) * 16).toString() + '.png');
	
	for (i = 1; i <= 4; i++)
		if (i == page){
			$('#avl_' + i.toString()).css('font-size', '14px');
			$('#avl_' + i.toString()).css('text-decoration', 'none');
			$('#avl_' + i.toString()).css('cursor', 'default');
		} else {
			$('#avl_' + i.toString()).css('font-size', '');
			$('#avl_' + i.toString()).css('text-decoration', '');
			$('#avl_' + i.toString()).css('cursor', 'hand');
			$('#avl_' + i.toString()).css('cursor', 'pointer');
		}
}


//ц
function childSetTime(id, type, add){
	var val;
	if (type == 'H'){
		val = parseInt($('#hours' + id).attr('value'));

		if ((isNaN(val)) || (val < 0) || (val > 24)) val = 0;
		val += add;
		if (val < 0) val = 0;
		if (val > 24) val = 24;
		if (val == 24) $('#minutes' + id).attr('value', '0');
		$('#hours' + id).attr('value', val);
	}
	
	if (type == 'i'){
		var H = parseInt($('#hours' + id).attr('value'));
		val = parseInt($('#minutes' + id).attr('value'));
		
		if ((isNaN(H)) || (H < 0) || (H > 24)) H = 0;
		
		if ((H == 24) && ((val != 0) || (add > 0))) $('#minutes' + id).attr('value', 0);
		else {
			if ((isNaN(val)) || (val < 0) || (val >= 60)) val = 0;
			
			val += add;
			
			if (val < 0){
				if (H > 0){
					$('#hours' + id).attr('value', H - 1);
					val += 60;
				} else val = 0;
			}
			
			if (val >= 60){
				if ((H >= 0) && (H < 24)){
					$('#hours' + id).attr('value', H + 1);
					if (H + 1 < 24) val -= 60;
					else val = 0;
				}
			}
			
			$('#minutes' + id).attr('value', val);
		}
	}
}

function changeSkin(div, num){
	$('.skin-active').attr('class', 'skin');
	$(div).attr('class', 'skin-active');
	$('input[name="skin"]').attr('value', num);
}
//т
function oplataChange(obj, mCount, mText, period, sum, discount){
	$('.oplata-item-active').attr('class', 'oplata-item');
	$(obj).attr('class', 'oplata-item-active');
	$('#d-period').html(period);
	$('#d-mCount').html(mCount + ' ' + mText);
	$('#d-sum').html(sum + 'руб.');
	$('input[name="periodValue"]').attr('value', mCount);
	if (discount){
		$('#eco').css('display', '');
		$('#d-eco').html(discount + 'руб.');
	} else $('#eco').css('display', 'none');

}



$(window).ready(function(){
	$(".mbuttons-sp").easyconfirm({locale: {text: 'Добавление более трёх сайтов доступно только для Премиум-аккаунта.'}});
	$(".mbuttons-p").easyconfirm({locale: {text: 'Функции импорта и экспорта списка сайтов доступны только для Премиум-аккаунта.'}});
	$(".buttons-p").easyconfirm({locale: {text: 'Просмотр статистики за произвольный период доступен только для Премиум-аккаунта.'}});
	$(".site-edit-bt-p").easyconfirm({locale: {text: 'Редактирование списка сайтов при наличии более трёх сайтов доступно только для Премиум-аккаунта.'}});
	$(".site-edit-bt-p, .mbuttons-p-p, .mbuttons-p, .buttons-p").click(function(){
		location.href = '/child_account/premium/';
	});
});