/* MINI AJAX */
//function $(e){if(typeof e=='string')e=document.getElementById(e);return e};
function collect(a,f){var n=[];for(var i=0;i<a.length;i++){var v=f(a[i]);if(v!=null)n.push(v)}return n};

ajax={};
ajax.x=function(){try{return new ActiveXObject("Msxml2.XMLHTTP")}catch(e){try{return new ActiveXObject("Microsoft.XMLHTTP")}catch(e){return new XMLHttpRequest()}}};
ajax.serialize=function(f){var g=function(n){return f.getElementsByTagName(n)};var nv=function(e){if(e.name)return encodeURIComponent(e.name)+"="+encodeURIComponent(e.value);else return ""};var i=collect(g("input"),function(i){if((i.type!="radio"&&i.type!="checkbox")||i.checked)return nv(i)});var s=collect(g("select"),nv);var t=collect(g("textarea"),nv);return i.concat(s).concat(t).join("&");};
ajax.send=function(u,f,m,a){var x=ajax.x();x.open(m,u,true);x.onreadystatechange=function(){if(x.readyState==4)f(x.responseText)};if(m=="POST")x.setRequestHeader("Content-type","application/x-www-form-urlencoded");x.send(a)};
ajax.get=function(url,func){ajax.send(url,func,"GET")};
ajax.gets=function(url){var x=ajax.x();x.open("GET",url,false);x.send(null);return x.responseText};
ajax.post=function(url,func,args){ajax.send(url,func,"POST",args)};
ajax.update = function (url, elm) { var e = document.getElementById(elm); var f = function (r) { e.innerHTML = r }; ajax.get(url, f) };
ajax.submit = function (url, elm, frm) { var e = document.getElementById(elm); var f = function (r) { e.innerHTML = r }; ajax.post(url, f, ajax.serialize(frm)) };

/* END MINI AJAX */

/* HELP METODE */
/*
simpl metoda, ki zaustavi delovanje js-ja za x milisekund
uporabno predvsem v metodah, kjer ena nekaj zapiše, druga pa posodobi skupno števiko, ipdb. 
*/
function pausecomp(millis)
{
    var date = new Date();
    var curDate = null;

    do { curDate = new Date(); }
    while(curDate-date < millis);
} 
/* END HELP METODE */


/* splošne metode so na začetku*/
function getRPCObject() {
        var req;
        if (window.XMLHttpRequest)
                req = new XMLHttpRequest();
        else if (window.ActiveXObject)
                req = new ActiveXObject("Microsoft.XMLHTTP");
        return req;
}



function loadXMLDoc( method, url, data, procRequestFunct ) {
    req = getRPCObject();
    if(!req) {
        return false;   
    }
	url = url + '&hash=' + Math.random();
	req.onreadystatechange = procRequestFunct;
    req.open(method, url, true);
    req.setRequestHeader("Content-Type", "text/html; charset=UTF-8");
    if (data != null) {
		req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8' );
		req.send( data ); 
    } else {
		req.send('');
    }
    return req;
}

function processReqChange(req) {
    if (!req) {
		return 0;
    }
    if (req.readyState == 4) {
        if ((req.status == 200) || (req.status == 404)) {
			return 1; // it's safe now go ahead
        } else {
			return -1;
        }
    }
    return 0;
}

function CreateQueryString(params) {
	var p = new Array();
	p = params.split(',')
	var qs = '';
	for(i=0;i<p.length;i++)
	{
		var fieldname = p[i].replace(/^\s*|\s*$/g,""); //trim
		qs += '&' + fieldname;
		if(fieldname.indexOf('=') != -1) continue;
		var o = document.getElementsByName(fieldname);
		if(!o) continue;
		else o = o[0];
		switch(o.type) {
			case 'text':
			case 'hidden':
			case 'radio': 
			case 'texarea': 
			case 'select-one': qs +='=' + o.value; break;
			case 'checkbox' :  qs +='='; if(o.checked) qs += o.value; break;
		}
	}
	return qs;
}

