class DesktopController< ApplicationController
  layout 'desktop'
  before_filter :authenticate_user!

  #to load pages...
  
  def index
    @desktop = current_user.desktop
    @currentusername = current_user.name
    @title = "Desktop - " + @currentusername
    @section = @desktop.sections.first
  end

  def compatibility
    render :layout => "compatibility" 
  end
  
  def desktop
    render :layout => false
  end
  
  def app_manager
     render :layout => false
  end
  
  def allsections
    render :layout => false
  end
  
  def settings
    render :layout => false
  end
  
  def themes
    @themes = DesktopTheme.all
  #  raise @themes.inspect
    render "desktop/settings/themes", :layout => false
  end
  
  def sections
    render "desktop/settings/sections", :layout => false
  end
  
  def connections
    render "desktop/settings/connections", :layout => false
  end
  
 
  #ajax data load....
  
  def save_desktop_settings
    @desktop = Desktop.find(params["desktopid"])
    @savewhat = params["save"]
    case @savewhat
    when "theme"
      @desktop.update_attributes(:theme => params["theme"])
      @desktop.update_attributes(:wallpaper => nil)
    when "desktopnames"
      @sections = @desktop.sections
      x = 0;
      @sections.each do |section|
        @desktopnewnames = params["desktopnms"]
        section.update_attributes(:name => @desktopnewnames[x] )
        x = x+1
      end
    when "appnewsection"
      @section = Section.find(params["newsectionid"])
      @groups = @section.groups
      @app = Tile.find(params["appid"])
      @groups.each do |group|
        @tiles = group.tiles.where(:data_category.all => ["app"])
        if @tiles.length < 12
          @app.update_attributes(:group_id => group.id)
          break
        end
      end
      when "customtheme"
        @desktop.update_attributes(:theme => "custom")
        @desktop.update_attributes(:customtheme => params['theme'])
      when "wallpaper"
        @desktop.update_attributes(:wallpaper => params["wallpapernm"])
      end
     a = Array.new
     a << {"success"=>"true"}
     render :json=>a.to_json
  end
  
  def get_desktop_settings
     @desktop = Desktop.find(params["desktopid"])
     @getwhat = params["get"]
     case @getwhat
      when "desktop"
        render :json => @desktop.to_json
      when "sectionnames"
        secnames = Array.new
        @sections = @desktop.sections
        @sections.each do |section|
          secnames << section.name
        end
        render :json => secnames.to_json
      when "theme"
        @theme = @desktop.theme
        render :json => @theme.to_json
     end
  end
  
  def getgroups
    @section = Section.find(params["sectionid"])
    @groups = @section.groups
    
    gr = Array.new
    @groups.each do |group|
      a = Array.new
      t = group.tiles
      t.each do |tile|
        data_content = ""
        jsfile = []
        cssfile = ""
        shape = "w1 h1"
        fullsize = false
        link = ""
        if tile.data_category == "widget"
          widge = DesktopWidget.find(tile.desktop_widget_id.to_s)
          # data_content = widge.widget_layout.file
          data_content = "/desktop/widget_layout?id="+tile.desktop_widget_id.to_s
          jsfile = widge.javascripts.collect{|js| js.file.as_json[:file]}
          cssfile = widge.css_default.file.as_json[:file]
          shape = widge.shape
          title = widge.name
          # binding.pry
          if not widge.fullsize.nil?
            fullsize = widge.fullsize
          end
        else
          data_content = tile.data_content
          title = tile.title
          case data_content
            when "envocab"
              link = "http://www.english-vocabulary.eu/"
            when "wikibooks"
              link = "http://www.wikibooks.org"
          end
        end
          gr << {"id"=>tile.id,"data_category"=>tile.data_category,"data_content"=>data_content,"js"=>jsfile,"css"=>cssfile,"shape"=>shape,"position"=>tile.position,"row"=>tile.row,"column"=>tile.column, "title"=>title,"fullsize"=>fullsize,"link"=>link}
       
        
      end
      # gr << a
    end
    render :json =>gr.to_json
  end

  def widget_layout
    widget = DesktopWidget.find(params[:id])
    link = '<link href="'+widget.css_default.file.to_s+'" media="screen" rel="stylesheet" type="text/css" />'
    content = widget.widget_layout.body
    dhtml = link + content
    render :text => dhtml.html_safe
  end
  
  def getsectionlist
    @desktop = Desktop.find(params["desktopid"])
    @sections = @desktop.sections
    render :json => @sections.to_json 
  end
  
  def temp_func
     @section = Section.find(params["sectionid"])
      @groups = @section.groups
      
      @groups.each do |group|
        a = 1;
        @tiles = group.tiles
        @tiles.each do |tile|
          tile.update_attributes({:data_category => "widget",:data_content => "temp", :position => a})
          a = a+1;
        end
      end
      b = Array.new
       b << {"success"=>"true"}
       render :json=>b.to_json
  end
  
  def getapplist
     @desktop = Desktop.find(params["desktopid"])
     @sections = @desktop.sections
     a = Array.new
     @sections.each do |section|
       @groups = section.groups
       @groups.each do |group|
         @tiles = group.tiles.where(:data_category.all => ["app"])
         a << @tiles
       end
     end
     render :json=>a.to_json
  end
  
  def newpositions
    @newpositions = params[:newpositions]

    @newpositions.each do |t|
      @this_tile = t.last
      @tile = Tile.find(@this_tile['id'])
      @tile.update_attributes({:row => @this_tile['row'],:column => @this_tile['col']})
    end
    # @newpositions = params["newpos"]
    # @section = Section.find(params["sectionid"])
    # @groupids = params["groupids"]
    # @groups = @section.groups
    #  z = 0
    # @newpositions.each do |grp|
    #   x = 1
    #   grp.each do |tileid|
    #     if x != 1
    #       y = 1
    #       tileid.each do |id|
    #         @tile = Tile.find(id)
    #         @tile.update_attributes({:position => y})
    #         if @tile.group_id != @groupids[z]
    #           @tile.update_attributes({:group_id => @groupids[z]})
    #         end
    #          y = y + 1
    #       end
    #       z = z + 1
    #     end
    #     x = x + 1
    #   end
    # end
    b = Array.new
    b << {"success"=>"true"}
    render :json=>b.to_json
  end
  
  def forgmail
   
    feed = Net::HTTP.get_response(URI.parse("https://mail.google.com/mail/feed/atom")).body
    render :xml=>feed
  end
  
end