/******* QUOTE INDEX JQUERY FUNCTIONS *******/

/********** BEFORE DOCUMENT READY **********/

/* JSON2.js */

var JSON;
if (!JSON) {
    JSON = {};
}

(function () {
    "use strict";

    function f(n) {
        // Format integers to have at least two digits.
        return n < 10 ? '0' + n : n;
    }

    if (typeof Date.prototype.toJSON !== 'function') {

        Date.prototype.toJSON = function (key) {

            return isFinite(this.valueOf()) ?
                this.getUTCFullYear()     + '-' +
                f(this.getUTCMonth() + 1) + '-' +
                f(this.getUTCDate())      + 'T' +
                f(this.getUTCHours())     + ':' +
                f(this.getUTCMinutes())   + ':' +
                f(this.getUTCSeconds())   + 'Z' : null;
        };

        String.prototype.toJSON      =
            Number.prototype.toJSON  =
            Boolean.prototype.toJSON = function (key) {
                return this.valueOf();
            };
    }

    var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
        escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
        gap,
        indent,
        meta = {    // table of character substitutions
            '\b': '\\b',
            '\t': '\\t',
            '\n': '\\n',
            '\f': '\\f',
            '\r': '\\r',
            '"' : '\\"',
            '\\': '\\\\'
        },
        rep;


    function quote(string) {

// If the string contains no control characters, no quote characters, and no
// backslash characters, then we can safely slap some quotes around it.
// Otherwise we must also replace the offending characters with safe escape
// sequences.

        escapable.lastIndex = 0;
        return escapable.test(string) ? '"' + string.replace(escapable, function (a) {
            var c = meta[a];
            return typeof c === 'string' ? c :
                '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
        }) + '"' : '"' + string + '"';
    }


    function str(key, holder) {

// Produce a string from holder[key].

        var i,          // The loop counter.
            k,          // The member key.
            v,          // The member value.
            length,
            mind = gap,
            partial,
            value = holder[key];

// If the value has a toJSON method, call it to obtain a replacement value.

        if (value && typeof value === 'object' &&
                typeof value.toJSON === 'function') {
            value = value.toJSON(key);
        }

// If we were called with a replacer function, then call the replacer to
// obtain a replacement value.

        if (typeof rep === 'function') {
            value = rep.call(holder, key, value);
        }

// What happens next depends on the value's type.

        switch (typeof value) {
        case 'string':
            return quote(value);

        case 'number':

// JSON numbers must be finite. Encode non-finite numbers as null.

            return isFinite(value) ? String(value) : 'null';

        case 'boolean':
        case 'null':

// If the value is a boolean or null, convert it to a string. Note:
// typeof null does not produce 'null'. The case is included here in
// the remote chance that this gets fixed someday.

            return String(value);

// If the type is 'object', we might be dealing with an object or an array or
// null.

        case 'object':

// Due to a specification blunder in ECMAScript, typeof null is 'object',
// so watch out for that case.

            if (!value) {
                return 'null';
            }

// Make an array to hold the partial results of stringifying this object value.

            gap += indent;
            partial = [];

// Is the value an array?

            if (Object.prototype.toString.apply(value) === '[object Array]') {

// The value is an array. Stringify every element. Use null as a placeholder
// for non-JSON values.

                length = value.length;
                for (i = 0; i < length; i += 1) {
                    partial[i] = str(i, value) || 'null';
                }

// Join all of the elements together, separated with commas, and wrap them in
// brackets.

                v = partial.length === 0 ? '[]' : gap ?
                    '[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']' :
                    '[' + partial.join(',') + ']';
                gap = mind;
                return v;
            }

// If the replacer is an array, use it to select the members to be stringified.

            if (rep && typeof rep === 'object') {
                length = rep.length;
                for (i = 0; i < length; i += 1) {
                    if (typeof rep[i] === 'string') {
                        k = rep[i];
                        v = str(k, value);
                        if (v) {
                            partial.push(quote(k) + (gap ? ': ' : ':') + v);
                        }
                    }
                }
            } else {

// Otherwise, iterate through all of the keys in the object.

                for (k in value) {
                    if (Object.prototype.hasOwnProperty.call(value, k)) {
                        v = str(k, value);
                        if (v) {
                            partial.push(quote(k) + (gap ? ': ' : ':') + v);
                        }
                    }
                }
            }

// Join all of the member texts together, separated with commas,
// and wrap them in braces.

            v = partial.length === 0 ? '{}' : gap ?
                '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}' :
                '{' + partial.join(',') + '}';
            gap = mind;
            return v;
        }
    }

// If the JSON object does not yet have a stringify method, give it one.

    if (typeof JSON.stringify !== 'function') {
        JSON.stringify = function (value, replacer, space) {

// The stringify method takes a value and an optional replacer, and an optional
// space parameter, and returns a JSON text. The replacer can be a function
// that can replace values, or an array of strings that will select the keys.
// A default replacer method can be provided. Use of the space parameter can
// produce text that is more easily readable.

            var i;
            gap = '';
            indent = '';

// If the space parameter is a number, make an indent string containing that
// many spaces.

            if (typeof space === 'number') {
                for (i = 0; i < space; i += 1) {
                    indent += ' ';
                }

// If the space parameter is a string, it will be used as the indent string.

            } else if (typeof space === 'string') {
                indent = space;
            }

// If there is a replacer, it must be a function or an array.
// Otherwise, throw an error.

            rep = replacer;
            if (replacer && typeof replacer !== 'function' &&
                    (typeof replacer !== 'object' ||
                    typeof replacer.length !== 'number')) {
                throw new Error('JSON.stringify');
            }

// Make a fake root object containing our value under the key of ''.
// Return the result of stringifying the value.

            return str('', {'': value});
        };
    }


// If the JSON object does not yet have a parse method, give it one.

    if (typeof JSON.parse !== 'function') {
        JSON.parse = function (text, reviver) {

// The parse method takes a text and an optional reviver function, and returns
// a JavaScript value if the text is a valid JSON text.

            var j;

            function walk(holder, key) {

// The walk method is used to recursively walk the resulting structure so
// that modifications can be made.

                var k, v, value = holder[key];
                if (value && typeof value === 'object') {
                    for (k in value) {
                        if (Object.prototype.hasOwnProperty.call(value, k)) {
                            v = walk(value, k);
                            if (v !== undefined) {
                                value[k] = v;
                            } else {
                                delete value[k];
                            }
                        }
                    }
                }
                return reviver.call(holder, key, value);
            }


// Parsing happens in four stages. In the first stage, we replace certain
// Unicode characters with escape sequences. JavaScript handles many characters
// incorrectly, either silently deleting them, or treating them as line endings.

            text = String(text);
            cx.lastIndex = 0;
            if (cx.test(text)) {
                text = text.replace(cx, function (a) {
                    return '\\u' +
                        ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
                });
            }

// In the second stage, we run the text against regular expressions that look
// for non-JSON patterns. We are especially concerned with '()' and 'new'
// because they can cause invocation, and '=' because it can cause mutation.
// But just to be safe, we want to reject all unexpected forms.

// We split the second stage into 4 regexp operations in order to work around
// crippling inefficiencies in IE's and Safari's regexp engines. First we
// replace the JSON backslash pairs with '@' (a non-JSON character). Second, we
// replace all simple value tokens with ']' characters. Third, we delete all
// open brackets that follow a colon or comma or that begin the text. Finally,
// we look to see that the remaining characters are only whitespace or ']' or
// ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval.

            if (/^[\],:{}\s]*$/
                    .test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@')
                        .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']')
                        .replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {

// In the third stage we use the eval function to compile the text into a
// JavaScript structure. The '{' operator is subject to a syntactic ambiguity
// in JavaScript: it can begin a block or an object literal. We wrap the text
// in parens to eliminate the ambiguity.

                j = eval('(' + text + ')');

// In the optional fourth stage, we recursively walk the new structure, passing
// each name/value pair to a reviver function for possible transformation.

                return typeof reviver === 'function' ?
                    walk({'': j}, '') : j;
            }

// If the text is not JSON parseable, then a SyntaxError is thrown.

            throw new SyntaxError('JSON.parse');
        };
    }
}());

/*********** LOCAL TIME FUNCTION ***********/

	function LocalTime() {

		var local_date = new Date();

		var local_year 	     = local_date.getYear(); if (local_year < 1000) {local_year += 1900;}
		var local_month    = local_date.getMonth() + 1; // getMonth() is zero-indexed
		var local_day	     = local_date.getDate();
		var local_hours  	 = local_date.getHours();
		var local_minutes  = local_date.getMinutes();
		var local_seconds  = local_date.getSeconds();

		local_month	 = (local_month < 10) ? '0' + local_month : local_month;
		local_day		 = (local_day < 10) ? '0' + local_day : local_day;
		local_hours	 = (local_hours < 10) ? '0' + local_hours : local_hours;
		local_minutes = (local_minutes < 10) ? '0' + local_minutes : local_minutes;
		local_seconds = (local_seconds < 10) ? '0' + local_seconds : local_seconds;

		var current_local_time = local_day + '.' + local_month + '.' + local_year + '\u00A0' + local_hours + ':' + local_minutes;

		$("div#console table tr td span.time").html('<div></div>' + current_local_time);

		setTimeout("LocalTime()",1000);

	}

/*********** ENCODE/DECODE HTML FUNCTION ***********/

function htmlEncode(value){
	return $('<div/>').text(value).html();
}

function htmlDecode(value){
	return $('<div/>').html(value);
}

/*********** BLOG POPUP INITIALIZATION FUNCTION ***********/

function initBlogPopup(){
	$('#blog_button').click(function(){
		$('#blog_code').text($('#blog_content').text());
		$('#blog_block').html(htmlDecode($('#blog_content').text()));
	})

	$('#blog_button').openDOMWindow({
		eventType:'click',
		width: 600,
		height: 600
	});

	$('#closeDOMWindow').closeDOMWindow({
		eventType:'click'
	});
}

/******** CONVERTER CHANGE CURRENCIES ********/

function thousandSeparator(n, sep) {
    var sRegExp = /(-?[0-9]+)([0-9]{3})/;
    var sValue = n.toString().replace(/\s+/g, '');

    if (sep === undefined) {
        sep=' ';
    }

    while(sRegExp.test(sValue)) {
        sValue = sValue.replace(sRegExp, '$1' + sep + '$2');
    }

    var tmp = sValue.split('.');
    if (tmp.length > 1){
        tmp[1] = tmp[1].replace(/\s+/g, '');
        sValue = tmp[0] + '.' + tmp[1];
    }

    return sValue;
}

function initConverter(){
    var s1 = $('#sum1');
    var s2 = $('#sum2');
	var flag = 1;
    var k = $('#currency2 option:selected').val().replace(/\s+/g, '') / $('#currency1 option:selected').val().replace(/\s+/g, '');

    function handleKeypress(){
        s1.keypress(function(e){
            var char_code = e.which;
            if ((char_code > 31 && char_code != 44 && char_code != 46 && !((char_code == 118 || char_code == 97 || char_code == 120 ||
            char_code == 99 || char_code == 122) && e.ctrlKey)) && (char_code < 48 || char_code > 57)){
                return false;
            }
        }).keyup(function(e){
            var value = s1.val().replace(/,/g, '.');
            s1.val(value);
            calcSum();
        }).focus(function(){
			flag = 1;
		}).bind('paste', function(e){
            var self = $(this);

            setTimeout(function(){
                var value = self.val().replace(/\s+/g, '').replace(/,/g, '.');
                value = parseFloat(value);

                if (isNaN(value) || !isFinite(value)){
                    value = '';
                }

                self.val(value);
                calcSum();
            }, 100);
        });

        s2.keypress(function(e){
            var char_code = e.which;
            if ((char_code > 31 && char_code != 44 && char_code != 46 && !((char_code == 118 || char_code == 97 || char_code == 120 ||
            char_code == 99 || char_code == 122) && e.ctrlKey)) && (char_code < 48 || char_code > 57)){
                return false;
            }
        }).keyup(function(e){
            var value = s2.val().replace(/,/g, '.');
            s2.val(value);
            calcSum();
        }).focus(function(){
			flag = 2;
		}).bind('paste', function(e){
            var self = $(this);

            setTimeout(function(){
                var value = self.val().replace(/\s+/g, '').replace(/,/g, '.');
                value = parseFloat(value);

                if (isNaN(value) || !isFinite(value)){
                    value = '';
                }

                self.val(value);
                calcSum();
            }, 100);
        });
    }

    function calcSum(){
		switch (flag){
			case 1:
				input1 = s1;
				input2 = s2;
				k = $('#currency1 option:selected').val().replace(/\s+/g, '') / $('#currency2 option:selected').val().replace(/\s+/g, '');
				break;
			case 2:
				input1 = s2;
				input2 = s1;
				k = $('#currency2 option:selected').val().replace(/\s+/g, '') / $('#currency1 option:selected').val().replace(/\s+/g, '');
				break;
		}

        var sum = parseFloat(input1.val().replace(/\s+/g, '') * k).toFixed(4);

        if (isNaN(sum)){
            sum = '';
        }
        var tmp = input1.val();
        input1.val(thousandSeparator(tmp));
        input2.val(thousandSeparator(sum));
    }

	function getFullDate(date){
		date = date || new Date();
		var dd = date.getDate();
		var mm = date.getMonth() + 1;
		var yyyy = date.getFullYear().toString().slice(2);

		dd = dd < 10 ? '0' + dd : dd;
		mm = mm < 10 ? '0' + mm : mm;
		date = [dd, mm, yyyy].join('.');
		return date;
	};

    $('#converter-time').find('span').html(getFullDate());
    handleOptionsChange();
    calcSum();

    $('div#converter div.sidearrows').click(function(){
        var self = $(this);
        self.toggleClass('rightsidearrows leftsidearrows');

		var select1_index = $('#currency1 option:selected').index();
		var select2_index = $('#currency2 option:selected').index();

		$("#currency1 option:eq(" + select2_index + ")").attr("selected", true);
		$("#currency2 option:eq(" + select1_index + ")").attr("selected", true);

		updateOptions($('#currency1, #currency2'));
		calcSum();
    });

    function handleOptionsChange(){
        $('#currency1, #currency2').find('option').change(function(){
            if($('div#converter div').hasClass('rightsidearrows')){
                k = $('#currency1 option:selected').val() / $('#currency2 option:selected').val();
            } else {
                k = $('#currency2 option:selected').val() / $('#currency1 option:selected').val();
            }

            calcSum();
        });
    }

	handleKeypress();
}

function initInfConverter(){
    var s1 = $('#inf_sum1');
    var s2 = $('#inf_sum2');
	var flag = 1;
    var k = $('#inf_currency2 option:selected').val().replace(/\s+/g, '') / $('#inf_currency1 option:selected').val().replace(/\s+/g, '');

    function handleKeypress(){
        s1.keypress(function(e){
            var char_code = e.which;
            if ((char_code > 31 && char_code != 44 && char_code != 46 && !((char_code == 118 || char_code == 97 || char_code == 120 ||
            char_code == 99 || char_code == 122) && e.ctrlKey)) && (char_code < 48 || char_code > 57)){
                return false;
            }
        }).keyup(function(e){
            var value = s1.val().replace(/,/g, '.');
            s1.val(value);
            calcSum();
        }).focus(function(){
			flag = 1;
		}).bind('paste', function(e){
            var self = $(this);

            setTimeout(function(){
                var value = self.val().replace(/\s+/g, '').replace(/,/g, '.');
                value = parseFloat(value);

                if (isNaN(value) || !isFinite(value)){
                    value = '';
                }

                self.val(value);
                calcSum();
            }, 100);
		});

        s2.keypress(function(e){
            var char_code = e.which;
            if ((char_code > 31 && char_code != 44 && char_code != 46 && !((char_code == 118 || char_code == 97 || char_code == 120 ||
            char_code == 99 || char_code == 122) && e.ctrlKey)) && (char_code < 48 || char_code > 57)){
                return false;
            }
        }).keyup(function(e){
            var value = s2.val().replace(/,/g, '.');
            s2.val(value);
            calcSum();
        }).focus(function(){
			flag = 2;
		}).bind('paste', function(e){
            var self = $(this);

            setTimeout(function(){
                var value = self.val().replace(/\s+/g, '').replace(/,/g, '.');
                value = parseFloat(value);

                if (isNaN(value) || !isFinite(value)){
                    value = '';
                }

                self.val(value);
                calcSum();
            }, 100);
		});
    }

    function calcSum(){
		switch (flag){
			case 1:
				input1 = s1;
				input2 = s2;
				k = $('#inf_currency1 option:selected').val().replace(/\s+/g, '') / $('#inf_currency2 option:selected').val().replace(/\s+/g, '');
				break;
			case 2:
				input1 = s2;
				input2 = s1;
				k = $('#inf_currency2 option:selected').val().replace(/\s+/g, '') / $('#inf_currency1 option:selected').val().replace(/\s+/g, '');
				break;
		}

        var sum = parseFloat(input1.val().replace(/\s+/g, '') * k).toFixed(4);

        if (isNaN(sum)){
            sum = '';
        }
        var tmp = input1.val();
        input1.val(thousandSeparator(tmp));
        input2.val(thousandSeparator(sum));
    }

	function getFullDate(date){
		date = date || new Date();
		var dd = date.getDate();
		var mm = date.getMonth() + 1;
		var yyyy = date.getFullYear().toString().slice(2);

		dd = dd < 10 ? '0' + dd : dd;
		mm = mm < 10 ? '0' + mm : mm;
		date = [dd, mm, yyyy].join('.');
		return date;
	};

//  $('#inf_converter-time').find('span').html(getFullDate()); // Дата не подставляется по просьбе Саши.
    handleOptionsChange();
    calcSum();

    $('div#inf_converter div.sidearrows').click(function(){
        var self = $(this);
        self.toggleClass('rightsidearrows leftsidearrows');

		var select1_index = $('#inf_currency1 option:selected').index();
		var select2_index = $('#inf_currency2 option:selected').index();

		$("#inf_currency1 option:eq(" + select2_index + ")").attr("selected", true);
		$("#inf_currency2 option:eq(" + select1_index + ")").attr("selected", true);

		updateOptions($('#inf_currency1, #inf_currency2'));
		calcSum();
    });

    function handleOptionsChange(){
        $('#inf_currency1, #inf_currency2').find('option').change(function(){
            if($('div#inf_converter div').hasClass('rightsidearrows')){
                k = $('#inf_currency1 option:selected').val() / $('#inf_currency2 option:selected').val();
            } else {
                k = $('#inf_currency2 option:selected').val() / $('#inf_currency1 option:selected').val();
            }

            calcSum();
        });
    }

	handleKeypress();
}

