jQuery.fn.table2CSV = function(options) {
   var options = jQuery.extend( {
      separator : ',',
      header : [],
      delivery: 'popup' // popup, value
     }
   , options); 
   
   var csvData = []; 
   var headerArr = []; 
   var el = this; 
   
      //header
      var numCols = options.header.length; 
      var tmpRow = []; // construct header avalible array
      
      if(numCols> 0 ) {
         	for(var i=0;i<numCols; i++){
         		tmpRow[tmpRow.length] = formatData(options.header[i]); 
         	}
         }
      else {
         $(el).filter(':visible').find('th').each(function () {
            if ($(this).css('display') != 'none') tmpRow[tmpRow.length] = formatData($(this).html() ); }
         ); }
     
	   row2CSV(tmpRow); 
	   
      // actual data 
      $(el).find('tr').each(function () {
         var tmpRow = []; $(this).filter(':visible').find('td').each(function() {
            if ($(this).css('display') != 'none') tmpRow[tmpRow.length] = formatData($(this).html()); }
         ); row2CSV(tmpRow);
         }
      ); 
      if (options.delivery=='popup')
      	{
      	var mydata = csvData.join('\n'); 
      	return popup (mydata);
      	}
      else
      	{
      	var mydata = csvData.join('\n'); 
      	return  mydata;
      	}
    
   function row2CSV(tmpRow) {
      var tmp = tmpRow.join('') // to remove any blank rows
      // alert(tmp);
      if (tmpRow.length > 0 && tmp != '') {
         var mystr = tmpRow.join(options.separator); 
         csvData[csvData.length] = mystr; 
         }
      }
   function formatData(input) {
      // replace " with “
      var regexp = new RegExp(/["]/g);
      var output = input.replace(regexp, "“"); 
      //HTML
      var regexp = new RegExp(/\<[^\<]+\>/g);
      var output = output.replace(regexp, ""); 
      if (output == "") return '';
      return '"' + output.replace(/^\s+|\s+$/g,"") + '"'; 
      }
   function popup(data) {
      var generator = window.open('', 'csv', 'height=400,width=600'); 
      generator.document.write('<html><head><title>CSV</title>'); 
      generator.document.write('</head><body >'); 
      generator.document.write('<textArea cols=70 rows=15 wrap="off" >'); 
      generator.document.write(data); 
      generator.document.write('</textArea>'); 
      generator.document.write('<p>You can copy and paste the above into Excel or any other spreadsheet package</p></body></html>'); 
      generator.document.close();
      return true; 
      }
   }; 
$(document).ready(function() {
   }
);