# using code from lazy _high_charts gem with some modification

def say(msg, &block)

print "#{msg}..."

if block_given?
    yield
  puts " Done."
end

end

namespace :highcharts do

desc "Update highcharts.js from latest Builds on Highcharts codebase: http://code.highcharts.com/"
task :update => [:core, :stock, :map, :css]
task :core do
  say "Grabbing Core from Highcharts codebase..." do
    sh "mkdir -p vendor/assets/javascripts/highcharts/modules/"
    sh "mkdir -p vendor/assets/javascripts/highcharts/adapters/"

    sh "curl -# http://code.highcharts.com/highcharts.js -L --compressed -o vendor/assets/javascripts/highcharts/highcharts.js"
    sh "curl -# http://code.highcharts.com/highcharts-more.js -L --compressed -o vendor/assets/javascripts/highcharts/highcharts-more.js"
    sh "curl -# http://code.highcharts.com/highcharts-3d.js -L --compressed -o vendor/assets/javascripts/highcharts/highcharts-3d.js"

    modules = ['accessibility', 'annotations', 'boost', 'broken-axis',
               'canvas-tools', 'data', 'exporting', 'drilldown', 'funnel',
               'heatmap', 'histogram-bellcurve', 'no-data-to-display',
               'offline-exporting', 'sankey', 'solid-gauge', 'treemap',
               'tilemap', 'variwide', 'vector', 'windbarb']

    modules.each do |modul|
      sh "curl -# http://code.highcharts.com/modules/" + modul + ".js -L --compressed -o vendor/assets/javascripts/highcharts/modules/" + modul + ".js"
    end
    sh "curl -# http://code.highcharts.com/adapters/mootools-adapter.js -L --compressed -o vendor/assets/javascripts/highcharts/adapters/mootools-adapter.js"
    sh "curl -# http://code.highcharts.com/adapters/prototype-adapter.js -L --compressed -o vendor/assets/javascripts/highcharts/adapters/prototype-adapter.js"
  end
end

task :stock do
  say "Grabbing Highcharts Stock JS from Upstream..." do

    sh "mkdir -p vendor/assets/javascripts/highcharts/stock/modules/"
    sh "mkdir -p vendor/assets/javascripts/highcharts/stock/adapters/"
    sh "mkdir -p vendor/assets/javascripts/highcharts/js/"

    sh "curl -# http://code.highcharts.com/stock/highstock.js -L --compressed -o vendor/assets/javascripts/highcharts/highstock.js"
    sh "curl -# http://code.highcharts.com/stock/js/highstock.js -L --compressed -o vendor/assets/javascripts/highcharts/js/highstock.js"
    sh "curl -# http://code.highcharts.com/stock/highcharts-more.js -L --compressed -o vendor/assets/javascripts/highcharts/stock/highcharts-more.js"
    sh "curl -# http://code.highcharts.com/stock/modules/exporting.js -L --compressed -o vendor/assets/javascripts/highcharts/stock/modules/exporting.js"
    sh "curl -# http://code.highcharts.com/stock/modules/funnel.js -L --compressed -o vendor/assets/javascripts/highcharts/stock/modules/funnel.js"
    sh "curl -# http://code.highcharts.com/stock/adapters/mootools-adapter.js -L --compressed -o vendor/assets/javascripts/highcharts/stock/adapters/mootools-adapter.js"
    sh "curl -# http://code.highcharts.com/stock/adapters/prototype-adapter.js -L --compressed -o vendor/assets/javascripts/highcharts/stock/adapters/prototype-adapter.js"
  end
end

