var Ajaxs = new Array();
var xmlHttp = new Array();
var xmlHttpNum = 0;

/*

Ajax usage:

var ajaxId = createAjax();
Ajaxs[ajaxId].onSuccess=function() {
}

var initParams = new Array();
initParams['do'] = 'Tree';
Ajaxs[ajaxId].Initialize('api.php', initParams);


*/


function createAjax() {
    xmlHttpNum++;
    
    var reqId = xmlHttpNum;
    
    Ajaxs[reqId]= { id: reqId };
    Ajaxs[reqId].onSuccess=function(){}
    Ajaxs[reqId].onFailure=function(){}
    Ajaxs[reqId].startPreload=function(){}
    Ajaxs[reqId].stopPreload=function(){}
    
    Ajaxs[reqId].packetscount = 1;

    Ajaxs[reqId].Initialize=function(url,initParams,method,params) {
        
    	try {// Firefox, Opera 8.0+, Safari
    		xmlHttp[reqId]=new XMLHttpRequest();
    	}
    	catch (e) {
    		try {// Internet Explorer
    			xmlHttp[reqId]=new ActiveXObject("Msxml2.XMLHTTP");
    		}
    		catch (e) {
    			try {
    				xmlHttp[reqId]=new ActiveXObject("Microsoft.XMLHTTP");
    			}
    			catch (e) {
    				Ajaxs[reqId].onFailure();
    			}
    		}
    	}
                                
        xmlHttp[reqId].onreadystatechange=function() {
        	switch(xmlHttp[reqId].readyState) {
        		case 1 :
        			Ajaxs[reqId].startPreload();
        			break;
        		case 4 :
        			Ajaxs[reqId].stopPreload();
        			Ajaxs[reqId].onSuccess();
        			break;
            }
        }
        method=(method)?method:"GET";
        for (param in initParams) {
            if (!params) params='?'+param+'='+encodeURIComponent(initParams[param]);
            else params+='&'+param+'='+encodeURIComponent(initParams[param]);
        }
        rnd=new Date();
        if (!params) params='?rnd='+rnd.valueOf();
        else params+='&rnd='+rnd.valueOf();
        var openUrl = encodeURI(url)+((method=="GET")?(params):(''));
        xmlHttp[reqId].open(method,openUrl,true);
        if (method == "POST") {
            xmlHttp[reqId].setRequestHeader("Content-type", "application/x-www-form-urlencoded");
            xmlHttp[reqId].setRequestHeader("Content-length", params.length);
            xmlHttp[reqId].setRequestHeader("Connection", "close");
            xmlHttp[reqId].send(params);
        }else{
            xmlHttp[reqId].send(null);
    	}
    }

    Ajaxs[reqId].response=function(id) {
    /*
    	if (xmlHttp[id].responseText.length == 0) {
    		ReportMessage("EMPTY_RESPONSE", 'error', '', true, true, true);
    		return false;
    	}
        */
        if (xmlHttp[id].status==200) {
        	var response = '';
        	try {
        		response = eval('('+xmlHttp[id].responseText+')');
        	} catch(err) {
        		ReportMessage("JSON_PARSE_ERROR", 'error', '', true, true, true);
        		return false;
        	}

        	var name = '';
        	if (typeof response.status == 'object') {
                
        		if(response.status.length > 0) {
        			for(var i=0;i<response.status.length;i++) {
        				if (response.status[i].type == 'ERROR') {
                            name = response.status[i].type + ": " + response.status[i].message;
                            ReportMessage(response.status[i].message, 'error', response.status[i].args, true, true, true);
        				}	
        			}
        		}
        	} else {
        		//ReportMessage("INVALID_RESPONSE_STRUCT", 'error', '', true, true, true);
        	}
        	return response;
        }
    }
    return reqId;
}




function $(id) {return (document.all)?document.all[id]:document.getElementById(id)}


