/**
 * 
 * Select * checkboxes
 * 
 * @param {Object} obj
 */
function selectAll(obj, classCheckbox){
	var check = obj.checked;
	$('input[@type=checkbox].'+classCheckbox).each(function (){
		this.checked = check;
	});
}
/** 
 * 
 * Add a field
 * 
 * @param {Object} elementID
 */
function addField(elementID){
	var field = $(elementID + " #field").val();
	var text  = $(elementID + " #field_text").val();
	
	var p = document.createElement("p");
		p.setAttribute("id", "field_"+field);
	var inputField = document.createElement("input");
		inputField.setAttribute("name", "field_" + field);
		inputField.setAttribute("value", text);
		inputField.setAttribute("type", "hidden");
	var delElem = document.createElement("a");
		delElem.setAttribute("href","#");
		delElem.setAttribute("onclick", "$('#field_"+ field +"').remove()");
		delElem.innerHTML = "delete";
	var content = "Field : " + field + " (" + text + ") ";
	p.innerHTML = content;
	p.appendChild(delElem);
	p.appendChild(inputField);

	if(field != "" && text != ""){
		var ok = true;
		$(elementID + " p").each( function (){
			if(this.id == "field_"+ field){
				alert("This field already exits!");
				ok = false;
			}
		});
		if(ok){
			$(p).insertBefore("#insertBefore");
		}
	}else{
		alert("Please enter both field and text values");	
	}
}
/**
 * Tree view callbacks
 * @param id
 * @return
 */
function selTreeItem(id){
	$('#parentID').val(id);
	$('#selectedParentText').html("You have selected a category. <a href='#' onclick='delTreeItem(); return false;'>Deselect</a>");
}
function delTreeItem(){
	$('#parentID').val(0);
	$('#selectedParentText').html('');
}
/**
<tr id="optionalField">
	<td>
		Field:
		<strong><span class="field_name"></span></strong>
	</td>
	<td style="padding-left: 10px;">
		Value:
		<input type="text" class="field_value" size="20" value="" />
		<a href="#" onclick="addFieldFromSuggested('#category_fields'); return false;">add</a>
	</td>
</tr>
 * @param id
 * @return
 */
function select_category(id){
	$('#categoryID').val(id); // Setting the category_id for post
	//Fetch fields of the selected category if they exist
	$.getJSON("fetchFields/" + id, function(json){
			if (json){
				$("#suggestedFields").show();
				if($("#suggestedFieldsTable")){
					$("#suggestedFieldsTable").remove();
				}
				$("#suggestedFields").append("<table id='suggestedFieldsTable'></table>");
				$.each(json, function (key, value){
					$("#suggestedFieldsTable").append($(".optionalField"));
					//console.log($("#suggestedFieldsTable > .optionalField"));
					//"Key: " + key + " Value: " + value;
				});
			}else{
				if($("#suggestedFieldsTable")){
					$("#suggestedFieldsTable").remove();
				}
			}
	});
}

/**
 * Callbacks for lists
 * 
 * Requires a method in the current controller called 'ajax' that handles the requests from the list
 *  
 */

function itemFocused(obj,field, id){
	var inputField = document.createElement("input");
		inputField.setAttribute("name", field);
		inputField.setAttribute("value", $(obj).html());
		inputField.setAttribute("size", $(obj).html().length);
		inputField.setAttribute("id", field + "_" + id);
		inputField.setAttribute("tabindex", obj.tabIndex);
		inputField.setAttribute("onblur", "itemChanged(\"" +field + "_" + id +"\", \""+$(obj).html()+"\", \""+obj.id+"\")");
	$(obj).after(inputField);
	$("#" + field + "_" + id).focus();
	$(obj).hide();
	obj.removeAttribute('tabindex');
}
function itemOver(obj,field, id){
	$(obj).css( { cursor: 'text' } );
}

function itemOut(){
	
}

function itemChanged(elemId, oldValue, anchorId){
	var field = elemId.split("_")[0]; // Field that needs to be changed
	var id = elemId.split("_")[1]; // Row id
	var url_str = "ajax/"+id+"/";
	var obj = $("#"+elemId);
	
	if (oldValue != obj.val()){//If we have a new value around we should submit it to
		$.ajax({ 
			type: "POST", 
			url: url_str, 
			data: field + "=" + obj.val(), 
			success: function(msg){
				$("#"+anchorId).html(obj.val());
			},
			error: function(msg){
				alert("Submit error");
			}
		});
	}else{
		
	}
	$("#"+anchorId).attr({ tabindex: obj.attr('tabindex')});
	$("#"+anchorId).show();
	obj.hide();
}

//Slide effects
$(document).ready(function(){
	$(".showhide").click(function () {
		$(this).parent().find("div").slideToggle("fast");
	});
});