function updateForm(frm, obj, msg){
	url = $(frm).attr("action");
	//alert( url + $(frm).serialize() ) ;

	$.post(url , $(frm).serialize() ,
			
			function(data){
				valid = "";
				nm = "";
//alert(data);
//return true;
				$.each(data , function(i, item){
					nm = nm + i + item.status + '\n';										
					elem = frm.elements[i];
					//alert( typeof elem + 'is a ' + i);
					if(!elem){
						//try for group elements
						t = i+'[]';						
						for ( g = 0; g < frm.elements.length; g++){
							if(t == frm.elements[g].name){
								elem = frm.elements[g];
								break;
							}
						}
					}
					if(!elem){
						//alert(i + " not found");
					}else{
						elem.disabled = item.disabled;
						
						if(item.status == "err"){
							valid = "disabled";
							if(msg == "change" && elem.value != "") alert(item.message);
						}

					}
				});
				
				if(msg != "focus") $(frm).find(".validEnable").attr("disabled", valid);
				if(obj)message(obj);
			}
	, 'json'
	);

}

function lostFocus(obj){

	sibs = $(obj).nextAll();
	
	ms = sibs.filter(".form_status_message");
	ms.hide();
	
}

function gotFocus(obj){
	updateForm(obj.form, obj, "focus");
	//message(obj);
}

function elementChange(obj){
	updateForm(obj.form, obj, "change");
}

function message(obj){
	//alert("hi");
	sibs = $(obj).nextAll();
	
	ms = sibs.filter(".form_status_message");
	t = ms.text();
	//alert(t.length);
	if(t.length){
		ms.show();
	}else{
		ms.hide();
	}
}

function colorPicker(obj){
	pt = $(obj).parent();
	pt.addClass('colorpicker_selected');
	sibs = pt.siblings();
	sibs.removeClass('colorpicker_selected');
	
	//update span element
	sp = sibs.filter("span");
	sp.html(obj.title);
	
	//set hidden field and trigger onchange event
	fld = sibs.filter("input");
	fld.attr("value", obj.title);
	fld.trigger("change");
}

function updateProduct(frm){
	url = $(frm).attr("action");
	$.post(url , $(frm).serialize() + "&submit=true" ,		
	function(data){
		//alert(data);
		frm.elements['id'].value = data.id;
		alert(data.message);
		$("#cart").load("/basket.html?context=Basket_Summary");
		$("#cart").removeClass().addClass( data.basket );
		
	}
	, "json");
	return false;
}

function metaEdit(obj){
	cnt = $(obj).parents(".container");
	if(obj.form){
		$.post( 
				$(obj.form).attr("action") , 
				$(obj.form).serialize() + "&" + obj.name + "=" + obj.value,
				function(data, textStatus){
					cnt.html(data);
				},
				"html"
				);
	}else{
		cnt.load( $(obj).attr("href"), function(){
			$(".form_status_message").hide();
			updateForm( $('#HTML_Meta_Controller_Form').get(0) );
		});
		
	}
	return false;
	
}

$(document).ready(function(){
	//alert(document.forms[0].name);
	$(".form_status_message").hide();
	
	for(x = 0; x < document.forms.length; x++){
		updateForm(document.forms[x]);
	}
	
});

