// create closure
(function($) {

  // plugin definition
	$.csv = function(text, options) {
		var settings = $.extend({
			delim: (typeof delim == "string") ? new RegExp( "[" + (delim || ","   ) + "]" ) : (typeof delim == "undefined") ? ","    : delim,
	        quote: (typeof quote == "string") ? new RegExp("^[" + (quote || '"'   ) + "]" ) : (typeof quote == "undefined") ? '"'    : quote,
	        lined: (typeof lined == "string") ? new RegExp( "[" + (lined || "\r\n") + "]+") : (typeof lined == "undefined") ? "\r\n" : lined
			// put more defaults here
		}, options);
		
		var lines = text.split(settings.lined);
        for (var i=0, l=lines.length; i<l; i++) {
           	lines[i] = splitline(lines[i], settings);
        }
        return lines;
	};
	
	// private functions
	function splitline (v, settings) {
        // Split the line using the delimitor
        var arr  = v.split(settings.delim),
            out = [], q;
        for (var i=0, l=arr.length; i<l; i++) {
            if (q = arr[i].match(settings.quote)) {
                for (j=i; j<l; j++) {
                    if (arr[j].charAt(arr[j].length-1) == q[0]) { break; }
                }
                var s = arr.slice(i,j+1).join(settings.delim);
                out.push(s.substr(1,s.length-2));
                i = j;
            }
            else { out.push(arr[i]); }
        }

        return out;
    }
})(jQuery);