task :map do
  say "Grabbing HighMaps JS from Upstream..." do

    sh "mkdir -p vendor/assets/javascripts/highcharts/mapdata/countries/"
    sh "mkdir -p vendor/assets/javascripts/highcharts/mapdata/custom/"

    countries = ['ad', 'ae', 'af', 'ag', 'al', 'am', 'ao', 'ar', 'as', 'at',
                 'au', 'az', 'ba', 'bb', 'bd', 'be', 'bf', 'bg', 'bh', 'bi',
                 'bj', 'bn', 'bo', 'br', 'bs', 'bt', 'bw', 'by', 'bz', 'ca',
                 'cf', 'ci', 'cg', 'ch', 'ck', 'cl', 'cm', 'cn', 'co', 'cr',
                 'cu', 'cv', 'cy', 'cz', 'de', 'dj', 'dk', 'dm', 'do', 'dz',
                 'ec', 'ee', 'eg', 'eh', 'er', 'es', 'et', 'fi', 'fj', 'fo',
                 'fr', 'ga', 'gb', 'gd', 'ge', 'gh', 'gl', 'gm', 'gn', 'gq',
                 'gr', 'gt', 'gu', 'gw', 'gy', 'hn', 'hr', 'ht', 'hu', 'id',
                 'ie', 'il', 'in', 'iq', 'ir', 'is', 'it', 'jm', 'jo', 'jp',
                 'ke', 'kh', 'kg', 'km', 'kn', 'kp', 'kr', 'kv', 'kw', 'kz',
                 'la', 'lb', 'lc', 'li', 'lk', 'lr', 'ls', 'lt', 'lu', 'lv',
                 'ly', 'ma', 'mc', 'md', 'me', 'mg', 'mk', 'ml', 'mm', 'mn',
                 'mp', 'mr', 'mt', 'mu', 'mw', 'mx', 'my', 'mz', 'na', 'nc',
                 'ne', 'ng', 'ni', 'nl', 'no', 'np', 'nr', 'nz', 'om', 'pa',
                 'pe', 'pg', 'ph', 'pk', 'pl', 'pr', 'pt', 'pw', 'py', 'qa',
                 'ro', 'rs', 'ru', 'rw', 'sa', 'sb', 'sc', 'sd', 'se', 'sg',
                 'si', 'sk', 'sl', 'sm', 'sn', 'so', 'sr', 'ss', 'st', 'sx',
                 'sy', 'sz', 'tj', 'tg', 'th', 'tm', 'tn', 'tr', 'tt', 'tw',
                 'tz', 'ua', 'ug', 'us', 'uy', 'uz', 'vc', 've', 'vi', 'vn',
                 'vu', 'wf', 'ws', 'ye', 'za', 'zm', 'zw']
    countries.each do |country|
      sh "mkdir -p vendor/assets/javascripts/highcharts/mapdata/countries/" + country
      sh "curl -# http://code.highcharts.com/mapdata/countries/" + country + "/" + country + "-all.js" + " -L --compressed -o vendor/assets/javascripts/highcharts/mapdata/countries/" + country + "/" + country + "-all.js"
    end
    sh "mkdir -p vendor/assets/javascripts/highcharts/mapdata/countries/in/custom"

    custom_areas = ['africa', 'antarctica', 'asia', 'benelux',
                    'british-isles', 'british-isles-all', 'usa-and-canada',
                    'central-america', 'europe', 'european-union',
                    'middle-east', 'nordic-countries',
                    'nordic-countries-core', 'north-america',
                    'north-america-no-central', 'nato', 'oceania',
                    'scandinavia', 'south-america', 'world-continents',
                    'world-palestine-highres', 'world-palestine-lowres',
                    'world-palestine', 'world-eckert3', 'world',
                    'world-robinson']
    custom_areas.each do |custom_area|
      sh "curl -# http://code.highcharts.com/mapdata/custom/" + custom_area + ".js -L --compressed -o vendor/assets/javascripts/highcharts/mapdata/custom/" + custom_area + ".js"
    end

    sh "curl -# http://code.highcharts.com/maps/modules/map.js -L --compressed -o vendor/assets/javascripts/highcharts/map.js"
    sh "curl -# http://code.highcharts.com/mapdata/countries/in/custom/in-all-andaman-and-nicobar.js -L --compressed -o vendor/assets/javascripts/highcharts/mapdata/countries/in/custom/in-all-andaman-and-nicobar.js"
    sh "curl -# http://code.highcharts.com/maps/js/modules/map.js -L --compressed -o vendor/assets/javascripts/highcharts/js/map.js"
  end  
end

task :css do
  say "Grabbing CSS of HighCharts from Upstream..." do
    sh "mkdir -p vendor/assets/stylesheets/highcharts/"

    sh "curl -# http://code.highcharts.com/css/highcharts.css -L --compressed -o vendor/assets/stylesheets/highcharts/highcharts.css"
  end
end

end