// JavaScript Document
$(document).ready(
	function()
	{
		//dolcimo kot default tekoci teden
		var t_position = 0;
		
		
		//doloci defaultse
		if(show_colors==1){
			$("#toggle_colors").attr('class', 'down up');
		}
		
		//POSTAVI SCROLL PANE
		$('#all_container').jScrollPane({scrollbarWidth:12, scrollbarMargin:0});
		
		
		//CONTEXT MENU
		$.contextMenu.defaults({
    		menuStyle : {
		      width : "155px"
		    }
		});
		
		
		//BINDANJE click funkcij na linke
		//====================================================================

		$('#toggle_machines').bind('click', function(){
		    $("#urnik_machines").animate({
			   height: 'toggle', opacity: 'toggle'
			 }, "slow");
			 $("#toggle_machines").toggleClass('down');
		 });
		
		
		$('#toggle_colors').bind('click', function(){
		   	 pofarbaj();
			 $("#toggle_colors").toggleClass('up');
		 });
		
		
		$('#week_minus').bind('click', function(){
		    week = week-1;
			populateScheduler(machine, week);
		 });
		
		$('#week_plus').bind('click', function(){
		    week = week+1;
			populateScheduler(machine, week);
		 });
		
		$('#week_mover .back').bind('click', function(){
			var offset = $("#urnik_body").offset();
			if(t_position>0){
				if(t_position==3){
					$("#urnik_body").animate({'left': offset.left+577-176+'px'}, 1300,"easein"); 
				}else{
					$("#urnik_body").animate({'left': offset.left+414-176+'px'}, 1000,"easein"); 
				}
				t_position--;
			}
		 });
		
		$('#week_mover .forward').bind('click', function(){
			//$('#urnik_body').SlideOutLeft(600);
			var offset = $("#urnik_body").offset();
			if(t_position<3){
				if(t_position==2){
					$("#urnik_body").animate({'left': offset.left-577+'px'}, 1300,"easein"); 
				}else{
					$("#urnik_body").animate({'left': offset.left-414+'px'}, 1000,"easein"); 
				}
				t_position++;
			    //$('#urnik_body').css({'display':'block', 'margin-left':'-450px'});
			}
			//$('#urnik_body').SlideInRight(300);
		 });
		
		
		
		
		$('.m_ajax_machine').bind('click', function(){
			//top.console.dir();
			$('#machine_th b').text('---');
			/*$("#urnik_machines").animate({
			   height: 'toggle', opacity: 'toggle'
			 }, "slow");*/
			//$("#toggle_machines").toggleClass('up');
			populateScheduler($(this).attr('title'), week);
		 });
		
		
		$('#sim_accept').bind('click', function(){
			//top.console.dir();
			acceptSimulation();
		});
		
		$('#sim_reset').bind('click', function(){
			//top.console.dir();
			resetSimulation(machine, week);
		});
		
		
		
		
		//SLIDER
	  	//====================================================================
		
		$('.slider1').Slider(
			{
				accept : '.indicator1',
				fractions : 2,
				onChange : function( cordx, cordy, x , y)
				{
					var mt=15;
					if(cordx==100) mt=25;
					if(cordx==50) mt=15;
					if(cordx==0) mt=10;
					//if(cordx==0) mt=10;
					
					$.ajax({
						url: "/configs/updateValue/planner_cell_height/"+mt,
						processData: false
					});
					
					cell_height = mt;
					$(".urnik_item").fadeOut(200, $(".urnik_item").remove());
					//zdaj moramo spremeniti se ozadje
					
					$('#urnik_container').css({"background":"#FFFFFF url(/css/img/urnik_ozadje"+cell_height+".png)", "backgroundPosition" : "1px 0px"});
					$('.urnik_hours_items_fh').css({"height": cell_height+"px"});
					$('#urnik_hours').css({"height":(cell_height*4*18+34)+"px", "background": "#FFFFFF url(img/urnik_ozadje"+cell_height+".png)", "backgroundPosition" : "1px 33px"});
					$('.ah').css({"marginTop" : cell_height*3+"px"});
					$('#urnik_hours_items span').css({"lineHeight": cell_height+"px"});
					$('#all_container').jScrollPane({scrollbarWidth:12, scrollbarMargin:0});
					
					if(mt==10){
							$('#urnik_hours_items span').css('fontSize', '11px');
							$('#urnik_hours_items span b').css('fontSize', '11px');
							$('#urnik_hours_items').css('lineHeight', '10px');
					}else{
							$('#urnik_hours_items span').css('fontSize', '14px');
							$('#urnik_hours_items span b').css('fontSize', '14px');
					}
					
					populate(DATA);
				},
				values: [
					[ait,0]
				]
			}
		);
		
		
		
		
		
		
		
		//EFEKTPRI AjaxStart (prikaze se sporocilo
	  	//====================================================================
		$(".urnik_message").ajaxStart(function(){
		   $(this).removeClass('urnik_message_ok');
		   $(this).html(' Nalagam: &nbsp;<img src="/img/loader4.gif" width="62" height="13" border="0" alt="Nalagam" align="absmiddle"/>');
		   $(this).fadeIn(800);
		});
		//====================================================================
		$(".urnik_message").ajaxStop(function(){
			$(this).html('&nbsp;<img src="/img/icon_ok.gif" align="absmiddle"> &nbsp;&nbsp;<b>Podatki uspešno prenešeni</b>');
			$(this).addClass('urnik_message_ok').pause(4000).fadeOut(800);
			//$('#urnik_container').unblock();
		});
		
		//AJAX klic za pridobiti podatke in funcija za populacijo celic
		//====================================================================
		populateScheduler(machine, week);
		
		
		//IMPLEMENTACIJA context menuja
		//====================================================================
		$("#URNIK td").contextMenu("#myMenu1");
		
		
		
	}
);