function WriteStatus(status) {
	if(getById('ajaxstatus')) {
		getById('ajaxstatus').innerHTML = status;
		getById('ajaxstatus').style.display = 'block';
	} else {
		var d = document.createElement("div");
		d.setAttribute('id','ajaxstatus');
		d.setAttribute('class','divajaxstatus');
		d.setAttribute('className','divajaxstatus');
		d.innerHTML = status;
		var myBody = document.getElementsByTagName("body")[0];
		myBody.appendChild(d);
		getById('ajaxstatus').style.display = 'block';	
		getById('ajaxstatus').visible = true;
	}
    setTimeout("getById(\'ajaxstatus\').style.display = \'none\';",1000);

}


function ExecuteAjax(params, prijavljen){
	WriteStatus('Starting');
	var qs = CreateQueryString(params);
	qs = 'show.aspx?xid=WBT:X:AJAX' + qs;
	var res = '';
	var poslji=function() 
	{
		if (processReqChange(req)) {
			if (req.readyState == 4) {
				WriteStatus('Getting data');
				getById('ajaxstatus').innerHTML = "Data written";
				setTimeout("getById(\'ajaxstatus\').style.display = \'none\';",1000);
			}
		}
		
	};
	var req = loadXMLDoc('GET',qs,null,poslji);
}


/* funkcije ki se uporabljajo na iskanju */
//ufi
function getSearchResults(from) {
    alert('etSearchResults(from)');
/*
	WriteStatus('Za\u010detek');
	ButtonToogle(1);
	var napaka= false;
	var niz = getById('field_niz').value;
	var _if = getById('field_if').checked;
	var _is = getById('field_is').checked;
	var _iu = getById('field_iu').checked;
	var _in = getById('field_in').checked;
	
	if(from) {
		_if = false;
		_is = true;
		_iu = false;	
		_in = true;	
	}
	
	if((niz == null || niz == "") || (!_if && !_is && !_iu && !_in)) 
		napaka = true;
	var rez = getById('field_rezultati');
	
	if(!napaka) {
		var search_string = 'show.aspx?xid=WBT:X:AJAX&is=' + (_is ? '1' : '0');
		search_string += '&if=' + (_if ? '1' : '0');
		search_string += '&in=' + (_in ? '1' : '0');
		search_string += '&iu=' + (_iu ? '1' : '0');
		search_string += '&niz=' + (niz);
		search_string += '&par=1&p=0';
		var isk=function() 
		{
			if (processReqChange(req)) {
				var id = req.responseText.substr(0,3);
				if (getById('pbarisci')) getById('pbarisci').style.display='none'
			
				var res = req.responseText.substr(3);
				if (id=='OK-') {
					rez.innerHTML = res;
				}
				else
				  rez.innerHTML = "";
				
				ButtonToogle(0);
				getById('ajaxstatus').innerHTML = "Iskanje uspe\u0161no";
				setTimeout("getById(\'ajaxstatus\').style.display = \'none\';",1000);
			}
		};
		var req = loadXMLDoc('GET',search_string,null,isk);
	}
	else {
		rez.innerHTML = "";
		if(niz == null || niz == "")
			rez.innerHTML += "<span class=\"napaka\">Za iskanje vnesite niz!</span><br/>";
		if(!_if && !_is && !_iu && !_in)
			rez.innerHTML += "<span class=\"napaka\">Ozna\u010dite v katerih podro\u010djih \u017eelite iskati!</span>";

		if (getById('pbarisci')) getById('pbarisci').style.display='none'
		getById('ajaxstatus').innerHTML = "Napaka";
		setTimeout("getById(\'ajaxstatus\').style.display = \'none\';",1000);
		ButtonToogle(0);
	}

	return(napaka);*/
}

// ufi
function ButtonToogle(what) {
    alert('ButtonToogle(what)');
/*
	if (what) {
		if(getById('pbarisci')) getById('pbarisci').style.display='block'; 
		if(getById('btn_iskanje_span')) getById('btn_iskanje_span').style.display='none'; 
	} else	{
		if(getById('pbarisci')) getById('pbarisci').style.display='none';
		if(getById('btn_iskanje_span')) getById('btn_iskanje_span').style.display='block'; 
	}*/
}
/*end iskanje*/

