// ------------------------- Search -----------------------
$(document).ready(function(){
    $('#id-search, #id-search-base, .ask td .input').focus(function(){
        if (!this.has_changed) {
            this.initial_value = this.value;
            this.value='';
        }
    });

    $('#id-search, #id-search-base, .ask td .input').blur(function(){
        if (this.value == '') 
            this.value = this.initial_value;
        else
            this.has_changed = true;
    });
})


//--------------------- Menu ------------------------

function menu_over(evt) {
    if (evt.type == 'click')
        evt.preventDefault();
    var dd = $(this).next('dd');
    dd.fadeIn(0);
    dd.animate({'height':dd.attr('orig_height')},150);
    dd[0].hoverIntent_s = 1;
//	alert('menu_over');
}

function menu_out(evt) {
    $(this).next('dd').height(1).fadeOut(0);
    $(this).next('dd')[0].hoverIntent_s = 0; 
    $(this).prev('dt')[0].removeClass('overed');
	var dt = $(this).prev('dt.menuitem');
	$(dt).removeClass('overed');
//	$(dt).removeClass('overed');
//	alert('menu_out');
}

var dt_config = {    
     sensitivity: 3, // number = sensitivity threshold (must be 1 or higher)    
     interval: 500, // number = milliseconds for onMouseOver polling interval    
     over: menu_over,
     timeout: 500, // number = milliseconds delay before onMouseOut    
     out: menu_out
};

var dd_config = {    
     sensitivity: 3, // number = sensitivity threshold (must be 1 or higher)    
     interval: 500, // number = milliseconds for onMouseOver polling interval    
     over: function (evt) {
     },
     timeout: 500, // number = milliseconds delay before onMouseOut    
     out: function (evt) {
        $(this).height(1).fadeOut(0);
        var dt = $(this).prev('dt.menuitem');
//        if (!$(dt).hasClass('currI'))
//        {
//		$(dt).removeClass('current');
//        }
		$(dt).removeClass('overed');
//		alert(1);
    }
};

$(function () {
    $('.menu>dd').css('display','block');
    $('.menu>dd').each(function () {
        $(this).attr('orig_height',$(this).height());
    });
    $('.menu>dd').css('opacity',100);
    $('.menu>dd').height(1);
    $('.menu>dd').fadeOut(0);
    $('.menu>dt.menuitem').hoverIntent(dt_config);
    $('.menu>dt.menuitem').click(function(evt) {
        evt.preventDefault();
        //$(this).hoverIntent();
        var dd = $(this).next('dd').fadeIn(0);
        dd.animate({'height':dd.attr('orig_height')},150);
        dd[0].hoverIntent_s = 1;
        $(this)[0].hoverIntent_s = 1;
    });
    $('.menu>dt.menuitem').mousedown(function(evt) {
        $(this).addClass('overed');
    });
    $('.menu>dt.menuitem').mouseup(function(evt) {
        if (!$(this).hasClass('currI'))
        {
			$(this).removeClass('current');
        }
		
    });
    $('.menu>dd').hoverIntent(dd_config);
    $('.menu>dd').css('cursor','default');
    $('.menu>dd>a').css('cursor','pointer');
    $('.menu>dd').mouseover(function() {
        var dt = $(this).prev('dt.menuitem')[0];
        window.clearTimeout(dt.hoverIntent_t)
        dt.hoverIntent_s = 0;
        $(this).addClass('current');
        var dt = $(this).prev('dt.menuitem');
//        $(dt).addClass('current');
        $(dt).addClass('overed');
    });
    
    $('dl.tabs dt').click(function(evt){
        evt.preventDefault();
        $(this)
//                .siblings().removeClass('current').end()
//                .next('dd').andSelf().addClass('current');
                .siblings().removeClass('selected').end()
                .next('dd').andSelf().addClass('selected');
    });
})



//----------- Toggle banner --------------------
            
