/**
	LoadPage
	This function expects JSON  as response , format is as follows:
	[text:string;elements{[type,script,id,text],.... }];

	text:string; response text
	elements:   array
		type:   "js" or "con"; js for javascipt , and con for changing element content
		script: java script code which will be executed
		id:     id of DOM element
		text:   text to set to element specified by id
*/ 

var BASE_URL  = "http://onlinerjecnik.com/";

/* get http request object */
function RequestObject(){
   if (window.XMLHttpRequest) {
       return new XMLHttpRequest();
   } else if (window.ActiveXObject) {
       return new ActiveXObject("Microsoft.XMLHTTP");
   }
}

function getElement(id){
	var el = document.getElementById(id);
	return el;
}


function LoadPage(url,containerid,callback){

   var req = RequestObject();
  
   req.open("GET", url, true);
   req.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT" );
   req.setRequestHeader("Content-Type", "text/xml");
   if (containerid != null){
   	req.onreadystatechange = function() {
   		OnLoadPage(req, containerid,callback)
   	};
   }
   req.send(null);	
}
function LoadPageParam(url,containerid, param){
	url += "/"+param;
	LoadPage(url, containerid);
} 

function OnLoadPage(page_request, containerid, callback){
	if (page_request.readyState == 4 ){
		if  (page_request.status==200 ) {
			var data =  page_request.responseText ;
			try{
				var json =  eval('('+data+')');
			}catch(e){
				alert(e.message + "Requested page:"+ page_request+ "\n Data="+ data );
				return;
				//if pure html is recived then set content only
				//getElement(containerid).innerHTML = data;
				//return;
			}
			
			/* set main result */
			//alert(containerid);
			getElement(containerid).innerHTML = json.text;
			/* process other elements */
			if (json.elements != null){
				for(i=0;i<json.elements.length;i++){
					var jel = json.elements[i];
					if (jel.type =='js'){
						/* execute js */
						eval(jel.script);
					}
					else if(jel.type=='con')
					{
						var el =getElement(jel.id);
						if (el) el.innerHTML = jel.text;
					}
				}
			}
			//call function
			if(callback!=null){
				callback();
			}			
		}
	}
}

function ConfirmLoadPage(url,containerid){
	var ans = confirm("Are you sure?");
	if  (ans){
		LoadPage(url,containerid );
	}
}

/*Confirm procedures*/
function DelConfirm(url){
	var ans = confirm("Are you sure you want to delete this item?");
	if  (ans){
		window.location = url;
	}
}
function ConfirmDeleteSelected(){
	return confirm("Are you sure you want to delete selected items?");
}
function SubmitForm (url, containerid, frm, c){
	if (c ){
		var ans = confirm("Are you sure?");
		if  (false == ans){
			return;
		}
	}
	var f   = getElement(frm);
	var str = FormValues(f);

	var req = RequestObject();
	req.open("POST",url,true);
	req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");

	if (containerid != null){
    	req.onreadystatechange = function() {
		   	OnLoadPage(req, containerid)
	    };
    }
	req.send(str);
}
function enc(v){return encodeURIComponent(v);}
function FormValues(obj){
  var getstr = "";
  try{
	tinyMCE.triggerSave(true,true);
  }catch(e){
  }

  var el1 = obj.getElementsByTagName('INPUT');
  var el2 = obj.getElementsByTagName('SELECT');
  var el3 = obj.getElementsByTagName('TEXTAREA');

  for (i=0; i < el1.length; i++ ){
	var el = el1[i];
	if (el.name != ""){
		if (el.type == "checkbox") {
		   if (el.checked){
		      getstr += el.name + "=on&";
		   }
		}else if (el.type == "radio") {
		   if (el.checked){
		      getstr += el.name + "=" + obj.childNodes[i].value + "&";
		   }
		}else{
	    	 getstr += enc(el.name) + "=" + enc( el.value) + "&";
	   }
    }
  }
  for (i=0; i < el2.length; i++ ){
	var sel = el2[i];
    if (el.name != "") getstr += enc(sel.name) + "=" + enc(sel.options[sel.selectedIndex].value) + "&";
  }
  for (i=0; i < el3.length; i++ ){
	var el = el3[i];
    if (el.name != "") getstr += enc(el.name) + "=" + enc(el.value) + "&";
  }
  return getstr;
}

/*Set state of check boxes which name begins with *name* parameter*/
function SetChecks(name, v){
	var el = $("[name^='"+name+"']")
	el.each(function(i){ this.checked = v;});
}

function toggleEditor(id){ 
 if (!tinyMCE.get(id)) 
   tinyMCE.execCommand('mceAddControl', false, id); 
 else 
   tinyMCE.execCommand('mceRemoveControl', false, id); 
} 

function showhide(id1) {
   if(document.getElementById(id1).style.display=='none') {
      document.getElementById(id1).style.display='block';
   } else {
      document.getElementById(id1).style.display='none';
   }
}
