/*
function createHttpRequest(url)
{
  // branch for native XMLHttpRequest object
  if (window.XMLHttpRequest) {
    httpRequest = new XMLHttpRequest();
    httpRequest.onreadystatechange = processReqChange;
    httpRequest.open("GET", url, true);
    httpRequest.send(null);
  // branch for IE/Windows ActiveX version
  } else if (window.ActiveXObject) {
    httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
    if (httpRequest) {
      httpRequest.onreadystatechange = processReqChange;
      httpRequest.open("GET", url, true);
      httpRequest.send();
    }
  }
}
*/

function createHttpRequest() {
var httpRequest;
var browser = navigator.appName;
if (browser == "Microsoft Internet Explorer") {
httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
} else {
httpRequest = new XMLHttpRequest();
}

return httpRequest;
}

function sendRequest(file, _resultId, getRequestProc) {
resultId = _resultId;
document.getElementById(resultId).innerHTML = '<img align="center" src="js/loading.gif" width="16" height="16">';
httpRequest.open('get', file);
httpRequest.onreadystatechange = getRequestProc;
httpRequest.send(null);
}

function getRequest() {
if (httpRequest.readyState == 4) {
document.getElementById(resultId).innerHTML = httpRequest.responseText;
}
}

var httpRequest = createHttpRequest();
var resultId = '';

function sack(file){
	this.AjaxFailedAlert = "Your browser does not support the enhanced functionality of this website, and therefore you will have an experience that differs from the intended one.\n";
	this.requestFile = file;
	this.method = "POST";
	this.URLString = "";
	this.encodeURIString = true;
	this.execute = false;

	this.onLoading = function() { };
	this.onLoaded = function() { };
	this.onInteractive = function() { };
	this.onCompletion = function() { };

	this.createAJAX = function() {
		try {
			this.xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				this.xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (err) {
				this.xmlhttp = null;
			}
		}
		if(!this.xmlhttp && typeof XMLHttpRequest != "undefined")
			this.xmlhttp = new XMLHttpRequest();
		if (!this.xmlhttp){
			this.failed = true;
		}
	};

	this.setVar = function(name, value){
		if (this.URLString.length < 3){
			this.URLString = name + "=" + value;
		} else {
			this.URLString += "&" + name + "=" + value;
		}
	}

	this.encVar = function(name, value){
		var varString = encodeURIComponent(name) + "=" + encodeURIComponent(value);
	return varString;
	}

	this.encodeURLString = function(string){
		varArray = string.split('&');
		for (i = 0; i < varArray.length; i++){
			urlVars = varArray[i].split('=');
			if (urlVars[0].indexOf('amp;') != -1){
				urlVars[0] = urlVars[0].substring(4);
			}
			varArray[i] = this.encVar(urlVars[0],urlVars[1]);
		}
	return varArray.join('&');
	}

	this.runResponse = function(){
		eval(this.response);
	}

	this.runAJAX = function(urlstring){
		this.responseStatus = new Array(2);
		if(this.failed && this.AjaxFailedAlert){
			alert(this.AjaxFailedAlert);
		} else {
			if (urlstring){
				if (this.URLString.length){
					this.URLString = this.URLString + "&" + urlstring;
				} else {
					this.URLString = urlstring;
				}
			}
			if (this.encodeURIString){
				var timeval = new Date().getTime();
				this.URLString = this.encodeURLString(this.URLString);
				this.setVar("rndval", timeval);
			}
			if (this.element) { this.elementObj = document.getElementById(this.element); }
			if (this.xmlhttp) {
				var self = this;
				if (this.method == "GET") {
					var totalurlstring = this.requestFile + "?" + this.URLString;
					this.xmlhttp.open(this.method, totalurlstring, true);
				} else {
					this.xmlhttp.open(this.method, this.requestFile, true);
				}
				if (this.method == "POST"){
  					try {
						this.xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded')
					} catch (e) {}
				}

				this.xmlhttp.send(this.URLString);
				this.xmlhttp.onreadystatechange = function() {
					switch (self.xmlhttp.readyState){
						case 1:
							self.onLoading();
						break;
						case 2:
							self.onLoaded();
						break;
						case 3:
							self.onInteractive();
						break;
						case 4:
							self.response = self.xmlhttp.responseText;
							self.responseXML = self.xmlhttp.responseXML;
							self.responseStatus[0] = self.xmlhttp.status;
							self.responseStatus[1] = self.xmlhttp.statusText;
							self.onCompletion();
							if(self.execute){ self.runResponse(); }
							if (self.elementObj) {
								var elemNodeName = self.elementObj.nodeName;
								elemNodeName.toLowerCase();
								if (elemNodeName == "input" || elemNodeName == "select" || elemNodeName == "option" || elemNodeName == "textarea"){
									self.elementObj.value = self.response;
								} else {
									self.elementObj.innerHTML = self.response;
								}
							}
							self.URLString = "";
						break;
					}
				};
			}
		}
	};
this.createAJAX();
}

