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 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"
        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}
          cssfile = widge.css_default.file
          shape = widge.shape
          title = widge.name
        else
          data_content = tile.data_content
          title = tile.title
        end
        a << {"id"=>tile.id,"data_category"=>tile.data_category,"data_content"=>data_content,"js"=>jsfile,"css"=>cssfile,"shape"=>shape,"position"=>tile.position,"title"=>title}
      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["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