$(function() {
    var min_height = $('.head').height()+8;
    var med_height = min_height + 15; 
    var max_height = $('.header').height();
    

    var long_delay = 1200;
    var short_delay = 600;
    
    function banner_show(evt) {
        evt.preventDefault();
        $('.header').animate({'height':min_height}, short_delay, null, function () {
            $('.header').animate({'height':max_height}, long_delay);
            $('.banner').fadeIn(long_delay);
            $('.toggle-banner').unbind('click',banner_show)
                               .click(banner_hide)
                               .text('х скрыть изображение');
        })
		Set_Banner_Cookie(1);
    }
    
    function banner_hide(evt) {
        evt.preventDefault();
        $('.banner').fadeOut(long_delay);
        $('.header').animate({'height':min_height},long_delay, null, function () {
            $('.header').animate({'height':med_height}, short_delay);
            $('.toggle-banner').unbind('click',banner_hide)
                               .click(banner_show)
                               .text('х показать изображение');
            })
        Set_Banner_Cookie(0);
    }

	if (Get_Banner_Cookie()) {
		$('.header').height(med_height);
		$('.banner').fadeOut(0);
		$('.banner').hide();
		$('.toggle-banner').click(banner_show).text('х показать изображение');
	} else {
		$('.toggle-banner').click(banner_hide);
	}

})



var Calendar = {
	days_in_month: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],
	current_date: new Date(),

	init: function(first_date, cur_date, callback) {
		this.first_date = first_date;
		this.last_date = new Date();
		this.last_date.setTime(cur_date.valueOf());
		this.date = cur_date;
		this.callback = callback;
		this.initialized = true;
		$('.calendar-tabs dt.day span').html(this.date.getDate());
		$('.calendar-tabs dt.month span').html(this.date.getMonth()+1);
		$('.calendar-tabs dt.year span').html(this.date.getFullYear());
		update_calendar();
	},
	setDate: function (date) {
		this.date = date;
	},

	setMonth: function (month) {
		var last_day = this.days_in_month[month];
		if (this.date.getDate() > last_day) {
			this.date.setDate(last_day);
			$('.calendar-tabs dt.day span').html(last_day);
		}
		this.date.setMonth(month);
	},

	renderYears: function () {
		var s = '';
		for (var i=this.first_date.getFullYear(), max=this.last_date.getFullYear();i<=max;++i) {
			if (i == this.date.getFullYear())
				s += '&nbsp;<strong><a href="#">'+i+'</a></strong>'
			else
				s += '&nbsp;<a href="#">'+i+'</a>'
		}
		return s;
	},
	renderMonths: function () {
		var first_month = 0, last_month = 11;
		if (this.date.getFullYear() == this.first_date.getFullYear()) {
			first_month = this.first_date.getMonth();
		}
		if (this.date.getFullYear() == this.last_date.getFullYear()) {
			last_month = this.last_date.getMonth();
		}
		var s = '';
		for (var i=first_month;i<=last_month;++i) {
			if (i == this.date.getMonth())
				s += '&nbsp;<strong><a href="#">'+(i+1)+'</a></strong>'
			else
				s += '&nbsp;<a href="#">'+(i+1)+'</a>'
		}
		return s;
	},
	renderDays: function () {
		var first_day = 1;
		var last_day = this.days_in_month[this.date.getMonth()];
		if (this.date.getMonth() == 1) { // February
			if ((this.date.getFullYear() % 4 == 0 && this.date.getFullYear() % 100 != 0) || this.date.getFullYear() % 400 == 0){
				last_day = 29;
			}
		}

		if ((this.date.getFullYear() == this.first_date.getFullYear()) && (this.date.getMonth() == this.first_date.getMonth())) {
			first_day = this.first_date.getDate();
		}
		if ((this.date.getFullYear() == this.last_date.getFullYear()) && (this.date.getMonth() == this.last_date.getMonth())) {
			last_day = this.last_date.getDate();
		}

		var s = '';
		for (var i=first_day;i<=last_day;++i) {
			if (i == this.date.getDate())
				s += '&nbsp;<strong><a href="#">'+i+'</a></strong>'
			else
				s += '&nbsp;<a href="#">'+i+'</a>'
		}
		
		/* (begin) Дописал прокрутку к первым видимым датам */
		var left = $('.day .date-list').css('left');
		if (last_day < 10) {
			$('.day .date-list').css('left','0px');
		} else if (last_day >= 10 && last_day < 21) {
			$('.day .date-list').css('left','-100px');
		}
		/* (end) Дописал прокрутку к первым видимым датам */
		
		return s;
	}
}