function pofarbaj(){
	top.console.debug($("#toggle_colors").attr('class'));
	if($("#toggle_colors").attr('class') == 'down up'){
		$.ajax({
			url: "/configs/updateValue/show_colors/0",
			processData: false
		});
		
		$(".urnik_item").each(function(){
			$(this).css({'background-color':'#999999'});
		});
	}else{
		$.ajax({
			url: "/configs/updateValue/show_colors/1",
			processData: false
		});
		
		$(".urnik_item").each(function(){
			mbarva = $(this).attr('order_color');
			if(mbarva != ''){
				$(this).css({'background-color':mbarva});
			}
		});
	}
}

function resetSimulation(machine, week){
	if(confirm("Ste prepričani, da želite resetirati simulacijo? Vse spremembe se bodo izničile!")){
		$.ajax({
			url: "/schedulers/simulation/reset",
			processData: false,
			success: function(msg){
				populateScheduler(machine, week);
			}
		});
	}
}


function acceptSimulation(){
	if(confirm("Ste prepričani, da želite potrditi simulacijo? Vse spremembe se bodo prenesle v pravi urnik!")){
		$.ajax({
			url: "/schedulers/simulation/accept",
			processData: false,
			success: function(msg){
				window.location.href = '/';
			}
		});
	}
}


function populateScheduler(machine, week){
	$(".urnik_item").fadeOut(200, $(".urnik_item").remove());
	DAYS = setTableHeaders(week);
	//populate(machine, week, DAYS);
	scheduler = scheduler || 1;
	
	
	$.getJSON('/schedulers/getSchedulersData/'+machine+'/'+week+'/'+scheduler, function(json){
		DATA = json;
		populate(json);
	});
	
}

function setMachinesWorkingHours(startt, endt){
	$(".urnik_hours_items_fh[@title="+startt+"]").css({'borderTop':'2px solid #440000'});
	$(".urnik_hours_items_fh[@title="+endt+"]").css({'borderTop':'2px solid #440000'});
}


function showTasksTreatments(task){
	$.getJSON('/schedulers/getTasksTreatments/'+task+'/'+week+'/'+machine+'/'+scheduler, function(json){
		populate(json, 1);
	});
}

function populate(json, tasks){
	
	top.console.dir(json);
	top.console.debug(cell_height);
	var j=0;
	var offset2 = 0;
	var sid = 0;
	$(json).each(function (i, OBJ){
		if(OBJ.key == '0'){
			//najprej postavimo ime masine
			$('#machine_th b').text(OBJ.name_ext);
			setMachinesWorkingHours(parseInt(OBJ.time_s), parseInt(OBJ.time_e));
		}else{
			PopulateOne(OBJ, tasks);	
		}
		j++;
	});
	$('.urnik_item').bind('click', function(){});
	cntxMenu();
	if(scheduler==2) makeADroppable();
}