function cmnSet_class( eOn, sClass_name, sInstead ){
	if( eOn ){
		sClass_name = ( sClass_name.length ) ? sClass_name.replace( /(^\s+|\s+$)/, "" ) : "";
		if( eOn.className.length ){
			var sOld = sClass_name;
			if( sInstead && sInstead.length ){
				sInstead = sInstead.replace( /\s+(\S)/g, "|$1" );
				if( sOld ){
					sOld += "|";
				}
				sOld += sInstead;
			}
			eOn.className = eOn.className.replace( new RegExp("(^|\\s+)(" + sOld +")($|\\s+)", "g"), "$1" );
		}
		eOn.className += ( eOn.className.length && sClass_name ? " " : "" ) + sClass_name;
	}
}

function cmnMatch_class( eOn, sClass_name ){
	return ( sClass_name && eOn.className && eOn.className.length && eOn.className.match( new RegExp("(^|\\s+)(" + sClass_name +")($|\\s+)") ) );
}

function srchText() {
	var oSrch = document.getElementById('searchTarget');
	
	if( cmnMatch_class( oSrch, 'srch_txt' ) ) {
		cmnSet_class( oSrch, ' ', 'srch_txt' );
		oSrch.value = '';
	}
	else if( !cmnMatch_class( oSrch, 'srch_txt' ) && oSrch.value == '' ) {
		cmnSet_class( oSrch, 'srch_txt', ' ' );
		oSrch.value = 'Поиск теста';
	}
}

function selectTest(oElem) {
    
    var iNum = oElem.id.substr(4);
	var oContainer = document.getElementById('s_t_list');
        
    for (var i=0;i<parseInt($('main_test_count').value);i++) {
        $('main_test_' + i).className = $('main_test_' + i).className.replace('g-on', 'g-off');
    }
    
    $('main_test_' + (iNum-1)).className = $('main_test_' + (iNum-1)).className.replace('g-off', 'g-on');
	
    var aChildren = [];
	
    for (var i=0; i < oContainer.childNodes.length; i++) {
	    if (oContainer.childNodes[i].nodeType == 1) {
	        aChildren.push(oContainer.childNodes[i].id.substr(4));
	    }
	}
	
	for(var j=0; j<aChildren.length; j++) {
		var oCurrElem = document.getElementById('s_t_'+aChildren[j]);
		if( aChildren[j] == iNum ) {
			cmnSet_class( oCurrElem, 'selected_test', 'select_test' );
		}
		else {
			cmnSet_class( oCurrElem, 'select_test', 'selected_test' );
		}
	}
    return false;
}



function validate_answer() {
    if($('questions_count') && $('questions_count').value > 0) {
        var questions = parseInt($('questions_count').value);
        var questions_checked = new Array();
        for(var i=0;i<questions;i++) {
            if($('responses_'+i) && $('responses_'+i).value > 0) {
                questions_checked[i] = false;
                var responses = $('responses_'+i).value;
                for(var j=0;j<responses;j++) {
                    if ($('question_'+i+'_'+j).checked)
                        questions_checked[i] = true;
                }
            }
        }
        for (var i=0;i<questions;i++) {
            if(!questions_checked[i]) return false;
        }
        return true;
    } else {    
        return true;
    }
}

/////// ***********
/////// COMMON FUNC
/////// ***********

function logout () {
    if(!form_submited) {
        form_submited = true;
        document.logoutform.submit();
    }
    // alert("Prived!");
    return false;
}

function process_blits (id) {
    if(!form_submited) {
        var response = $('blits_response_id');
        response.value = id;
        form_submited = true;
        document.BlicProcessForm.submit();
    }
    return false;
}
     
function checkSearch() {
    if($('searchTarget').value == 'Поиск теста' || $('searchTarget').value == '') {
        alert('Введите фразу для поиска');
        $('searchTarget').value = '';
        $('searchTarget').focus();
        return false;
    }
    return true;
}

function copyBlogCode() {
    $('blogcode').select();
    //window.clipboardData.setData("Text", $('blogcode').value);    -- dont work in opera and mozilla
}
function copyLink() {
    $('linkcode').select();
}
function checkJavascript() {
    var ajaxId = createAjax();
    Ajaxs[ajaxId].onSuccess=function() {
    }

    var initParams = new Array();
    initParams['js'] = '1';
    Ajaxs[ajaxId].Initialize('api.php', initParams);    
}

