module LB
    module Extensions
        module Functions
            module Utils
                def parsebox(list, n)
                    assert_type n, :Number
                    if !n.int?
                        raise ArgumentError.new("List index #{n} must be an integer")
                    elsif n.to_i < 1
                        raise ArgumentError.new("List index #{n} must be greater than or equal to 1")
                    elsif n.to_i > 4
                        raise ArgumentError.new("A box string can't contain more then 4")
                    end

                    new_list = list.clone.to_a
                    size = new_list.size

                    if n.to_i >= size
                        if size == 1
                            new_list[1] = new_list[0]
                            new_list[2] = new_list[0]
                            new_list[3] = new_list[0]
                        elsif size == 2
                            new_list[2] = new_list[0]
                            new_list[3] = new_list[1]
                        elsif size == 3
                            new_list[3] = new_list[1]
                        end
                    end

                    new_list.to_a[n.to_i - 1]
                end

                # Returns a background-image property for a specified images for the theme
                def theme_image(path, without_url = false, relative = false)
                    path = path.value
                    #theme = theme.value
                    without_url = (without_url.class == FalseClass) ? without_url : without_url.value
                    
                    relative_path = "../"

                    if relative
                        if relative.class == Sass::Script::String
                            relative_path = relative.value
                            relative = true
                        elsif relative.class == FalseClass || relative.class == TrueClass
                            relative = relative
                        else
                            relative = relative.value
                        end
                    else
                        relative = false
                    end
                    
                    if relative
                        image_path = File.join(relative_path, "i", path)
                    else
                        image_path = File.join("../../../i/", path)
                    end
                    
                    if !without_url
                        url = "url('#{image_path}')"
                    else
                        url = "#{image_path}"
                    end
                    
                    Sass::Script::String.new(url)
                end
                
                def theme_image_exists(theme, path)
                    result = false
                    
                    chk_point = File.join("../themes", theme.value, "public", "css")
                    
                    Dir.chdir("#{chk_point}") do
                        if FileTest.exists?("#{path}")
                            result = true
                        end
                    end
                    
                    return Sass::Script::Bool.new(result)
                end
            end
        end
    end
end

module Sass::Script::Functions
    include LB::Extensions::Functions::Utils
end