function PopulateOne(OBJ, tasks){
	var n_id = 'div_ui_'+OBJ.value;
	var n_height = OBJ.units * cell_height - 7; //cell_height definiran v urnik.ctp
	
	
	var POS = getXYFromUnits(OBJ.key1, OBJ.key2);
	
	
	
	
	var td_left = POS[0];
	var td_top = POS[1];
	
	var touts = new Array();
	
	//top.console.debug(tasks);
	
	var locked='';
	if(OBJ.locked==1) locked='ed';
		
	var styleBorder ='';
	if(OBJ.real == 0)
	styleBorder = 'border-top:none;';
	
	if(OBJ.has_child ==1)
	styleBorder = styleBorder + 'border-bottom:none;';
	
	
	var childClass = '';
	if(OBJ.is_child > 0)
	childClass = 'is_child';
	
	
	//ali kazemo treatmentse tega taska iz drugih masin ali kazemo samo to masino
	if(tasks==1){
		$('#urnik_container').append('<div id="'+n_id+'" class="urnik_item task_item '+childClass+'" locked="'+OBJ.locked+'" sid="'+OBJ.value+'" mot_id = "'+OBJ.mot_id+'" orders_task_id="'+OBJ.orders_task_id+'" order_color="'+OBJ.color+'"></div>');
		$('#'+n_id).append('<span class="task_item_mt">'+OBJ.machine_type+'</span><br /><span class="task_item_mn">'+OBJ.machine_name+'</span><div title="locker" class="lock'+locked+'"></div>');
	}else{
		$('#urnik_container').append('<div id="'+n_id+'" class="urnik_item '+childClass+'" locked="'+OBJ.locked+'" sid="'+OBJ.value+'" mot_id = "'+OBJ.mot_id+'" orders_task_id="'+OBJ.orders_task_id+'" order_color="'+OBJ.color+'">'+OBJ.value+'</div>');
		
		if(OBJ.real == 1)
		$('#'+n_id).append('<span class="client">'+OBJ.client+'</span><br /><span class="order_name">'+OBJ.order_name+'</span><br /><span class="task">'+OBJ.task+'</span><div title="locker" class="lock'+locked+'"></div>');
	}
	
	
	$('#'+n_id).attr('style', styleBorder+ 'left:'+td_left+'px; top:'+td_top+'px;  width:156px; height:'+n_height+'px;');
	
	//ce je barvanje vklopljeno, potem obarvamo pravilno gospodica
	if(show_colors==1) $('#'+n_id).css({'background-color':OBJ.color});
	
	//dodamo se slikico menu_item-u
	if(OBJ.real == 1)
	$('#'+n_id).append('<div class="glass g'+OBJ.thickness+'"></div>');

	
	
	//$(st).html(OBJ.value);
	$('#'+n_id).Highlight(300, '#FFF2AA');
	$('#'+n_id).Highlight(300, '#FFF2AA');
	
	if((OBJ.childs).length > 0){
		$(OBJ.childs).each(function(ix, CHILD){
			PopulateOne(CHILD, tasks);
		});
	}
	
	
	if(scheduler==2 && OBJ.locked != 1 && tasks!=1 && OBJ.is_child!=1) makeItDraggabe('#'+n_id, DAYS);
}