function ajax(id, url) {
	var goal=document.getElementById(id);
		goal.innerHTML="<img align='center' src='js/loading.gif' width='16' height='16'>";
	var request   = false;
	var msxmlhttp = new Array('Msxml2.XMLHTTP.5.0','Msxml2.XMLHTTP.4.0','Msxml2.XMLHTTP.3.0','Msxml2.XMLHTTP','Microsoft.XMLHTTP' );

	if ( window.XMLHttpRequest ) {
		request = new XMLHttpRequest;
	} else if ( window.ActiveXObject ) {
		for ( var i = 0; i < msxmlhttp.length; i ++ ) {
			try {
				request = new ActiveXObject( msxmlhttp[i] );
			} catch ( e ) {
				request = false;
			}
		}
	}
	if ( !request ) {
		alert( 'Can\'t create XMLHTTP instance' );
		return false;
	}
	request.onreadystatechange = function() {
		if ( request.readyState == 4 ) {
			if ( request.status == 200 ) {
				var reg=/<script[^>]*?>(.*?)<\/script>/ig;
				var reg_repl=/<[\/]{0,1}script[^>]*?>/ig;
				var resp=request.responseText;
				if (scr=resp.match(reg)){
					resp=resp.replace(reg,"");
					goal.innerHTML=resp;
					for (i=0; i<scr.length;i++){
						to_exec=scr[i].replace(reg_repl,"");
						eval(to_exec);
					}
				} else {
					goal.innerHTML=resp;
				}
				if (redirect_url){
					if (redirect_timeout){
						setTimeout("ajax('"+id+"','"+redirect_url+"')",redirect_timeout*1000);
					} else {
						execute(id,redirect_url,while_loading);
					}
				}

				if (callback_on_success) {
					callback_on_success();
				}
			} else {
				goal.innerHTML='Нет ответа';
			}
		}
	}
	var q_pos=url.indexOf('?');
	var q_data=(q_pos!=-1?url.substr(q_pos+1):'');
	var u_path=(q_pos!=-1?url.substr(0,q_pos):url);
	request.open( 'POST', u_path, true );
	request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	request.send(q_data);
};
function submitter(formObjToSubmit){
	if (!formObjToSubmit){
		return '';
	}

	var submit_elms=formObjToSubmit.elements;
	var ret='';
	for (i=0;i<submit_elms.length;i++){
		if (submit_elms[i].name=='' || submit_elms[i].type=='button' || submit_elms[i].type=='radio' || (submit_elms[i].type=='checkbox' && !submit_elms[i].checked)){
			continue;
		}
		ret+='&'+submit_elms[i].name+'='+submit_elms[i].value;
	}



	if (ret==''){
		return '';
	}
	return ret.substr(1);
};

function getAsk(){
	var ul = document.getElementById('asks');
	var ask = ul.getElementsByTagName('input');
	for (i = 0; i < ask.length; i++) {
		if(ask[i].checked==true){
		var mas = ask[i].value;
		}
	}
	return mas;
}

function timerInit(counter,stop,id){
   var div = document.getElementById(id);
   if(id=='timer'){
   	div.innerHTML = 'Осталось <span id="countAsk">' + counter + '</span> вопросов и <span id="sec">' + stop + '</span> сек';
   	startCountdown(stop);
   }
   if(id=='countAsk'){
    div.innerHTML = counter;
   }
}

function startCountdown(stop)
{

	stop = stop-1;
	if(stop==0){
	  document.getElementById('result').innerHTML = '<div id="results"><div class="header">Вы не успели =(</div></div>';
	  var start = document.getElementById('start');
	  start.setAttribute("onclick","ajax('results','modules.php?name=testing&op=testStart')");
	  start.disabled='';
	}
	document.getElementById('sec').innerHTML = stop;
	setTimeout('startCountdown('+stop+')',1000);
}

function setVote(id){
val = document.getElementById(id).value;
document.getElementById('vote').value = val;
}