/****** UPDATE & CUSTOMIZE SELECT OPTIONS FUNCTIONS ******/

function customizeSelects(sel){
	var selects = sel || $('div.selectbox > select');
	window.selectsCache = window.selectsCache || [];

	selects.each(function(index){
		var select = $(this);
		var selectbox = select.parent();
		var options = $('option', select);
		var html = '<div class="selectbox-label"></div><a class="selectbox-button" href="#"></a><ul class="selectbox-dropbox">';

		window.selectsCache.push(selectbox);

		select.hide();
		for (var i = 0; i < options.length; i++){
			var option_text = options[i].innerHTML;
            var option_title = $(options[i]).attr('data-option-title');
			option_title = option_title === undefined ? option_text : option_title;
			var option_image = $(options[i]).attr('data-image');
			var option_sprite = $(options[i]).attr('data-image-sprite');
			var cls = options[i].selected ? ' selected' : '';
			var img = option_image ? '<img src="' + option_image + '">' : option_sprite ? '<i class="' + option_sprite + '"></i>' : '';
            cls += options[i].disabled ? ' disabled' : '';

			html += '<li class="selectbox-option' + cls + '"><a class="selectbox-option-button" title="' + option_title + '" href="#">' + img + option_text + '</a></li>';
		}
		html += '</ul>';
		selectbox.css('z-index', 100 - index);
		selectbox.append(html);

		var option = $('option:selected', select);
		var option_image = option.attr('data-image');
		var option_sprite = option.attr('data-image-sprite');
		var img = option_image ? '<img src="' + option_image + '">' : option_sprite ? '<i class="' + option_sprite + '"></i>' : '';
		var dropbox_width = selectbox.width();
		var option_text =  $('option:selected', selectbox).text();
		var option_title = $('option:selected', selectbox).attr('data-option-title');
		option_title = option_title === undefined ? option_text : option_title;

		$('ul.selectbox-dropbox', selectbox).width(dropbox_width);
		$('div.selectbox-label', selectbox).html(img + option_text).attr('title', option_title);
        if (option.attr('disabled')){
            $('div.selectbox-label', selectbox).addClass('disabled');
        }

		$('a.selectbox-button, div.selectbox-label', selectbox).click(function(){
			var self = $(this);
			var dropbox = $('ul.selectbox-dropbox', selectbox);

			for (var i = 0; i < window.selectsCache.length; i++){
				if (selectbox != window.selectsCache[i]){
					$('ul.selectbox-dropbox', window.selectsCache[i]).hide();
				}
			}

			dropbox.toggle().scrollTop(0);
			if (!dropbox.is(':hidden')){
				var scroll_top = $('li.selectbox-option.selected', dropbox).position().top;
				dropbox.scrollTop(scroll_top);
			}

			return false;
		});

		$('a.selectbox-option-button', selectbox).click(function(){
			var self = $(this);
			var option = self.parent();
			var index = option.index();

            if (!self.parent().hasClass('disabled')){
                option.addClass('selected').siblings().removeClass('selected');
				var option_text = $('option', selectbox).eq(index).attr('selected', true).text();
				var option_title = $('option:selected', selectbox).attr('data-option-title');
				option_title = option_title === undefined ? option_text : option_title;
                $('div.selectbox-label', selectbox).text(option_text).attr('title', option_title);
                $('ul.selectbox-dropbox', selectbox).toggle();
                $('option:selected', selectbox).trigger('change');
            }

			return false;
		});
	}).change(function(){
		var self = $(this);
		var selectbox = self.parent();
		var option = $('option:selected', self);
		var option_image = option.attr('data-image');
		var option_sprite = option.attr('data-image-sprite');
		var img = option_image ? '<img src="' + option_image + '">' : option_sprite ? '<i class="' + option_sprite + '"></i>' : '';
		var option_text = option.text();
		var option_title = option.attr('data-option-title');
		option_title = option_title === undefined ? option_text : option_title;

		$('div.selectbox-label', selectbox).html(img + option_text).attr('title', option_title);
        if (option.attr('disabled')){
            $('div.selectbox-label', selectbox).addClass('disabled');
        } else {
             $('div.selectbox-label', selectbox).removeClass('disabled');
        }
	});
}

function updateOptions(sel){
	var selects = sel || $('div.selectbox > select');

	selects.each(function(index){
		var select = $(this);
		var selectbox = select.parent();
		var options = $('option', select);
		var html = '';
		for (var i = 0; i < options.length; i++){
			var option_text = options[i].innerHTML;
            var option_title = $(options[i]).attr('data-option-title');
			option_title = option_title === undefined ? option_text : option_title;
			var option_image = $(options[i]).attr('data-image');
			var option_sprite = $(options[i]).attr('data-image-sprite');
			var cls = options[i].selected ? ' selected' : '';
			var img = option_image ? '<img src="' + option_image + '">' : option_sprite ? '<i class="' + option_sprite + '"></i>' : '';
            cls += options[i].disabled ? ' disabled' : '';

            html += '<li class="selectbox-option' + cls + '"><a class="selectbox-option-button" title="' + option_title + '" href="#">' + img + option_text + '</a></li>';
		}

        var option = $('option:selected', select);
		var option_image = option.attr('data-image');
		var option_sprite = option.attr('data-image-sprite');
		var img = option_image ? '<img src="' + option_image + '">' : option_sprite ? '<i class="' + option_sprite + '"></i>' : '';
		var option_text =  $('option:selected', selectbox).text();
		var option_title = $('option:selected', selectbox).attr('data-option-title');
		option_title = option_title === undefined ? option_text : option_title;

		$('ul.selectbox-dropbox', selectbox).html(html);
        $('div.selectbox-label', selectbox).html(img + option_text).attr('title', option_title);
        if (option.attr('disabled')){
            $('div.selectbox-label', selectbox).addClass('disabled');
        }

		$('a.selectbox-option-button', selectbox).click(function(){
			var self = $(this);
			var option = self.parent();
			var index = option.index();

            if (!self.parent().hasClass('disabled')){
                option.addClass('selected').siblings().removeClass('selected');
				var option_text = $('option', selectbox).eq(index).attr('selected', true).text();
				var option_title = $('option:selected', selectbox).attr('data-option-title');
				option_title = option_title === undefined ? option_text : option_title;
                $('div.selectbox-label', selectbox).text(option_text).attr('title', option_title);
                $('ul.selectbox-dropbox', selectbox).toggle();
                $('option:selected', selectbox).trigger('change');
            }

			return false;
		});
	});
}

/********** POP UP WINDOW FUNCTION **********/
	function popUpWindow (tag, w, h, title) {
		$("" + tag + "").click(function() {
			var window_width  = w;
			var window_height = h;
			var width_center  = parseInt((screen.availWidth - window_width)/2);
			var height_center = parseInt((screen.availHeight - window_height)/2);
			var popupWin = window.open(this.href, title, 'width='+window_width+',height='+window_height+',top='+height_center+',screenY='+height_center+',left='+width_center+',screenX='+width_center+',resizable=yes,scrollbars=yes');
			popupWin.focus();
			return false;
		});
	}

/********** CONVERT QUERY FUNCTION **********/

	function convertQuery(query, url){
		var res = '';
		$.ajax({
			type: "GET",
			url: url_tools +'/convert/utf8/windows1251/',
			data: ({'query' : query}),
			async: false,
			success: function(data){
				res = data;
				if(url){
					document.location = url + data;
				}
			}
		});
		return res;
	}

/******* SUBMIT SEARCH FORM FUNCTION *******/

	function submitSearchForm (identificator, url) {
		var search_word = $(identificator).val();
		if (search_word.length < 1 ) {
			alert (alert_empty_search);
		} else {
			search_word = convertQuery(search_word, false);
			if (identificator == "#by_news") {
				window.location.href = url + search_word + "&cat=news";
			} else {
				window.location.href = url + search_word;
			}
		}
	}

/******** ADD TO BOOKMARK FUNCTION ********/

	function addbookmark(title, url) {
		if ($.browser.mozilla) {window.sidebar.addPanel(title, url, "");}
		else if ($.browser.msie) {window.external.AddFavorite(url, title);}
		else {alert(alert_add_bookmark);}
	}

/********* ADD TO HOMEPAGE FUNCTION *********/

	function setHP(obj, url) {
		if ($.browser.msie){
			obj.style.behavior='url(#default#homepage)';
			obj.setHomePage(url);
			return false;
		} else {return false;}
	}

/********* TOGGLE SORT ICON FUNCTION *********/

	function ToggleSortIcon (identificator) {
		$(identificator).toggle(
		  function () {
			  $("" + identificator +"").parent().find("div.sort_arrow").removeClass("sort_middle").removeClass("sort_down").removeClass("sort_up").addClass("sort_middle").parent().removeClass('current');
			  $("" + identificator +" div.sort_arrow").removeClass("sort_middle").removeClass("sort_down").addClass("sort_up").parent().addClass("current");
			  },
		  function () {
			  $("" + identificator +"").parent().find("div.sort_arrow").removeClass("sort_middle").removeClass("sort_down").removeClass("sort_up").addClass("sort_middle").parent().removeClass('current');
			  $("" + identificator +" div.sort_arrow").removeClass("sort_middle").removeClass("sort_up").addClass("sort_down").parent().addClass("current");
			  }
		);
	}

	function ToggleSortIcon2 (identificator) {
		$(identificator).toggle(
		  function () {
			  $("" + identificator +"").parent().find("div.sort_arrow").removeClass("sort_middle").removeClass("sort_down").removeClass("sort_up").addClass("sort_middle").parent().removeClass('current');
			  $("" + identificator +" div.sort_arrow").removeClass("sort_middle").removeClass("sort_up").addClass("sort_down").parent().addClass("current");
			  },
		  function () {
			  $("" + identificator +"").parent().find("div.sort_arrow").removeClass("sort_middle").removeClass("sort_down").removeClass("sort_up").addClass("sort_middle").parent().removeClass('current');
			  $("" + identificator +" div.sort_arrow").removeClass("sort_middle").removeClass("sort_down").addClass("sort_up").parent().addClass("current");
			  }
		);
	}

	function ToggleSortSpanIcon (identificator) {
		$(identificator).toggle(
		  function () {
			  $("" + identificator +"").parent().find("span.sort_arrow").removeClass("sort_middle").removeClass("sort_down").removeClass("sort_up").addClass("sort_middle");
			  $("" + identificator +" span.sort_arrow").removeClass("sort_middle").removeClass("sort_down").addClass("sort_up");
			  },
		  function () {
			  $("" + identificator +"").parent().find("span.sort_arrow").removeClass("sort_middle").removeClass("sort_down").removeClass("sort_up").addClass("sort_middle");
			  $("" + identificator +" span.sort_arrow").removeClass("sort_middle").removeClass("sort_up").addClass("sort_down");
			  }
		);
	}

	function ToggleSortSpanIcon2 (identificator) {
		$(identificator).toggle(
		  function () {
		  	  var self = $(this);
			  self.siblings().find("span.sort_arrow").removeClass("sort_down").removeClass("sort_up").addClass("sort_middle");
			  self.find("span.sort_arrow").removeClass("sort_middle sort_down").addClass('sort_up');
			  //$("" + identificator +" span.sort_arrow").removeClass("sort_middle").removeClass("sort_down").addClass("sort_up");
			  },
		  function () {
		  	  var self = $(this);
			  self.siblings().find("span.sort_arrow").removeClass("sort_down").removeClass("sort_up").addClass("sort_middle");
			  self.find("span.sort_arrow").removeClass("sort_middle sort_up").addClass('sort_down');
			  //$("" + identificator +" span.sort_arrow").removeClass("sort_middle").removeClass("sort_up").addClass("sort_down");
			  }
		);
	}

/********** TABS NAVIGATION FUNCTION **********/

	function tabsNavigation (identificator) {

		$("" + identificator + " ul.tabs li a").click(function() {

				var tab_li = $(this).parent();

				if (tab_li.hasClass("current")) {

					// Do nothing.

				} else {

					$("" + identificator + " ul.tabs li").removeClass("current");

					tab_li.addClass("current");

					var tab_index = tab_li.index();

					$("" + identificator + " .pane").hide();

					$("" + identificator + " .pane:eq(" + tab_index + ")").show();

				}

				return false;

		});

	}

/******* DOUBLE BLOCK COLUMNS EQUAL HEIGHT *******/

	function columnsEqualHeight (left_column_tag, right_column_tag) {

		var left_column_content_height   = $("" + left_column_tag + "").height();
		var right_column_content_height = $("" + right_column_tag + "").height();

		var left_column_link_height   = $("" + left_column_tag + " .nav-block").height();
		var right_column_link_height = $("" + right_column_tag + " .nav-block").height();

		var left_column_list_height   = left_column_content_height - left_column_link_height;
		var right_column_list_height = right_column_content_height - right_column_link_height;

		if (left_column_content_height > right_column_content_height) {
			if ($.browser.msie && $.browser.version == 7) {
				var height_difference = left_column_list_height - right_column_list_height + 9;
			} else {
				var height_difference = left_column_list_height - right_column_list_height + 8;
			}
			$("" + right_column_tag + " .nav-block").css("margin-top", height_difference);
		} else {
			if ($.browser.msie && $.browser.version == 7) {
				var height_difference = right_column_list_height - left_column_list_height + 9;
			} else {
				var height_difference = right_column_list_height - left_column_list_height + 8;
			}
			$("" + left_column_tag + " .nav-block").css("margin-top", height_difference);
		}

	}


/******** CHANGE INDEX CHART FUNCTION ********/

	function ChangeIndexChart (block_id, chart_id) {

		function thisMovie(movieName){
			if (navigator.appName.indexOf("Microsoft") != -1){
				return window[movieName];
			}
			else {
				return document[movieName];
			}
		}

		function chartLight(){
			return thisMovie(chart_id);
		}

		$(""+ block_id +" ul.tabs li a").click(function() {
				var tab_li = $(this).parent();
				if (tab_li.hasClass("current")) {
					// Do nothing.
				} else {
					$(""+ block_id +" ul.tabs li").removeClass("current");
					tab_li.addClass("current");
					var tab_index = tab_li.index();
					switch (tab_index) {
					  case 0: chartLight().setPeriodCode("1:Day");
								   break;
					  case 1: chartLight().setPeriodCode("1:Week");
								   break;
					  case 2: chartLight().setPeriodCode("1:Month");
								   break;
					  case 3: chartLight().setPeriodCode("1:Year");
								   break;
					  default: chartLight().setPeriodCode("1:Day");
					}
				}
				return false;
		});

	}

/** CHANGE INDEX CHART AFTER RELOAD FUNCTION **/

	function ReloadAndChangeIndexChart (block_id, chart_id) {

		function GetMovie(movieName){
			if (navigator.appName.indexOf("Microsoft") != -1){
				return window[movieName];
			}
			else {
				return document[movieName];
			}
		}

		function GetChartLight(){
			return GetMovie(chart_id);
		}

		var tab_index = $(""+ block_id +" ul.tabs li.current").index();

			switch (tab_index) {
			  case 0: GetChartLight().setPeriodCode("1:Day");
						   break;
			  case 1: GetChartLight().setPeriodCode("1:Week");
						   break;
			  case 2: GetChartLight().setPeriodCode("1:Month");
						   break;
			  case 3: GetChartLight().setPeriodCode("1:Year");
						   break;
			  default: GetChartLight().setPeriodCode("1:Day");
			}

	}

