

/** Загружает статьи эксперта **/
var expert_id = 0;

function load_expert_article( _id_ ) {
	expert_id = _id_;

	var e_elem = $( 'expert_' + expert_id );
	var expert_a_list = $( 'expert_list_' + expert_id );

	if ( expert_a_list ) {
		// Статьи уже были загружены.
		if ( e_elem.hasClassName( 'expert_more_open' ) ) {
			e_elem.removeClassName( 'expert_more_open' );
			e_elem.addClassName( 'expert_more' );
			expert_a_list.hide();
		} else {
			e_elem.removeClassName( 'expert_more' );
			e_elem.addClassName( 'expert_more_open' );
			expert_a_list.show();
		}
	} else {
		// Статьи еще не загружены.
		new Ajax.Request(
			'http://bankir.ru/publication/expert_articles/?id=' + expert_id,
			{
				method: 'get',
				onSuccess: function( transport ) {
					response = transport.responseText.evalJSON();
					info = response.info;
					info_len = info.length;
					var e_elem = $( 'expert_' + expert_id );
					if ( e_elem ) {
						e_elem.removeClassName( 'expert_more' );
						e_elem.addClassName( 'expert_more_open' );
						expert_a_list = document.createElement( 'dl');
						expert_a_list.className = 'expert_more_list';
						expert_a_list.id = 'expert_list_'+expert_id;
						for ( i = 0; i < info_len; i++ ) {
							dt = new Element( 'dt' ).update( info[i].start );
							dd = new Element( 'dd' );
							a = new Element( 'a', {href: info[i].url, title: info[i].views + ' просмотров'} ).update( info[i].title );
							dd.appendChild( a );
							dd.appendChild( document.createTextNode( ' (' ) );
							a_ans = new Element( 'a', {href: info[i].discuss_url} ).update( info[i].answers );
							dd.appendChild( a_ans );
							dd.appendChild( document.createTextNode( ')' ) );
							expert_a_list.appendChild( dt );
							expert_a_list.appendChild( dd );
						}
						e_elem.parentNode.appendChild( expert_a_list );
					}	
				},
				onFailure: function() {
					alert( 'Fail!' );
				}
			}
		);
	}
}

/* Bankir test script */
/* -- settings */
var testRootId          = 'bankir_test';
var testRootResultsId   = 'bankir_test_results';
var testRedColor        = '#ff7777';
var testWarningText     = '<span style="color:' + testRedColor + ';background-color:#ffffff;font-weight:normal;">&nbsp;Необходимо ответить на вопрос.</span><br />'

/* -- global vars */
var testRootObj             = undefined;
var testRootResultsObj      = undefined;
var testNeedCountAnswers    = undefined;

/* -- functions */
function testInit() {
    testRootObj         = document.getElementById(testRootId);
    testRootResultsObj  = document.getElementById(testRootResultsId);
    testMake();
}

function testMake() {
    if (testRootObj != undefined) {
        var pattern_inputs = "/\\[(-?[0-9.]+)\\]/g";
        var result_text_inputs_before = '<input type="radio" name="test_radio';
        var result_text_inputs_after = '" value="$1" class="test_checkbox">';

        var pattern_question = "/(<strong>(.+)<(.{1})strong>)/gi";
        var result_text_question_before = '<strong id="test_question';
        var result_text_question_after = '" >$1</strong>';

        // Tr < Tbody < Table
        var childTbodyObj   = testGetFirst(testRootObj);
        var childTrObj      = testGetFirst(childTbodyObj);
        if (childTrObj.tagName == 'TR') {
            // for each TR in table
            var i = 0;
            do {
                var childToReplace= testGetFirst(childTrObj);

                // replace pattern by rabio button
                var newTdObj = document.createElement("TD");

                newTdObj.innerHTML = childToReplace.innerHTML.replace(eval(pattern_inputs), (result_text_inputs_before + i + result_text_inputs_after));
                newTdObj.innerHTML = newTdObj.innerHTML.replace(eval(pattern_question), (result_text_question_before + i + result_text_question_after));

                childTrObj.removeChild(childToReplace);
                childTrObj.appendChild(newTdObj);

                childTrObj = testGetNext(childTrObj);
                i ++;
            } while (childTrObj != null);

            // need to answers
            testNeedCountAnswers = i;
        }

        // create TR > TD with result's link
        var newTrObj = document.createElement('TR');
        var newTdLinkObj = document.createElement('TD');
        newTdLinkObj.innerHTML = '<a href="#" onClick="javascript:testResult(this);return false;">Показать мои результаты</a><br /><br /><br />';
        newTrObj.appendChild(newTdLinkObj);
        childTbodyObj.appendChild(newTrObj);

        // hide results
        if (testRootResultsObj != undefined) {
            testRootResultsObj.style.display = 'none';
        }
    }

    //alert(Math.random(0));
    return false;
}

function testResult(resultObj) {
    var summ = 0;
    var i = 0;
    var radiobuttons = testRootObj.getElementsByTagName('input');

    // for each radio button
    var arrIdAnswed = new Array();
    var currentCheckedInputsCount = 0;
    for(i = 0; i < radiobuttons.length; i++) {
        if(radiobuttons[i].checked == true) {
            summ += radiobuttons[i].value * 1;
            var tmpId = radiobuttons[i].getAttribute('name').replace(eval("/(test_radio)/gi"),'') * 1;
            arrIdAnswed[tmpId] = true;
            currentCheckedInputsCount ++;
        }
    }

    // delete warning text
    i = 0;
    while (i <= testNeedCountAnswers) {
        var warning = document.getElementById('test_warning_' + i);
        if(warning != undefined) {
            //warning.remove();
            var p = testGetParent(warning);
            p.removeChild(warning);
        }
        i ++;
    }

    // add warning text and background
    i = 0;
    while (i <= testNeedCountAnswers) {
        var objQuestion = document.getElementById('test_question' + i);
        if (objQuestion != undefined) {
            var tmpColor = 'none';
            if (arrIdAnswed[i] == undefined) {
                tmpColor = testRedColor;

                // add warning text
                var newSpanObj = document.createElement('SPAN');
                newSpanObj.innerHTML = testWarningText;
                newSpanObj.setAttribute('id', 'test_warning_' + i);
                objQuestion.appendChild(newSpanObj);
            }

            objQuestion.setAttribute('style', 'background-color:' + tmpColor + ';');
        }
        i++;
    }

    // if all questions were answered
    if (currentCheckedInputsCount == testNeedCountAnswers) {
        //print result summ
        var parentObj = testGetParent(resultObj);
        parentObj.innerHTML = '<b>Вы набрали: ' + summ + '</b><br /><br /><br />';

        // show results table
        if (testRootResultsObj != undefined) {
            testRootResultsObj.style.display = 'block';
        }

        for(i = 0; i < radiobuttons.length; i++) {
            //radiobuttons[i].setAttribute('enabled', 'none');
            radiobuttons[i].disabled = true;
        }
    }

    return false;
}

function testGetParent(elem, num) {
    num = num || 1;
    for (var i = 0; i < num; i++) {
        if (elem != null) elem = elem.parentNode;
    }
    return elem;
}

function testGetFirst(elem) {
    elem = elem.firstChild;
    return elem && elem.nodeType != 1 ? elem.nextSibling : elem;
}

function testGetNext(elem) {
    do {
        elem = elem.nextSibling;
    } while (elem && elem.nodeType != 1);
    return elem;
}

/* -- prototype init */
// use some prototype
//document.observe("dom:loaded", function() {
//	testInit();
//});
/*/Bankir test script */