var cal_shift = 100;

function update_calendar () {
	$('.calendar-tabs dd.year .date-list').html(Calendar.renderYears());
	$('.calendar-tabs dd.month .date-list').html(Calendar.renderMonths());
	$('.calendar-tabs dd.day .date-list').html(Calendar.renderDays());
	Calendar.callback(Calendar.date);
}

$(function(){

	$('.tab-content .larr').click(function(evt){
	evt.preventDefault();
	var list = $(this).siblings('.container').children('p');
	var left = list.position().left;
	if (left < 0) {
		left+=cal_shift;
		if (left > 0) left = 0;
			list.animate({"left":left},"slow");
	}
	})

	$('.tab-content .rarr').click(function(evt){
		evt.preventDefault();
		var list = $(this).siblings('.container').children('p');
		var left = list.position().left;
		var min_left = $(this).siblings('.container').width() - list.width();
		if (left > min_left) {
			left-=cal_shift;
			if (left < min_left) left = min_left;
				list.animate({"left":left},"slow");
		}
	})

})

//---------------------Site-map--------------------

$(function(){
    $('ul.map li li').each(function () {
        if ($(this).children('ul').length > 0) {
            var arrow = $('<a href="#" class="arr_down">&nbsp;</a>');
            $(this).prepend(arrow)
            arrow.click(function(evt) {
                evt.preventDefault();
                $(this).siblings('ul').toggle();
                $(this).toggleClass('arr_down').toggleClass('arr');
            })
        }
        else {
            $(this).addClass('empty');
        }
    });
})

//-----------------Toggle comments --------------------------

function initToggle(selector,labels,tclass) {
    $(selector).live('click',function(evt){
        evt.preventDefault();
        var ele = $($(this).attr('rel'));
        var visible = ele.toggle().is(':visible');
        if (labels)
            $(this).html(labels[Number(visible)]);
        if (tclass) {
            if (visible)
                $(this).addClass(tclass)
            else
                $(this).removeClass(tclass)
        }
    })              
}


function Set_Banner_Cookie(value)
{
	var today = new Date();
	today.setTime( today.getTime() );

	var expires = 1000 * 60 * 60 * 24;
	var expires_date = new Date( today.getTime() + (expires) );
	var name = 'show_top_banner';
	document.cookie = name + "=" +escape( value ) +
					( ( expires ) ? ";path=/;expires=" + expires_date.toGMTString() : "" );
}

function Get_Banner_Cookie() {
	var res = false;
	var name='show_top_banner';
	var start = document.cookie.indexOf( name+"=" );
	var len = start + name.length + 1;
	if ( ( !start ) && ( name != document.cookie.substring( 0, name.length ) ) )
	{
		return false;
	}
	if ( start == -1 ) 
			return  false;
	var end = document.cookie.indexOf( ";", len );
	if ( end == -1 ) end = document.cookie.length;
		res =  unescape( document.cookie.substring( len, end ) );
	if (res == '0')
	{
		return true;
	}
	else 
		return false;
}



