/**
* ids for link type
*/
var left_id = '';
var right_id=0;

/**
* add
*/
AjaxAddScaffold = function(url,prefix, params){
	$("#"+prefix+"-new-loading-indicator").show();
	params = params || {};
	$.post(url, params, function(data){ 
		$('#'+prefix+'-list-body').prepend(data);
		$("#"+prefix+"-new-loading-indicator").hide();
		
	});
};

/**
* create
*/
AjaxCreateScaffold = function(url,prefix,id){
	$("#insert-"+prefix+"-"+id+"-loading-indicator").show();
	$.ajax({
	   type: "POST",
	   url: url,
	   data: serialize('#create-'+prefix+'-'+id+'-form'),
	   success: function(msg){
	     	$('#'+prefix+'-empty-message').hide();
			$('#create-'+prefix+'-'+id).hide();
			$('#create-'+prefix+'-'+id).after(msg);
			$('#create-'+prefix+'-'+id).remove();
			$("#insert-"+prefix+"-"+id+"-loading-indicator").hide();
			ColorRows(prefix);
	    },
	   error: function(msg){
		   	$('#create-'+prefix+'-'+id+'-errors').empty()
	 		$('#create-'+prefix+'-'+id+'-errors').append(msg.responseText);
			$('#create-'+prefix+'-'+id+'-errors').fadeIn();
			$("#insert-"+prefix+"-"+id+"-loading-indicator").hide();
	   }
 	});
	return false;
};

/**
* cancel add
*/
AjaxCancelAddScaffold = function(url,prefix,id){
	$('#create-'+prefix+'-'+id).remove();
};

/**
* edit
*/
AjaxEditScaffold = function(url,prefix, id, params){

	$("#"+prefix+"-"+id+"-loading-indicator").show();
	params = params || {};
	$.post(url, params, function(data){ 
		$('#view-'+prefix+'-'+id).hide();
		$('#'+prefix+'-details-'+id).hide();
		$('#view-'+prefix+'-'+id).after(data);
		$('#edit-'+prefix+'-'+id).highlightFade({speed:1500});
		$("#"+prefix+"-"+id+"-loading-indicator").hide();
	});
};

/**
* update
*/
AjaxUpdateScaffold = function(url,prefix,id){
	$("#update-"+prefix+"-"+id+"-loading-indicator").show();
	$.ajax({
	   type: "POST",
	   url: url,
	   data: serialize('#edit-'+prefix+'-'+id+'-form'),
	   success: function(msg){
			$('#view-'+prefix+'-'+id).before(msg);
			$('#edit-'+prefix+'-'+id).remove();
			$("#update-"+prefix+"-"+id+"-loading-indicator").hide();
			ColorRows(prefix);
	    },
	   error: function(msg){
		   	$('#update-'+prefix+'-'+id+'-errors').empty()
	 		$('#update-'+prefix+'-'+id+'-errors').append(msg.responseText);
			$('#update-'+prefix+'-'+id+'-errors').fadeIn();
			$("#update-"+prefix+"-"+id+"-loading-indicator").hide();
	   }
 	});
};

/**
* cancel edit
*/
AjaxCancelEditScaffold = function(url,prefix,id){
	$('#edit-'+prefix+'-'+id).remove();
	$('#view-'+prefix+'-'+id).show();
};

/**
* delete
*/
AjaxDeleteScaffold = function(url,prefix,id){
	if(window.confirm('Are you sure?')){
		var params = {};
		$("#"+prefix+"-"+id+"-loading-indicator").show();
		$.post(url, params, function(data){ 
			if($('#view-'+prefix+'-'+id).size()){
				 $('#view-'+prefix+'-'+id).hide();
				 $('#view-'+prefix+'-'+id).remove();
			}
			 
			if($('#'+prefix+'-details-'+id).size()){ 
				$('#'+prefix+'-details-'+id).hide();
				$('#'+prefix+'-details-'+id).remove();
			}
			$("#"+prefix+"-"+id+"-loading-indicator").hide();
			ColorRows(prefix);
		});
	}
};

/**
* Ajax SortBy Scaffold
*/
AjaxSortByScaffold = function(url, prefix, orderby, ascdesc, element){
	var params = {'orderby': orderby, 'ascdesc': ascdesc, 'prefix': prefix};
	
	params = jQuery.extend({}, params, getSearchParams(prefix));
	
	$("#"+prefix+'-list').load(url+'/orderby/'+orderby+'/ascdesc/'+ascdesc, params, function(){ 
		element.className = "orderby "+prefix+" "+orderby+" "+ascdesc;
		ColorRows(prefix);
		setOrderByLinks(url,prefix);
	});
};

setOrderByLinks = function(link,prefix){
	
	$(document).find(".orderby").filter('.'+prefix).each(function(){
		$(this).find('a').href = link;
	});
};

getSearchParams = function(prefix){
	if($('#'+prefix+'-search-form').size()){
		return formToJSON('#'+prefix+'-search-form');
	}
	return {};
}


AjaxToggleScaffold = function(url,prefix,id){
	var params = {};
	if($('#'+prefix+'-details-'+id).css('display') == 'none'){
		if($('#'+prefix+'-details-'+id).html() != ''){
			$('#'+prefix+'-details-'+id).fadeIn();
			$('#'+prefix+'-down-'+id).attr('src',base_url()+'public/images/icons/up.gif');
		}
		else{
			$('#'+prefix+'-down-'+id).attr('src',base_url()+'public/images/icons/indicator.gif');
			$.post(url, params, function(data){
				$('#'+prefix+'-details-'+id).html(data);
				$('#'+prefix+'-down-'+id).attr('src',base_url()+'public/images/icons/up.gif');
				$('#'+prefix+'-details-'+id).fadeIn();
			});
		}
	}
	else{
		$('#'+prefix+'-down-'+id).attr('src', base_url()+'public/images/icons/down.gif');
		$('#'+prefix+'-details-'+id).fadeOut();		
	}
};