/* intelisense skupine */

function SeznamSkupin(parent,thisObj,writeToId,tipi,evt,multi) {
	WriteStatus('Za\u010detek');
	var napaka = false;
	var niz = thisObj.value;

	var skupina_id = getById(writeToId).value;

	do_showtip(500,thisObj,200,0,20,evt,"<div class='intelisenseout'><div class='close'><table><tr><td class='closelevo'><a href='javascript:void(0);' title='Po\u010disti izbrano skupino' onclick='ClearSelected(\""+thisObj.id+"\",\""+writeToId+"\");'>Po\u010disti</td><td class='closedesno'><a href='javascript:void(0);' title='Zapri seznam' onclick='hidetip();'>X</a></td></tr></table></div>Vpi\u0161ite nekaj znakov imena skupine.</div>",0);

	if(tipi == null || tipi == "") napaka = true;
		
	var start = "<div class='intelisenseout'><div class='close'><table><tr><td class='closelevo'><a href='javascript:void(0);' title='Po\u010disti izbrano skupino' onclick='ClearSelected(\""+thisObj.id+"\",\""+writeToId+"\");'>Po\u010disti</td><td class='closedesno'><a href='javascript:void(0);' title='Zapri seznam' onclick='hidetip();'>X</a></td></tr></table></div>";
	var end = "</div>";
	var rez = getById('adtip');
	
	if(!napaka) {
		var search_string = 'show.aspx?xid=WBT:X:AJAX';
		search_string += '&niz=' + niz;
		search_string += '&tipi=' + tipi;
		search_string += '&skupine_id=' + parent;
		search_string += '&multi=' + multi;
		search_string += '&writeToId=' + writeToId;
		search_string += '&fieldId=' + thisObj.id;
		search_string += '&par=2&p=1';
		var isk=function() 
		{
			if (processReqChange(req)) {
				var id = req.responseText.substr(0,3);
				
				var res = req.responseText.substr(3);
				
				if (id=='OK-') {
					rez.innerHTML = start + res + end;
				}
				else
				{
				  rez.innerHTML = "";
				  switch(res) {
					case "99-": rez.innerHTML = start + "<div class=intelisensedata><span class=\"napaka\">Prijava je potekla!</span></div>" + end; break;
					default: rez.innerHTML = start + "<div class=intelisensedata><span class=\"napaka\">Napaka!</span></div>" + end; break;
				  }
			    }
				getById('ajaxstatus').innerHTML = "Iskanje uspe\u0161no";
				setTimeout("getById(\'ajaxstatus\').style.display = \'none\';",1000);
			}
		};
		
		WriteStatus("niz: "+search_string);
		var req = loadXMLDoc('GET',search_string,null,isk);
		
	}
	else {
		rez.innerHTML = "";
		if(niz == null || niz == "")
			rez.innerHTML = start + "<div class=intelisensedata><span class=\"napaka\">Za iskanje vnesite niz!</span></div>" + end;

	}
	return(napaka);
}



/* 
Metoda zapiše naziv izbranega elementa v polje: elForText 
id izbranega elementa, pa v polje: elForId
*/

function ZapisiIzbrano(multi,elForText, elForId, textValue, idValue) {
	cakaj = clearTimeout(cakaj);
	
	if(multi==0 && getById(elForText).value != textValue) {
		 getById(elForText).value='';
		 getById(elForId).value='';
	}
	var o0 = getById(elForText);
	o0.value = textValue;
	var o1 = getById(elForId);
	o1.value = idValue;
	return true;
}

