$(document).ready(function(){
	
	var to_root = $("#_to_root").val();
	var admin_path = $("#_admin_path").val();
	var dpath = $("#_dpath").val();

	//za eksterne pozive
	$.exto = function(){
		
		$( ".engine" ).unbind( "click", engine_event);
		$( ".engine" ).bind( "click", engine_event);
		
	}


function include_ob(){
	
	$( ".engine" ).unbind( "click", engine_event);
	$( ".engine" ).bind( "click", engine_event);
};
include_ob();

//starija verzija  od include_ob()
$.include_object = function(){
	
	$( ".active" ).unbind( "click", engine_event);
	$( ".active" ).bind( "click", engine_event);
};

//ne okida se u startu
//$.include_object();







function engine_event(){
	
	var obj = $(this);
	
	
	//confirmation
	var conf = $(this).attr("confirm");
	
	if(conf!=null){
		if(confirm(conf)){
			$.enact(obj);
		}
	}else{
		$.enact(obj);
	}
	
	var no_return_false = obj.attr("no_return_false");
	if(no_return_false!=null){
		
	}else{
		return false;
	}
	
}

//engine action = enact
$.enact =  function(obj){
	
	var act = obj.attr("act");
	var form_name = obj.attr("form_name");
	var id = obj.attr("data-id");
	var more_vars = obj.attr("more_vars");
	
	var debug = obj.attr("debug");
	var debug_console = obj.attr("debug_console");
	
	var lnk = obj.attr("href");
	
	//VARIABLES
	//default
	var variables = "id=0&act="+act;
	
	if(id!=null){
		variables = "id="+id+"&act="+act;
	}
	
	if(form_name!=null){
		variables = $("#"+form_name).serialize();	
	}
	
	if(more_vars!=null){
		variables = variables+more_vars;
	}
	
	var niz = [];
	obj.each(function() {
        	$.each(this.attributes,function(i,a){
				//alert(a.name+": "+a.value);
				if(a.name!="style" && a.name!="more_vars"){
					niz.push('"'+a.name+'": '+'"'+a.value+'"');
				}
            })
	});
	
	var obj_data = niz.join(", ");
	obj_data = '{'+obj_data+'}';
	
	variables = variables+'&obj_data='+obj_data;
	
	
	var app = obj.attr("app");
	if(app==null){
		app = "Website";
	}
	
	var dispatch = to_root+admin_path+"/apps/"+app+"/dispatch.php";
	
	if(app=="_design"){
		var dispatch = dpath+"dispatch.php";
	}
	
	if(app=="_custom"){
		var dispatch = obj.attr("dispatcher");
	}
	
	if(debug!=null){
		alert("variables: "+variables+"\n dispatch: "+dispatch);
	}
	
	if(debug_console!=null){
		console.log("variables: "+variables+"\n dispatch: "+dispatch);
	}
	
	//progres preload
	var preload_progres = obj.attr("preload_progres");
	if(preload_progres!=null){
		preload_progres = 1;
	}else{
		preload_progres = 0;
	}
	
	var preload_text = obj.attr("preload_text");
	
	
	
	
	//BEFORE
	var before_ = obj.attr("before");
	switch (before_) {
		case "preload":
		 $.show_preload(preload_progres, preload_text);
		break;
		
		case "box_preload":
		 var box = obj.attr("box_preload");
		 
		 var parent_element = $(box).parent();
		
		 var parent_position = parent_element.css("position");
		 if(parent_position=="static"){
			 parent_element.css("position","relative");
		 }
		
		 var pre = '<div class="boxsize box_preload" style="position:absolute; top:0px; left:0px; width:100%; height:100%; background-color:rgba(255,255,255,.8); z-index:500; background-image:url('+to_root+'_elements/engine/oval_black.svg); background-repeat:no-repeat; background-position:center">';
		 	pre = pre + '<div>';
		 
		 parent_element.append(pre);
		break;
		
		case "none":
		 //alert("none!!!");
		break;
		
		default:
		$.show_preload(preload_progres, preload_text);
		
	}
	
	
	
	//AFTER
	var after_ = obj.attr("after");
	var after_error = obj.attr("after_error");
	
	var code_error = obj.attr("code_error");
	
	
	$.after_preload = function(){
		var after_preload_param = obj.attr("after_preload");
		switch(after_preload_param){
			case "keep":
			 //do nothing
			break;
			default:
			$.hide_preload();
		}
	}
	
	
	
	$.ajax({
		  type: 'POST',
		  url: dispatch,
		  data: variables,
		  dataType: "json",
		  success: function(data){
			  
			  	var report = data.report;
				var message = data.message;
				var contens = data.contens;
				
				if(report=="ok"){
					
					//klasicne naredbe posle
					if(obj.attr("before_hide_last_float")!=null){
						$.hide_last_float();	
					}
					
					switch(after_){
						
						case "reload":
						 location.reload();
						break;
						
						case "back":
						  window.history.back();
						break;
						
						case "goto":
						  window.location.href = obj.attr("goto");
						break;
						
						case "local_function":
							
							var fn_name = obj.attr("local_function");
							
						  	window[fn_name](data);
							$.after_preload();
						break;
						
						case "message":
						  $.show_message(message);
						  $.after_preload();
						break;
						
						case "float":
							 var float_width = obj.attr("float");
							 if(float_width == null){ float_width = "width80"; }
	
							 var tm = $.show_float(float_width);
							 $(".content_"+tm).html(contens);
							 
							 $(".content_"+tm).attr("hash", lnk);
							 include_ob();
							 $.after_preload();
						break;
						
						case "box":
							 var box = obj.attr("box");
							 
							 if(box == null){
								 obj.html(contens);
							 }else{
								 $(box).html(contens);
							 }
							 
							 include_ob();
							 $.after_preload();
						break;
						
						case "run":
							 var box = obj.attr("obj");
							 if(box==null){
							    alert("no obj attribute!");	 
						     }else{
								 var ob = $(box);
								 if(ob.length==0){
									alert("no object to run");	 
								 }else{
									$.enact(ob);
								 }
								 
							 }
							 $.after_preload();
							 
						break;
						
						
						case "external":
							 $.external(data);
							 
							 $.after_preload();
							 
						break;
						
						
						
						case "parent_of":
							 var box = obj.attr("box");
							 var parent_id = $(box).parent().attr("id");
							 $("#"+parent_id).html(contens);
							 include_ob();
							 $.after_preload();
							 
						break;
						
						case "refresh_image":
						
							 var tag = obj.attr("refresh_image");
							 
							 if(data.f_path == null){
								$(""+tag).css("opacity",0);
							 }else{
								 $(""+tag).css("opacity",1);
								 var path_to_img = to_root + data.f_path;
								 $(""+tag).attr("src", path_to_img);
							 }
							 
							 include_ob();
							 $.after_preload();
						break;
						
						default:
							include_ob();
							$.after_preload();
						
					}
					
					//klasicne naredbe posle
					if(obj.attr("hide_last_float")!=null){
						$.hide_last_float();	
					}
					
					
				}else{
					
					if(report=="loop"){
						
						setTimeout(function() {
						  
						  obj.attr("mode","loop");
						  $.enact(obj);
						}, 500);
						
						var preload_text = data.preload_text;
						//alert("preload tekst: "+preload_text);
						$(".f-preload_text").html(preload_text);
						//progres treva ovde da pomera
						
						
						console.log("message:"+message);
						
					}else{
						obj.removeAttr("loop");
						switch(after_error){
							case "show_report":
								$.show_message(report);
								$.hide_preload();
							break;
							
							default:
								$.show_message(report);
								$.hide_preload();
							
						}
					}
				}
				
				//ipak zbog redlosdela
				//$.hide_preload();
				
				
			},
		  error: function(data){
			  
			  switch(code_error){
						case "silent":
							$.hide_preload();
						break;
						
						default:
							$.show_message(":(   error...  " + act);
			 				$.hide_preload();
						
					}
			 
		  }
			 
		});
    
}




/*
$.show_preload = function(){
	$(".fog").css("opacity","1");
	$(".fog").css("pointer-events","auto");	
}


$.hide_preload = function(){
	$(".fog").css("opacity","0");
	$(".fog").css("pointer-events","none");	
}*/


$.show_message = function(message, delay){
	
	var tm = $.show_float("width40");
	
	if(delay==null){
		delay = 0;
	}
	
	var content = '<div class="boxsize cart message_fld ">'+message+'</div>';
		if(delay==0){
			content = content+'<div class="boxsize cart message_btn_fld"><a class="btn" onclick="$.hide_last_float()" >OK</a></div>';
		}
	
	$(".content_"+tm).html(content);
	
	
	if(delay>0){
		setTimeout($.hide_last_float, delay);
	}
	
}


$.show_float = function(width){
	
	var dt = new Date();
	var tm = dt.getTime();
	
	//dodaje html
	var pre = '<div class="f-curtain boxsize f-float" style="z-index:3000;">';
		pre = pre+'<div id="float_content_'+tm+'" class="f-curtain-content '+width+' boxsize content_'+tm+'">';
			
		pre = pre+'</div>';
	pre = pre+'</div>';   
                  
         
	$( "body" ).append(pre);
	
		return tm;
};

/*
var test = $.show_modal();
alert(test);
*/

$.hide_last_float = function(){
	$( ".f-float" ).last().remove();
	return false;
}

$.get_last_float = function(){
	var last = $( ".f-float" ).last();
	return last;
}


/*PRELOADERS*/
$.show_preload = function(show_progress, preload_text){
	
	
	var pre = '<div class="f-curtain boxsize f-preloader" id="full_preloader" style="z-index:4000; background-image:url('+to_root+'_elements/engine/oval.svg); background-repeat:no-repeat; background-position:center">';
		pre = pre + '<div class="f-preload_bar boxsize">';
			pre = pre + '<div class="f-preload_stripe boxsize">';
			pre = pre + '</div>';
		pre = pre + '</div>';
		
		pre = pre + '<div class="f-preload_text boxsize">';
		pre = pre + preload_text;
		pre = pre + '</div>';
		
	pre = pre + '</div>';
	
	//check if preloader exists?????
	if ($("#full_preloader").length > 0){
	
	}else{
		$( "body" ).append(pre);
	}
	
	if(show_progress==1){
		$(".f-preload_bar").css("display","block");
	}else{
		$(".f-preload_bar").css("display","none");
	}
	
	if(preload_text!=null){
		$(".f-preload_text").css("display","block");
	}else{
		$(".f-preload_text").css("display","none");
	}
	
	
}

$.hide_preload = function(){
	$( "#full_preloader" ).remove();
	$(".box_preload").remove();
}

$.preload_set_progress = function(num, of){
	//calculating
	
}

$.preload_set_percent = function(percent){
	//calculating
	
}



$(document).find(".onload").each(function(){
	var obj = $(this);
	
	
	//confirmation
	var conf = $(this).attr("confirm");
	
	if(conf!=null){
		if(confirm(conf)){
			$.enact(obj);
		}
	}else{
		$.enact(obj);
	}
});

/*table clickables*/
var prev_color;
							
$(".clickable_cell").hover(function(){
	prev_color = $(this).parent().css("background-color");
	$(this).parent().css("background-color","#ddd");
	$(this).parent().css("cursor","pointer");
	//alert(prev_color);
},
function(){
	$(this).parent().css("background-color","#ddd");
	$(this).parent().css("background-color",prev_color);
	$(this).parent().css("cursor","auto");
}
);

$(".clickable_cell_only").hover(function(){
	prev_color = $(this).css("background-color");
	$(this).css("background-color","#ddd");
	$(this).css("cursor","pointer");
	//alert(prev_color);
},
function(){
	$(this).css("background-color",prev_color);
	$(this).css("cursor","auto");
}
);


$(".clickable_row").hover(function(){
	prev_color = $(this).css("background-color");
	$(this).css("background-color","#ddd");
	$(this).css("cursor","pointer");
	//alert(prev_color);
},
function(){
	$(this).css("background-color",prev_color);
	$(this).css("cursor","auto");
}
);


	
//end
});