// prevent double form submit
var form_submited = false;
function submitQResult() {
    if(!form_submited) {
        form_submited = true;
        $('target_test_form').submit();
    }
}

function equalHeight() {
	if($('col_1') && $('col_2')) {
		var col_1 = $('col_1').offsetHeight - 10;
		var col_2 = $('col_2').offsetHeight + 8;	
		if (col_1 > col_2) 
			$('col_2').style.height = col_1 + 'px';
		else
			$('col_1').style.height = col_2 + 'px';
	}
}

/*#72 hide radio when js is on*/
function hideRadio() {
	$('bot_reducer').style.display='none';
	inputs = $('btest').getElementsByTagName('input');
	for(i=0;i<inputs.length;i++)
		if (inputs[i].name == 'blits_response_id') {
			inputs[i].style.display = 'none';
			inputs[i].checked = 0;
		}
}

function disableRadio() {
	$('submitBt').disabled = 'disabled';
	$('submitBt').className += ' next_disabled';
	inputs = $('mtest').getElementsByTagName('input');
	for(i=0;i<inputs.length;i++)
		if (inputs[i].name == 'question_0')
			inputs[i].checked = 0;
}
function enableRadio() {
	$('submitBt').disabled = 0;
	$('submitBt').className = 'next_bt bt';	
}

/* DOM load cross-browser event */
function init() {
    if (arguments.callee.done) return;
    arguments.callee.done = true;
    
    //code executed after DOM Load
    //runBanners();
};
if (document.addEventListener) {
    document.addEventListener("DOMContentLoaded", init, false);
}
/*@cc_on @*/
/*@if (@_win32)
document.write("<script id=\"__ie_onload\" defer=\"defer\" src=\"javascript:void(0)\"><\/script>");
var script = document.getElementById("__ie_onload");
script.onreadystatechange = function() {
    if (this.readyState == "complete") {
    init();
    }
};
/*@end @*/   
if (/WebKit/i.test(navigator.userAgent)) {
    var _timer = setInterval(function() {
    if (/loaded|complete/.test(document.readyState)) {
        clearInterval(_timer);
        init();
    }
    }, 10);
}
window.onload = init;
/* End DOM load cross-browser event */

function topBanner() {
	var RndNum4NoCash = Math.round(Math.random() * 1000000000);
	var ar_Tail='unknown'; if (document.referrer) ar_Tail = escape(document.referrer);
	var newsrc = 'http://ad.adriver.ru/cgi-bin/erle.cgi?' + 'sid=117779&target=blank&bt=36&pz=0&rnd=' + RndNum4NoCash + '&tail256=' + ar_Tail;
	document.getElementById('topBanner').className = document.getElementById('topBanner').className.replace('g-off', 'g-on');
	document.getElementById('topBannerContent').className = document.getElementById('topBanner').className.replace('g-on', 'g-off');
	document.getElementById('topBanner').src = newsrc;					
}
function rightBanner() {
	var RndNum4NoCash = Math.round(Math.random() * 1000000000);
	var ar_Tail='unknown'; if (document.referrer) ar_Tail = escape(document.referrer);
	var newsrc = 'http://ad.adriver.ru/cgi-bin/erle.cgi?' + 'sid=117779&target=blank&bt=22&pz=0&rnd=' + RndNum4NoCash + '&tail256=' + ar_Tail;
	document.getElementById('rightBanner').className = document.getElementById('rightBanner').className.replace('g-off', 'g-on');
	document.getElementById('rightBannerContent').className = document.getElementById('rightBanner').className.replace('g-on', 'g-off');
	document.getElementById('rightBanner').src = newsrc;	
}

/* banners load after page DOM done */
function runBanners() {	
	topBanner();
	rightBanner();
}
/* end banners load after page DOM done */

function click_count(id, t) {
	var link;
	rnd = new Date();
    switch (t) {
        case 1:
            link = 'http://mod.ukr.net/market/counter.php?type=2&id=' + id+'&rnd='+rnd;
            break;
    }
    script = document.createElement('script');
    script.src = link;
    document.body.appendChild(script);
}