/*
* jQuery-1.4.4 relToData by FirstView (http://firstviewmedia.com).
* This lets you turn a json formatted rel tag into the data of an object.
* The rel tag must be json formatted.
*/
/*
Eg. :

$('._jsRelClass').relToData();
$.relToData();

*/

$.relToData = function(opts) {
	
	var defaults = {
		selector:'*',							// Eg.: '.className' or '#someId' or '*' for everything. //
		successClass:'_jsRelData',				// Add success class to object if objectified successfully. //
		failClass:'_jsRelDataFail',				// Add fail class to object if objectified unsuccessfully. //
		successObjName:'relToDataSuccess'		// Add piece of data to object to let know if objectificaiton was successful. Will be ture on success, false on fail. //
	};
	var opts									= $.extend(defaults, opts);
	$(opts.selector+'[rel^="{"][rel$="}"]').each(function(){
		var $this = $(this);
		try{
			if( !$this.data(opts.successObjName) ){
				$this.data( jQuery.parseJSON( $this.attr('rel') ));
				$this.data(opts.successObjName, true ).addClass(opts.successClass);
			}
		}catch( error ){
			$this.data(opts.successObjName, false ).addClass(opts.failClass);
		}
		return $this;
	})
};



(function($){
	$.fn.relToData = function(opts) {
		var defaults = {
			successClass:'_jsRelData',			// Add success class to object if objectified successfully. //
			failClass:'_jsRelDataFail',			// Add fail class to object if objectified unsuccessfully. //
			successObjName:'relToDataSuccess'	// Add piece of data to object to let know if objectificaiton was successful. Will be ture on success, false on fail. //
		};
		var opts								= $.extend(defaults, opts);
		return this.each(function(){
			var $this = $(this);
			if( $this.filter('[rel^="{"][rel$="}"]').size() ) $this.data(jQuery.parseJSON( $this.attr('rel') )).data(opts.successObjName, true).addClass(opts.successClass);
			else $this.data(opts.successObjName, false).addClass(opts.failClass);
			return this;
		});
	};
})(jQuery);