/* 
Metoda v/iz polja "idobjekta" doda/zbriše izbrano skupino
Potem sproži pridobivanje skupin 
*/
// ufi
function AddValue(idobj, value) {
    alert('AddValue(idobj, value)');
/*
	var o = getById(idobj);
	if(!o || o == null) return
	var v = o.value;
	
	v = v.replace(/,/g,"**");
	
	if(v.length > 0) 
		v =  "*" + v + "*";
	//alert(s);
	o.value="";
	if(v.indexOf("*" + value + "*") > -1) {
		v = v.replace("*" + value + "*","");
	} else {
		v +=  "*" + value + "*";
	}
	
    v = v.substr(1);
    v = v.substr(0,v.length-1);
    
 
	v = v.replace(/\*\*//*g,",");
	o.value = v;
	return true;*/
}

/*
Metoda preveri ali je pritisnjen alfanumerični znak
*/
function letternumber(e)
{
	var key;
	var keychar;

	if (window.event)
		key = window.event.keyCode;
	else if (e)
		key = e.which;
	else
		return true;
	keychar = String.fromCharCode(key);
	keychar = keychar.toLowerCase();


	if ((key==null) || (key==0) || (key==8) ||
		(key==9) || (key==13) || (key==27) )
	return true;


	else if ((("._-/ *abcdefghijklmnopqrstuvwxyz0123456789\u010d\u0161\u017e").indexOf(keychar) > -1))
	return true;
	else
	return false;
}

function ClearSelected(idForText, idForId) {
	var o0 = getById(idForText);
	o0.value = '';
	var o1 = getById(idForId);
	o1.value = '';
}
/* intelisense skupine */

/* TABS na pregledni strani (zaenkrat samo na LUJ)*/

var tabs = new Array();
/*nafilamo v predlogi WBT:I:V:Pregled:LUJ*/




//ufi
function ProcesData(ids,xid,act) {
alert('ProcesData(ids,xid,act)');
/*
	idar = ids.split(";");
	
	var queryString = 'show.aspx?xid='+xid+'&act='+act;
	data = "";
	for(i=0;i<idar.length;i++) {
		if (data!="") data = data + "&";
		data = data + getById(idar[i]).name + "=" + URLEncode(getById(idar[i]).value);
	}	
	queryString = queryString +"&" + data;
	data = null;
	
	var call=function() 
	{
		if (processReqChange(req)) {
			var id = req.responseText.substr(0,3);
			var res = req.responseText.substr(3);
			if (id=='OK-') {
			}
			else setTimeout("getById(\'ajaxstatus\').style.display = \'none\';",1000);
		}
	};
	var req = loadXMLDoc('GET',queryString,data,call);
*/
}


/* end TABS*/



// ====================================================================
//       URLEncode and URLDecode functions
//
// Copyright Albion Research Ltd. 2002
// http://www.albionresearch.com/
//
// You may copy these functions providing that 
// (a) you leave this copyright notice intact, and 
// (b) if you use these functions on a publicly accessible
//     web site you include a credit somewhere on the web site 
//     with a link back to http://www.albionresarch.com/
//
// If you find or fix any bugs, please let us know at albionresearch.com
//
// SpecialThanks to Neelesh Thakur for being the first to
// report a bug in URLDecode() - now fixed 2003-02-19.
// ====================================================================
function URLEncode( plaintext )
{
	// The Javascript escape and unescape functions do not correspond
	// with what browsers actually do...
	var SAFECHARS = "0123456789" +					// Numeric
					"ABCDEFGHIJKLMNOPQRSTUVWXYZ" +	// Alphabetic
					"abcdefghijklmnopqrstuvwxyz" +
					"-_.!~*'()";					// RFC2396 Mark characters
	var HEX = "0123456789ABCDEF";

	var encoded = "";
	for (var i = 0; i < plaintext.length; i++ ) {
		var ch = plaintext.charAt(i);
		/*
		czs encoding
		if (ch.charCodeAt(0)==269) ch = "c";
		if (ch.charCodeAt(0)==268) ch = "C";
		if (ch.charCodeAt(0)==353) ch = "s";
		if (ch.charCodeAt(0)==352) ch = "S";
		if (ch.charCodeAt(0)==382) ch = "z";
		if (ch.charCodeAt(0)==381) ch = "Z";*/
		
	    if (ch == " ") {
		    encoded += "+";				// x-www-urlencoded, rather than %20
		} else if (SAFECHARS.indexOf(ch) != -1) {
		    encoded += ch;
		} else {
			var charCode = ch.charCodeAt(0);
			if (charCode > 255) {
/*			    disabled by Marko
				alert( "Unicode Character '" 
                        + ch + "("+charCode+")"
                        + "' cannot be encoded using standard URL encoding.\n" +
				          "(URL encoding only supports 8-bit characters.)\n" +
						  "A space (+) will be substituted." ); */
				encoded += ch;
			} else {
				encoded += "%";
				encoded += HEX.charAt((charCode >> 4) & 0xF);
				encoded += HEX.charAt(charCode & 0xF);
			}
		}
	} // for

	return encoded;
};