function cntxMenu(){
	
	$(".urnik_item").contextMenu("#myMenu1", {
      bindings : {
        "#btn_done" : function(t) {
          top.console.debug($(t).attr('mot_id'));
		  markAsDone($(t).attr('mot_id'), t.id);
        },
        "#btn_lock" : function(t) {
		  lockItem($(t).attr('sid'));
          //alert("Trigger was "+t.id+"\nZaklenjeno");
        },
        "#btn_task" : function(t) {
		  
			if(show_treatments==false){
			  ALL = new Array();
			  
			  var j=0;

			  $.each($('.urnik_item'), function(i, n){
				var gaid = $(n).attr('id');
				//if(gaid != t.id){
					ALL[j] = Array(gaid, $('#'+gaid).clone());
					j++;
				//}			
			  });
			  
			  $('.urnik_item').not('#'+t.id).css('opacity', '0.15').unbind();
			  
			  $('#'+t.id).css({'opacity':1, 'border':'2px solid black'});
			  
			  showTasksTreatments($('#'+t.id).attr('orders_task_id'));
			  
			  show_treatments = true;
			}else{
			  $('.task_item').hide().remove();
			  $.each(ALL, function(i, n){
				var ITEM = $('#'+n[0]);
				var pr = ITEM.parent();
				var locked = ITEM.attr('locked');
				ITEM.remove();
				pr.append(n[1]);
				cntxMenu();
				if(scheduler==2 && locked != '1') makeItDraggabe('#'+n[0], DAYS);
			  });
			  show_treatments = false;
			}
		  
        },
		
		"#btn_details" : function(t) {
          var str = "/orders_tasks/tt_view/"+$(t).attr('mot_id')+"/?width=420&amp;link=yahoo&amp;name=Podatki%20opravila";
		  top.console.debug(str);
		  JT_show('', $(t).attr('id'), str);
        },
		
		"#btn_move" : function(t) {
          alert("Izbran je bil "+t.id+"\nPremakni opravilo na...");
        },
		
		
		

	  }
    });
	
}
		
		function markAsDone(mid, elid){
			$.ajax({
			   type: "GET",
			   url: "/machines_orders_tasks/setStatus/"+mid+"/D",
			   data: "",
			   success: function(msg){
			   		//alert('Obdelava označena kot opravljena in posledično je bila izbrisana');
					$('#'+elid).Highlight(300, '#FFF2AA').Highlight(300, '#FFF2AA').fadeOut(200, $('#'+elid).remove());
			   }
			});
		}
		
		function lockItem(mid){
			$.ajax({
			   type: "POST",
			   url: "/schedulers_items/togglelock/"+mid,
			   data: "",
			   success: function(msg){
			   		//logika za oznaciti vse pripadajoce vpise s pravim classom (s kljucavnico ali brez)
					/*collection = $("td[@abr='"+ord_task_id+"']/div/div");*/
					top.console.debug('#div_ui_'+mid+' div[@title=locker]');
					var bit = $('#div_ui_'+mid+' div[@title=locker]');
					mclass = bit.attr('class');
					if(mclass=='locked'){
						bit.attr('class', 'lock');
						$('#div_ui_'+mid).attr('locked', '0');
						if(scheduler==2) makeItDraggabe('#div_ui_'+mid, DAYS);
						//alert('Opravilo odklenjeno');
					}else{
						if(scheduler==2) $('#div_ui_'+mid).DraggableDestroy();
						bit.attr('class', 'locked');
						$('#div_ui_'+mid).attr('locked', '1');
						//alert('Opravilo zaklenjeno');
					}
			   }
			});
		}

function onmHover(test){
	var str = "/orders_tasks/tt_view/"+$('#'+test).attr('mot_id')+"/?width=420&amp;link=yahoo&amp;name=Podatki%20opravila";
	top.console.debug(str);
	JT_show('', test, str);
}



function getXYFromUnits(unit_x, unit_y){
	if(cell_height==25) raz = 14;
	if(cell_height==15) raz = -6;
	if(cell_height==10) raz = -16;
	
	var td_left1 = unit_x * 163 + 4;
	var td_top1 = unit_y * cell_height - raz;
	var a = new Array(td_left1, td_top1); 
	return a;
}

function getUnitsFromXY(x, y){
	if(cell_height==25) raz = 14;
	if(cell_height==15) raz = -6;
	if(cell_height==10) raz = -16;
	
	var _left = (x-4) / 163;
	var _top = (y-raz) / cell_height;
	var a = new Array(_left, _top); 
	return a;
}