function utf8_encode ( argString ) {
    // http://kevin.vanzonneveld.net
    // +   original by: Webtoolkit.info (http://www.webtoolkit.info/)
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: sowberry
    // +    tweaked by: Jack
    // +   bugfixed by: Onno Marsman
    // +   improved by: Yves Sucaet
    // +   bugfixed by: Onno Marsman
    // +   bugfixed by: Ulrich
    // *     example 1: utf8_encode('Kevin van Zonneveld');
    // *     returns 1: 'Kevin van Zonneveld'
 
    var string = (argString+''); // .replace(/\r\n/g, "\n").replace(/\r/g, "\n");
 
    var utftext = "";
    var start, end;
    var stringl = 0;
 
    start = end = 0;
    stringl = string.length;
    for (var n = 0; n < stringl; n++) {
        var c1 = string.charCodeAt(n);
        var enc = null;
 
        if (c1 < 128) {
            end++;
        } else if (c1 > 127 && c1 < 2048) {
            enc = String.fromCharCode((c1 >> 6) | 192) + String.fromCharCode((c1 & 63) | 128);
        } else {
            enc = String.fromCharCode((c1 >> 12) | 224) + String.fromCharCode(((c1 >> 6) & 63) | 128) + String.fromCharCode((c1 & 63) | 128);
        }
        if (enc !== null) {
            if (end > start) {
                utftext += string.substring(start, end);
            }
            utftext += enc;
            start = end = n+1;
        }
    }
 
    if (end > start) {
        utftext += string.substring(start, string.length);
    }
 
    return utftext;
}

