var ajaxObject = new Object(); // polje koje prima povratnu vrednost
var IE=0;
String.prototype.trim = function() { return this.replace(/^\s+|\s+$/g, ''); };

// suve ajax rutine
var XMLHttpFactories = [
 function () {return new XMLHttpRequest();},
 function () {return new ActiveXObject("Msxml2.XMLHTTP.6.0");},
 function () {return new ActiveXObject("Msxml2.XMLHTTP.3.0");},
 function () {return new ActiveXObject("Msxml2.XMLHTTP");},
 function () {return new ActiveXObject("Msxml3.XMLHTTP");},
 function () {return new ActiveXObject("Microsoft.XMLHTTP");} ];

function createXMLHTTPObject(){
	var xmlhttp = false
	for (var i=0;i<XMLHttpFactories.length;i++) {
		//alert("proba sa " + i);
  		try {
  			xmlhttp = XMLHttpFactories[i]();
			if(i > 0){
				IE=1;
			}
  		}catch (e) { continue; }
  	break;
 	}
	if ( window.ActiveXObject ) {
     IE = 1;
	 //alert("MS Govno");
	}
	if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)){
		IE = 1;
	 	//alert("MS Govno regexp");
	}
 	return xmlhttp;
}

/*
 ova funkcija se poziva iz INPUT polja npr. onBlur="callajaxSimple('nesto.php','abc');"
 gde je prvi argument naziv serverske php funkcije;
 drugi je polje gde se upisuje vrednost responsa-a; ako nema treceg parametra
 onda se upisuje u value drugog argumenta
 
*/

//function callAjaxSimple(func, elm, polje){
function callAjaxSimple(){
	var brarg = callAjaxSimple.arguments.length;
	var func;
	var polje;

	func = callAjaxSimple.arguments[0];
	ajaxObject.polje = null;
	
	if(callAjaxSimple.arguments[1]){
		ajaxObject.polje = document.getElementById(callAjaxSimple.arguments[1]);
	}
	var url = "/" + func;
	ajaxSend(url);
}

function ajaxSend(url) {
	var http = createXMLHTTPObject();
 	if (!http) { 
 		alert("neuspelo kreiranje ajax HTTP objekta; pozovi administratora");
 		return;
	}
	if(IE == 1){
		utf = escape_utf8(url);
		//alert("UH\n" + url + "\n" + utf);
		//alert("UH\n" + url );
		url = utf;
	}

	http.open("GET", url);// salje http zahtev serveru i 
							
	http.onreadystatechange = function(){
			if (http.readyState == 4)
		  		if (http.status == 200){
					var odg = http.responseText.trim();
					var len = odg.length;
					if(ajaxObject.polje){
						//	var klasa = ajaxObject.polje.
							ajaxObject.polje.innerHTML = odg;
							if(len < 10){
								ajaxObject.polje.style.borderBottomStyle = "none";
								ajaxObject.polje.style.borderBottomWidth = "0px";
							}else{
								ajaxObject.polje.style.borderBottomStyle = "solid";
								ajaxObject.polje.style.borderBottomWidth = "1px";
							}
  					}
				}
		}
	  http.send(null);
}


function callWithParams(){
	var brarg = callWithParams.arguments.length;
	var calledPhp;
	var idelm;
	var polje;

	calledPhp = callWithParams.arguments[0];
	ajaxObject.polje = null;
	
	idelm = callWithParams.arguments[1].value;
	ajaxObject.polje = callWithParams.arguments[1];
	
	if(callWithParams.arguments[2]){
		ajaxObject.polje = document.getElementById(callWithParams.arguments[2]);
	}

	var url = calledPhp + "?full=1";	
	var elmf = document.forms[0].elements;
	for(i=0; i<elmf.length; i++){
		elm = elmf[i];
		if((elm.type == 'text') || (elm.type == 'select-one')){
			url += "&" + elm.name + "=" + elm.value;
		}
		if(elm.type == 'textarea'){
			url += "&" + elm.name + "=" + convertBR(elm.value);
		}
		if(elm.type == 'radio'){
			if(elm.checked){
			url += "&" + elm.name + "=" + elm.value;
			}
		}
	}
	ajaxSend(url);
}

function callTest(){
	var url = "testutfform.php?full=1";	
	var elmf = document.forms[0].elements;
	for(i=0; i<elmf.length; i++){
		elm = elmf[i];
		if((elm.type == 'text') || (elm.type == 'select-one')){
			url += "&" + elm.name + "=" + elm.value;
		}
		if(elm.type == 'textarea'){
			url += "&" + elm.name + "=" + convertBR(elm.value);
		}
		if(elm.type == 'radio'){
			if(elm.checked){
			url += "&" + elm.name + "=" + elm.value;
			}
		}
	}
	ajaxSend(url);
}
function sendRequest(reqValue) {
	var http = createXMLHTTPObject();
 	if (!http) { 
 		alert("neuspelo kreiranje ajax HTTP objekta; pozovi administratora");
 		return;
	}	
	
	
  http.open("GET", '/testphp/testUrl.php?url=http://'+reqValue);
  http.onreadystatechange = function(){};
//  http.onreadystatechange = handleHttpResponse;
  http.send(null);
}

function convertBR(tarea){
	var output = "";
	for (var i = 0; i < tarea.length; i++) {
		if ((tarea.charCodeAt(i) == 13) && (tarea.charCodeAt(i + 1) == 10)) {
			i++;
			output += "<BR>";
		} else {
			output += tarea.charAt(i);
	   }
	}
	return output;
}


function escape_utf8(data) {
        if (data == '' || data == null){
               return '';
        }
       data = data.toString();
       var buffer = '';
       for(var i=0; i<data.length; i++){
               var c = data.charCodeAt(i);
               var bs = new Array();
              if (c > 0x10000){
                       // 4 bytes
                       bs[0] = 0xF0 | ((c & 0x1C0000) >>> 18);
                       bs[1] = 0x80 | ((c & 0x3F000) >>> 12);
                       bs[2] = 0x80 | ((c & 0xFC0) >>> 6);
                   bs[3] = 0x80 | (c & 0x3F);

               }else if (c > 0x800){
                        // 3 bytes
                        bs[0] = 0xE0 | ((c & 0xF000) >>> 12);
                        bs[1] = 0x80 | ((c & 0xFC0) >>> 6);
                       bs[2] = 0x80 | (c & 0x3F);
             }else if (c > 0x80){
                      // 2 bytes
                       bs[0] = 0xC0 | ((c & 0x7C0) >>> 6);
                      bs[1] = 0x80 | (c & 0x3F);
               }else{
                       // 1 byte
                    bs[0] = c;
              }
			if(bs.length == 1){
				buffer += String.fromCharCode(bs[0]);
				}else{
             for(var j=0; j<bs.length; j++){
                      var b = bs[j];
                       var hex = nibble_to_hex((b & 0xF0) >>> 4) 
                      + nibble_to_hex(b & 0x0F);
					  buffer += '%'+hex;
              }}
    }
    return buffer;
}

function nibble_to_hex(nibble){
        var chars = '0123456789ABCDEF';
        return chars.charAt(nibble);
}


function isidora(num){
	var didname = "isidora" + num;
	for(i = 0; i < 5; i++){
		var elm  = document.getElementById("isidora" + i);
		if(elm)
			elm.style.visibility = "hidden";
	}
	var elm  = document.getElementById(didname);
		if(elm)
			elm.style.visibility = "visible";
	
	
	
	}