addWordFromWaitingList = function(url, params, word, lang){
	$.post(url, params, function(data){
		$('#mydict-list-body').prepend(data);
		if(lang == 'en'){
			$('input[@name=en_word]').attr('value',word);
			$('input[@name=pl_word]').focus();
		}
		else{
			$('input[@name=pl_word]').attr('value',word);
			$('input[@name=en_word]').focus();			
		}			
	});
};

/**
* connect two elements (many to many relation)
*/
AjaxConnectScaffold = function(url, prefix, id, name){
	leftid = getLeftID();
	if(leftid > 0){
		if(!$('#view-'+prefix+'-'+id+'-'+leftid).size()){
			params = {};
			$.post(url+'/'+id+'/'+leftid, params, function(data){ 
				$('#'+prefix+'-'+leftid+'-list-body').append(data);
				ColorRows(prefix+'-'+leftid);
				$('#view-'+prefix+'-'+id+'-'+leftid).find('td').highlightFade({speed:1500});
				if($('#'+prefix+'-'+leftid+'-empty-message').css('display') != 'none'){
					$('#'+prefix+'-'+leftid+'-empty-message').hide();
				}
			});
		}
		else{
			alert('This connection already exists.');
		}
	}
	else{
		alert('Please choose '+name+' first.');
	}
};

/**
* disconnect two elements (many to many relation)
*/
AjaxDisconnectScaffold = function(url, prefix, id1, id2){
	params = {};
	if(confirm('Are you sure?')){
		$.post(url+'/'+id1+'/'+id2, params, function(data){ 
			$('#view-'+prefix+'-'+id1+'-'+id2).find('td').highlightFade({speed:750, complete: function(){ 
				$('#view-'+prefix+'-'+id1+'-'+id2).hide();
				$('#view-'+prefix+'-'+id1+'-'+id2).remove();
				ColorRows(prefix+'-'+id2);
			}});
			
			if($('#'+prefix+'-'+id2+'-list-body').find('tr').filter('.row').size() == 1){
				$('#'+prefix+'-'+id2+'-empty-message').show();
			}
		});
	}
};

SetLeftID = function(prefix,id){
	if(id != 0){
		if($('#'+prefix+'-details-'+id).css('display') != 'none'){
			temp = left_id.split('_');
			left_id = '';
			for(var element in temp){
				if(temp[element] && temp[element] != id){
					left_id += temp[element]+'_';
				}
			}
		}
		else{
			left_id += id+'_';
		}
	}
};

getLeftID = function(){
	temp = left_id.split('_');
	return temp[temp.length-2];
};



ColorRows = function(prefix){
	var even = false;
	$('#'+prefix+'-list-body').find('tr.row').each(function(){
		if(this.style.display != 'none'){
			if(!even) this.className = 'even row';
			else this.className = 'noteven row';
			even = !even;
		}
	});
};

ChangeThColor = function(prefix){
	$(document).find(".orderby").filter("."+prefix).each(function(element){
		var temp = this.className.split(' ');
		var prefix  = temp[1];
		var orderby = temp[2];
		this.className = "orderby "+prefix+" "+orderby;
	});
};

orderbyClick = function(prefix){
	$(".orderby").filter("."+prefix).click(function(){
		var temp = this.className.split(' ');
		var prefix  = temp[1];
		var orderby = temp[2];
		if(temp[3]){
			if(temp[3] == 'asc') ascdesc = 'desc';
			else ascdesc = 'asc';
		}else{
			ascdesc = 'desc';
		}
		ChangeThColor(prefix);			
		this.className = "orderby "+prefix+" "+orderby+" loading";
		var url = $(this).find("a").attr('href');
		AjaxSortByScaffold(url, prefix, orderby, ascdesc, this);
		return false;
	});
};


search = function(){
	if($('.search').size()){
		$('.search').keydown(function(e) {
			var el = this;	
			switch(e.keyCode){
				case 9:
				case 13:
				case 38:
				case 40:
					e.preventDefault();
					break;
				default:
					clearTimeout(this.timeout);			
					this.timeout = setTimeout(function (){
						setTimeout( function (){		
							var temp = el.className.split(' ');
							var prefix = temp[1];	
							var name = el.name;
							var value = el.value; 
							$("#"+prefix+"-search-loading-indicator").show();
							$("#"+prefix+'-list').load(base_url()+prefix+'/list_elements', {name: value}, function(){ 
								ColorRows(prefix);
								$("#"+prefix+"-search-loading-indicator").hide();
							}); 
						}, 500);
					}, 500);
					break;
				}
		});
	}
};

/**
* additional functions
*/

/**
* function for listserv people 
*/
checkbox = function(url, element){
	
	var checked = (element.checked) ? 1 : 0;
	var temp = element.id.split('_');
	id1 = temp[1];
	id2 = temp[2];
	var params = {'checked': checked, 'id1': id1, 'id2': id2};
	$.post(url, params, function(data){ });
};


/**
* permission - obac function - set/unset permission
* @action (false - unset / true - set)
* @object_id
* @group_id
* @tablename
* @permission (view,add,edit,delete)
*/
permission = function(url, prefix, action, object_id, group_id, tablename, permission){
		var params = {action: action, object_id: object_id, group_id: group_id, tablename: tablename, permission: permission};
		$("#"+prefix+"-"+permission+"-loading-indicator").show();
		$.post(url, params, function(response){
			$("#"+prefix+"-"+permission+"-loading-indicator").hide();		
		});
};

/*

$(document).ready(
	function(){
		search();
});
*/