function URLDecode( )
{
   // Replace + with ' '
   // Replace %xx with equivalent character
   // Put [ERROR] in output if %xx is invalid.
   var HEXCHARS = "0123456789ABCDEFabcdef"; 
   var encoded = document.URLForm.F2.value;
   var plaintext = "";
   var i = 0;
   while (i < encoded.length) {
       var ch = encoded.charAt(i);
	   if (ch == "+") {
	       plaintext += " ";
		   i++;
	   } else if (ch == "%") {
			if (i < (encoded.length-2) 
					&& HEXCHARS.indexOf(encoded.charAt(i+1)) != -1 
					&& HEXCHARS.indexOf(encoded.charAt(i+2)) != -1 ) {
				plaintext += unescape( encoded.substr(i,3) );
				i += 3;
			} else {
				alert( 'Bad escape combination near ...' + encoded.substr(i) );
				plaintext += "%[ERROR]";
				i++;
			}
		} else {
		   plaintext += ch;
		   i++;
		}
	} // while
   document.URLForm.F1.value = plaintext;
   return false;
};

/*START shranjevanje odgovora na motivacijsko vprašanje*/

function ShraniOdgovor(vprasanje_id, odgovorPravilen, ajax_odg, atom_id) {
	var odgovori = getById('odg_' + vprasanje_id);
	var queryString = 'show.aspx?xid=WBT:X:AJAX&vpr=' + vprasanje_id + '&odgovorPravilen=' + odgovorPravilen;
	queryString += ajax_odg + '&atom_id=' + atom_id + '&par=4&p=1';

	var isk=function() 
	{
		processReqChange(req)
	};
	var req = loadXMLDoc('GET', queryString, null, isk);

	return(0);
}


function sendUserWindowData() {
}


//window.onunload=sendUserWindowData;
/*END shranjevanje odgovora na motivacijsko vprašanje*/

/* Pregled vprašanj */

function PregledVprasanjUpdate(vrednost, krneki, test_id) {
	WriteStatus('Za\u010detek');
	var kk = new Array();
	kk = krneki.split('_');
	spletaj_id = kk[0].substr(1);
	vprasanje_id = kk[1].substr(1);
	test_izpit_vprasanje_id = kk[2].substr(3);
	if(vrednost) vrednost = 1;
	else vrednost = 0;
		  
	var queryString = 'show.aspx?xid=WBT:X:AJAX';
	queryString += '&spletaj_id='+spletaj_id;
	queryString += '&vprasanje_id='+vprasanje_id;
	queryString += '&test_id='+test_id;
	queryString += '&test_izpit_vprasanje_id='+test_izpit_vprasanje_id;
	queryString += '&'+krneki + '='+ vrednost;
	queryString += '&par=5&p=1';

	var poslji=function() 
	{
		if (processReqChange(req)) {
			var id = req.responseText.substr(0,3);
			var res = req.responseText.substr(3);
			if (id!='OK-') {
				alert(res);;
			}
			getById('ajaxstatus').innerHTML = "Podatki zapisani";
			setTimeout("getById(\'ajaxstatus\').style.display = \'none\';",1000);
		}
	};
	var req = loadXMLDoc('GET',queryString,null,poslji);

	return(0);
}

var o = '';
function posodobi(f) {
  getById(o).value = f;
  o = '';
}