function md5 (str) {
    // http://kevin.vanzonneveld.net
    // +   original by: Webtoolkit.info (http://www.webtoolkit.info/)
    // + namespaced by: Michael White (http://getsprink.com)
    // +    tweaked by: Jack
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +      input by: Brett Zamir (http://brett-zamir.me)
    // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // -    depends on: utf8_encode
    // *     example 1: md5('Kevin van Zonneveld');
    // *     returns 1: '6e658d4bfcb59cc13f96c14450ac40b9'
 
    var xl;
 
    var rotateLeft = function (lValue, iShiftBits) {
        return (lValue<<iShiftBits) | (lValue>>>(32-iShiftBits));
    };
 
    var addUnsigned = function (lX,lY) {
        var lX4,lY4,lX8,lY8,lResult;
        lX8 = (lX & 0x80000000);
        lY8 = (lY & 0x80000000);
        lX4 = (lX & 0x40000000);
        lY4 = (lY & 0x40000000);
        lResult = (lX & 0x3FFFFFFF)+(lY & 0x3FFFFFFF);
        if (lX4 & lY4) {
            return (lResult ^ 0x80000000 ^ lX8 ^ lY8);
        }
        if (lX4 | lY4) {
            if (lResult & 0x40000000) {
                return (lResult ^ 0xC0000000 ^ lX8 ^ lY8);
            } else {
                return (lResult ^ 0x40000000 ^ lX8 ^ lY8);
            }
        } else {
            return (lResult ^ lX8 ^ lY8);
        }
    };
 
    var _F = function (x,y,z) { return (x & y) | ((~x) & z); };
    var _G = function (x,y,z) { return (x & z) | (y & (~z)); };
    var _H = function (x,y,z) { return (x ^ y ^ z); };
    var _I = function (x,y,z) { return (y ^ (x | (~z))); };
 
    var _FF = function (a,b,c,d,x,s,ac) {
        a = addUnsigned(a, addUnsigned(addUnsigned(_F(b, c, d), x), ac));
        return addUnsigned(rotateLeft(a, s), b);
    };
 
    var _GG = function (a,b,c,d,x,s,ac) {
        a = addUnsigned(a, addUnsigned(addUnsigned(_G(b, c, d), x), ac));
        return addUnsigned(rotateLeft(a, s), b);
    };
 
    var _HH = function (a,b,c,d,x,s,ac) {
        a = addUnsigned(a, addUnsigned(addUnsigned(_H(b, c, d), x), ac));
        return addUnsigned(rotateLeft(a, s), b);
    };
 
    var _II = function (a,b,c,d,x,s,ac) {
        a = addUnsigned(a, addUnsigned(addUnsigned(_I(b, c, d), x), ac));
        return addUnsigned(rotateLeft(a, s), b);
    };
 
    var convertToWordArray = function (str) {
        var lWordCount;
        var lMessageLength = str.length;
        var lNumberOfWords_temp1=lMessageLength + 8;
        var lNumberOfWords_temp2=(lNumberOfWords_temp1-(lNumberOfWords_temp1 % 64))/64;
        var lNumberOfWords = (lNumberOfWords_temp2+1)*16;
        var lWordArray=new Array(lNumberOfWords-1);
        var lBytePosition = 0;
        var lByteCount = 0;
        while ( lByteCount < lMessageLength ) {
            lWordCount = (lByteCount-(lByteCount % 4))/4;
            lBytePosition = (lByteCount % 4)*8;
            lWordArray[lWordCount] = (lWordArray[lWordCount] | (str.charCodeAt(lByteCount)<<lBytePosition));
            lByteCount++;
        }
        lWordCount = (lByteCount-(lByteCount % 4))/4;
        lBytePosition = (lByteCount % 4)*8;
        lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80<<lBytePosition);
        lWordArray[lNumberOfWords-2] = lMessageLength<<3;
        lWordArray[lNumberOfWords-1] = lMessageLength>>>29;
        return lWordArray;
    };
 
    var wordToHex = function (lValue) {
        var wordToHexValue="",wordToHexValue_temp="",lByte,lCount;
        for (lCount = 0;lCount<=3;lCount++) {
            lByte = (lValue>>>(lCount*8)) & 255;
            wordToHexValue_temp = "0" + lByte.toString(16);
            wordToHexValue = wordToHexValue + wordToHexValue_temp.substr(wordToHexValue_temp.length-2,2);
        }
        return wordToHexValue;
    };
 
    var x=[],
        k,AA,BB,CC,DD,a,b,c,d,
        S11=7, S12=12, S13=17, S14=22,
        S21=5, S22=9 , S23=14, S24=20,
        S31=4, S32=11, S33=16, S34=23,
        S41=6, S42=10, S43=15, S44=21;
 
    str = this.utf8_encode(str);
    x = convertToWordArray(str);
    a = 0x67452301; b = 0xEFCDAB89; c = 0x98BADCFE; d = 0x10325476;
    
    xl = x.length;
    for (k=0;k<xl;k+=16) {
        AA=a; BB=b; CC=c; DD=d;
        a=_FF(a,b,c,d,x[k+0], S11,0xD76AA478);
        d=_FF(d,a,b,c,x[k+1], S12,0xE8C7B756);
        c=_FF(c,d,a,b,x[k+2], S13,0x242070DB);
        b=_FF(b,c,d,a,x[k+3], S14,0xC1BDCEEE);
        a=_FF(a,b,c,d,x[k+4], S11,0xF57C0FAF);
        d=_FF(d,a,b,c,x[k+5], S12,0x4787C62A);
        c=_FF(c,d,a,b,x[k+6], S13,0xA8304613);
        b=_FF(b,c,d,a,x[k+7], S14,0xFD469501);
        a=_FF(a,b,c,d,x[k+8], S11,0x698098D8);
        d=_FF(d,a,b,c,x[k+9], S12,0x8B44F7AF);
        c=_FF(c,d,a,b,x[k+10],S13,0xFFFF5BB1);
        b=_FF(b,c,d,a,x[k+11],S14,0x895CD7BE);
        a=_FF(a,b,c,d,x[k+12],S11,0x6B901122);
        d=_FF(d,a,b,c,x[k+13],S12,0xFD987193);
        c=_FF(c,d,a,b,x[k+14],S13,0xA679438E);
        b=_FF(b,c,d,a,x[k+15],S14,0x49B40821);
        a=_GG(a,b,c,d,x[k+1], S21,0xF61E2562);
        d=_GG(d,a,b,c,x[k+6], S22,0xC040B340);
        c=_GG(c,d,a,b,x[k+11],S23,0x265E5A51);
        b=_GG(b,c,d,a,x[k+0], S24,0xE9B6C7AA);
        a=_GG(a,b,c,d,x[k+5], S21,0xD62F105D);
        d=_GG(d,a,b,c,x[k+10],S22,0x2441453);
        c=_GG(c,d,a,b,x[k+15],S23,0xD8A1E681);
        b=_GG(b,c,d,a,x[k+4], S24,0xE7D3FBC8);
        a=_GG(a,b,c,d,x[k+9], S21,0x21E1CDE6);
        d=_GG(d,a,b,c,x[k+14],S22,0xC33707D6);
        c=_GG(c,d,a,b,x[k+3], S23,0xF4D50D87);
        b=_GG(b,c,d,a,x[k+8], S24,0x455A14ED);
        a=_GG(a,b,c,d,x[k+13],S21,0xA9E3E905);
        d=_GG(d,a,b,c,x[k+2], S22,0xFCEFA3F8);
        c=_GG(c,d,a,b,x[k+7], S23,0x676F02D9);
        b=_GG(b,c,d,a,x[k+12],S24,0x8D2A4C8A);
        a=_HH(a,b,c,d,x[k+5], S31,0xFFFA3942);
        d=_HH(d,a,b,c,x[k+8], S32,0x8771F681);
        c=_HH(c,d,a,b,x[k+11],S33,0x6D9D6122);
        b=_HH(b,c,d,a,x[k+14],S34,0xFDE5380C);
        a=_HH(a,b,c,d,x[k+1], S31,0xA4BEEA44);
        d=_HH(d,a,b,c,x[k+4], S32,0x4BDECFA9);
        c=_HH(c,d,a,b,x[k+7], S33,0xF6BB4B60);
        b=_HH(b,c,d,a,x[k+10],S34,0xBEBFBC70);
        a=_HH(a,b,c,d,x[k+13],S31,0x289B7EC6);
        d=_HH(d,a,b,c,x[k+0], S32,0xEAA127FA);
        c=_HH(c,d,a,b,x[k+3], S33,0xD4EF3085);
        b=_HH(b,c,d,a,x[k+6], S34,0x4881D05);
        a=_HH(a,b,c,d,x[k+9], S31,0xD9D4D039);
        d=_HH(d,a,b,c,x[k+12],S32,0xE6DB99E5);
        c=_HH(c,d,a,b,x[k+15],S33,0x1FA27CF8);
        b=_HH(b,c,d,a,x[k+2], S34,0xC4AC5665);
        a=_II(a,b,c,d,x[k+0], S41,0xF4292244);
        d=_II(d,a,b,c,x[k+7], S42,0x432AFF97);
        c=_II(c,d,a,b,x[k+14],S43,0xAB9423A7);
        b=_II(b,c,d,a,x[k+5], S44,0xFC93A039);
        a=_II(a,b,c,d,x[k+12],S41,0x655B59C3);
        d=_II(d,a,b,c,x[k+3], S42,0x8F0CCC92);
        c=_II(c,d,a,b,x[k+10],S43,0xFFEFF47D);
        b=_II(b,c,d,a,x[k+1], S44,0x85845DD1);
        a=_II(a,b,c,d,x[k+8], S41,0x6FA87E4F);
        d=_II(d,a,b,c,x[k+15],S42,0xFE2CE6E0);
        c=_II(c,d,a,b,x[k+6], S43,0xA3014314);
        b=_II(b,c,d,a,x[k+13],S44,0x4E0811A1);
        a=_II(a,b,c,d,x[k+4], S41,0xF7537E82);
        d=_II(d,a,b,c,x[k+11],S42,0xBD3AF235);
        c=_II(c,d,a,b,x[k+2], S43,0x2AD7D2BB);
        b=_II(b,c,d,a,x[k+9], S44,0xEB86D391);
        a=addUnsigned(a,AA);
        b=addUnsigned(b,BB);
        c=addUnsigned(c,CC);
        d=addUnsigned(d,DD);
    }
 
    var temp = wordToHex(a)+wordToHex(b)+wordToHex(c)+wordToHex(d);
 
    return temp.toLowerCase();
}