/************** FLASH DETECTION **************/
	function flashVersion() {
		// Отдельно определяем Internet Explorer
		var ua = navigator.userAgent.toLowerCase();
		var isIE = (ua.indexOf("msie") != -1 && ua.indexOf("opera") == -1 && ua.indexOf("webtv") == -1);
		// Стартовые переменные
		var version = 0;
		var lastVersion = 10; // c запасом
		var i;
		if (isIE) { // browser == IE
			try {
				  for (i = 3; i <= lastVersion; i++) {
						if (eval('new ActiveXObject("ShockwaveFlash.ShockwaveFlash.'+i+'")')) {
							version = i;
						}
				  }
			} catch(e) {}
		} else { // browser != IE
			for (i = 0; i < navigator.plugins.length; i++) {
				  if (navigator.plugins[i].name.indexOf('Flash') > -1) {
						version = (parseInt(navigator.plugins[i].description.charAt(16)) > version) ? parseInt(navigator.plugins[i].description.charAt(16)) : version;
				  }
			}
		}
		return version;
	}

/***** INSTALL ADOBE FLASH PLAYER MESSAGE *****/
	var install_flash_player = '<p class="install_flash_player">Установите Adobe Flash Player.<br /><a href="http://www.adobe.com/go/getflashplayer"><img  style="margin-top: 7px;"  src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a></p>';

/******** LOAD FLASH IN KEY INDICATORS ********/
	function loadFlash(selecting_row) {
		var SourceID = selecting_row.find("td a").attr("sourceid");
		var TickerID  = selecting_row.find("td a").attr("tickerid");
		var HasIntraday = selecting_row.find("td a").attr("has_intraday");
		var URL = selecting_row.find("td a").attr("url_link");

		$("#key_indicators table tr.current").removeClass("current");
		selecting_row.addClass("current");
	    if (chartLight() && $("#key_indicators .collapse_button").attr('status') == 'o') {
			chartLight().setInstrument(SourceID, TickerID);
			chartLight().setClickReferences(URL);
			if (HasIntraday == '1'){
				chartLight().setPeriodCode("1:Day");
			}
			else{
				chartLight().setPeriodCode("1:Month");
			}
		}
		var key_chart_row_index = selecting_row.attr("id");
		cookie.set(page_key_chart, key_chart_row_index, 120, "/");
	}

	function checkCurrentKeyInd(){
		/******** CHECK VARIABLE page_key_chart ********/
		if (typeof(page_key_chart) !== "undefined") {

			if (cookie.get(page_key_chart) !== "undefined" && cookie.get(page_key_chart) !== "") {

				/******* COOKIE INDEX KEY INDICATORS CHART *******/
				var key_chart_row_index = cookie.get(page_key_chart);
				$("tr#" + key_chart_row_index + "").addClass("current");

			} else if ($("#key_indicators table tr").hasClass("default")){

				/******* OPEN DEFAULT KEY INDICATORS CHART *******/
				$("#key_indicators table tr.default").addClass("current");

			} else {

				/******* OPEN FIRST KEY INDICATORS CHART *******/
				$("#key_indicators table tr:first").addClass("current");

			}

		/* END OF CHECK VARIABLE page_key_chart */
		}
	}


/******** KEY INDICATORS ********/

function initKeyIndicators(block_id){
    var chart = $('<tr class="chart"><td colspan="5"><div id="key-indicators-chart"></div></td></tr>');
    var key_ind = $('#key-indicators tr.current');
    var hover;

    function updateKeyIndicators(){
        var url = '/cgi-bin/indices/key_indicators/' + block_id + '/update/json/';

        $.ajax({
            url: url,
            success: function(data){
                data = eval("(" + data + ")");
                var key_rows = $('#key-indicators tr:not(.chart)');

                for (var i = 0; i < data.length; i++){
                    var row = key_rows.eq(i);
                    var color = data[i].color;

                    row.find('td:eq(0)').removeClass('minus plus green red').addClass(color);
                    row.find('td:eq(2)').html(data[i].time);
                    row.find('td:eq(3)').html(data[i].value);
                    row.find('td:eq(4)').removeClass('minus plus green red').addClass(color).html('<nobr>' + data[i].ch_value + '%</nobr>');
                }
            }
        });
    }

    function refreshKeyIndicatorsChart(){
        var key_ind_chart = $('#key-indicators-chart');
        var key_tr = key_ind_chart.parents('tr.chart');
        var key_meta = key_tr.prev().find('td:eq(1) a');
        var intraday = (key_meta.attr('has_intraday') == '1') ? '1:Day' : '1:Month';

        key_ind_chart.flash({
            swf: url_swf_object,
            width: '100%',
            height: 140,
            flashvars: {
                serverName: url_swf_server_name,
                initialSourceID: key_meta.attr('sourceid'),
                initialTickerID: key_meta.attr('tickerid'),
                clickReferences: key_meta.attr('href'),
                defaultPeriodCode: intraday,
                intradayUpdateRPS: 300,
                archiveRPS: 3600,
                navigateWindow: '_blank',
                showTabControl: false,
                distended: true
            }
        });
    }

    if (key_ind.hasClass('even')){
        chart.addClass('even');
    } else if (key_ind.hasClass('odd')){
        chart.addClass('odd');
    }

    key_ind.after(chart);

    $('#key-indicators tr:not(current, chart)').hover(function(){
        var self = $(this);

        if (!(self.hasClass('chart') || self.hasClass('current'))){
            hover = setTimeout(function(){
                chart.prev().removeClass('current');
                self.addClass('current').after(chart);

                if (self.hasClass('even')){
                    chart.addClass('even').removeClass('odd');
                } else if (self.hasClass('odd')){
                    chart.addClass('odd').removeClass('even');
                }

                cookie.set(page_key_chart, self.attr("id"), 120, "/");
                refreshKeyIndicatorsChart();
            }, 250);
        }
    }, function(){
        if (hover){
            clearTimeout(hover);
        }
    }).find('a').focus(function(){
        var self = $(this);

        chart.prev().removeClass('current');
        self.parent().parent('tr').addClass('current').after(chart);
        if (self.parent().parent('tr').hasClass('even')){
            chart.addClass('even').removeClass('odd');
        } else if (self.parent().parent('tr').hasClass('odd')){
            chart.addClass('odd').removeClass('even');
        }
    });

    refreshKeyIndicatorsChart();
    setInterval(updateKeyIndicators, 300000);
}

/************** DOCUMENT READY **************/