function makeItDraggabe(tid, DAYS){
	
	$(tid).Draggable(
			{
				zIndex: 	1000,
				grid:		[163, cell_height],
				ghosting:	false,
				opacity: 	0.7,
				frameClass: 'frameClass',
				containment : 'parent',
				revert:		true,
				onStart:	function(drag){
					$('.frameClass').append('<div style="position: relative;"><span class="urca">ura</span></div>');
					//izracunaj se vse pozicije
					offset2 = $('#urnik_container').offset();
					top.console.debug($(drag).attr('sid'));
					sid = $(drag).attr('sid');
				},
				onDrag:	function(drag){
					
					var offset1 = $('.frameClass').offset();
					
					var mon = offset1.left - offset2.left;
					var tor = offset1.top - offset2.top;
					var units_x = (mon/163).toFixed(0);
					var units_y = (tor/cell_height).toFixed(0)-4;
					
					var ts = $('#URNIK_H tr:eq(0) th:eq('+(units_x)+')').text();
					var tu = $('#urnik_hours_items span[@title='+(units_y)+']').text();
					
					var mtext = ts + ' <br /><b style="color:black;">'+tu+'</b>';
					
					$('.frameClass .urca').html(mtext);
					
					var timestamp = DAYS[units_x][0] + ' '+tu;
					var DATE = DAYS[units_x][0].split('-');
					var HOUR = tu.split(':');
					
					var mdate = new Date(DATE[0], DATE[1]-1, DATE[2], HOUR[0], HOUR[1], 0);

					$(this).attr({'day':mdate.getTime()/1000});
				}
				
			}
	);
}


function makeADroppable(){
	$('#urnik_container').Droppable(
	{
		accept : 'urnik_item', 
		ondrop:	function (drag) 
				{
					top.console.debug($(drag).attr('day')); //the dragganle
					reCalculate($(drag).attr('day'), sid);
				}
				
	}
	);
}


function reCalculate(timestamp, tel_id){
	top.console.debug('RECALCULATING ...');
	$.getJSON('/schedulers/getRecalculate/'+timestamp+'/'+tel_id+'/'+week, function(json){
		top.console.dir(json);
		$(json).each(
			function (){
				//dobi ven x pa y pozicijo kam se mora premaknit
				//in seveda  kateri kvadrat
				if(this.value != undefined){
					var POS = getXYFromUnits(this.key1, this.key2);
					top.console.debug('#div_ui_'+this.value);
					if(this.has_child==0){
						$('#div_ui_'+this.value+'_child_1').remove();
						$('#div_ui_'+this.value+'_child_2').remove();
						$('#div_ui_'+this.value).css({borderBottom:'1px solid black'});
					}else{
						$('#div_ui_'+this.value).css({borderBottom:'none'});
					}
					$('#div_ui_'+this.value).animate({left: POS[0]+'px',},300).animate({top: POS[1]+'px',},300);
					var n_height = this.units * cell_height - 7;
					$('#div_ui_'+this.value).css({'height':n_height});
					
					
					if((this.childs).length > 0){
						$(this.childs).each(function(ix, CHILD){
							PopulateOne(CHILD, 0);
						});
					}
				}
				
				if(this.ERROR != undefined){
					if(this.ERROR != '') alert(this.ERROR);
				}
				
			}
		);
	}
	);
}

function setHeights(){
}


function setTableHeaders(week, naprej){
	var DAYS = getDatesArray(week);
	for (var i=0; i < 14; i++) {
		$('#URNIK_H tr:eq(0) th:eq('+i+')').attr('id', DAYS[i][0]);
		$('#URNIK_H tr:eq(0) th:eq('+i+') span').text(DAYS[i][1]);
	}
	return DAYS;
}



function getDatesArray(week){
	//ce je week nedolocen, potem dobi vrednost nic - tekoci teden
	week = week || 0;
	//najprej moramo dolociti kateri dan je danes
	var today = new Date();
	//zdaj dolicmo se starting date za nas urnik
	var d = new Date( today.getFullYear(), today.getMonth(), today.getDate() + (7*week));
	//trenutni dan v tednu
	var weekday = d.getDay();
	if(weekday==0) weekday=7;
	var DAYS = Array();
	
	for (var i=1; i<15; i++) {
		var a = new Date(d.getFullYear(), d.getMonth(), d.getDate()+(i-weekday));
		var str1 = a.getFullYear().toString()+'-'+(a.getMonth()+1).toString()+'-'+a.getDate().toString();
		var str2 = a.getDate().toString()+'.'+(a.getMonth()+1).toString()+'.'+a.getFullYear().toString().slice(2);
		DAYS[i-1] = new Array(str1, str2);
	}
	
	return DAYS;
}


function pausecomp(millis)
{
var date = new Date();
var curDate = null;

do { curDate = new Date(); }
while(curDate-date < millis);
}