$(document).ready(function(){


/********* KEY INDICATORS CHART CHANGE *********/

	//checkCurrentKeyInd();

/****** COMMON TABLE HOVER SELECTED ROW ******/

	$("table.selectable tbody tr").hover(
	  function () {
		$(this).addClass("selected");
	  },
	  function () {
		$(this).removeClass("selected");
	  }
	);

/*** STATISTICS LIST TABLE HOVER SELECTED ROW ***/

	$("div#statistics div.block_content table tbody tr").hover(
	  function () {
		$(this).addClass("selected");
	  },
	  function () {
		$(this).removeClass("selected");
	  }
	);

/******* LEADERS TABLE SORT FUNCTIONS *******/

	if ($("#top_leaders").length != 0) {

		$("#top_leaders .pane:first .leaders_table").tablesorter({widgets: ["zebra"], sortList:[[1,1],[2,0]], headers: { 0: { sorter: false}, 1: { sorter: "currency"}, 2: { sorter: "currency"}, 3: { sorter: false}, 4: { sorter: false}, 5: { sorter: false} } });

		$("#top_leaders .pane:last .leaders_table").tablesorter({widgets: ["zebra"], sortList:[[1,1],[2,0]], headers: { 0: { sorter: false}, 1: { sorter: "currency"}, 2: { sorter: "currency"}, 3: { sorter: false}, 4: { sorter: false}, 5: { sorter: false} } });

		ToggleSortIcon ("#top_leaders .pane:first .leaders_table thead tr th.ch");
		ToggleSortIcon2 ("#top_leaders .pane:first .leaders_table thead tr th.last");

		ToggleSortIcon ("#top_leaders .pane:last .leaders_table thead tr th.ch");
		ToggleSortIcon2 ("#top_leaders .pane:last .leaders_table thead tr th.last");

		/******* LEADERS TABLE TABS NAVIGATION *******/

		$("#top_leaders .pane_content:first li a").click(function() {

			$("#top_leaders .pane_content:first ul.tabs li").removeClass("current");

			var current_tab_id = $(this).parent().attr("class");

			$(this).parent().addClass("current");

			$.ajax({
				type		    : "GET",
				url			: url_higher_leaders_tabs + current_tab_id,
				dataType	: "jsonp",
				success		: successRequest
			});

			function successRequest(resp){

				$("#top_leaders .pane:first").html(resp.html);

				$("#top_leaders .pane:first .leaders_table thead tr th.ch div.sort_arrow").removeClass("sort_up").removeClass("sort_down").addClass("sort_down").parent().addClass("current");

				// $("#top_leaders .pane:first .leaders_table thead tr th.last div.sort_arrow").removeClass("sort_up").removeClass("sort_down").addClass("sort_down");

				$("#top_leaders .pane:first .leaders_table").tablesorter({widgets: ["zebra"], sortList:[[1,1],[2,0]], headers: { 0: { sorter: false}, 1: { sorter: "currency"}, 2: { sorter: "currency"}, 3: { sorter: false}, 4: { sorter: false}, 5: { sorter: false} } });

				ToggleSortIcon ("#top_leaders .pane:first .leaders_table thead tr th.ch");
				ToggleSortIcon2 ("#top_leaders .pane:first .leaders_table thead tr th.last");

			}

			return false;

		});


		$("#top_leaders .pane_content:last ul.tabs li a").click(function() {

			$("#top_leaders .pane_content:last ul.tabs li").removeClass("current");

			var current_tab_id = $(this).parent().attr("class");

			$(this).parent().addClass("current");

			$.ajax({
				type		    : "GET",
				url			: url_lower_leaders_tabs + current_tab_id,
				dataType	: "jsonp",
				success		: successRequest
			});

			function successRequest(resp){

				$("#top_leaders .pane:last").html(resp.html);

				$("#top_leaders .pane:last .leaders_table thead tr th.ch div.sort_arrow").removeClass("sort_up").removeClass("sort_down").addClass("sort_down").parent().addClass("current");

				// $("#top_leaders .pane:last .leaders_table thead tr th.last div.sort_arrow").removeClass("sort_up").removeClass("sort_down").addClass("sort_down");

				$("#top_leaders .pane:last .leaders_table").tablesorter({widgets: ["zebra"], sortList:[[1,1],[2,0]], headers: { 0: { sorter: false}, 1: { sorter: "currency"}, 2: { sorter: "currency"}, 3: { sorter: false}, 4: { sorter: false}, 5: { sorter: false} } });

				ToggleSortIcon ("#top_leaders .pane:last .leaders_table thead tr th.ch");
				ToggleSortIcon2 ("#top_leaders .pane:last .leaders_table thead tr th.last");

			}

			return false;

		});

	}

/********* IPO SPO TABLE SORT FUNCTIONS *********/

	if ($("#ipo_spo").length != 0) {

		// TableSorter Date parser format for dd.mm.yyyy
		$.tablesorter.addParser({
			// set a unique id
			id: 'datesorter',
			is: function(s) {
				// return false so this parser is not auto detected
				return false;
			},
			format: function(s) {
				// format your data for normalization
				s = s.split('.');
				// format date to yyyy-mm-dd
				s = s[2]+"-"+s[1]+"-"+s[0];
				return $.tablesorter.formatFloat(new Date(s).getTime());
			},
			// set type, either numeric or text
			type: 'numeric'
		});

		// TableSorter Links parser
		$.tablesorter.addParser({
			// set a unique id
			id: 'links',
			is: function(s)
			{
				// return false so this parser is not auto detected
				return false;
			},
			format: function(s)
			{
				// format your data for normalization
				s = s.replace(new RegExp(/<.*?>/),"");
				return s;
			},
			// set type, either numeric or text
			type: 'text'
		});

		// TableSorter Price parser
		$.tablesorter.addParser({
			// set a unique id
			id: 'price',
			is: function(s)
			{
				// return false so this parser is not auto detected
				return false;
			},
			format: function(s)
			{
				// format your data for normalization
				s = s.replace(new RegExp(/,/),".");
				return $.tablesorter.formatFloat(s);
			},
			// set type, either numeric or text
			type: 'numeric'
		});

		// IPO
		if ($("table.ipo_spo_table:eq(0)").hasClass("tablesorter")) {
			$("table.ipo_spo_table:eq(0)").tablesorter({widgets: ["zebra"], headers: { 0: { sorter: "links"}, 1: { sorter: "datesorter"}, 2: { sorter: "currency"}, 3: { sorter: "price"}, 4: { sorter: "currency"}, 5: { sorter: "text"}, 6: { sorter: "currency"}, 7: { sorter: "currency"}, 8: { sorter: false} } });
		}

		// SPO
		if ($("table.ipo_spo_table:eq(1)").hasClass("tablesorter")) {
			$("table.ipo_spo_table:eq(1)").tablesorter({widgets: ["zebra"], headers: { 0: { sorter: "links"}, 1: { sorter: "datesorter"}, 2: { sorter: "currency"}, 3: { sorter: "price"}, 4: { sorter: "currency"}, 5: { sorter: "text"}, 6: { sorter: "currency"}, 7: { sorter: "currency"}, 8: { sorter: false} } });
		}

		// IPO
		ToggleSortSpanIcon2 ("table.ipo_spo_table:eq(0) thead tr th");

		// SPO
		ToggleSortSpanIcon2 ("table.ipo_spo_table:eq(1) thead tr th");
	}

/*********** STOCKS TABS NAVIGATION ***********/

	tabsNavigation ("#stocks");

/***** COMPANIES REVIEW TABS NAVIGATION *****/

	tabsNavigation ("#companies_review");

/****** PRICES FORECAST TABS NAVIGATION ******/

	tabsNavigation ("#prices_forecast");

/********* TIMETABLE TABS NAVIGATION *********/

	$("ul#timetable_tabs li a").click(function() {
		var tab_li = $(this).parent();
		if (tab_li.hasClass("current")) {
			// Do nothing.
		} else {
			$("ul#timetable_tabs li").removeClass("current");
			tab_li.addClass("current");
			var tabs_length = $("ul#timetable_tabs li").length;
			var tab_index = tab_li.index();
			tab_index = tabs_length - tab_index - 1;
			$("div#timetable div.pane").hide(); // Hide all panes.
			$("div#timetable div.pane:eq(" + tab_index + ")").show();
		}
		return false;
	});

/****** MAIN INDICATORS TABS NAVIGATION ******/
	$("ul#main_indicators_tabs li a").click(function() {
		var tab_li = $(this).parent();
		if (tab_li.hasClass("current")) {
			// Do nothing.
		} else {
			$("ul#main_indicators_tabs li").removeClass("current");
			tab_li.addClass("current");
			var tabs_length = $("ul#main_indicators_tabs li").length;
			var tab_index = tab_li.index();
			tab_index = tabs_length - tab_index - 1;
			$("div#main_indicators div.pane").hide(); // Hide all panes.
			$("div#main_indicators div.pane:eq(" + tab_index + ")").show();
			cookie.set("main_indicators_pane_index", tab_index, 365, "/"); // Save pane index into Cookie.
		}
		return false;
	});

/********** IPO SPO TABS NAVIGATION **********/

	$("ul#ipo_spo_tabs li a").click(function() {
		var tab_li = $(this).parent();
		if (tab_li.hasClass("current")) {
			// Do nothing.
		} else {
			$("ul#ipo_spo_tabs li").removeClass("current");
			tab_li.addClass("current");
			var tabs_length = $("ul#ipo_spo_tabs li").length;
			var tab_index = tab_li.index();
			tab_index = tabs_length - tab_index - 1;
			$("div#ipo_spo div.pane").hide(); // Hide all panes.
			$("div#ipo_spo div.pane:eq(" + tab_index + ")").show();
		}
		return false;
	});


/*********** SETUP TABLE FUNCTIONS ***********/

	/* Сохранение в Cookie внесённых изменений в центральной таблице настроек индикаторов. */
	$("#indicators_setup .button").click(function() {
		var form_ifrm_inputs = $("form#ifrm :input[name='ind_show']");
		for (var j = 0; j < form_ifrm_inputs.length; j++) {
			if (form_ifrm_inputs[j].checked) {
				if (ind_tickers.indexOf('-' + form_ifrm_inputs[j].value + '-') == -1) {
					ind_tickers = ind_tickers + form_ifrm_inputs[j].value +  '-';
				}
			} else {
				if (ind_tickers.indexOf('-' + form_ifrm_inputs[j].value + '-') >= 0) {
					ind_tickers = ind_tickers.replace('-' + form_ifrm_inputs[j].value + '-', '-');
				}
			}
		}
		save_and_reload();
		return false;
	});

	/* Функция сохранения настроек в Cookie. */
	function save_and_reload() {
		cookie.set(ind_cookie_name, ind_tickers, 365, '/');
		document.location.reload();
	}

/***** SETUP INDICATORS TABLE FUNCTIONS *****/
	/* Снятие галочек со всех checkbox в сформированной таблице для операций с текущим набором индикаторов. */
	var form_dfrm_inputs_to_uncheck = $("form#dfrm :input[name='ind_del']");
	for (var i = 0; i < form_dfrm_inputs_to_uncheck.length; i++) {form_dfrm_inputs_to_uncheck[i].checked = false;}

	/* Сохранение в Cookie внесённых изменений настроек ключевых индикаторов. */
	$("#save_button").click(function() {
		var form_dfrm_ind_del_inputs = $("form#dfrm :input[name='ind_del']");
		if (!form_dfrm_ind_del_inputs || (tickers_array.length == 3 && form_dfrm_ind_del_inputs.checked == false)) {return false;}
		ind_tickers = '-';
		for (var i = 0; i < form_dfrm_ind_del_inputs.length; i++) {
			if (!form_dfrm_ind_del_inputs[i].checked) {ind_tickers += form_dfrm_ind_del_inputs[i].value + '-';}
		}
		 save_and_reload();
		 return false;
	});

	/* Сброс всех настроек ключевых индикаторов. */
	$("#default_button").click(function() {
		 ind_tickers = '';
		 save_and_reload();
		 return false;
	});

/*** SETUP INDICATORS TABLE DRAG AND DROP ***/
	/* Инициация плагина перестановки строк в таблице операций с текущим набором индикаторов. */
	if ($("#setup_indicators .block_content .dragdrop").length !== 0) {
		 $("#setup_indicators .block_content .dragdrop").tableDnD({onDragClass: "dragTR"});
	}

/******* ADVANCED SEARCH LINK FUNCTION *******/

	$("form#search table tr.last td a").click(function() {

		var search_word = $("#search_word").val();

		if (search_word == "поиск" || search_word == "") {

			search_word = "";

		}

		search_word = convertQuery(search_word, false);

		window.location.href = url_advanced_search + search_word;

		return false;

	});


/*  SET SEARCH FORM INPUT INACTIVE COLOR AND VALUE */

    if ($("#search_word").val() == "" || $("#search_word").val() == "поиск") {
    	$("#search_word").attr("autocomplete","off").addClass("inactive");
    }
	$("#companies_query").attr("autocomplete","off").addClass("inactive").val("эмитент");
	$("#email").attr("autocomplete","off").addClass("inactive").val("введите e-mail");
	$("#login").attr("autocomplete","off").addClass("inactive").val("логин");
	$("#password").attr("autocomplete","off");
	$("#releases_query").attr("autocomplete","off");
	$("#pifs_query").attr("autocomplete","off");

	$("#search_word").focus(function(){
		var self = $(this);
		self.removeClass("inactive");
	});
/******** SEARCH FORM INPUT CLICK ********/

	$("#search_word").click(function(){
		currentSuggestSelection = -1; // Выделен input
		if ($(this).val() == "поиск") {$(this).removeClass("inactive").val("");}
	});

	$("#search_word").blur(function(){
		if ($(this).val() == "") {$(this).addClass("inactive").val("поиск");}
	});

	$("#companies_query").click(function(){
		$(this).removeClass("inactive").val("");
	});

	$("#companies_query").blur(function(){
		if ($(this).val() == "") {$(this).addClass("inactive").val("эмитент");}
	});

	$("#email").click(function(){
		$(this).removeClass("inactive").val("");
	});

	$("#email").blur(function(){
		if ($(this).val() == "") {$(this).addClass("inactive").val("введите e-mail");}
	});

	$("#login").click(function(){
		$(this).removeClass("inactive").val("");
	});

	$("#login").blur(function(){
		if ($(this).val() == "") {$(this).addClass("inactive").val("логин");}
	});

/*********** SUBMIT SEARCH FORM ***********/

	$("#search").submit(function() {
		var search_word_value = $("#search_word").val();
		search_word_value = search_word_value.toString();
		search_word_value = $.trim(search_word_value);
		header_search_cache = search_word_value;
		if ((header_search_cache.length < 1) || (header_search_cache == "поиск")) {
			alert(alert_empty_search);
			return false;
		}
		if (currentSuggestSelection == -1) { // Выделен input. Отправить данные из формы на сервер.
			return true;
		}
		if ($("#search_suggest table tr").hasClass("itemhover")) {// Перейти по url выбранного пункта меню suggest
			if ($("#search_suggest table tr.itemhover").hasClass("all")) {// Пункт меню "все"
				window.location = $("#search_suggest table tr.itemhover").attr("url") + $("#search_word").val();
			} else {// Обычный пункт меню
				window.location = $("#search_suggest table tr.itemhover").attr("url");
			}
			return false;
		}
		return true;
	});

	$("#companies_search_form").submit(function() {submitSearchForm ("#companies_query", url_companies); return false;});


/********** SEARCH SUGGEST **********/

/******** SEARCH SUGGEST NAVIGATION ********/

	var header_search_cache = ""; // Кэш текущего поискового слова
	var currentSuggestSelection = -1; // Текущий выбранный пункт меню

	// Функция перемещения по строкам с помощью кнопок вверх и вниз клавиатуры
	function searchSuggestNavigate(direction) {

	   var item_rows_number = $("#search_suggest table tr.item").length;

	   if ($("#search_suggest table tr.itemhover").size() == 0) { // Не выбран ни один пункт меню
		  currentSuggestSelection = -1;
		   }

	   if (direction == 'up') { // Если нажата кнопка вверх
			if (currentSuggestSelection == -1) { // Если пункт меню до этого был выбран и указатель нахождится на input
				currentSuggestSelection = item_rows_number -1;
			} else {
			  if (currentSuggestSelection != -1) { // Если пункт меню до этого был выбран и указатель нахождится на пункте меню
				 if (currentSuggestSelection == 0) { // Если достигнут верх списка, то переход на input
					 currentSuggestSelection = -1;
				  } else if (currentSuggestSelection != 0) { // Если еще не достигнут верх списка, то переход на предыдущий пункт меню
			 currentSuggestSelection--;
			  }
			   }
			}
		   } else if (direction == 'down') { // Если нажата кнопка вниз
		  if (currentSuggestSelection >= (item_rows_number -1)) { // Если достигнут низ списка, то переход на первый пункт меню
		 	 currentSuggestSelection = 0;
		  } else if(currentSuggestSelection <= (item_rows_number -1)) { // Если не достигнут низ списка, то переход на следующий пункт меню
			 currentSuggestSelection++;
			  }
		   }

		setSelectedItem(currentSuggestSelection); // Функция подсветки выбранного пункта меню
	}

	// Функция подсветки выбранного пункта меню
	function setSelectedItem(menuitem) {
	   $("#search_suggest table tr").removeClass("itemhover");
	   if (currentSuggestSelection != -1) {
	   $("#search_suggest table tr.item:eq("+ menuitem +")").addClass("itemhover");
	   }
	}

	// Подсветка пункта меню с помощью курсора мыши
	function  searchSuggestHover () {
		$("#search_suggest table tr.item").hover(
			function () {
				$("#search_suggest table tr.item").removeClass("itemhover");
				$(this).addClass("itemhover");
				var itemhover_index  = $(this).index();
				var notitem_rows_number = $("#search_suggest table tr:lt("+itemhover_index+")").filter(".notitem").length;
				currentSuggestSelection = itemhover_index - notitem_rows_number; // Текущая позиция равна индексу выбранного пункта меню
			},
			function () {
				$("#search_suggest table tr.item").removeClass("itemhover");
				currentSuggestSelection = -1; // Текущая позиция равна индексу input
			}
		);
	}

	// Переход по ссылке пункта меню при клике по нему мышью
	function searchSuggestClick () {
		$("#search_suggest table tr.item").click(function() {
			if ($(this).hasClass("all")) {
				window.location = $(this).attr("url") + $("#search_word").val();
			} else {
			window.location = $(this).attr("url");
			}
		});
	}

	// Переход по ссылке пункта меню "все" при клике по нему мышью
	function searchSuggestAClick () {
		$("#search_suggest a.search_all").click(function() {
			window.location = $(this).parent().parent().parent().attr("url") + $("#search_word").val();
			return false;
		});
	}

	// Удаление всего меню при клике вне его
	function removeSearchSuggest () {
		$(document).click(function(e){
			if ($(e.target).parents().filter("#search_suggest:visible").length != 1) {
				//$("#search_suggest").empty().hide();
				$("#search_suggest").hide();
			}
		});
	}

	var sendAJAXtimeout;

	$("#search").keydown(function(e){ // Перемещение по меню
		if (e.keyCode == 38) {// Нажата верхняя стрелка -> Подняться по меню suggest вверх
			if ($("#search_suggest").is(":visible")) {searchSuggestNavigate("up");}
		} else if (e.keyCode == 40) {// Нажата нижняя стрелка -> Опуститься по меню suggest вниз
			if ($("#search_suggest").is(":visible")) {searchSuggestNavigate("down");}
		}
	});

	$("#search").keyup(function(e){ // Выделение пункта меню

		// Нажатие Enter приведёт к отправке данных из формы на сервер.
		 // Но, если виден suggest и выделен пункт меню, то будет произведен переход по url пункта suggest.
	    if (e.keyCode == 13) {// Нажата клавиша Enter -> Ничего не делать. Автоматически активируется сценарий $("#search").submit()
		} else if (e.keyCode == 27) {// Нажата клавиша Esc -> Удалить блок suggest
			$("#search_suggest").empty().hide();
		} else if ((e.keyCode == 16) || (e.keyCode == 17) || (e.keyCode == 18)) {// Нажата клавиша Shift, Alt или Ctrl-> Ничего не делать
		} else if (e.keyCode == 37) {// Нажата левая стрелка -> Ничего не делать
		} else if (e.keyCode == 39) {// Нажата правая стрелка -> Ничего не делать
		} else if (e.keyCode == 38) {// Нажата верхняя стрелка -> Ничего не делать
		} else if (e.keyCode == 40) {// Нажата нижняя стрелка -> Ничего не делать
		} else if (e.keyCode == 9) {// Нажата табуляция -> Ничего не делать
		} else {
			var search_word = $("#search_word").val();
			header_search_cache = search_word;
			if (search_word.length == 0) {// Число символов: 0 -> Ничего не делать. Запрос на сервер не отправлять. Выпадающее меню удалить.
				$("#search_suggest").empty().hide();
			} else if (search_word.length > 0) {// Число символов: 1 или более -> Отправить запрос на сервер вывести результат в виде выпадающего меню.
				$("#search_suggest").empty().hide();

				clearTimeout(sendAJAXtimeout);

				sendAJAXtimeout = setTimeout(function(){

			search_word = search_word.toString();
			search_word = $.trim(search_word.toLowerCase());
			search_word = encodeURI(search_word);

					var url = url_search + search_word;

					$("#search_word").addClass("loader");

					$.ajax({
					  url: url,
					  dataType: 'json',
					  success: function(data) {

						$("#search_word").removeClass("loader");

						var search_word_input = $("#search_word").val(); // Сохранение поискового слова.
						search_word_input = search_word_input.toString(); // Преобразование поискового слова.
						search_word_input = $.trim(search_word_input.toLowerCase());

						if (search_word_input.length == 0) {// Число символов: 0 -> Ничего не делать. Выпадающее меню удалить.
							$("#search_suggest").empty().hide();
						} else {

							var search_json_data = eval(data); // Сохранение ответа сервера в переменной для последующей фильтрации данных.

						// SUGGEST TABLE RENDER
						var search_table_head = '<div id="search_suggest"><table>';
						var search_table_body = '';
						var search_table_foot   = '</table></div>';

						if (search_json_data.list.stock.length != 0){
							search_table_body += '<tr class="notitem"><td colspan="3"><h4>Инструменты</h4></td></tr>';
							for (var i = 0; i < search_json_data.list.stock.length; i++) {
								var stock_url = search_json_data.list.stock[i].url;
									var stock_id_ticker      = search_json_data.list.stock[i].id_ticker;
									var stock_shortname   = search_json_data.list.stock[i].shortname;
									var stock_sourcename = search_json_data.list.stock[i].sourcename;
								if (i%2) {// Even
										search_table_body += '<tr class="item even" url="' + stock_url  + '"><td class="first"><a href="' + stock_url  + '">'  +  stock_id_ticker  + '</a></td><td class="middle">' + stock_shortname + '</td><td class="last">' + stock_sourcename + '</td></tr>';
								} else {// Odd
										search_table_body += '<tr class="item odd" url="' + stock_url  + '"><td class="first"><a href="' + stock_url  + '">'  +  stock_id_ticker  + '</a></td><td class="middle">' + stock_shortname + '</td><td class="last">' + stock_sourcename + '</td></tr>';
								}
							}
							search_table_body += '<tr class="item all" url="/search/stock/?q="><td colspan="3"><p class="link"><a class="search_all" href="/">Все инструменты</a></p></td></tr>';
						}

						if (search_json_data.list.emitent.length != 0){
							search_table_body += '<tr class="notitem"><td colspan="3"><h4>Эмитенты</h4></td></tr>';
							for (var i = 0; i < search_json_data.list.emitent.length; i++) {
								var list_url     = search_json_data.list.emitent[i].url;
									var list_name = search_json_data.list.emitent[i].name;
								if (i%2) {// Even
										search_table_body += '<tr class="item even" url="' + list_url  + '"><td colspan="3"><a href="' + list_url  + '">'  + list_name  + '</a></td></tr>';
								} else {// Odd
										search_table_body += '<tr class="item odd" url="' + list_url  + '"><td colspan="3"><a href="' + list_url  + '">'  + list_name  + '</a></td></tr>';
								}
							}
								search_table_body += '<tr class="item all" url="/search/emitent/?q="><td colspan="3"><p class="link"><a class="search_all" href="/">Все эмитенты</a></p></td></tr>';
						}

						if (search_json_data.list.news.length != 0){
							search_table_body += '<tr class="notitem"><td colspan="3"><h4>Новости</h4></td></tr>';
							for (var i = 0; i < search_json_data.list.news.length; i++) {
								var news_url        = search_json_data.list.news[i].url;
									var news_header = search_json_data.list.news[i].header;
								if (i%2) {// Even
										search_table_body += '<tr class="item even" url="' + news_url + '"><td colspan="3"><a href="' + news_url  + '">'  + news_header + '</a></td></tr>';
								} else {// Odd
										search_table_body += '<tr class="item odd" url="' + news_url + '"><td colspan="3"><a href="' + news_url  + '">'  + news_header + '</a></td></tr>';
								}
				}
								search_table_body += '<tr class="item all" url="/search/news/?q="><td colspan="3"><p class="link"><a class="search_all" href="/">Все новости</a></p></td></tr>';
			}

						if (search_table_body != "") {

							var search_table_full = search_table_head + search_table_body +search_table_foot;

							$("#search_suggest").replaceWith(search_table_full);
							$("#search_suggest").show();

							searchSuggestHover ();
							searchSuggestClick ();
						    searchSuggestAClick ();
							removeSearchSuggest ();

			    } else {
							search_table_body += '<tr class="notitem"><td><h4>По вашему запросу ничего не найдено</h4></td></tr>';
							var search_table_full = search_table_head + search_table_body +search_table_foot;

							$("#search_suggest").replaceWith(search_table_full);
							$("#search_suggest").show();

							removeSearchSuggest ();
					}

						}

					  },
					  error: function() {
							$("#search_word").removeClass("loader");

							var search_table_full = '<div id="search_suggest"><table><tr class="notitem"><td><h4>В данный момент сервис недоступен</h4></td></tr></table></div>';
							$("#search_suggest").replaceWith(search_table_full);
							$("#search_suggest").show();

							removeSearchSuggest ();
		}

	});

				}, 300);

			}
		}

		});


/************ COMPANIES SUGGEST ************/

/****** COMPANIES SUGGEST NAVIGATION ******/

	var currentСompaniesSelection = 0; // Текущий выбранный пункт меню

	var companies_rows_height_array;  // Массив высот строк таблицы, из которой состоит меню

	// Помещение высот всех строк меню в единый массив
	function companiesSumOfRowsHeight () {

		companies_rows_height_array = new Array();  // Очистка массива

		for (i = 0; i < $("div#companies_suggest table tr").length; i++) {

			companies_rows_height_array[i] = $("div#companies_suggest table tr:eq("+ i +")").height();

		}

	}

	// Функция перемещения по строкам с помощью кнопок вверх и вниз клавиатуры
	function companiesSuggestNavigate(direction) {

		   if ($("#companies_suggest table tr.itemhover").size() == 0) { // Не выбран ни один пункт меню
			  currentСompaniesSelection = -1;
		   }

		   if (direction == 'up' && currentСompaniesSelection != -1) { // Если нажата кнопка вверх
			  if (currentСompaniesSelection != 0) {
				 currentСompaniesSelection--;
			  }
		   } else if (direction == 'down') { // Если нажата кнопка вниз
			  if(currentСompaniesSelection != $("#companies_suggest table tr").size() -1) {
				 currentСompaniesSelection++;
			  }
		   }

			setSelectedСompanies(currentСompaniesSelection); // Функция подсветки выбранного пункта меню

			$("#companies_query").val($("#companies_suggest table tr.itemhover td:first").text());

	}

	// Функция подсветки выбранного пункта меню
	function setSelectedСompanies(menuitem) {
	   $("#companies_suggest table tr").removeClass("itemhover");
	   $("#companies_suggest table tr:eq("+ menuitem +")").addClass("itemhover");

	   var row_index = $("div#companies_suggest table tr.itemhover").index(); // Индекс выбранного пункта меню
	   var row_margin_top = 0; // Отступ сверху от начала таблицы для прокрутки скроллабара до выбранного пункта

	   for (k = 0; k < row_index; k++) {
			// Суммарная высота всех строк до выбранного пункта меню
			row_margin_top = row_margin_top + companies_rows_height_array[k];
	   }

		$("#companies_suggest").scrollTop(row_margin_top);  // Прокрутка до выбранного пункта меню

	}


	// Подсветка пункта меню с помощью курсора мыши
	function companiesSuggestHover () {

		$("#companies_suggest table tr").hover(
			function () {
				$("#companies_suggest table tr").removeClass("itemhover");
				$(this).addClass("itemhover");
				currentСompaniesSelection = $(this).index(); // Текущая позиция равна индексу выбранного пункта меню
			},
			function () {
			}
			);

	}

	// Переход по ссылке пункта меню при клике по нему мышью

	function companiesSuggestClick () {

		$("#companies_suggest table tr").click(function() {

				var query = $(this).children("td:eq(0)").text();

				query = convertQuery(query, false);

				window.location = url_instruments + query;

			});

	}

	// Удаление всего меню при клике вне его

	function removeСompaniesSuggest () {

			$(document).click(function(e){

			if ($(e.target).parents().filter("#companies_suggest:visible").length != 1) {

				$("#companies_suggest").remove();

				}

			});

	}

	var companies_json_data; // Эта переменная хранит в себе ответ сервера в формате json.

	$("#companies_search_form").keyup(function(e){

		// Нажатие Enter приведёт к отправке данных из формы на сервер.

		if (e.keyCode == 37) {

			// Arrow left. Do nothing.

		} else if (e.keyCode == 39) {

			// Arrow right. Do nothing.

		} else if (e.keyCode == 38) {

			if ($("#companies_suggest").is(":visible")) {

				companiesSuggestNavigate("up");

	}

		} else if (e.keyCode == 40) {

			if ($("#companies_suggest").is(":visible")) {

				companiesSuggestNavigate("down");

			}

		} else {


		var search_word = $("#companies_query").val();

		if (search_word.length == 0) {

			// Число символов: 0. Ничего не делать. Запрос на сервер не отправлять. Выпадающее меню удалить.

			$("#companies_suggest").remove();

		} else if (search_word.length == 1) {

			// Число символов: 1. Отправить запрос на сервер, сохранить его ответ в переменной и вывести результат в виде выпадающего меню.

			search_word = search_word.toString();
			search_word = $.trim(search_word.toLowerCase());

			search_word = encodeURI(search_word);

			getCompanies(search_word);

		} else if (search_word.length > 1) {

			// Число символов больше 1 (два, три и более). Запрос на сервер не отправлять. Произвести поиск в переменной, хранящей ответ сервера после предыдущего запроса. Если совпадение символов найдено, то вывести результат в виде выпадающего меню. Если совпадение не найдено, то ничего не делать, выпадающее меню удалить.


		// Поиск совпадений.

		// 1. Приведение шрифт запроса и ответа сервера к нижнему регистру.
		// 2. Поиск в цикле совпадений с помощью регулярного выражения.
		// 3. Подставить в шаблон реуглярного выражения поисковый запрос. В цикле сравнить шаблон с ответом сервера.
		// 4. Если совпадение найдено, то добавить результат в конец переменной.
		// 5. Сформировать из этой переменной выпадающее меню и вывести его на экран, заменив предыдущее.
		// 6. Если совпадения не найдены, то удалить выпадающее меню, убрав его с экрана.


			$("#companies_suggest").remove();

			search_word = search_word.toString();
			search_word = $.trim(search_word.toLowerCase());

			var pattern = "^(" + search_word + ")";
			var reg       =  new RegExp(pattern, "i");

			// SEARCH SUGGEST COMPANIES TABLE RENDER

			var companies_table_head = "<div id=\"companies_suggest\"><table>";

			var companies_table_body = "";

			var companies_table_foot = "</table></div>";

			for (var i = 0; i < companies_json_data.length; i++) {

			   var search_ticker = companies_json_data[i].name_enterprise_rus;
					  search_ticker = search_ticker.toString();
					  search_ticker = $.trim(search_ticker.toLowerCase());

				if (search_ticker.match(reg)) {

						companies_table_body += "<tr><td>" + companies_json_data[i].name_enterprise_rus + "</td></tr>";

					}

			}

			if (companies_table_body != "") {

				var companies_table_full = companies_table_head + companies_table_body + companies_table_foot;

				$(companies_table_full).insertAfter("#companies_search_form table");

					companiesSumOfRowsHeight ();

					companiesSuggestHover ();

					companiesSuggestClick ();

					removeСompaniesSuggest ();

				} else {

						$("#companies_suggest").remove();

					}

			}

		}

	});


/***** GET COMPANIES JSON DATA FUNCTION *****/

	function getCompanies (search_word) {

		$("#companies_suggest").remove();

		var url = url_json_data + search_word + "&method=2";

		$.getJSON(url, function(data) {

			var json = eval(data);

			companies_json_data = json; // Сохранение ответа сервера в переменной для последующей фильтрации данных.

			// COMPANIES SUGGEST TABLE RENDER

			var companies_table_head = "<div id=\"companies_suggest\"><table>";

			var companies_table_body = "";

			var companies_table_foot = "</table></div>";

			for (var i = 0; i < json.length; i++) {

				companies_table_body += "<tr><td>" + json[i].name_enterprise_rus + "</td></tr>";

			}

			var companies_table_full = companies_table_head + companies_table_body + companies_table_foot;

			$(companies_table_full).insertAfter("#companies_search_form table");

			companiesSumOfRowsHeight ();

			companiesSuggestHover ();

			companiesSuggestClick ();

			removeСompaniesSuggest ();

		});

	}


/************* ADD TO BOOKMARK *************/

	$("a.favorites").click(function(){addbookmark("Quote РБК", "http://quote.rbc.ru"); return false;});

/************* ADD TO HOMEPAGE *************/

	$("a.homepage").click(function(){return setHP(this, 'http://www.quote.rbc.ru');});

/* BODY MIN-WIDTH AND MAX-WIDTHFUNCTION FOR INTERNET EXPLORER 6 */

	if ($.browser.msie && $.browser.version == 6) {

		function bodyResize () {

			if ($(window).width() > 1256) {$("body").width(1256);}
			if ($(window).width() < 995) {$("body").width(995);}
			if (($(window).width() < 1256) && ($(window).width() > 995)) {$("body").css("width","auto");}

		}

		bodyResize ();
		$(window).resize(function(){bodyResize ();});

	}



/********** FORM SELECT OPTION STYLE **********/

	createDropDown();

	$(".dropdown dt").click(function() {

		$(".dropdown dd ul").toggle();

		return false;

	});

	$(document).bind('click', function(e) {

		var $clicked = $(e.target);

		if (! $clicked.parents().hasClass("dropdown")){$(".dropdown dd ul").hide();} // Для Select в блоке Продукты
		if (! $clicked.parents().hasClass("newselect")){$(".newselect dd ul").hide();} // Для Select в блоке Конвертер

	});

	$(".dropdown dd ul li").click(function() {

		var text = $(this).html();

		$(".dropdown dt").html(text);

		$(".dropdown dd ul").hide();

		var source = $("select#subscribe");

		source.val($(this).find("span.value").html());

		var selected_index = $(this).index();

		$("select#subscribe option:eq(" + selected_index + ")").attr("selected","selected");

	});


	function createDropDown(){

		var source = $("select#subscribe");

		source.hide();

		var selected = source.find("option[selected]");

		var options = $("option", source);

		$(".email_form table tr td.first").append('<dl id="target" class="dropdown"></dl>');

		$("#target").append('<dt><span class="option">' + selected.text() +
			'</span><span class="value">' + selected.val() +
			'</span></dt>');

		$("#target").append('<dd><ul></ul></dd>');

		options.each(function(){

			$("#target dd ul").append('<li><span class="option">' +
				$(this).text() + '</span><span class="value">' +
				$(this).val() + '</span></li>');

		});

		if ($.browser.opera || $.browser.webkit) {
			$("form.email_form input.button").css("margin-top", "2px");
		} else {
			$("form.email_form input.button").css("margin-top", "1px");
		}


		$("dl.dropdown dd ul li").hover(
			function () {
				$(this).addClass("hover");
			},
			function () {
				$(this).removeClass("hover");
			}
		);

	}

/****** INFLATION VISIBLE GRAPHS VARIABLES ******/
	var gr_rus_cpi = "gr_rus_cpi";
	var gr_usa_cpi = "gr_usa_cpi";
	var gr_eur_cpi = "gr_eur_cpi";

	var gr_rus_ppi = "gr_rus_ppi";
	var gr_usa_ppi = "gr_usa_ppi";
	var gr_eur_ppi = "gr_eur_ppi";

	var visible_gr_rus = gr_rus_cpi;
	var visible_gr_usa = gr_usa_cpi;
	var visible_gr_eur = gr_eur_cpi;

	var rus_cpi = "rus_cpi";
	var usa_cpi = "usa_cpi";
	var eur_cpi = "eur_cpi";

	var rus_ppi = "rus_ppi";
	var usa_ppi = "usa_ppi";
	var eur_ppi = "eur_ppi";

/********** INFLATION TABS NAVIGATION **********/
	$("ul#graph_tabs li a").click(function() {
		var tab_li = $(this).parent();
		if (tab_li.hasClass("current")) {
			// Do nothing.
		} else {
			$("ul#graph_tabs li").removeClass("current");
			tab_li.addClass("current");
			var tab_index = tab_li.index();

			$("#gr_rus_cpi").hide();
			$("#gr_rus_ppi").hide();
			$("#gr_usa_cpi").hide();
			$("#gr_usa_ppi").hide();
			$("#gr_eur_cpi").hide();
			$("#gr_eur_ppi").hide();

			$("#rus_cpi").hide();
			$("#rus_ppi").hide();
			$("#usa_cpi").hide();
			$("#usa_ppi").hide();
			$("#eur_cpi").hide();
			$("#eur_ppi").hide();

			$("div#inflation table.macro_infl tr").removeClass("current");
			if (tab_index == "0") {
				if (visible_gr_rus == gr_rus_cpi) {
					$("#gr_rus_cpi").show();
					$("#rus_cpi").addClass("current");
					visible_gr_rus = gr_rus_cpi;
					$("#rus_cpi").show();
					$("#rus_ppi").show();
				} else {
					$("#gr_rus_ppi").show();
					$("#rus_ppi").addClass("current");
					visible_gr_rus = gr_rus_ppi;
					$("#rus_cpi").show();
					$("#rus_ppi").show();
				}
			} else if (tab_index == "1") {
				if (visible_gr_usa == gr_usa_cpi) {
					$("#gr_usa_cpi").show();
					$("#usa_cpi").addClass("current");
					visible_gr_usa = gr_usa_cpi;
					$("#usa_cpi").show();
					$("#usa_ppi").show();
				}else {
					$("#gr_usa_ppi").show();
					$("#usa_ppi").addClass("current");
					visible_gr_usa = gr_usa_ppi;
					$("#usa_cpi").show();
					$("#usa_ppi").show();
				}
			} else if (tab_index == "2") {
				if (visible_gr_eur == gr_eur_cpi) {
					$("#gr_eur_cpi").show();
					$("#eur_cpi").addClass("current");
					visible_gr_eur = gr_eur_cpi;
					$("#eur_cpi").show();
					$("#eur_ppi").show();
				} else {
					$("#gr_eur_ppi").show();
					$("#eur_ppi").addClass("current");
					visible_gr_eur = gr_eur_ppi;
					$("#eur_cpi").show();
					$("#eur_ppi").show();
				}
			}
		}
		return false;
	});


/****** INFLATION CHANGE GRAPH FUNCTION ******/
	$("div#inflation table tr").click(function() {

		$("#gr_rus_cpi").hide();
		$("#gr_rus_ppi").hide();
		$("#gr_usa_cpi").hide();
		$("#gr_usa_ppi").hide();
		$("#gr_eur_cpi").hide();
		$("#gr_eur_ppi").hide();

		$("#rus_cpi").hide();
		$("#rus_ppi").hide();
		$("#usa_cpi").hide();
		$("#usa_ppi").hide();
		$("#eur_cpi").hide();
		$("#eur_ppi").hide();

		var row_button = $(this);
		row_button.parent().find("tr").removeClass("current");
		if (row_button.attr("id") == rus_cpi) {
			$("#gr_rus_cpi").show();
			$("#rus_cpi").show().addClass("current");
			 visible_gr_rus = gr_rus_cpi;
			$("#rus_ppi").show();
		} else if (row_button.attr("id") == rus_ppi) {
			$("#gr_rus_ppi").show();
			$("#rus_ppi").show().addClass("current");
			visible_gr_rus = gr_rus_ppi;
			$("#rus_cpi").show();
		} else if (row_button.attr("id") == usa_cpi) {
			$("#gr_usa_cpi").show();
			$("#usa_cpi").show().addClass("current");
			visible_gr_usa = gr_usa_cpi;
			$("#usa_ppi").show();
		} else if (row_button.attr("id") == usa_ppi) {
			$("#gr_usa_ppi").show();


			$("#usa_ppi").show().addClass("current");
			visible_gr_usa = gr_usa_ppi;
			$("#usa_cpi").show();
		} else if (row_button.attr("id") == eur_cpi) {
			$("#gr_eur_cpi").show();
			$("#eur_cpi").show().addClass("current");
			visible_gr_eur = gr_eur_cpi;
			$("#eur_ppi").show();
		} else if (row_button.attr("id") == eur_ppi) {
			$("#gr_eur_ppi").show();
			$("#eur_ppi").show().addClass("current");
			visible_gr_eur = gr_eur_ppi;
			$("#eur_cpi").show();
		}
		return false;
	});


/*** INFLATION OPEN GRAPH WINDOW FUNCTION ***/
	popUpWindow ("div#inflation div.graph a", 630, 530, "График");

/************* VVP TABS NAVIGATION *************/
	$("ul#vvp_tabs li a").click(function() {
		var tab_li = $(this).parent();
		if (tab_li.hasClass("current")) {
			// Do nothing.
		} else {
			$("ul#vvp_tabs li").removeClass("current");
			tab_li.addClass("current");
			var tab_index = tab_li.index();

			$("#gr_rus_s1").hide();
			$("#gr_usa_s1").hide();
			$("#gr_eur_s1").hide();

			$("#rus_vvp").hide();
			$("#usa_vvp").hide();
			$("#eur_vvp").hide();

			if (tab_index == "0") {
				$("#gr_rus_s1").show();
				$("#rus_vvp").show();
			} else if (tab_index == "1") {
				$("#gr_usa_s1").show();
				$("#usa_vvp").show();
			} else if (tab_index == "2") {
				$("#gr_eur_s1").show();
				$("#eur_vvp").show();
			}
		}
		return false;
	});


/****** VVP OPEN GRAPH WINDOW FUNCTION ******/
	popUpWindow ("div#vvp div.graph a", 630, 530, "График");


/****************** LOCAL TIME ******************/

	LocalTime();

/*************** MATERIALS MENU ***************/

	$("#materials_text").click(function(){
		$("div#materials p").removeClass("current");
		$(this).addClass("current");
		$("div#qa").hide();
		$("div#photoreport").addClass('hidden');
		$("div#askquestion").hide();
		$("div#qa").show();
		return false;
	});

	$("#materials_photo").click(function(){
		$("div#materials p").removeClass("current");
		$(this).addClass("current");
		$("div#qa").hide();
		$("div#askquestion").hide();
		$("div#photoreport").removeClass('hidden');

		/*var scroll_photo = $("div#photo_list ul li.current").index() + 1;

		if (scroll_photo){
			$("div#big_photos ul li:eq(" + (scroll_photo - 1) + ")").css("display","inline").siblings().hide();
			$("div#photo_list").scrollLeft(scroll_photo < 4 ? 0 : (scroll_photo - current_last_photo_number) * 160);
			current_last_photo_number = scroll_photo;
		} else {
			$("div#photo_list").scrollLeft(0);
		}
		if (current_last_photo_number >= number_of_photos){
				$("#next_photo").addClass('disabled');
		}
		if (current_last_photo_number <= 3){
				$("#prev_photo").addClass('disabled');
		}*/

		return false;
	});

	$("#materials_question").click(function(){
		$("div#materials p").removeClass("current");
		$(this).addClass("current");
		$("div#qa").hide();
		$("div#photoreport").addClass('hidden');
		$("div#askquestion").hide();
		$("div#askquestion").show();
		$("div#askquestion form").show();
		$("div#askquestion p").hide();
		return false;
	});

/******* CLOSE OPENED CONFERENCE BLOCK *******/

	$("div#photoreport div.close_button").click(function(){
		$("div#materials p").removeClass("current");
		$("#materials_text").addClass("current");
		$("div#photoreport").addClass('hidden');
		$("div#qa").show();
	});

	$("div#askquestion div.close_button").click(function(){
		$("div#materials p").removeClass("current");
		$("#materials_text").addClass("current");
		$("div#askquestion").hide();
		$("div#qa").show();
	});

/*************** REMOVE NOSCRIPT ***************/

	$("div.block_noscript").removeClass("block_noscript");
	$("div.button_noscript").removeClass("button_noscript");
	$("div.photo_noscript").removeClass("photo_noscript");
	$("div.big_photo_noscript").removeClass("big_photo_noscript");

/*************** PHOTO CAROUSEL ***************/

	$("div#big_photos ul li.current").css("display","inline");

	$("div#photo_list ul li a").click(function() {
		$("div#big_photos ul li").css("display","none");
		var photo_index = $(this).parent().index();
		$("div#big_photos ul li:eq(" + photo_index + ")").css("display","inline");
		return false;
	});

	var photo_list = $("div#photo_list");
	var number_of_photos = $("div#photo_list ul li").length;
	var current_last_photo_number = 3;
	var photo_width = 160;

	$("#prev_photo").click(function() {
		var self = $(this);
		if (current_last_photo_number > 3) {
			photo_list.animate({"scrollLeft": "-=" + photo_width}, 500);
			current_last_photo_number -=1;
			$("#next_photo").removeClass('disabled');

			if (current_last_photo_number <= 3){
				self.addClass('disabled');
			}
		}
	});

	$("#next_photo").click(function(){
		var self = $(this);
		if (current_last_photo_number < number_of_photos) {
			photo_list.animate({"scrollLeft": "+=" + photo_width}, 500);
			current_last_photo_number +=1;
			$("#prev_photo").removeClass('disabled');

			if (current_last_photo_number >= number_of_photos){
				self.addClass('disabled');
			}
		}
	});

/***** SUBMIT QUESTION FORM FUNCTION *****/

	if ($("#question").length != 0) {
		$("#question").submit(function() {

			var name_msg  = 'Ошибка! Поле "Ваше имя" может содержать только буквы и пробелы.';
			var email_msg  = 'Ошибка! Некорректно указан e-mail.';
			var empty_msg = 'Ошибка! Заполните все поля перед отправкой вопроса.';

			var question_form_url = '/conf/add_question/';

			var name = $.trim($("input#your_name").val());

			if (name == "") {alert(empty_msg); return false;}
// По просьбе Жоры я отключил проверку введенных символов в поле	 "Ваше имя". Допустимы любые символы.
//			var name_reg = new RegExp('^[. a-zA-Z-АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯабвгдеёжзийклмнопрстуфхцчшщьыъэюя]+$');
//			if(!name_reg.test(name)) {alert(name_msg); return false;}
/////////////////////////////////////////////////////////////////////////////
			var email = $.trim($("input#your_email").val());

			if (email == "") {alert(empty_msg); return false;}

			var email_reg = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i);

			if (!email_reg.test(email)) {alert(email_msg); return false;}

			var question = $.trim($("textarea#your_question").val());

			if (question == "") {alert(empty_msg); return false;}

			var news_id = $.trim($("input#_news_id").val());
			var option_id = $.trim($("input#_option_id").val());


			$.ajax({
				type: "POST",
				url: question_form_url,
				data:
					"author=" + name +
					"&email=" + email +
					"&question_text=" + question +
					"&news_id=" + news_id +
					"&option_id=" + option_id + "",
				success: function() {
					$("div#askquestion form")[0].reset();
					alert('Ваш вопрос отправлен. Спасибо за проявленный интерес.');
				},
				error: function() {
					alert('Ошибка отправки запроса. Попробуйте отправить повторный запрос');
				}
			 });

			return false;

		});

	}

/***** STATISTICS TABLE BORDER ROW INSERT *****/

	$('<tr class="border_row"><td colspan="5">&nbsp;</td></tr>').insertAfter('#statistics .block_content table thead tr');

/* FALSE FORM SUBMIT FOR EXCHANGE QUOTES PAGE SELECT SECTION */

	$("#exchange_section").submit(function() {return false;});

/* SET FIRST OPTION FOR SELECT AFTER EXCHANGE QUOTES PAGE REFRESH */

	$("select[name=exchange_quotes_select] option").removeAttr("selected");
	$("select[name=exchange_quotes_select] option[value=all]").attr("selected", "selected");

/* SAVE SELECTED OPTION FUNCTION FOR EXCHANGE QUOTES PAGE */

	function saveOption() {

		/* Определение значения текущей выбранной опции выпадающего списка. */

		var selected_option_value = $("select[name=exchange_quotes_select] option:selected").val();

		/* Запись значения текущей выбранной опции выпадающего списка в сессионную Cookie. */

		cookie.session("selected_option_value", selected_option_value, "/");

	}

/************* COLLAPSE FUNCTIONS *************/

	// Определение названия страницы.
	// Для примера. В HTML-коде записана var page_name = "main";
	// Если переменная page_name задана, то выполнить функцию сохранения в Cookie перечня закрытых пользователем блоков.
	if (typeof(page_name) !== "undefined") {
		// Сохранение ссылки на все кнопки сворачивания блоков в переменной.
		var collapse_buttons = $(".collapse_button");
		// Определение общего числа сворачивающихся блоков на странице.
		var blocks_number = collapse_buttons.length;
		// Присвоение всем сворачивающимся блокам первоначального статуса "Открыто".
		collapse_buttons.attr("status","o");
		// Проверка на существование в браузере Cookie с именем данной страницы.
		if (cookie.get(page_name)) {
			// Если Cookie с именем данной страницы обнаружено, то занести в переменную его содержимое.
			var blocks_cookie = cookie.get(page_name);
			// Разбиение строки с данными Cookie.
			blocks_cookie = blocks_cookie.split('|');
			// Определие числа сворачиваемых блоков, записанных в Cookie.
			var  cookie_blocks_number = blocks_cookie['0'].replace(page_name + "=", "");
			// Сравнить количество сворачиваемых блоков на странице с числом сворачиваемых блоков,
			// записанных в Cookie.
			if (blocks_number == cookie_blocks_number) {
				// Если количество сворачиваемых блоков на странице равно числу сворачиваемых блоков, записанному в Cookie, то свернуть блоки в соотвествии со статусами, указаннми в Cookie.
				// Формирование массива статусов блоков по данным, взятым из Cookie.
				var cookie_blocks_status = blocks_cookie['2'];
				// Разбиение строки со статусами боков.
				cookie_blocks_status = cookie_blocks_status.split('-');
				// Удаление пустого элемента из массива статусов блоков.
				cookie_blocks_status.splice(0,1);
				// Простановка статусов блоков по данным, взятым из Cookie.
				for (var i = 0; i <= blocks_number; i++) {collapse_buttons.eq(i).attr("status", cookie_blocks_status[i]);}
				// Сворачивание всех блоков, имеющих статус "c".
				$(".collapse_button[status='c']").removeClass("open").addClass("close");
				$(".collapse_button[status='c']").parent().parent().parent().parent().parent().next().hide();
				/****** Требуется для устранения бага на странице "Настройка индикаторов". *****/
					/* Разворачивание всех блоков в центральной колонке на странице "Настройка индикаторов". */
					$("#indicators_setup .pane_block .collapse_button").removeClass("close").addClass("open").attr("status","o");
					$("#indicators_setup .pane_block .pane_content").show();
				/*************************************************************************/
				/****** Требуется для устранения бага на странице "Биржи". *****/
					/* Разворачивание всех блоков в центральной колонке на странице "Настройка индикаторов". */
					$("#exchange_quotes .pane_block .collapse_button").removeClass("close").addClass("open").attr("status","o");
					$("#exchange_quotes .pane_block .pane_content").show();
				/*************************************************************************/
			} else {
				// Если количество сворачиваемых блоков на странице не равно числу сворачиваемых блоков, записанному в Cookie, то ничего не делать. Все блоки остаются открытыми.
			}
		} else {
			// Если Cookie с именем данной страницы не обнаружено, то ничего не делать. Все блоки остаются открытыми.
		}

		/******* SAVE BLOCKS STATUSES FUNCTION *******/
		function saveBlocksStatuses () {
			// Запись в строку статусов всех блоков.
			var blocks_status = "|";
			for (var i=0; i <= blocks_number; i++) {
				if (collapse_buttons.eq(i).attr("status") == "o") {blocks_status += "-o";}
				if (collapse_buttons.eq(i).attr("status") == "c") {blocks_status += "-c";}
			}
			// Запись в Cookie данных об общем числе сворачиваемых блоков, количестве свёрнутых блоков, а так же
			//	перечень статусов всех блоков.
			var cookie_value = blocks_number + "|" + $(".collapse_button[status='c']").length + blocks_status;
			cookie.set(page_name, cookie_value, 120);
		}

		/************** COLLAPSE CONTENT **************/
		// Переключение статуса блока при его сворачивании и разворачивании. */
		$(".collapse_button").click(function() {
			// Сохранение ссылок на объекты HTML в переменные для увеличения скорости работы сценария.
			var collapse_button = $(this);
			var collapse_button_status = collapse_button.attr("status");
			// Проверка места нахождения кнопки сворачивания и разворачивания блока.
			var collapse_content = collapse_button.parent().parent().parent().parent().parent().next();
			// Процедура сворачивания или разворачивания блока с сохранением списка свернутых блоков в Cookie.
			if (collapse_button_status == "o") {
				// Сворачивание блока, если до нажатия на кнопку он был открыт и его статус был "o".
				// Изменение картинки.
				collapse_button.removeClass("open").addClass("close");
				// Сворачивание блока.
				collapse_content.hide();
				// Изменение статуса блока.
				collapse_button.attr("status","c");
				// Запись в Cookie данных об общем числе сворачиваемых блоков, количестве свёрнутых блоков, а так же
				// перечень статусов всех блоков.
				saveBlocksStatuses ();
			} else if (collapse_button_status == "c") {
				// Разворачивание блока, если до нажатия на кнопку он был закрыт и его статус был "c".
				// Изменение картинки.
				collapse_button.removeClass("close").addClass("open");
				// Разворачивание блока.
				collapse_content.show();
				// Изменение статуса блока.
				collapse_button.attr("status","o");
				// Запись в Cookie данных об общем числе сворачиваемых блоков, количестве свёрнутых блоков, а так же
				// перечень статусов всех блоков.
				saveBlocksStatuses ();
			}
			return false;
		});

		/* SHOW ALL INDICATORS SETUP CONTENT */
		// Переключение статуса блоков в центральной колонке на странице "Настройка индикаторов" при их полном разворачивании.
		$("#indicators_setup .show_all").click(function() {
			// Разворачивание всех блоков в центральной колонке и сохранения их статусов в Cookie.
			$("#indicators_setup .pane_block .collapse_button").removeClass("close").addClass("open").attr("status","o");
			$("#indicators_setup .pane_block .pane_content").show();
			// Запись в Cookie данных об общем числе сворачиваемых блоков, количестве свёрнутых блоков, а так же
			// перечень статусов всех блоков.
			saveBlocksStatuses ();
			return false;
		 });


		/* COLLAPSE ALL INDICATORS SETUP CONTENT */
		// Переключение статуса блоков в центральной колонке на странице "Настройка индикаторов" и "Биржи" при их полном сворачивании.
		$("#indicators_setup .collapse_all").click(function() {
			// Сворачивание всех блоков в центральной колонке и сохранения их статусов в Cookie.
			$("#indicators_setup .pane_block .collapse_button").removeClass("open").addClass("close").attr("status","c");
			$("#indicators_setup .pane_block .pane_content").hide();
			// Запись в Cookie данных об общем числе сворачиваемых блоков, количестве свёрнутых блоков, а так же
			// перечень статусов всех блоков.
			saveBlocksStatuses ();
			return false;
		 });


		/* SHOW ALL EXCHANGE QUOTES CONTENT */
		// Переключение статуса блоков в центральной колонке на странице "Настройка индикаторов" при их полном разворачивании.
		$("#exchange_quotes .show_all").click(function() {
			// Проверка индекса выбранного пункта в списке select.
			var show_content_index = $("select[name=exchange_quotes_select] option:selected").index();
			if (show_content_index == 0) {
				// Показать все блоки.
				$("#exchange_quotes .pane_block").show();
				// Разворачивание всех блоков в центральной колонке.
			$("#exchange_quotes .pane_block .collapse_button").removeClass("close").addClass("open").attr("status","o");
			$("#exchange_quotes .pane_block .pane_content").show();
			} else {
				// Показать только блок соответствующий выбранному пункту выпадающего списка select.
				show_content_index = show_content_index - 1;
				$("#exchange_quotes .pane_block").hide();
				$("#exchange_quotes .pane_block:eq(" + show_content_index + ")").show();
				// Разворачивание только выбранного блока.
				$("#exchange_quotes .pane_block:eq(" + show_content_index + ") .collapse_button").removeClass("close").addClass("open").attr("status","o");
				$("#exchange_quotes .pane_block:eq(" + show_content_index + ") .pane_content").show();
			}
			// Запись в Cookie данных об общем числе сворачиваемых блоков, количестве свёрнутых блоков, а так же
			// перечень статусов всех блоков.
			saveBlocksStatuses ();
			return false;
		 });

		/* COLLAPSE ALL EXCHANGE QUOTES CONTENT */
		// Переключение статуса блоков в центральной колонке на странице "Настройка индикаторов" и "Биржи" при их полном сворачивании.
		$("#exchange_quotes .collapse_all").click(function() {
			// Проверка индекса выбранного пункта в списке select.
			var show_content_index = $("select[name=exchange_quotes_select] option:selected").index();
			if (show_content_index == 0) {
				// Показать все блоки.
				$("#exchange_quotes .pane_block").show();
				// Сворачивание всех блоков в центральной колонке.
			$("#exchange_quotes .pane_block .collapse_button").removeClass("open").addClass("close").attr("status","c");
			$("#exchange_quotes .pane_block .pane_content").hide();
			} else {
				// Показать только блок соответствующий выбранному пункту выпадающего списка select.
				show_content_index = show_content_index - 1;
				$("#exchange_quotes .pane_block").hide();
				$("#exchange_quotes .pane_block:eq(" + show_content_index + ")").show();
				// Сворачивание только выбранного блока.
				$("#exchange_quotes .pane_block:eq(" + show_content_index + ") .collapse_button").removeClass("open").addClass("close").attr("status","c");
				$("#exchange_quotes .pane_block:eq(" + show_content_index + ") .pane_content").hide();
			}
			// Запись в Cookie данных об общем числе сворачиваемых блоков, количестве свёрнутых блоков, а так же
			// перечень статусов всех блоков.
			saveBlocksStatuses ();
			return false;
		 });

		/****** EXCHANGE QUOTES SELECT CHANGE ******/

		/* Переход на страницу с терминалами в соотвествии с выбранной опцией выпадающего списка. */

		$("select#exchange_quotes_select").change(function() {
			// Сохранение выбранной опции в выпадающем списке в сессионную Cookie.
			saveOption();
			// Проверка индекса выбранного пункта в списке select.
			var show_content_index = $("select[name=exchange_quotes_select] option:selected").index();
			if (show_content_index == 0) {
				// Показать все блоки.
				$("#exchange_quotes .pane_block").show();
				// Разворачивание всех блоков в центральной колонке.
				$("#exchange_quotes .pane_block .collapse_button").removeClass("close").addClass("open").attr("status","o");
				$("#exchange_quotes .pane_block .pane_content").show();
			} else {
				// Показать только блок соответствующий выбранному пункту выпадающего списка select.
				show_content_index = show_content_index - 1;
				$("#exchange_quotes .pane_block").hide();
				$("#exchange_quotes .pane_block:eq(" + show_content_index + ")").show();
				// Разворачивание только выбранного блока.
				$("#exchange_quotes .pane_block:eq(" + show_content_index + ") .collapse_button").removeClass("close").addClass("open").attr("status","o");
				$("#exchange_quotes .pane_block:eq(" + show_content_index + ") .pane_content").show();
			}
			// Запись в Cookie данных об общем числе сворачиваемых блоков, количестве свёрнутых блоков, а так же
			// перечень статусов всех блоков.
			saveBlocksStatuses ();
		});

		/* SEARCH SAVED SELECTED OPTION IN SESSION COOKIE FOR EXCHANGE QUOTES PAGE */

		if (cookie.get("selected_option_value")) {
			// Установка по данным из cookie выбранного пункта выпадающего списка select.
			var cookie_selected_option = cookie.get("selected_option_value");

			$("select[name=exchange_quotes_select] option").removeAttr("selected");
			$("select[name=exchange_quotes_select] option[value=" + cookie_selected_option + "]").attr("selected", "selected");
			updateOptions($('#section select'));

			// Проверка индекса выбранного пункта в списке select.
			var show_content_index = $("select[name=exchange_quotes_select] option:selected").index();
			if (show_content_index == 0) {
				// Показать все блоки.
				$("#exchange_quotes .pane_block").show();
				// Разворачивание всех блоков в центральной колонке.
				$("#exchange_quotes .pane_block .collapse_button").removeClass("close").addClass("open").attr("status","o");
				$("#exchange_quotes .pane_block .pane_content").show();
			} else {
				// Показать только блок соответствующий выбранному пункту выпадающего списка select.
				show_content_index = show_content_index - 1;
				$("#exchange_quotes .pane_block").hide();
				$("#exchange_quotes .pane_block:eq(" + show_content_index + ")").show();
				// Разворачивание только выбранного блока.
				$("#exchange_quotes .pane_block:eq(" + show_content_index + ") .collapse_button").removeClass("close").addClass("open").attr("status","o");
				$("#exchange_quotes .pane_block:eq(" + show_content_index + ") .pane_content").show();
			}
			// Запись в Cookie данных об общем числе сворачиваемых блоков, количестве свёрнутых блоков, а так же
			// перечень статусов всех блоков.
			saveBlocksStatuses ();
		}

	}

	// Если переменная page_name не задана, то выполнить простую функцию сворачивания и разворачивания блоков без сохранения данных в Cookie.
	if (typeof(page_name) == "undefined") {

		/************** COLLAPSE CONTENT **************/

		$(".collapse_button").click(function () {

			var collapse_button = $(this);

			var collapse_content = collapse_button.parent().parent().parent().parent().parent().next();

			if (collapse_button.hasClass("open")) {

				 collapse_button.removeClass("open").addClass("close");

				 collapse_content.hide();

			} else if (collapse_button.hasClass("close")) {

				 collapse_button.removeClass("close").addClass("open");

				 collapse_content.show();

			}

			return false;

		});

		/* SHOW ALL INDICATORS SETUP CONTENT */
		$("#indicators_setup .show_all").click(function() {
			$("#indicators_setup .pane_block .collapse_button").removeClass("close").addClass("open");
			$("#indicators_setup .pane_block .pane_content").show();
			return false;
		 });

		/* COLLAPSE ALL INDICATORS SETUP CONTENT */
		$("#indicators_setup .collapse_all").click(function() {
			$("#indicators_setup .pane_block .collapse_button").removeClass("open").addClass("close");
			$("#indicators_setup .pane_block .pane_content").hide();
			return false;
		 });

		/* SHOW ALL EXCHANGE QUOTES CONTENT */
		$("#exchange_quotes .show_all").click(function() {
			// Проверка индекса выбранного пункта в списке select.
			var show_content_index = $("select[name=exchange_quotes_select] option:selected").index();
			if (show_content_index == 0) {
				// Показать все блоки.
				$("#exchange_quotes .pane_block").show();
				// Разворачивание всех блоков в центральной колонке.
				$("#exchange_quotes .pane_block .collapse_button").removeClass("close").addClass("open").attr("status","o");
			$("#exchange_quotes .pane_block .pane_content").show();
			} else {
				// Показать только блок соответствующий выбранному пункту выпадающего списка select.
				show_content_index = show_content_index - 1;
				$("#exchange_quotes .pane_block").hide();
				$("#exchange_quotes .pane_block:eq(" + show_content_index + ")").show();
				// Разворачивание только выбранного блока.
				$("#exchange_quotes .pane_block:eq(" + show_content_index + ") .collapse_button").removeClass("close").addClass("open").attr("status","o");
				$("#exchange_quotes .pane_block:eq(" + show_content_index + ") .pane_content").show();
			}
			return false;
		 });

		/* COLLAPSE ALL EXCHANGE QUOTES CONTENT */
		$("#exchange_quotes .collapse_all").click(function() {
			// Проверка индекса выбранного пункта в списке select.
			var show_content_index = $("select[name=exchange_quotes_select] option:selected").index();
			if (show_content_index == 0) {
				// Показать все блоки.
				$("#exchange_quotes .pane_block").show();
				// Сворачивание всех блоков в центральной колонке.
				$("#exchange_quotes .pane_block .collapse_button").removeClass("open").addClass("close").attr("status","c");
			$("#exchange_quotes .pane_block .pane_content").hide();
			} else {
				// Показать только блок соответствующий выбранному пункту выпадающего списка select.
				show_content_index = show_content_index - 1;
				$("#exchange_quotes .pane_block").hide();
				$("#exchange_quotes .pane_block:eq(" + show_content_index + ")").show();
				// Сворачивание только выбранного блока.
				$("#exchange_quotes .pane_block:eq(" + show_content_index + ") .collapse_button").removeClass("open").addClass("close").attr("status","c");
				$("#exchange_quotes .pane_block:eq(" + show_content_index + ") .pane_content").hide();
			}
			return false;
		 });


		/****** EXCHANGE QUOTES SELECT CHANGE ******/

		/* Переход на страницу с терминалами в соотвествии с выбранной опцией выпадающего списка. */

		$("select#exchange_quotes_select").change(function() {
			// Сохранение выбранной опции в выпадающем списке в сессионную Cookie.
			saveOption();
			// Проверка индекса выбранного пункта в списке select.
			var show_content_index = $("select[name=exchange_quotes_select] option:selected").index();
			if (show_content_index == 0) {
				// Показать все блоки.
				$("#exchange_quotes .pane_block").show();
				// Разворачивание всех блоков в центральной колонке.
				$("#exchange_quotes .pane_block .collapse_button").removeClass("close").addClass("open").attr("status","o");
				$("#exchange_quotes .pane_block .pane_content").show();
			} else {
				// Показать только блок соответствующий выбранному пункту выпадающего списка select.
				show_content_index = show_content_index - 1;
				$("#exchange_quotes .pane_block").hide();
				$("#exchange_quotes .pane_block:eq(" + show_content_index + ")").show();
				// Разворачивание только выбранного блока.
				$("#exchange_quotes .pane_block:eq(" + show_content_index + ") .collapse_button").removeClass("close").addClass("open").attr("status","o");
				$("#exchange_quotes .pane_block:eq(" + show_content_index + ") .pane_content").show();
			}
		});

		/* SEARCH SAVED SELECTED OPTION IN SESSION COOKIE FOR EXCHANGE QUOTES PAGE */

		if (cookie.get("selected_option_value")) {
			// Установка по данным из cookie выбранного пункта выпадающего списка select.
			var cookie_selected_option = cookie.get("selected_option_value");

			$("select[name=exchange_quotes_select] option").removeAttr("selected");
			$("select[name=exchange_quotes_select] option[value=" + cookie_selected_option + "]").attr("selected", "selected");

			// Проверка индекса выбранного пункта в списке select.
			var show_content_index = $("select[name=exchange_quotes_select] option:selected").index();
			if (show_content_index == 0) {
				// Показать все блоки.
				$("#exchange_quotes .pane_block").show();
				// Разворачивание всех блоков в центральной колонке.
				$("#exchange_quotes .pane_block .collapse_button").removeClass("close").addClass("open").attr("status","o");
				$("#exchange_quotes .pane_block .pane_content").show();
			} else {
				// Показать только блок соответствующий выбранному пункту выпадающего списка select.
				show_content_index = show_content_index - 1;
				$("#exchange_quotes .pane_block").hide();
				$("#exchange_quotes .pane_block:eq(" + show_content_index + ")").show();
				// Разворачивание только выбранного блока.
				$("#exchange_quotes .pane_block:eq(" + show_content_index + ") .collapse_button").removeClass("close").addClass("open").attr("status","o");
				$("#exchange_quotes .pane_block:eq(" + show_content_index + ") .pane_content").show();
			}
		}


	}

/*** FUND NEWS AND COMMENTS EQUAL HEIGHT ***/
   // Вызываем в самом низу во избежание сжатия блоков после загрузки страницы.
	columnsEqualHeight ("#fund_news .block_content", "#fund_comments .block_content");

/************* GO BACK FUNCTION *************/

	$("#go_back").click(function(){
		window.history.back();
		return false;
	});
/************ INFORMER FUNCTIONS ************/

	if ($("#informer").length != 0) {

	/****** INFORMER PARAMETER VARIABLES ******/

		// Step 1. Informer type
		var informer_type;

		// Step 2.1 Informer style
		var informer_style;
		var informer_background_color;
		var informer_border_color;
		var informer_text_color;
		var informer_selector_color;
		var informer_font_type;

		// Step 2.2 Informer width and height
		var informer_width_type;
		var informer_width;
		var informer_height;

		// Step 2.3 Informer currency pair
		var informer_currency1;
		var informer_currency2;
		var informer_sum;

	/*** CONSTRUCT INF_CONVERTER FUNCTION ***/

		function ConstractInfConverter () {

			var converter_width_type = "";
			if (informer_width_type == "flexible") {converter_width_type = " flexible";}

			var converter_header = '<div id="inf_converter" class="block ' + informer_type + converter_width_type + '"><div class="inner_block"><div class="block_header"><table><tr><td><h2>Конвертер валют</h2></td></tr></table></div><div class="block_content"><table class="currencies_converter">';;

			var converter_content = '';

			// Данные usd_value, eur_value, rur_value взяты из переменных, находящихся в HTML-коде.
			if (informer_type == "standart") {

				converter_content ='<tr><td class="first"><div class="selectbox"><select name="inf_currency1" id="inf_currency1"><option selected="selected" data-option-title="Доллар США" data-image-sprite="flag us" value="' + usd_value + '">USD</option><option data-option-title="ЕВРО" data-image-sprite="flag eu" value="' + eur_value + '">EUR</option><option data-option-title="Российский рубль" data-image-sprite="flag ru" value="' + rur_value + '">RUR</option></select></div></td><td class="last"><input id="inf_sum1" value="1" /></td></tr><tr><td colspan="2"><div class="sidearrows rightsidearrows"></div></td></tr><tr><td class="first"><div class="selectbox"><select name="inf_currency2" id="inf_currency2"><option data-option-title="Доллар США" data-image-sprite="flag us" value="' + usd_value + '">USD</option><option data-option-title="ЕВРО" data-image-sprite="flag eu" value="' + eur_value + '">EUR</option><option selected="selected" data-option-title="Российский рубль" data-image-sprite="flag ru" value="' + rur_value + '">RUR</option></select></div></td><td class="last"><input id="inf_sum2" value="" /></td></tr>';

			} else if (informer_type == "horizontal") {

				converter_content ='<tr><td class="left_selectbox"><div class="selectbox"><select name="inf_currency1" id="inf_currency1"><option selected="selected" data-option-title="Доллар США" data-image-sprite="flag us" value="' + usd_value + '">USD</option><option data-option-title="ЕВРО" data-image-sprite="flag eu" value="' + eur_value + '">EUR</option><option data-option-title="Российский рубль" data-image-sprite="flag ru" value="' + rur_value + '">RUR</option></select></div></td><td class="left_sum"><input id="inf_sum1" value="1" /></td><td class="center_sidearrows"><div class="sidearrows rightsidearrows"></div></td><td class="right_sum"><input id="inf_sum2" value="" /></td><td class="right_selectbox"><div class="selectbox"><select name="inf_currency2" id="inf_currency2"><option data-option-title="Доллар США" data-image-sprite="flag us" value="' + usd_value + '">USD</option><option data-option-title="ЕВРО" data-image-sprite="flag eu" value="' + eur_value + '">EUR</option><option selected="selected" data-option-title="Российский рубль" data-image-sprite="flag ru" value="' + rur_value + '">RUR</option></select></div></td></tr>';

			} else if (informer_type == "vertical") {

				converter_content ='<tr><td><div class="selectbox"><select name="inf_currency1" id="inf_currency1"><option selected="selected" data-option-title="Доллар США" data-image-sprite="flag us" value="' + usd_value + '">USD</option><option data-option-title="ЕВРО" data-image-sprite="flag eu" value="' + eur_value + '">EUR</option><option data-option-title="Российский рубль" data-image-sprite="flag ru" value="' + rur_value + '">RUR</option></select></div></td></tr><tr><td class="sum_input"><input id="inf_sum1" value="1" /></td></tr><tr><td><div class="sidearrows rightsidearrows"></div></td></tr><tr><td><div class="selectbox"><select name="inf_currency2" id="inf_currency2"><option data-option-title="Доллар США" data-image-sprite="flag us" value="' + usd_value + '">USD</option><option data-option-title="ЕВРО" data-image-sprite="flag eu" value="' + eur_value + '">EUR</option><option selected="selected" data-option-title="Российский рубль" data-image-sprite="flag ru" value="' + rur_value + '">RUR</option></select></div></td></tr><tr><td class="sum_input"><input id="inf_sum2" value="" /></td></tr>';

			}

			var converter_footer = '</table><p id="inf_converter-time" class="note">данные ЦБ РФ</p><p class="link"><a href="http://quote.rbc.ru/cur/converter/" target="_blank">полная версия</a></p><p id="logotypes"><a id="quote_logo" href="http://quote.rbc.ru/" target="_blank"><img src="' + image_quote_gray + '" width="46" height="14" alt="Quote" /></a><a id="rbc_logo" href="http://rbc.ru/" target="_blank"><img src="' + image_rbc_gray+ '" width="57" height="14" alt="РБК" /></a></p></div></div></div>';

			var converter_full = '<div id="converter_result_block">' + converter_header + converter_content + converter_footer + '</div>';

			$("#converter_result_block").replaceWith(converter_full);

			$("#sum_input").val(informer_sum);
			$("#inf_sum1").val(informer_sum);

			$("#inf_currency1 option").removeAttr("selected");
			var currency1_option_number;
			if (informer_currency1 == "usd") {
				currency1_option_number = 0;
			} else if (informer_currency1 == "eur") {
				currency1_option_number = 1;
			} else if (informer_currency1 == "rur") {
				currency1_option_number = 2;
			}
			$("#inf_currency1 option:eq(" + currency1_option_number + ")").attr("selected", true);
			$("#inf_currency2 option").removeAttr("selected");
			var currency2_option_number;
			if (informer_currency2 == "usd") {
				currency2_option_number = 0;
			} else if (informer_currency2 == "eur") {
				currency2_option_number = 1;
			} else if (informer_currency2 == "rur") {
				currency2_option_number = 2;
			}
			$("#inf_currency2 option:eq(" + currency2_option_number + ")").attr("selected", true);

			initInfConverter();

			customizeSelects($('#inf_converter select'));

			$("div#inf_converter .selectbox-option-button").css("color", "#" + informer_text_color);
			$("div#inf_converter .selectbox").css("border-color", "#" + informer_selector_color);
			$("div#inf_converter input").css("border-color", "#" + informer_selector_color);
			if (informer_style == "rbc_standart") {
				$("div#inf_converter .selectbox-button").removeClass("selectbox-color-button");
				$("div#inf_converter .sidearrows").removeClass("whitearrows");
				$("div#inf_converter .selectbox-color-button").removeAttr("style");
			} else {
				$("div#inf_converter .selectbox-button").addClass("selectbox-color-button");
				$("div#inf_converter .sidearrows").addClass("whitearrows");
				$("div#inf_converter .selectbox-color-button").attr("style", "background: #" + informer_selector_color + " url(" + image_select_bg + ") 0 0 no-repeat !important;");
			}

			$("div#inf_converter div.inner_block").css("background-color", "#" + informer_background_color);
			if (informer_style == "rbc_standart") {
				$("div#inf_converter div.inner_block").css("background-image", "url(" + image_header_bg + ")").css("background-repeat", "repeat-x");
				$("div#inf_converter div.block_header").css("background-image", "url(" + image_header_bg + ")").css("background-repeat", "repeat-x").css("background-color", "#ffffff");
			$("div#inf_converter div.block_header");
			} else {
				$("div#inf_converter div.inner_block").css("background-image", "none");
				$("div#inf_converter div.block_header").css("background-image", "none").css("background-color", "#" + informer_background_color);
			}
			$("div#inf_converter").css("border-color", "#" + informer_border_color);
			$("div#inf_converter").css("color", "#" + informer_text_color);
			$("div#inf_converter input").css("color", "#" + informer_text_color);

			$("div#inf_converter .selectbox").css("color", "#333333");
			$("div#inf_converter input").css("color", "#333333");

			$("div#inf_converter").css("font-family", informer_font_type.slice(0,1).toUpperCase() + informer_font_type.slice(1));

			$("div#inf_converter p.link a").css("color", "#" + informer_text_color);

		}

	/*** CONSTRUCT URL FOR IFRAME FUNCTION ***/

		function ConstractURLforIframe () {

		if (informer_background_color.length < 6) {alert("Код цвета фона должен состоять из 6 символов. Пример: ff55cc."); $("#informer_code").text("");
																			return;}
		if (informer_border_color.length < 6)         {alert("Код цвета рамок должен состоять из 6 символов. Пример: ff55cc."); $("#informer_code").text("");
																			return;}
		if (informer_text_color.length < 6)             {alert("Код цвета текста должен состоять из 6 символов. Пример: ff55cc."); $("#informer_code").text("");
																			return;}
		if (informer_selector_color.length < 6)       {alert("Код цвета селекторов должен состоять из 6 символов. Пример: ff55cc."); $("#informer_code").text("");
																			return;}
		if ($.trim(informer_sum).length < 1)         {alert("Вы не ввели значение суммы по умолчанию для валютной пары."); $("#informer_code").text("");
																			return;}

		var inf_type = "";
		if (informer_type == "standart") {
			inf_type = "std";
		} else if (informer_type == "horizontal") {
			inf_type = "hor";
		} else if (informer_type == "vertical") {
			inf_type = "ver";
		}
		var inf_wtype = "";
		if (informer_width_type == "fixed") {
			inf_wtype =	"fix";
		} else if (informer_width_type == "flexible") {
			inf_wtype =	"flex";
		}

		var inf_stype = "";
		if (informer_style == "rbc_standart") {
			inf_stype = "stand";
		} else if (informer_style == "contrast_dark") {
			inf_stype = "dark";
		} else if (informer_style == "contrast_light") {
			inf_stype = "light";
		}

		var inf_w = "";
		if (informer_width == "100%") {
			inf_w = "100";
		} else {
			inf_w = informer_width;
		}

		var informer_parameters = "type=" + inf_type +
											   "&wtype=" + inf_wtype +
												"&stype=" + inf_stype +
													 "&w=" + inf_w +
													 "&h=" + informer_height +
													"&bg=" + informer_background_color +
												   "&brd=" + informer_border_color +
													"&txt=" + informer_text_color +
													"&sel=" + informer_selector_color +
												  "&font=" + informer_font_type +
												 "&cur1=" + informer_currency1 +
												 "&cur2=" + informer_currency2 +
												 "&sum=" + informer_sum;

			var informer_iframe = '<iframe src="http://' + location.hostname + '/cgi-bin/conv/external/ext_informer/?' + informer_parameters + '" width="' + informer_width + '" height="' + informer_height + '" frameborder="0"></iframe>';

			$("#informer_code").text(informer_iframe);
		}

	/******* RESET INFORMER PARAMETERS *******/

		function ResetInformerParameters () {
			// Step 1. Reset informer type
			$("#informer_type_selector input").checked = false;
			$("#informer_type_selector input:first").attr("checked", "checked");
			informer_type = "standart";
			$("#informer_type_image").removeClass("standart_image horizontal_image vertical_image");
			$("#informer_type_image").addClass(informer_type + "_image");
			// Step 2.1 Reset informer style
			$("#informer_style option").removeAttr("selected");
			$("#informer_style option:first").attr("selected", true);
			informer_style = "rbc_standart";
			informer_background_color = "ffffff";
			informer_border_color = "dddddd";
			informer_text_color = "333333";
			informer_selector_color = "cccccc";
			informer_font_type = "tahoma";
			$("#informer_background_color .color_value").val(informer_background_color);
			$("#informer_background_color .color_picker div").css("background-color", "#" + informer_background_color);
			$("#informer_border_color .color_value").val(informer_border_color);
			$("#informer_border_color .color_picker div").css("background-color", "#" + informer_border_color);
			$("#informer_text_color .color_value").val(informer_text_color);
			$("#informer_text_color .color_picker div").css("background-color", "#" + informer_text_color);
			$("#informer_selector_color .color_value").val(informer_selector_color);
			$("#informer_selector_color .color_picker div").css("background-color", "#" + informer_selector_color);
			$("#informer_font_type option").removeAttr("selected");
			$("#informer_font_type option[value='" + informer_font_type + "']").attr("selected", true);
			// Step 2.2 Reset informer width
			$("#width_parameters input").checked = false;
			$("#width_parameters input:first").attr("checked", "checked");
			informer_width_type = "fixed";
			informer_width = "240";
			informer_height = "207";
			// Step 2.3 Reset informer currency pair
			informer_currency1 = "usd";
			informer_currency2 = "rur";
			$("#informer_currency_from option").removeAttr("selected");
			$("#informer_currency_from option:first").attr("selected", true);
			$("#informer_currency_to option").removeAttr("selected");
			$("#informer_currency_to option:eq(2)").attr("selected", true);
			informer_sum = 1;
			$("#sum_input").val(informer_sum);

			updateOptions($('#style_selector select'));
			updateOptions($('#font_type_selector select'));
			updateOptions($('#informer_currency select'));

			ConstractInfConverter ();
			ConstractURLforIframe ();
		}

		ResetInformerParameters ();

	/******** STEP 1. SELECT INFORMER TYPE ********/

		$("#informer_type_selector").click(function(){
			$("#informer_type_image").removeClass("standart_image horizontal_image vertical_image");
			informer_type = $("#informer_type_selector input:checked").val();
			$("#informer_type_image").addClass(informer_type + "_image");

			if (informer_width_type == "fixed") {
				if (informer_type == "standart") {
					informer_width = "240";
					informer_height = "207";
				} else if (informer_type == "horizontal") {
					informer_width = "470";
					informer_height = "152";
				} else if (informer_type == "vertical") {
					informer_width = "140";
					informer_height = "281";
				}
			} else if (informer_width_type == "flexible") {
				if (informer_type == "standart") {
					informer_width = "100%";
					informer_height = "207";
				} else if (informer_type == "horizontal") {
					informer_width = "100%";
					informer_height = "152";
				} else if (informer_type == "vertical") {
					informer_width = "100%";
					informer_height = "281";
				}
			}

			ConstractInfConverter ();
			ConstractURLforIframe ();
		});

	/**** STEP 2. SELECT INFORMER PARAMETERS ****/

	/******* STEP 2.1 SELECT INFORMER STYLE *******/

		$("#informer_style").change(function(){
			informer_style = $("#informer_style option:selected").val();
			if (informer_style == "rbc_standart") {
				informer_background_color = "ffffff";
				informer_border_color = "dddddd";
				informer_text_color = "333333";
				informer_selector_color = "cccccc";
				informer_font_type = "tahoma";
			} else if (informer_style == "contrast_dark") {
				informer_background_color = "4c4b4b";
				informer_border_color = "000000";
				informer_text_color = "ffffff";
				informer_selector_color = "333333";
				informer_font_type = "tahoma";
			} else if (informer_style == "contrast_light") {
				informer_background_color = "ffffff";
				informer_border_color = "666666";
				informer_text_color = "333333";
				informer_selector_color = "333333";
				informer_font_type = "tahoma";
			}
			$("#informer_background_color .color_value").val(informer_background_color);
			$("#informer_background_color .color_picker div").css("background-color", "#" + informer_background_color);
			$("#informer_border_color .color_value").val(informer_border_color);
			$("#informer_border_color .color_picker div").css("background-color", "#" + informer_border_color);
			$("#informer_text_color .color_value").val(informer_text_color);
			$("#informer_text_color .color_picker div").css("background-color", "#" + informer_text_color);
			$("#informer_selector_color .color_value").val(informer_selector_color);
			$("#informer_selector_color .color_picker div").css("background-color", "#" + informer_selector_color);
			$("#informer_font_type option").removeAttr("selected");
			$("#informer_font_type option[value='" + informer_font_type + "']").attr("selected", true);

			ConstractInfConverter ();
			ConstractURLforIframe ();
		});

	/**** STEP 2.1 SELECT INFORMER FONT FAMILY ****/

		$("#informer_font_type").change(function(){
			informer_font_type = $("#informer_font_type option:selected").val();

			ConstractInfConverter ();
			ConstractURLforIframe ();
		});

	/* STEP 2.2 SELECT INFORMER WIDTH AND HEIGHT */

		$("#width_parameters input").click(function(){
			informer_width_type = $("#width_parameters input:checked").val();
			if (informer_width_type == "fixed") {
				if (informer_type == "standart") {
					informer_width = "240";
					informer_height = "197";
				} else if (informer_type == "horizontal") {
					informer_width = "470";
					informer_height = "142";
				} else if (informer_type == "vertical") {
					informer_width = "140";
					informer_height = "251";
				}
			} else if (informer_width_type == "flexible") {
				if (informer_type == "standart") {
					informer_width = "100%";
					informer_height = "197";
				} else if (informer_type == "horizontal") {
					informer_width = "100%";
					informer_height = "142";
				} else if (informer_type == "vertical") {
					informer_width = "100%";
					informer_height = "251";
				}
			}

			ConstractInfConverter ();
			ConstractURLforIframe ();
		});

	/******* STEP 2.3 SELECT CURRENCY PAIR *******/

		$("#informer_currency_from").change(function(){
			informer_currency1 = $("#informer_currency_from option:selected").val();

			ConstractInfConverter ();
			ConstractURLforIframe ();
		});

		$("#informer_currency_to").change(function(){
			informer_currency2 = $("#informer_currency_to option:selected").val();

			ConstractInfConverter ();
			ConstractURLforIframe ();
		});

	/************ STEP 2.4 SET DEFAULT ************/

		$("#informer_set_default").click(function(){
			ResetInformerParameters ();
			return false;
		});

	/************ INFORMER VALIDATION ************/

	/********* INFORMER COLOR VALIDATION *********/

	$(".color_code input").keyup(function(e){
		var color_value = $(this).val();
		color_value = color_value.toLowerCase();
		if (color_value.length > 0) {
			color_value = color_value.replace(/[^0-9a-f]+/gi, "");
		}
		if (color_value.length > 6) {
			color_value = color_value.substr(0, 6);
		}
		if (color_value.length < 6) {
			$(this).parent().parent().find(".color_picker div:first").removeClass("empty_color").addClass("empty_color");
		}
		if (color_value.length == 6) {
			$(this).parent().parent().find(".color_picker div:first").removeClass("empty_color").css("background-color", "#" + color_value);
			var color_row_index = $(this).parent().parent().index();
			if (color_row_index == 0) {
				informer_background_color = color_value;
			} else if (color_row_index == 1) {
				informer_border_color = color_value;
			} else if (color_row_index == 2) {
				informer_text_color = color_value;
			} else if (color_row_index == 3) {
				informer_selector_color = color_value;
			}

			ConstractInfConverter ();
			ConstractURLforIframe ();
		}
		$(this).val(color_value);
	});

	/***** INFORMER CURRENCY SUM VALIDATION *****/

		$("#sum_input").keyup(function(e){
			var sum_value = $(this).val();
			if (sum_value.length > 0) {
				sum_value = sum_value.replace(/\D+/gi, "");
			}
			$(this).val(sum_value);
			informer_sum = sum_value;

			ConstractInfConverter ();
			ConstractURLforIframe ();
		});

	/*********** RAINBOW COLOR PICKER **********/

	/* RAINBOW COLOR PICKER > CREATE COLOR PALETTE */

		function d2h (number, len) {
			var hex = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'];
			if (number < 16) {
				var res = hex[number];
				while (res.length < len)
					res = '0' + res;
				return res;
			}
			var mod = number % 16;
			return d2h((number - mod) / 16, len-1).toString() + hex[mod];
		}

		var rainbow_colors_number = 7;
		var step = 16;
		var palette = "";

		for (j = 0;  j < rainbow_colors_number; j++) {
			for (i = 0; i < 256; i += step) {
				var c_r = [d2h(i, 2), 'ff', d2h(255-i, 2), '00', '00', d2h(i, 2), 'ff'];
				var c_g = ['00', d2h(i, 2), 'ff', 'ff', d2h(255-i, 2), '00', d2h(i, 2)];
				var c_b = ['00', '00', '00', d2h(i, 2), 'ff', 'ff', 'ff'];
				palette = palette + '<div class="rainbow_color_pixel" style="background-color: #' + c_r[j] + c_g[j] + c_b[j] + '; color: #' + c_r[j] + c_g[j] + c_b[j] + ';"></div>';
			}
		}

		palette = palette + '<div class="rainbow_color_pixel" style="background-color: #ffffff; color: #ffffff;"></div>';
		palette = palette + '<div class="rainbow_color_clear"></div>';

		$(".rainbow_color_picker .rainbow_color_palette").html(palette);


	/* RAINBOW COLOR PICKER > GET COLOR FROM PALETTE */

		function fillZero(myString) {
			if (myString.length == 1) {
				return "0" + myString;
			} else {
				return myString;
			}
		}

		function RGBToHex(color) {
			if (color.substr(0, 1) === '#') {
				return color.slice(1);
			}
			var digits = /(.*?)rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/.exec(color);
			if (digits == null) return "";
			var red = parseInt(digits[2]);
			var green = parseInt(digits[3]);
			var blue = parseInt(digits[4]);
			var hexcode = fillZero(red.toString(16)) + fillZero(green.toString(16)) + fillZero(blue.toString(16));
			return hexcode;
		}

		$(".rainbow_color_pixel").hover(function(){
			var selected_color = $(this).css("background-color");
			$(this).parent().parent().find(".rainbow_color_sample div").css("background-color", selected_color);
			$(this).parent().parent().find(".rainbow_color_text div").text(RGBToHex(selected_color));
		});

		$(".rainbow_color_pixel").click(function(){
			var selected_color = $(this).css("background-color");
			$(this).parent().parent().parent().find("input:first").val(RGBToHex(selected_color));
			$(this).parent().parent().parent().parent().find(".color_picker div:first").removeClass("empty_color").css("background-color", selected_color);
			$(".rainbow_color_picker").hide();
			var color_row_index = $(this).parent().parent().parent().parent().index();
			if (color_row_index == 0) {
				informer_background_color = RGBToHex(selected_color);
			} else if (color_row_index == 1) {
				informer_border_color = RGBToHex(selected_color);
			} else if (color_row_index == 2) {
				informer_text_color = RGBToHex(selected_color);
			} else if (color_row_index == 3) {
				informer_selector_color = RGBToHex(selected_color);
			}

			ConstractInfConverter ();
			ConstractURLforIframe ();
		});

	/* RAINBOW COLOR PICKER > SHOW COLOR PALETTE */

		$(".color_sample").click(function(){
			$(".rainbow_color_picker").hide();
			$(".rainbow_color_sample div").css("background-color", "#ffffff");
			$(".rainbow_color_text div").text("ffffff");
			$(this).parent().parent().find(".color_code div:first").show();
		});

	/* RAINBOW COLOR PICKER > HIDE COLOR PALETTE */

		$(".rainbow_color_close div").click(function(){
			$(".rainbow_color_picker").hide();
		});

	}
});

/* AnyStock Charts */

function initBigChart(id, title, config, chart_url){
	var tz_offset = 14400000;
    var chart = new AnyChartStock('/static/v3/swf/anystock.swf', '/static/v3/swf/preloader.swf');
    var isChartCreated = false;
    var doScroll = false;
    var num = 2;

    chart.setJSONFile(config);
    chart.needConfig = true;
	chart.wMode = 'opaque';
	chart.onChartDraw = function(){
		if (isChartCreated === true){
			return;
		}
		isChartCreated = true;
		initChart();
	};

    chart.write(id);

    function drawChart(csv){
		chart.getSeriesById('mainChart', 'series1').name = title;
		chart.applySettingsChanges();
        chart.appendData('set', csv);
        chart.commitDataChanges();
        chart.selectRange('Unit', 'Month', 1, 'LastDate');
    }

    function initChart(){
        var url = chart_url + '&f=2YAGO&t=ENDOFTIME';

        $.ajax({
            url: url,
            success: function(json){
                drawChart(json['csv']);
            }
        });
    }

    /*chart.onSelectedRangeChange = function(end, start, status){
        if (status == 'finish'){
            if (doScroll){
                if (end.getTime() === chart.getFirstDate().getTime() && num < 1000){
                    var date = new Date();

                    num += 2;
                    date.setDate(date.getDate() - 365 * num);

                    var url = chart_url + '&f=' + parseInt(date.getTime() / 1000, 10) + '&t=' + parseInt(end.getTime() / 1000, 10);

                    $.ajax({
                        url: url,
                        success: function(json){
                            if (json['csv'] !== ''){
                                chart.appendData('set', json['csv']);
                                chart.commitDataChanges();
                                chart.scrollTo(end);
                            } else {
                                num = 1000;
                            }
                        }
                    });
                }
            } else {
                doScroll = true;
            }
        }
    }*/
}
