Overlapping Places

Is anybody else experiencing problems with overlapping places? In iPhoto 09 I had many manually defined places which overlapped. This is inevitable in a small city like Basel with a picturesque old city and the limitation that places be circles and not, say, some other regular geometric shape. When the iPhoto 09 library was converted by iPhoto 11, the photos that I had assigned to places that overlapped or were totally contained within other places were assigned to the wrong places, or to none at all. Shrinking the circles around the places to avoid overlap did not solve the problem, but did allow me to reassign the photos to the right places.
The problem would seem not to be limited to converted libraries, however. Yesterday I assigned a photo to a new place. I selected the photo, clicked on the little "i", let iPhoto 11 search for "Sattelgasse 11", which it found and I confirmed. This apparently had a default radius which caused it to overlap other places, and all **** broke loose again. Suddenly, photos assigned to "Marktplatz" and "Andreasplatz" were reassigned to "Sattelgasse 11", and even shrinking the radius of "Sattelgasse 11" in Manage My Places couldn't correct the problem. There seems to be no way to adjust the size of places in the "teeny tiny" map dialog, so this problem seems to be unavoidable.

Don't have a solution for you but be sure to report the issue to Apple and request a new feature to allow us better control over the pins via http://www.apple.com/feedback/iphoto.html.
Happy Holidays

Similar Messages

  • How to create a new place in iPhoto 11 without doing any harm?

    Yes, I know how to create a new place for a photo -- theoretically:
    Select the photo.
    Make sure the Info icon in the lower right portion of the iPhoto window is clicked and the too-tiny-for-any-but-the-youngest-eyes map is displaying.
    Click in "Assign a Place..." and begin typing a place that iPhoto will search for.  It searches in both "your places" (i.e., those that you have already defined) as well as in Google Maps.
    When you see a place in the search results list that you think might be close to the one you mean, select it.
    A pin appears on the itsy-bitsy map.  Move it to the exact place you mean.  You can make controls appear on the map by moving the mouse over the bottom of the map.  The controls allow you to zoom in and out, and to change views (Terrain, Satellite, Hybrid).  When the pin is where you want it, click it. The current name of the location appears.  Modify it to the name you want, then click the check mark.
    That's "all" there is to it ... except for a couple of "gotchas."
    There's a difference between what happens when you select a place that you've defined and when you select a place that Google found in the search results.  If it's a place that you've defined, and you then move the pin to a new location and/or change its name, this will affect all photos assigned to the custom place.  In effect, you are modifying the place.
    All places have a radius associated with them, thereby making them circles.  You can adjust the radius only in the Maintain My Places window.  In the itsy-bitsy map it doesn't even appear.  However, if the newly defined place overlaps existing ones, all the photos assigned to the overlapped places will be assigned to the new one.  Their pins will remain where they were.
    Now, before anybody suggests sending feedback to Apple, let me emphasize that I have been sending Apple feedback on the wrong-headed implementation of Places since iPhoto 9.0.  New versions have come and gone (the current one is 9.1.2), but these "features" have remained.  So my purpose in opening this thread is to consolidate work arounds to these "features" in one place.  My work around: 
    Whenever I define a new place, I select only a single photo.  I try to name my places so that I can distinguish them from those that Google finds.  In order to avoid Gotcha 1 I select a place that Google finds and try to place the pin close enough to where I want it, but far enough from any other places that I've defined.  I give it a name that I can easily find it Manage My Place.
    I immediately open Manage My Places and select the new place.  I first note the pins near it, then decrease its radius, move the pin to the desired location, note the nearby places, and give it its final name.
    I then view Places and navigate to the new place to view the photos assigned to it.  If I'm lucky, there's only one.  Otherwise, I have to reassign the other photos to their correct places.
    Richard

    So... in the hope it will not confuse folks more, let me be more specific of a procedure that works for me...
    Procedure to create a new My Places location.
    OK there is more you can do with a non-GPS Coord linked photo.
    Click Info and then click Assign a Place in the lower right of screen. (if your photo has a location linked to it already the Assign a Place will NOT show up.)
    Choose a location name near the actual location that Google Maps can find.
    Click that location in the Google Maps list that appears and your photo will be temporarily assigned to that location.
    Now  type over that  location name in order to make sure to give that location a unique name that will show up in your My Places list and click that name after you have typed it  to be sure it is accepted.
    Now in iPhoto click Window/Manage My Places and go the that newly named location in the large My Places map. There's no easy search. You have to run down through the alphabetical list.
    Drag the flag to the location you want this place to be and click Done.
    The location name is now in your My Places list at the location you dragged the flag to!
    It is important to note that only your unique named locations show up in your Places list, so if you want to modify the location coordinates you have to establish a unique name for it.
    This is much more complicated that previous iPhoto versions!
    But Yeah!!!!!!!!!!
    It really works!!!!!!!

  • Why is using Places in iPhoto 11 such a hairy hassle?

    Here is the feedback that I just sent to Apple:
    "Why is defining a place such a hassle?  Don't bother telling me the steps -- I know them too well.  Tell me why, when I select a photo, type something in the teeny-weeny Assign a Place... dialog, then select one of the suggestions, what happens next depends on whether the selected suggestion is a custom place or one that Google found?  Tell me why, if it's the former and I move the pin around and assign it a new name, I effectively modify the place, just as if I were working in Manage my Places, whereas if it's the latter, I define a new custom place?  Tell me why, if the custom place that I define happens to overlap other custom places, the photos assigned to them will be reassigned to the new custom place?  Tell me why I can't adjust the radius of the place in the teeny-weeny Assign a Place... dialog to prevent that from happening ... by the time I do that in Manage my Places it's too late!  Tell me why, with every new version of iPhoto 11 the usability of Places just gets worse?"
    Of course, I don't expect Apple to answer, but I would appreciate any hints for solving, or, at least, avoid the problems described above.  They weren't problems in the previous major version of iPhoto.
    The latest patch, 9.1.3, seems to have brought new Places problems.  I assigned a photo to Martinskirchplatz in Basel.  It wasn't in My Places, so it's a place that iPhoto found through Google.  Naturally, it overlapped other custom places nearby:  Rheinsprung, Alte Universität von Basel, Basler Rathaus.  So, after adjusting the radius of Martinskirchplatz in Manage my Places to avoid overlapping them, I switched to the Places view and selected Martinskirchplatz to see all the photos that really belonged to the overlapped places but had been reassigned, and painfully assigned them back to the correct places.  Then I found a photo that I had originally assigned to Rheinsprung and reassigned it to Martinskirchplatz, since that's exactly where I had taken it.  When I exited Places, re-entered and selected Martinskirchplatz, only the photo for which I had defined that place was there, not the one that I had reassigned to it.  No matter what I did, I could not convince iPhoto to show me both photos for that place, despite the fact that, in the Info displays for both the place was correct, and it only appears once in Manage my Places.  So I decided to repair and rebuild the library, and iPhoto decided to surprise me by only retaining the places for photos taken with the iPhone (presumably because they contain the GPS coordinates).  WHO UNDERSTANDS THAT Rebuild Library from backup MEANS THAT CUSTOM PLACES WILL BE LOST?  Just what kind of backup is it that doesn't backup the places?
    Regards,
    Richard

    The problem with Places is not the development, but the design, so learning how to develop (I presume you mean program) an application isn't going bring you any closer to understanding why Places doesn't "work."  In fact, Apple's refusal to address the problem of overlapping custom places indicates that this is the way it's supposed to work, but Apple provides no explanation about the underlying model, i.e., how we're supposed to think about custom places.
    As nearly as I can tell, custom places are supposed to provide GPS coordinates for photos that don't already have them, or have them wrong.  Look at what happens when you import a photo from, say, the iPhone.  Provided you haven't switched off the Location facility, the photo has GPS coordinates.  And, providing you haven't switched off the option in iPhoto to place photos, iPhoto will look up the coordinates in Google Maps and get the most precise name it can.  Apple's solution to the problem of photos which don't have GPS coordinates should have been, allow the user to supply them.
    Now, there's a second problem with geo-tagged photos, regardless whether they were automatically or manually tagged.  Sometimes we would like to provide a more precise area than Google Maps.  For example, Google Maps might supply just the city Basel for photos taken anywhere in Basel, whereas we might want to distinguish various areas in Basel.  This, too, has an easy solution.  Allow the user to define closed polygons, circles, etc. which constitute a level of detail finer than the finest level that Google Maps supplies.  So what if the custom areas overlap?  No problem.  The photos have coordinates, so if the coordinates of a photo put it in multiple areas, that's OK.
    So far, so good.  For each problem we have an independent solution.  Now, there's a third problem that's specific to manual geo-tagging.  Maybe I don't remember or don't care where exactly on the Marktplatz in Basel I took a photo.  Why should I have to assign it to a point?  Here is where Apple apparently got too clever for its own good.  Instead of supplying a separate solution to this problem as well (e.g., by introducing the concept of an area of uncertainty around a point, or by providing a facility to assign a photo the same coordinates as another), we now have what amounts to one solution for two problems:  when you think you're defining a custom place, you're really defining a circular area and assigning the photo the coordinates of the center of the circle.  So, what's so bad about that?  First, the process of defining a new place never makes it clear that it's actually an area that is being defined.  Second, even if you're aware of this, you cannot specify the size of the area at the same time that you define it, so there's no way to prevent it from overlapping other places that you've defined.  And what is the problem with overlapping?  Since the photos are not attached to the areas to which you assign them, but only derive their implicit coordinates from the assignment.  Now, anybody could understand that, if two areas overlap sufficiently, in particular, if one overlaps the center of the the other, then the photos assigned to the two places might be displayed when the large place is viewed.  But, for some strange reason, reducing the overlap in Manage My Places, or eliminating it altogether, doesn't rectify the problem.  Instead you must reassign the "victim" photos of overlap.
    The lesson here is:  Good design means a single solution to a single problem.  Three problems?  Three independent solutions!  This allows the user to do just what he wants, and to understand what he is doing.  Don't want to define an area?  Fine.  Just assign a coordinate to a photo.  Don't want to assign a coordinate, because that would imply precision, or because you don't recall exactly where?  Fine.  Just define an area of uncertainty and assign the photo to it.  As you and/or your needs develop, you can do more sophisticated things with three solutions than with a single one, and you still understand what you're doing.
    Somehow I don't believe that Apple doesn't know all this.  I could imagine this is an attempt to "simplify" the UI in preparation for supporting a touch interface like that promised for Lion.  Unfortunately, the price for reducing three separate operations to a single one is semantic overload and an opaque underlying model.
    Richard

  • How do you deal with weird noise when overlapping identical files in multitrack?

    Sometimes when I'm editing I put two files (or two parts of the same file) "over" each other for various reasons - e.g. wanting to x-fade to a different version of the same file.
    However, because the files are identical, if they are even a tiny tiny bit out of sync a weird noise is heard when they play and when they're overlapped.
    I think this is called "phasing" and I know Audition 3 has phase correction tools which is great, but it seems to only correct cases where the left and right channel are out of phase in a waveform.
    Does anyone have any techniques to recommend for correct this when it happens in multitrack view, apart from painstakinly moving the file a few bits to the left/right until the noise finally goes away (which takes ages and sometimes doesn't even work)?
    Thanks!
    Chris

    If they truly are the same identical clip, then start by lining up two of them the hard way and then place markers in the clip, exactly where the next clip will line up. In other words, align the first two, and then where the second clip overlaps, place a marker exactly at the end of it, IN THE FIRST CLIP. Then, when you have to do it again, each copy clip will have the same line and you just align each new one. Hope this made sense.
    There is also a feature to duplicate clips and you can choose between even spacing or just duplicate (end to end). If you calculate the distance from the beginning of the first clip to EXACTLY the beginning of the second, overlapping clip, you can input that into the option setting and it will do all the work for you...as many times over as you wish it to.

  • Documents open "small" in newest version of Pages 5.5.2

    I just noticed this in the most recent version of Pages and it's making working with old documents...tedious.
    Instead of opening in the view size that I had closed them as, all existing Pages documents open in the same window dimensions, so I have to readjust the window dimensions of each document. This didn't happen previously.
    How can I get all documents (existing docs) to open, say, in a specific windows dimension, magnification, and ideally, the same (or nicely overlapping) place on my monitor screen?

    awjackson wrote:
    I want to format for a book, therefore I require "Mirrored Pages" and "Odd Page Breaks" or pagination.  Is this possible on the new version of Pages 5.5.2.
    Use MS Word or LibreOffice,

  • Resize circle

    Just upgraded from iPhoto '08 to '11. How do you resize the places circle? Would like Oahu to include the entire island. Grabbing the red pin just moves it around. The Apple tutorial shows resizing a blue pin.

    The problem with not being able to adjust the size of the circle before confirming a new place is, there's no way to avoid an initial overlapping of places, and overlapping places seem to cause problems. If you're "lucky," the overlapping will cause the most recent of the overlapping places not to "take," and instead the photos assigned to it will have another place name. If you're unlucky, photos labeled previously and not the object of your attention will be assigned to the newest place, and you may only discover that when you view them the next time. Even in Manage My Places adjusting place radii to avoid overlap is a pain, because (a) you can't search for places there, and (b) when you select a place, only its radius is displayed around its pin, but not those of the other pins in the vicinity.

  • Cannot restore TM backup of iPhoto Library - insufficient privileges

    This seems to be a long-standing problem.  I am experiencing problems caused by Apple's lousy implementation of user-defined places in iPhoto 11 and cannot afford to test whether reducing the radius of a place that overlaps one hundred or so other user-defined places will solve the problem, because, if it doesn't -- in versions prior to iPhoto 9.4 doing that caused all photos assigned to the overlapped places to be reassigned to the overlapping place, and the only way to undo the damage was to manually assign them to the correct places -- I cannot restore a previous version of iPhoto Library from a Time Machine backup.  When I try to, I receive an error message about having insufficient privileges.
    Has anybody received a solution to this problem?  I have not been impressed with Apple Care.  First-level support usually just piddles around creating a new user account in which to try to recreate the problem, and when the case finally is escalated, the agent usually ends up referring the problem to "Engineering", never to be heard from again.
    Regards,
    Richard

    See Pondini's TM FAQs, for starters.

  • What time Oracle Spatial Can support text object

    Hi:
    I want know what time oracle spatial can support text object. it is very useful for
    GIS and LBS customer.
    null

    Hi,
    I think it is an interesting idea, but there are difficulties when implementing such objects in the database level. For one thing, the placement, orientation of text for a point geometry is often dependent on point geometries stored in other rows in order to acheive an optimal and non-overlapping placement. It also depends on the font and size of the text, as well as the scale and level of detail when visualizing the spatial data. Such contextual information is only available to an application. I hope I understood you correctly and if you have further comments I would like to hear them too.

  • Download iPhoto for Yosemite before it's superceded by Photos

    I hear that the successor to iPhotos (and to Aperture, for that matter), Photos, is presently in beta test.  I am still running Mavericks but would like to download the current version of iPhoto to a USB stick for installing it once I have upgraded to Yosemite.  Is that possible?  I have invested way too much time and energy manually assigning places to photos to take the risk that Photos will not support that feature.

    Thanks for replying.  Geotagging in iPhoto is a real nightmare.  See numerous threads on problems with Places in iPhoto which I have started.  The problem boils down to an incorrect model of places which does not permit them to overlap without risking one overlapping place "gobbling up" all the photos assigned to the other.  I'll want to ensure that Photos supports geotagging and that I understand what it does when two user-defined places overlap before I migrate my 400 GB iPhoto library to Photos.  That's why I don't want Apple to replace iPhoto by Photos in the App Store before I've had a chance to upgrade Mavericks to Yosemite, then upgrade my version of iPhoto to the latest one that Yosemite supports before evaluating Photos.
    By the way, since I can't imagine wanting all 400 GB of my iPhoto Library to synced to iCloud and then with all my other Apple toys, do you know whether I will still be able to sync selected photos in Photo for syncing with my iPad in iTunes?
    Thanks

  • Awesome systray is not showing all icons, perhaps overlapping widgets?

    I have a problem with my Awesome configuration that results in some of the icons being missing or partially missing from my systray. I suspect this is because of some overlapping, since they are partially hidden. You can see the problem in the top right corner.
    rc.lua:
    -- Standard awesome library
    require("awful")
    require("awful.autofocus")
    require("awful.rules")
    -- Theme handling library
    require("beautiful")
    -- Notification library
    require("naughty")
    --Wiget Library
    require("vicious")
    -- awesoMPD Widget
    --require("awesompd/awesompd")
    -- {{{ Variable definitions
    -- Themes define colours, icons, and wallpapers
    beautiful.init("/usr/share/awesome/themes/blind-alien/theme.lua")
    -- This is used later as the default terminal and editor to run.
    terminal = "urxvt"
    editor = os.getenv("EDITOR") or "vim"
    editor_cmd = terminal .. " -e " .. editor
    -- Enable or disable widgets:
    -- You also have to edit the wiboxes!
    useSysInfo = true
    usePacman = true
    useMpd = true
    useWifi = false
    useNet = true
    useBat = false
    useCpu = true
    useMem = true
    useTemp = false
    -- Widget Settings
    cpuCores = 2 --Number of CPU Cores
    thermalZone = "coretemp.0" --Thermal Zone to read cpu temperature from (check vicious docu)
    thermalData = "core" --Data Source: "proc", "core" or "sys"
    netAdapter = "eth0" --Network adapter to monitor
    wifiAdapter = "wlan0" --Wifi adapter for wifi widget
    pacUpdate = "yaourt -Sy" --Command to update pacman cache
    pacUpgrade = "yaourt -Su" --Command to upgrade system
    networkManager = terminal .. " -e wicd-curses"
    battery = "BAT1" --Battery to monitor
    widthMpd = 420 --Width of MPD widget
    -- Widget update intervals in seconds
    updateCpu = 1
    updatePac = 1801
    updateMpd = 1
    updateWifi = 7
    updateNet = 1
    updateBat = 31
    updateMem = 7
    -- For Dual-Screen setups:
    -- Set "dualScreen" to "2" if you want a different, optimized widget layout for every screen.
    -- If you set it to "-1" it will copy the same widget layout to both screens. (default Awesome behavior)
    dualScreen = -1
    screencount = screen.count()
    -- Default modkey.
    -- Usually, Mod4 is the key with a logo between Control and Alt.
    -- If you do not like this or do not have such a key,
    -- I suggest you to remap Mod4 to another key using xmodmap or other tools.
    -- However, you can use another modifier like Mod1, but it may interact with others.
    modkey = "Mod4"
    -- Table of layouts to cover with awful.layout.inc, order matters.
    layouts =
    awful.layout.suit.tile,
    awful.layout.suit.tile.left,
    awful.layout.suit.tile.bottom,
    awful.layout.suit.tile.top,
    awful.layout.suit.fair,
    awful.layout.suit.fair.horizontal,
    awful.layout.suit.magnifier,
    awful.layout.suit.floating,
    awful.layout.suit.max
    -- {{{ Tags
    -- Define a tag table which will hold all screen tags.
    tags = {
    --names = { "1", "2", "3", "4", "5", "6"},
    --names = { "⌘", "♐", "⌥", "ℵ"},
    --names = { "⠪", "⠫", "⠬", "⠭", "⠮", "⠳"},
    names = { "⠐", "⠡", "⠪", "⠵", "⠻", "⠿" },
    --names = { " ∙", "⠡", "⠲", "⠵", "⠻", "⠿"},
    --names = { " ⠐ ", " ⠡ ", " ⠲ ", " ⠵ ", " ⠾ ", " ⠿ "},
    --names = { "⢷", "⣨", "⡪", "⣌", "⣪", "⡝"},
    layout = {
    layouts[8], layouts[8], layouts[8], layouts[5], layouts[8], layouts[8]
    for s = 1, screencount do
    tags[s] = awful.tag(tags.names, s, tags.layout)
    end
    -- {{{ Menu
    -- Create a laucher widget and a main menu
    myawesomemenu = {
    { "manual", terminal .. " -e man awesome" },
    { "edit config", editor_cmd .. " " .. awful.util.getdir("config") .. "/rc.lua" },
    { "restart WM", awesome.restart },
    { "logout", awesome.quit },
    { "shutdown" , "sudo /sbin/halt -p" },
    { "reboot" , "sudo /sbin/reboot" }
    myinternet = {
    { "Chromium", "chromium" },
    { "Firefox" , "firefox" },
    { "IM" , "pidgin" },
    { "IRC" , "xchat"}
    mymedia = {
    { "Spotify", "spotify" },
    { "Rhythmbox", "rhythmbox" },
    { "ncmpcpp", "urxvt -e ncmpcpp" },
    { "Gnome Mplayer", "gnome-mplayer" },
    { "VLC" , "vlc" }
    mygraphics = {
    { "GIMP" , "gimp" },
    { "Inkscape" , "inkscape" },
    { "Image viewer" , "eog" }
    myoffice = {
    { "Base" , "lobase" },
    { "Calc" , "localc" },
    { "Impress" , "loimpress" },
    { "LibreOffice" , "loffice" },
    { "Writer" , "lowriter" },
    { "Lyx" , "lyx" },
    { "Document viewer" , "evince" }
    mysystem = {
    { "htop" , "urxvt -e htop" },
    { "Partition" , "gksudo gparted" },
    { "Sys mon" , "gnome-system-monitor" }
    myutilities = {
    { "Gedit" , "gedit" },
    { "Virtualbox" , "VirtualBox" },
    { "File Manager" , "nautilus --no-desktop" }
    myplaces = {
    { "Home" , "nautilus --no-desktop /home/johan/" },
    { "Documents" , "nautilus --no-desktop /home/johan/Documents/" },
    { "Downloads" , "nautilus --no-desktop /home/johan/Downloads/" },
    { "Music" , "nautilus --no-desktop /home/johan/Music/" },
    { "Pictures" , "nautilus --no-desktop /home/johan/Pictures/" }
    myserverplaces = {
    { "Server root" , "nautilus --no-desktop /srv/" },
    { "Downloads" , "nautilus --no-desktop /srv/download/" },
    { "Movies" , "nautilus --no-desktop /srv/movies/" },
    { "Tv-Series" , "nautilus --no-desktop /srv/tv-series/" },
    { "Misc" , "nautilus --no-desktop /srv/misc/" }
    mymainmenu = awful.menu({ items = {
    { "Terminal", terminal },
    { "Places" , myplaces },
    { "Server" , myserverplaces },
    { "Internet" , myinternet },
    { "Media" , mymedia },
    { "Graphics" , mygraphics },
    { "Office" , myoffice },
    { "Utilities" , myutilities },
    { "Systools" , mysystem },
    { "Awesome", myawesomemenu }
    mylauncher = awful.widget.launcher({ image = image(beautiful.awesome_icon),
    menu = mymainmenu })
    -- Separators
    bubble = widget({ type = "textbox" })
    spacer = widget({ type = "textbox" })
    space = widget({ type = "textbox" })
    separator = widget({ type = "textbox" })
    bracketl = widget({ type = "textbox" })
    bracketr = widget({ type = "textbox" })
    vertline = widget({ type = "textbox" })
    dash = widget({ type = "textbox" })
    bubble.text = " ∘ "
    spacer.text = " "
    space.text = " "
    --separator.text = "<span font_desc='ClearlyU'> ⡾ </span>"
    separator.text = "] ["
    vertline.text = "|"
    dash.text = "-"
    bracketl.text = "["
    bracketr.text = "]"
    -- Status Labels
    cpuLabel = {}
    for s = 1, cpuCores do
    cpuLabel[s] = widget({ type = "textbox" })
    cpuLabel[s].text = "Core " .. s
    end
    rlabel = widget({ type = "textbox" })
    rlabel.text = "Root:"
    hlabel = widget({ type = "textbox" })
    hlabel.text = "Home:"
    -- WIDGETS --
    -- OS info
    if useSysInfo == true then
    sys = widget({ type = "textbox" })
    vicious.register(sys, vicious.widgets.os, "$1 $2")
    end
    -- Pacman updates
    if usePacman == true then
    -- Widget
    pnoghosticon = widget({ type = "imagebox" })
    pnoghosticon.image = image(beautiful.widget_pacnoghost)
    pnoghosticon.visible = true
    pghosticon = awful.widget.launcher({
    image = beautiful.widget_pacghost,
    command = terminal .. " -e " .. pacUpgrade .. " && echo -e 'vicious.force({ pacup, })' | awesome-client"
    pghosticon.visible = false
    -- Icon
    -- picon = widget({ type = "imagebox" })
    -- picon.image = image(beautiful.widget_pacnew)
    -- Use the Pacman icon as launcher to update the package list (change to fit your package-management system)
    picon = awful.widget.launcher({
    image = beautiful.widget_pacnew,
    command = pacUpdate .. " && echo -e 'vicious.force({ pacup, })' | awesome-client"
    runpicon = awful.widget.launcher({
    image = beautiful.widget_pacman_run,
    command = pacUpdate .. " && echo -e 'vicious.force({ pacup, })' | awesome-client"
    runpicon.visible = false
    pacup = widget({ type = "textbox" })
    vicious.register(pacup, vicious.widgets.pkg,
    function(widget, args)
    local nr = tonumber(args[1])
    if nr ~= 0 then
    pnoghosticon.visible = false
    pghosticon.visible = true
    picon.visible = false
    runpicon.visible = true
    else
    pghosticon.visible = false
    pnoghosticon.visible = true
    runpicon.visible = false
    picon.visible = true
    end
    end, updatePac, "Arch")
    end
    -- MPD Widget
    if useMpd == true then
    -- PLAY, STOP, PREV/NEXT Buttons
    -- requires modification of /usr/share/awesome/lib/awful/widget/launcher.lua
    -- b = util.table.join(w:buttons(), button({}, 1, nil, function () util.spawn(args.command) end))
    -- to:
    -- b = util.table.join(w:buttons(), button({}, 1, nil, function () util.spawn_with_shell(args.command) end))
    music_play = awful.widget.launcher({
    image = beautiful.widget_play,
    command = "mpc toggle && echo -e 'vicious.force({ mpdwidget, })' | awesome-client"
    music_pause = awful.widget.launcher({
    image = beautiful.widget_pause,
    command = "mpc toggle && echo -e 'vicious.force({ mpdwidget, })' | awesome-client"
    music_pause.visible = false
    music_stop = awful.widget.launcher({
    image = beautiful.widget_stop,
    command = "mpc stop && echo -e 'vicious.force({ mpdwidget, })' | awesome-client"
    music_prev = awful.widget.launcher({
    image = beautiful.widget_prev,
    command = "mpc prev && echo -e 'vicious.force({ mpdwidget, })' | awesome-client"
    music_next = awful.widget.launcher({
    image = beautiful.widget_next,
    command = "mpc next && echo -e 'vicious.force({ mpdwidget, })' | awesome-client"
    mpdicon = widget({ type = "imagebox" })
    mpdicon.image = image(beautiful.widget_mpd)
    -- Initialize widget
    mpdwidget = widget({ type = "textbox" })
    --mpdwidget.wrap = "none"
    mpdwidget.width = widthMpd
    --mpdwidget.wrap = "word_char"
    -- Register Widget
    --vicious.register(mpdwidget, vicious.widgets.mpd, "(${state}) : ${Artist} - ${Title} ]", 13)
    -- Set the maximum width of the MPD widget inside the string.format function as "%.<length>s"
    vicious.register(mpdwidget, vicious.widgets.mpd,
    function(widget, args)
    --local maxlength = 85
    local font = beautiful.font
    local string = args["{Artist}"] .. " - " .. args["{Title}"]
    --local string = "[" .. args["{state}"] .. "]" .. " : " .. args["{Artist}"] .. " - " .. args["{Title}"]
    --[[ if maxlength < string.len(string) then
    return "<span font_desc='" .. font .. "'>" .. string.sub(string, 0, maxlength-6) .. "</span> ..."
    else
    return "<span font_desc='" .. font .. "'>" .. string .. "</span>"
    end]]
    if args["{state}"] == "Play" then
    music_play.visible = false
    music_pause.visible = true
    else
    music_play.visible = true
    music_pause.visible = false
    end
    return string
    end, updateMpd)
    end
    ---- WIFI Widget
    --if useWifi == true then
    -- wifiwidget = widget({ type = "textbox" })
    -- wifiwidget.width = 22
    -- wifiwidget.align = "right"
    -- --wifiimage = widget({ type = "imagebox" })
    -- wifiimage0 = awful.widget.launcher({
    -- image = beautiful.widget_wifi0,
    -- command = networkManager
    -- wifiimage0.image.visible = true
    -- wifiimage1 = awful.widget.launcher({
    -- image = beautiful.widget_wifi1,
    -- command = networkManager
    -- wifiimage1.image.visible = false
    -- wifiimage2 = awful.widget.launcher({
    -- image = beautiful.widget_wifi2,
    -- command = networkManager
    -- wifiimage2.image.visible = false
    -- wifiimage3 = awful.widget.launcher({
    -- image = beautiful.widget_wifi3,
    -- command = networkManager
    -- wifiimage3.image.visible = false
    -- wifiimage4 = awful.widget.launcher({
    -- image = beautiful.widget_wifi4,
    -- command = networkManager
    -- wifiimage4.image.visible = false
    -- -- Register Widget
    -- -- change to the desired network adapter if needed
    -- --vicious.register(wifiwidget, vicious.widgets.wifi, "~ ${link}%", 5, "wlan0")
    -- vicious.register(wifiwidget, vicious.widgets.wifi,
    -- function(widget, args)
    -- if tonumber(args["{link}"]) > 75 then
    -- wifiimage0.visible = false
    -- wifiimage1.visible = false
    -- wifiimage2.visible = false
    -- wifiimage3.visible = false
    -- wifiimage4.visible = true
    -- elseif tonumber(args["{link}"]) > 50 then
    -- wifiimage0.visible = false
    -- wifiimage1.visible = false
    -- wifiimage2.visible = false
    -- wifiimage3.visible = true
    -- wifiimage4.visible = false
    -- elseif tonumber(args["{link}"]) > 25 then
    -- wifiimage0.visible = false
    -- wifiimage1.visible = false
    -- wifiimage2.visible = true
    -- wifiimage3.visible = false
    -- wifiimage4.visible = false
    -- elseif tonumber(args["{link}"]) > 0 then
    -- wifiimage0.visible = false
    -- wifiimage1.visible = true
    -- wifiimage2.visible = false
    -- wifiimage3.visible = false
    -- wifiimage4.visible = false
    -- else
    -- wifiimage0.visible = true
    -- wifiimage1.visible = false
    -- wifiimage2.visible = false
    -- wifiimage3.visible = false
    -- wifiimage4.visible = false
    -- end
    -- return string.format("%02d%%", tonumber(args["{link}"]))
    -- end, updateWifi, wifiAdapter)
    --end
    -- NETWORK Widget
    if useNet == true then
    dnicon = widget({ type = "imagebox" })
    upicon = widget({ type = "imagebox" })
    dnicon.image = image(beautiful.widget_down)
    upicon.image = image(beautiful.widget_up)
    -- Initialize widget
    netdnwidget = widget({ type = "textbox" })
    netdnwidget.width = 55
    --netdnwidget.align = "right"
    netupwidget = widget({ type = "textbox" })
    netupwidget.width = 55
    --netupwidget.align = "right"
    -- Register widget
    -- change to the desired network adapter if needed
    --vicious.register(netdnwidget, vicious.widgets.net, "${eth0 down_kb} kB/s", 1)
    --vicious.register(netupwidget, vicious.widgets.net, "${eth0 up_kb} kB/s", 1)
    -- The following code formats the output to fill with zeroes at the beginning i.e. 013 kB/s instead of 13 kB/s.
    -- It also automatically switches to MB/s if there is more than 999 kB/s
    vicious.register(netdnwidget, vicious.widgets.net,
    function(widget, args)
    if tonumber(args["{" .. netAdapter .. " down_kb}"]) > 999 then
    return string.format("%04.1f MB/s", tonumber(args["{" .. netAdapter .. " down_mb}"]))
    else
    return string.format("%03d kB/s", tonumber(args["{" .. netAdapter .. " down_kb}"]))
    end
    end, updateNet)
    vicious.register(netupwidget, vicious.widgets.net,
    function(widget, args)
    if tonumber(args["{" .. netAdapter .. " up_kb}"]) > 999 then
    return string.format("%04.1f MB/s", tonumber(args["{" .. netAdapter .. " up_mb}"]))
    else
    return string.format("%03d kB/s", tonumber(args["{" .. netAdapter .. " up_kb}"]))
    end
    end, updateNet)
    end
    ---- BATTERY widget
    --if useBat == true then
    -- baticon = widget({ type = "imagebox" })
    -- --baticon.image = image(beautiful.widget_batfull)
    -- --Initialize widget
    -- batwidget = widget({ type = "textbox" })
    -- batwidget.width = 22
    -- batwidget.align = "right"
    -- --Register widget
    -- --vicious.register(batwidget, vicious.widgets.bat, "$1$2", 31, "BAT1")
    -- vicious.register(batwidget, vicious.widgets.bat,
    -- function(widget, args)
    -- if string.match(args[1], "[+↯]") then
    -- baticon.image = image(beautiful.widget_ac)
    -- elseif tonumber(args[2]) > 40 then
    -- baticon.image = image(beautiful.widget_batfull)
    -- elseif tonumber(args[2]) > 20 then
    -- baticon.image = image(beautiful.widget_batlow)
    -- else
    -- baticon.image = image(beautiful.widget_batempty)
    -- end
    -- if tonumber(args[2]) == 100 then
    -- return "Full"
    -- end
    -- return args[2] .. "%"
    -- end, updateBat, battery)
    --end
    -- {{{ CPU
    --if useTemp == true then
    -- -- Core Temp
    -- tempwidget = widget({ type = "textbox" })
    -- tempwidget.width = 26
    -- tempwidget.align = "right"
    -- vicious.register(tempwidget, vicious.widgets.thermal, "$1 C", updateCpu, { thermalZone, thermalData })
    -- --vicious.register(tempwidget, vicious.widgets.thermal, "$1°C", 5, { "thermal_zone0", "sys" })
    -- -- Icon
    -- tempicon = widget({ type = "imagebox" })
    -- tempicon.image = image(beautiful.widget_temp)
    --end
    -- Readout
    if useCpu == true then
    -- Icon
    cpuicon = widget({ type = "imagebox" })
    cpuicon.image = image(beautiful.widget_cpu)
    -- Core 1 Meter
    cpubar = {}
    freq = {}
    displayCores = {}
    displayCpu = {}
    for s = 1, cpuCores do
    cpubar[s] = awful.widget.progressbar()
    cpubar[s]:set_width(50)
    cpubar[s]:set_height(6)
    cpubar[s]:set_vertical(false)
    cpubar[s]:set_background_color("#434343")
    --cpubar:set_color(beautiful.fg_normal)
    cpubar[s]:set_gradient_colors({ beautiful.fg_normal, beautiful.fg_normal, beautiful.fg_normal, beautiful.bar })
    --Delete the following line if you want to put the widget on the left side of the wibox
    cpubar[s].layout = awful.widget.layout.horizontal.rightleft
    vicious.register(cpubar[s], vicious.widgets.cpu, "$" .. s, updateCpu)
    awful.widget.layout.margins[cpubar[s].widget] = { top = 6 }
    -- Frequency
    freq[s] = widget({ type = "textbox" })
    freq[s].width = 44
    freq[s].align = "right"
    --vicious.register(freq1, vicious.widgets.cpufreq, "$2 GHz", 9, "cpu0")
    vicious.register(freq[s], vicious.widgets.cpufreq,
    function(widget, args)
    return string.format("%03.1f GHz", args[2])
    end, updateCpu, "cpu" .. s - 1)
    -- Cache that shit
    vicious.cache(vicious.widgets.cpu)
    end
    end
    -- }}} CPU
    -- {{{ MEM
    if useMem == true then
    -- Icon
    memicon = widget({ type = "imagebox" })
    memicon.image = image(beautiful.widget_mem)
    -- Percentage
    --mem = widget({ type = "textbox" })
    --vicious.register(mem, vicious.widgets.mem, "$1%")
    -- Meter
    membar = awful.widget.progressbar()
    membar:set_width(50)
    membar:set_height(6)
    membar:set_vertical(false)
    membar:set_background_color("#434343")
    --membar:set_color(beautiful.fg_normal )
    membar:set_gradient_colors({ beautiful.fg_normal, beautiful.fg_normal, beautiful.fg_normal, beautiful.bar })
    --This bar should be placed on the right side of the wibox unless
    --it's a dual-screen config in which case the default (leftright)
    --layout is used... change that if you need!
    if screencount ~= dualScreen then
    membar.layout = awful.widget.layout.horizontal.rightleft
    end
    --Register the widget
    vicious.register(membar, vicious.widgets.mem, "$1", updateMem)
    -- Align progressbars
    awful.widget.layout.margins[membar.widget] = { top = 6 }
    -- MEM Usage
    --mem_total = widget({ type = "textbox" })
    --vicious.register(mem_total, vicious.widgets.mem, "$3 MB", 9)
    --mem_used = widget({ type = "textbox" })
    --vicious.register(mem_total, vicious.widgets.mem, "$2 MB", 9,)
    -- Cache that shit
    vicious.cache(vicious.widgets.mem)
    end
    -- }}} MEM
    -- Create a textclock widget
    mytextclock = awful.widget.textclock({ align = "right" }, "%H:%M")
    awful.widget.layout.margins[mytextclock] = { top = -1 }
    -- Create a systray
    mysystray = widget({ type = "systray"})
    -- Create a wibox for each screen and add it
    mywibox = {}
    mybottomwibox = {}
    mypromptbox = {}
    mylayoutbox = {}
    mytaglist = {}
    mytaglist.buttons = awful.util.table.join(awful.button({}, 1, awful.tag.viewonly),
    awful.button({ modkey }, 1, awful.client.movetotag),
    awful.button({}, 3, awful.tag.viewtoggle),
    awful.button({ modkey }, 3, awful.client.toggletag),
    awful.button({}, 4, awful.tag.viewnext),
    awful.button({}, 5, awful.tag.viewprev))
    mytasklist = {}
    mytasklist.buttons = awful.util.table.join(awful.button({}, 1, function(c)
    if not c:isvisible() then
    awful.tag.viewonly(c:tags()[1])
    end
    client.focus = c
    c:raise()
    end),
    awful.button({}, 3, function()
    if instance then
    instance:hide()
    instance = nil
    else
    instance = awful.menu.clients({ width = 250 })
    end
    end),
    awful.button({}, 4, function()
    awful.client.focus.byidx(1)
    if client.focus then client.focus:raise() end
    end),
    awful.button({}, 5, function()
    awful.client.focus.byidx(-1)
    if client.focus then client.focus:raise() end
    end))
    for s = 1, screencount do
    -- Set a screen margin for borders
    awful.screen.padding(screen[s], { top = 0 })
    -- Create a promptbox for each screen
    mypromptbox[s] = awful.widget.prompt()
    -- Create an imagebox widget which will contains an icon indicating which layout we're using.
    -- We need one layoutbox per screen.
    mylayoutbox[s] = awful.widget.layoutbox(s)
    mylayoutbox[s]:buttons(awful.util.table.join(awful.button({}, 1, function() awful.layout.inc(layouts, 1) end),
    awful.button({}, 3, function() awful.layout.inc(layouts, -1) end),
    awful.button({}, 4, function() awful.layout.inc(layouts, 1) end),
    awful.button({}, 5, function() awful.layout.inc(layouts, -1) end)))
    mylayoutbox[s].resize = false
    -- Create a taglist widget
    mytaglist[s] = awful.widget.taglist(s, awful.widget.taglist.label.all, mytaglist.buttons)
    awful.widget.layout.margins[mytaglist[s]] = { top = -2 }
    -- WARNING: In order to properly view the tasklist some lua files have been modified. For the
    -- tasklist_floating_icon icon to be placed on the left side of the task name instead of the
    -- right alignment, /usr/share/awesome/lib/awful/widget/tasklist.lua in function new(label, buttons) the
    -- variable widgets.textbox has to be modified like this:
    -- remove bg_align = "right" and
    -- modify the left margin from 2 to icon width + 2 (i.e.: 18).
    -- Create a tasklist widget
    mytasklist[s] = awful.widget.tasklist(function(c)
    return awful.widget.tasklist.label.currenttags(c, s,
    -- WARNING: Requires modified /usr/share/awesome/lib/awful/widget/tasklist.lua !!!
    -- This basically hides the application icons on the tasklist. If you don't want this or
    -- prefer not to change your tasklist.lua remove the following line!
    { hide_icon = true })
    end, mytasklist.buttons)
    awful.widget.layout.margins[mytasklist[s]] = { top = 2 }
    -- WIBOXES --
    -- Here we create the wiboxes if it's not a dual-screen layout
    if screencount ~= dualScreen then
    -- Create the wibox
    mywibox[s] = awful.wibox({ position = "top", screen = s, border_width = 0, height = 18 })
    -- Add widgets to the wibox - order matters
    mywibox[s].widgets = {
    mytaglist[s],
    mypromptbox[s],
    displaySysInfo,
    layout = awful.widget.layout.horizontal.leftright
    mytextclock,
    mylayoutbox[s],
    s == 1 and mysystray or nil,
    mytasklist[s],
    layout = awful.widget.layout.horizontal.rightleft
    mybottomwibox[s] = awful.wibox({ position = "bottom", screen = s, border_width = 0, height = 18 })
    mybottomwibox[s].widgets = {
    space, music_play, music_pause, music_stop, music_prev, music_next, space, mpdwidget,
    layout = awful.widget.layout.horizontal.leftright
    spacer,
    bracketr,
    -- spacer, batwidget, spacer, baticon, spacer,
    -- separator,
    -- spacer, wifiwidget, spacer, wifiimage0, wifiimage1, wifiimage2, wifiimage3, wifiimage4, spacer,
    -- separator,
    -- spacer, tempwidget, spacer, tempicon, spacer,
    -- separator,
    spacer, freq[1], spacer, cpubar[1], spacer,
    --cpuLabel[1], spacer,
    cpuicon, spacer,
    separator,
    spacer, membar, spacer, memicon, spacer,
    separator,
    spacer, netupwidget, spacer, upicon, spacer, separator, spacer, netdnwidget, spacer, dnicon, spacer,
    separator,
    space, pghosticon, pnoghosticon, runpicon, picon, space,
    bracketl,
    layout = awful.widget.layout.horizontal.rightleft
    end
    end
    if screencount == dualScreen then
    -- Here we create the wiboxes if it is a dual screen configuration:
    mywibox[1] = awful.wibox({ position = "top", screen = 1, border_width = 0, height = 18 })
    -- Add widgets to the wibox - order matters
    mywibox[1].widgets = {
    mytaglist[1],
    spacer,
    mypromptbox[1],
    mytasklist[1],
    layout = awful.widget.layout.horizontal.leftright
    spacer,
    mytextclock,
    -- spacer,
    mylayoutbox[1],
    -- spacer,
    -- mytasklist[1],
    layout = awful.widget.layout.horizontal.rightleft
    mybottomwibox[1] = awful.wibox({ position = "bottom", screen = 1, border_width = 0, height = 18 })
    mybottomwibox[1].widgets = {
    space, music_play, music_pause, music_stop, music_prev, music_next, space, mpdwidget,
    layout = awful.widget.layout.horizontal.leftright
    space,
    s == 1 and mysystray or nil,
    layout = awful.widget.layout.horizontal.rightleft
    mywibox[2] = awful.wibox({ position = "top", screen = 2, border_width = 0, height = 18 })
    mywibox[2].widgets = {
    space,
    mytaglist[2],
    spacer,
    mypromptbox[2],
    layout = awful.widget.layout.horizontal.leftright
    spacer,
    mytextclock,
    space,
    mylayoutbox[2],
    spacer,
    mytasklist[2],
    layout = awful.widget.layout.horizontal.rightleft
    mybottomwibox[2] = awful.wibox({ position = "bottom", screen = 2, border_width = 0, height = 18 })
    mybottomwibox[2].widgets = {
    spacer,
    bracketl,
    spacer, sys, spacer,
    separator,
    space, runpicon, picon, pghosticon, pnoghosticon, space,
    separator,
    spacer, dnicon, spacer, netdnwidget, spacer, separator, spacer, upicon, spacer, netupwidget, spacer,
    separator,
    spacer, memicon, spacer, membar, spacer,
    bracketr,
    layout = awful.widget.layout.horizontal.leftright
    spacer,
    bracketr,
    spacer, tempwidget, spacer, tempicon, spacer,
    separator,
    spacer, freq[2], spacer, cpubar[2], spacer,
    cpuLabel[2], spacer,
    cpuicon, spacer,
    separator,
    spacer, freq[1], spacer, cpubar[1], spacer,
    cpuLabel[1], spacer,
    cpuicon, spacer,
    bracketl,
    layout = awful.widget.layout.horizontal.rightleft
    end
    -- {{{ Mouse bindings
    root.buttons(awful.util.table.join(awful.button({}, 3, function() mymainmenu:toggle() end),
    awful.button({}, 4, awful.tag.viewnext),
    awful.button({}, 5, awful.tag.viewprev)))
    -- {{{ Key bindings
    globalkeys = awful.util.table.join(awful.key({ modkey, }, "Left", awful.tag.viewprev),
    awful.key({ }, "Print", function () awful.util.spawn("gnome-screenshot") end),
    awful.key({ modkey, }, "Right", awful.tag.viewnext),
    awful.key({ modkey, }, "Escape", awful.tag.history.restore),
    awful.key({ modkey, }, "j",
    function()
    awful.client.focus.byidx(1)
    if client.focus then client.focus:raise() end
    end),
    awful.key({ modkey, }, "k",
    function()
    awful.client.focus.byidx(-1)
    if client.focus then client.focus:raise() end
    end),
    awful.key({ modkey, }, "w", function() mymainmenu:show({ keygrabber = true }) end),
    --Volume manipulation
    -- awful.key({}, "XF86AudioRaiseVolume", function() awful.util.spawn("amixer set Master 5+") end),
    -- awful.key({}, "XF86AudioLowerVolume", function() awful.util.spawn("amixer set Master 5-") end),
    -- Layout manipulation
    awful.key({ modkey, "Shift" }, "j", function() awful.client.swap.byidx(1) end),
    awful.key({ modkey, "Shift" }, "k", function() awful.client.swap.byidx(-1) end),
    awful.key({ modkey, "Control" }, "j", function() awful.screen.focus_relative(1) end),
    awful.key({ modkey, "Control" }, "k", function() awful.screen.focus_relative(-1) end),
    awful.key({ modkey, }, "u", awful.client.urgent.jumpto),
    awful.key({ modkey, }, "Tab",
    function()
    awful.client.focus.history.previous()
    if client.focus then
    client.focus:raise()
    end
    end),
    -- Standard program
    awful.key({ modkey, }, "Return", function() awful.util.spawn(terminal) end),
    awful.key({ modkey, "Control" }, "r", awesome.restart),
    awful.key({ modkey, "Shift" }, "q", awesome.quit),
    awful.key({ modkey, }, "l", function() awful.tag.incmwfact(0.05) end),
    awful.key({ modkey, }, "h", function() awful.tag.incmwfact(-0.05) end),
    awful.key({ modkey, "Shift" }, "h", function() awful.tag.incnmaster(1) end),
    awful.key({ modkey, "Shift" }, "l", function() awful.tag.incnmaster(-1) end),
    awful.key({ modkey, "Control" }, "h", function() awful.tag.incncol(1) end),
    awful.key({ modkey, "Control" }, "l", function() awful.tag.incncol(-1) end),
    awful.key({ modkey, }, "space", function() awful.layout.inc(layouts, 1) end),
    awful.key({ modkey, "Shift" }, "space", function() awful.layout.inc(layouts, -1) end),
    -- Prompt
    awful.key({ modkey }, "r", function() mypromptbox[mouse.screen]:run() end),
    awful.key({ modkey }, "x",
    function()
    awful.prompt.run({ prompt = "Run Lua code: " },
    mypromptbox[mouse.screen].widget,
    awful.util.eval, nil,
    awful.util.getdir("cache") .. "/history_eval")
    end))
    clientkeys = awful.util.table.join(awful.key({ modkey, }, "f", function(c) c.fullscreen = not c.fullscreen end),
    awful.key({ modkey, }, "q", function(c) c:kill() end),
    awful.key({ modkey, "Control" }, "space", awful.client.floating.toggle),
    awful.key({ modkey, "Control" }, "Return", function(c) c:swap(awful.client.getmaster()) end),
    awful.key({ modkey, }, "o", awful.client.movetoscreen),
    awful.key({ modkey, "Shift" }, "m", function () awful.util.spawn("urxvt -T ncmpcpp -e 'ncmpcpp'") end),
    awful.key({ modkey, "Shift" }, "w", function () awful.util.spawn("chromium") end),
    awful.key({ modkey, }, "b", function () awful.util.spawn("nautilus --no-desktop") end),
    awful.key({ modkey, "Shift" }, "r", function(c) c:redraw() end),
    awful.key({ modkey, }, "t", function(c) c.ontop = not c.ontop end),
    awful.key({ modkey, }, "n", function(c) c.minimized = not c.minimized end),
    awful.key({ modkey, }, "m",
    function(c)
    c.maximized_horizontal = not c.maximized_horizontal
    c.maximized_vertical = not c.maximized_vertical
    end))
    -- Compute the maximum number of digit we need, limited to 9
    keynumber = 0
    for s = 1, screencount do
    keynumber = math.min(9, math.max(#tags[s], keynumber));
    end
    -- Bind all key numbers to tags.
    -- Be careful: we use keycodes to make it works on any keyboard layout.
    -- This should map on the top row of your keyboard, usually 1 to 9.
    for i = 1, keynumber do
    globalkeys = awful.util.table.join(globalkeys,
    awful.key({ modkey }, "#" .. i + 9,
    function()
    local screen = mouse.screen
    if tags[screen][i] then
    awful.tag.viewonly(tags[screen][i])
    end
    end),
    awful.key({ modkey, "Control" }, "#" .. i + 9,
    function()
    local screen = mouse.screen
    if tags[screen][i] then
    awful.tag.viewtoggle(tags[screen][i])
    end
    end),
    awful.key({ modkey, "Shift" }, "#" .. i + 9,
    function()
    if client.focus and tags[client.focus.screen][i] then
    awful.client.movetotag(tags[client.focus.screen][i])
    end
    end),
    awful.key({ modkey, "Control", "Shift" }, "#" .. i + 9,
    function()
    if client.focus and tags[client.focus.screen][i] then
    awful.client.toggletag(tags[client.focus.screen][i])
    end
    end))
    end
    clientbuttons = awful.util.table.join(awful.button({}, 1, function(c) client.focus = c; c:raise() end),
    awful.button({ modkey }, 1, awful.mouse.client.move),
    awful.button({ modkey }, 3, awful.mouse.client.resize))
    -- Set keys
    root.keys(globalkeys)
    -- {{{ Rules
    awful.rules.rules = {
    -- All clients will match this rule.
    rule = {},
    properties = {
    border_width = beautiful.border_width,
    border_color = beautiful.border_normal,
    size_hints_honor = false,
    focus = true,
    keys = clientkeys,
    buttons = clientbuttons
    rule = { class = "MPlayer" },
    properties = { floating = true }
    rule = { class = "pinentry" },
    properties = { floating = true }
    rule = { class = "gimp" },
    properties = { floating = true }
    { rule = { class = "firefox" },
    properties = { tag = tags[1][2] } },
    { rule = { class = "Chromium" },
    properties = { tag = tags[1][2] } },
    { rule = { class = "Pidgin" },
    properties = { tag = tags[1][3] } },
    { rule = { class = "Xchat" },
    properties = {tag = tags[1][4] } },
    -- Set Firefox to always map on tags number 2 of screen 1.
    -- { rule = { class = "Firefox" },
    -- properties = { tag = tags[1][2] } },
    -- {{{ Signals
    -- Signal function to execute when a new client appears.
    client.add_signal("manage", function(c, startup)
    -- Add a titlebar
    -- awful.titlebar.add(c, { modkey = modkey })
    -- Enable sloppy focus
    c:add_signal("mouse::enter", function(c)
    if awful.layout.get(c.screen) ~= awful.layout.suit.magnifier
    and awful.client.focus.filter(c) then
    client.focus = c
    end
    end)
    if not startup then
    -- Set the windows at the slave,
    -- i.e. put it at the end of others instead of setting it master.
    -- awful.client.setslave(c)
    -- Put windows in a smart way, only if they does not set an initial position.
    if not c.size_hints.user_position and not c.size_hints.program_position then
    awful.placement.no_overlap(c)
    awful.placement.no_offscreen(c)
    end
    end
    end)
    client.add_signal("focus", function(c) c.border_color = beautiful.border_focus end)
    client.add_signal("unfocus", function(c) c.border_color = beautiful.border_normal end)
    -- {{{ Tag signal handler - selection
    -- - ASCII tags 1 [2] 3 4...
    -- - start with tag 1 named [1] in tag setup
    for s = 1, screencount do
    for t = 1, #tags[s] do
    tags[s][t]:add_signal("property::selected", function ()
    if tags[s][t].selected then
    tags[s][t].name = "[" .. tags[s][t].name .. "]"
    else--]]
    --tags[s][t].name = tags[s][t].name:gsub("[%[%]]", "")
    --[[ end
    end)
    end
    end
    I have tried to search around for a solution to this, but I am coming up short. Any idea on how to solve this?
    Last edited by kveras (2011-11-21 09:01:47)

    First of all, did you check the wiki and forums? We'll help you, but you have to try to fix it yourself first.
    You will need to provide more info if you want help.
    Did you set up Gnome to force fallback mode?
    Did you look at the Gnome wiki article? There's a few sections that sound like what your looking to do, but the examples are USING OTHER WM's. They still might be able to point you in the right direction.

  • MDI JTable Overlap Area Repaint Problem

    Hi all,
    I have a problem for my application in MDI mode.
    I open many windows (JInternalFrame contain JTable) under JDesktopPane. Some of the windows are overlapping and when they receive update in the table, it seems repaint all of the overlapping windows, not only itself. This make my application performance become poor, slow respond for drap & drop an existing window or open a new window.
    To prove this, i make a simple example for open many simple table and have a thread to update the table's value for every 200 mill second. After i open about 20 windows, the performance become poor again.
    If anyone face the same problem with me and any suggestions to solve the problem ?
    Please help !!!!!
    Following are my sources:
    public class TestMDI extends JFrame {
        private static final long serialVersionUID = 1L;
        private JPanel contentPanel;
        private JDesktopPane desktopPane;
        private JMenuBar menuBar;
        private List<TestPanel> allScreens = new ArrayList<TestPanel>();
        private List<JDialog> freeFloatDialogs = new ArrayList<JDialog>();
        private List<JInternalFrame> mdiInternalFrm = new ArrayList<JInternalFrame>();
        int x = 0;
        int y = 0;
        int index = 0;
        private static int MDI_MODE = 0;
        private static int FREE_FLOAT_MODE = 1;
        private int windowMode = MDI_MODE;
        public TestMDI() {
            init();
        public static void main(String[] args) {
            new TestMDI().show();
        public void init() {
            contentPanel = new JPanel();
            desktopPane = new JDesktopPane();
            desktopPane.setDragMode(JDesktopPane.LIVE_DRAG_MODE);
            desktopPane.setFocusTraversalKeysEnabled(false);
            desktopPane.setFocusTraversalPolicyProvider(false);
            desktopPane.setBorder(null);
            desktopPane.setIgnoreRepaint(true);
            desktopPane.setPreferredSize(new Dimension(1000, 800));
            this.setSize(new Dimension(1000, 800));
            menuBar = new JMenuBar();
            JMenu menu1 = new JMenu("Test");
            JMenuItem menuItem1 = new JMenuItem("Open Lable Screen");
            menuItem1.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    for (int i = 1; i < 4; i++) {
                        final TestJLableScreen screen = new TestJLableScreen("Screen  " + (allScreens.size() + 1));
                        screen.startTime();
                        if (windowMode == MDI_MODE) {
                            JInternalFrame frame = createInternalFram(screen);
                            desktopPane.add(frame);
                            mdiInternalFrm.add(frame);
                            if (allScreens.size() * 60 + 100 < 1000) {
                                x = allScreens.size() * 60;
                                y = 60;
                            } else {
                                x = 60 * index;
                                y = 120;
                                index++;
                            frame.setLocation(x, y);
                            frame.setVisible(true);
                        } else {
                            JDialog dialog = createJDialog(screen);
                            freeFloatDialogs.add(dialog);
                            if (i * 60 + 100 < 1000) {
                                x = i * 60;
                                y = 60;
                            } else {
                                x = 60 * index;
                                y = 120;
                                index++;
                            dialog.setLocation(x, y);
                            dialog.setVisible(true);
                        allScreens.add(screen);
            JMenuItem menuItem2 = new JMenuItem("Open Table Screen");
            menuItem2.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    for (int i = 1; i < 4; i++) {
                        TestTableScreen screen = new TestTableScreen("Screen  " + (allScreens.size() + 1));
                        screen.startTime();
                        if (windowMode == MDI_MODE) {
                            JInternalFrame frame = createInternalFram(screen);
                            desktopPane.add(frame);
                            mdiInternalFrm.add(frame);
                            if (allScreens.size() * 60 + 100 < 1000) {
                                x = allScreens.size() * 60;
                                y = 60;
                            } else {
                                x = 60 * index;
                                y = 120;
                                index++;
                            frame.setLocation(x, y);
                            frame.setVisible(true);
                        } else {
                            JDialog dialog = createJDialog(screen);
                            freeFloatDialogs.add(dialog);
                            if (i * 60 + 100 < 1000) {
                                x = i * 60;
                                y = 60;
                            } else {
                                x = 60 * index;
                                y = 120;
                                index++;
                            dialog.setLocation(x, y);
                            dialog.setVisible(true);
                        allScreens.add(screen);
            menu1.add(menuItem1);
            menu1.add(menuItem2);
            this.setJMenuBar(menuBar);
            this.getJMenuBar().add(menu1);
            this.getJMenuBar().add(createSwitchMenu());
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            this.add(desktopPane);
            desktopPane.setDesktopManager(null);
        public JInternalFrame createInternalFram(final TestPanel panel) {
            final CustomeInternalFrame internalFrame = new CustomeInternalFrame(panel.getTitle(), true, true, true, true) {
                public void doDefaultCloseAction() {
                    super.doDefaultCloseAction();
                    allScreens.remove(panel);
            internalFrame.setPanel(panel);
            // internalFrame.setOpaque(false);
            internalFrame.setSize(new Dimension(1010, 445));
            internalFrame.add(panel);
            internalFrame.setFocusTraversalKeysEnabled(false);
            internalFrame.setFocusTraversalPolicyProvider(false);
            desktopPane.getDesktopManager();
            // internalFrame.setFocusTraversalKeysEnabled(false);
            internalFrame.setIgnoreRepaint(true);
            return internalFrame;
        public JDialog createJDialog(final TestPanel panel) {
            JDialog dialog = new JDialog(this, panel.getTitle());
            dialog.setSize(new Dimension(1010, 445));
            dialog.add(panel);
            dialog.addWindowListener(new WindowAdapter() {
                public void windowClosing(WindowEvent e) {
                    allScreens.remove(panel);
            return dialog;
        public JMenu createSwitchMenu() {
            JMenu menu = new JMenu("Test2");
            JMenuItem menuItem1 = new JMenuItem("Switch FreeFloat");
            menuItem1.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    windowMode = FREE_FLOAT_MODE;
                    for (JInternalFrame frm : mdiInternalFrm) {
                        frm.setVisible(false);
                        frm.dispose();
                        frm = null;
                    mdiInternalFrm.clear();
                    remove(desktopPane);
                    desktopPane.removeAll();
    //                revalidate();
                    repaint();
                    add(contentPanel);
                    index = 0;
                    for (JDialog dialog : freeFloatDialogs) {
                        dialog.setVisible(false);
                        dialog.dispose();
                        dialog = null;
                    freeFloatDialogs.clear();
                    for (int i = 0; i < allScreens.size(); i++) {
                        JDialog dialog = createJDialog(allScreens.get(i));
                        freeFloatDialogs.add(dialog);
                        if (i * 60 + 100 < 1000) {
                            x = i * 60;
                            y = 60;
                        } else {
                            x = 60 * index;
                            y = 120;
                            index++;
                        dialog.setLocation(x, y);
                        dialog.setVisible(true);
            JMenuItem menuItem2 = new JMenuItem("Switch MDI");
            menuItem2.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    windowMode = MDI_MODE;
                    remove(contentPanel);
                    add(desktopPane);
                    for (int i = 0; i < freeFloatDialogs.size(); i++) {
                        freeFloatDialogs.get(i).setVisible(false);
                        freeFloatDialogs.get(i).dispose();
                    freeFloatDialogs.clear();
    //                revalidate();
                    repaint();
                    for (JInternalFrame frm : mdiInternalFrm) {
                        frm.setVisible(false);
                        frm.dispose();
                        frm = null;
                    mdiInternalFrm.clear();
                    index = 0;
                    for (int i = 0; i < allScreens.size(); i++) {
                        JInternalFrame frame = createInternalFram(allScreens.get(i));
                        desktopPane.add(frame);
                        mdiInternalFrm.add(frame);
                        if (i * 60 + 100 < 1000) {
                            x = i * 60;
                            y = 60;
                        } else {
                            x = 60 * index;
                            y = 120;
                            index++;
                        frame.setLocation(x, y);
                        frame.setVisible(true);
            menu.add(menuItem1);
            menu.add(menuItem2);
            return menu;
    public class TestTableScreen extends TestPanel {
        private static final long serialVersionUID = 1L;
        JTable testTable = new JTable();
        MyTableModel tableModel1 = new MyTableModel(1);
        private boolean notRepaint = false;
        int start = 0;
        JScrollPane scrollPane = new JScrollPane();
        private Timer timmer = new Timer(200, new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                Random indexRandom = new Random();
                final int index = indexRandom.nextInt(50);
                Random valRandom = new Random();
                final int val = valRandom.nextInt(600);
                SwingUtilities.invokeLater(new Runnable() {
                    public void run() {
                        notRepaint = false;
                        TestTableScreen.this.update(index + "|" + val);
        public TestTableScreen(String title) {
            this.title = title;
            init();
            tableModel1.setTabelName(title);
        public void startTime() {
            timmer.start();
        public String getTitle() {
            return title;
        public void update(String updateStr) {
            String[] val = updateStr.split("\\|");
            if (val.length == 2) {
                int index = Integer.valueOf(val[0]);
                List vals = tableModel1.getVector();
                if (vals.size() > index) {
                    vals.set(index, val[1]);
    //                 tableModel1.fireTableRowsUpdated(index, index);
                } else {
                    vals.add(val[1]);
    //                 tableModel1.fireTableRowsUpdated(vals.size() - 1, vals.size() - 1);
                tableModel1.fireTableDataChanged();
        public TableModel getTableModel() {
            return tableModel1;
        public void init() {
            testTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
            testTable.setRowSelectionAllowed(true);
            this.testTable.setModel(tableModel1);
            int[] width = { 160, 80, 45, 98, 60, 88, 87, 88, 80, 70, 88, 80, 75, 87, 87, 41, 88, 82, 75, 68, 69 };
            TableColumnModel columnModel = testTable.getColumnModel();
            for (int i = 0; i < width.length; i++) {
                columnModel.getColumn(i).setPreferredWidth(width[i]);
            testTable.setRowHeight(20);
            tableModel1.fireTableDataChanged();
            this.setLayout(new BorderLayout());
            TableColumnModel columnMode2 = testTable.getColumnModel();
            int[] width2 = { 200 };
            for (int i = 0; i < width2.length; i++) {
                columnMode2.getColumn(i).setPreferredWidth(width2[i]);
            scrollPane.getViewport().add(testTable);
            scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
            this.add(scrollPane, BorderLayout.CENTER);
        class MyTableModel extends DefaultTableModel {
            public List list = new ArrayList();
            String titles[] = new String[] { "袨怓1", "袨怓2", "袨怓3", "袨怓4", "袨怓5", "袨怓6", "袨怓7", "袨怓8", "袨怓9", "袨怓10", "袨怓11",
                    "袨怓12", "袨怓13", "袨怓14", "袨怓15", "袨怓16", "袨怓17", "袨怓18", "袨怓19", "袨怓20", "袨怓21" };
            String tabelName = "";
            int type_head = 0;
            int type_data = 1;
            int type = 1;
            public MyTableModel(int type) {
                super();
                this.type = type;
                for (int i = 0; i < 50; i++) {
                    list.add(i);
            public void setTabelName(String name) {
                this.tabelName = name;
            public int getRowCount() {
                if (list != null) {
                    return list.size();
                return 0;
            public List getVector() {
                return list;
            public int getColumnCount() {
                if (type == 0) {
                    return 1;
                } else {
                    return titles.length;
            public String getColumnName(int c) {
                if (type == 0) {
                    return "head";
                } else {
                    return titles[c];
            public boolean isCellEditable(int nRow, int nCol) {
                return false;
            public Object getValueAt(int r, int c) {
                if (list.size() == 0) {
                    return null;
                switch (c) {
                default:
                    if (type == 0) {
                        return r + " " + c + "  test ";
                    } else {
                        return list.get(r) + "   " + c;
        public boolean isNotRepaint() {
            return notRepaint;
        public void setNotRepaint(boolean notRepaint) {
            this.notRepaint = notRepaint;
    public class TestPanel extends JPanel {
        protected String title = "";
        protected boolean needRepaint = false;
        protected boolean isFirstOpen = true;
        public String getTitle() {
            return title;
        public void setNeedRepaint(boolean flag) {
            this.needRepaint = flag;
        public boolean isNeedRepaint() {
            return needRepaint;
        public boolean isFirstOpen() {
            return isFirstOpen;
        public void setFirstOpen(boolean isFirstOpen) {
            this.isFirstOpen = isFirstOpen;
    public class TestJLableScreen extends TestPanel {
        private static final long serialVersionUID = 1L;
        private JLabel[] allLables = new JLabel[20];
        private Timer timmer = new Timer(20, new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                Random indexRandom = new Random();
                final int index = indexRandom.nextInt(10);
                Random valRandom = new Random();
                final int val = valRandom.nextInt(600);
                SwingUtilities.invokeLater(new Runnable() {
                    public void run() {
                        TestJLableScreen.this.setNeedRepaint(true);
                        TestJLableScreen.this.update(index + "|" + val);
        public TestJLableScreen(String title) {
            this.title = title;
            init();
        public void startTime() {
            timmer.start();
        public String getTitle() {
            return title;
        public void update(String updateStr) {
            String[] val = updateStr.split("\\|");
            if (val.length == 2) {
                int index = Integer.valueOf(val[0]);
                allLables[index * 2 + 1].setText(val[1]);
        public void init() {
            this.setLayout(new GridLayout(10, 2));
            boolean flag = true;
            for (int i = 0; i < allLables.length; i++) {
                allLables[i] = new JLabel() {
                    // public void setText(String text) {
                    // super.setText(text);
                    // // System.out.println("  setText " + getTitle() + "   ; " + this.getName());
                    public void paint(Graphics g) {
                        super.paint(g);
                        // System.out.println("  paint " + getTitle() + "   ; " + this.getName());
                    // public void repaint() {
                    // super.repaint();
                    // System.out.println("  repaint " + getTitle() + "   ; " + this.getName());
                allLables[i].setName("" + i);
                if (i % 2 == 0) {
                    allLables[i].setText("Name " + i + "  : ");
                } else {
                    allLables[i].setOpaque(true);
                    if (flag) {
                        allLables[i].setBackground(Color.YELLOW);
                        flag = false;
                    } else {
                        allLables[i].setBackground(Color.CYAN);
                        flag = true;
                    allLables[i].setText(i * 8 + "");
            for (int i = 0; i < allLables.length; i++) {
                this.add(allLables[i]);
    public class CustomeInternalFrame extends JInternalFrame {
        protected TestPanel panel;
        public CustomeInternalFrame() {
            this("", false, false, false, false);
        public CustomeInternalFrame(String title) {
            this(title, false, false, false, false);
        public CustomeInternalFrame(String title, boolean resizable) {
            this(title, resizable, false, false, false);
        public CustomeInternalFrame(String title, boolean resizable, boolean closable) {
            this(title, resizable, closable, false, false);
        public CustomeInternalFrame(String title, boolean resizable, boolean closable, boolean maximizable) {
            this(title, resizable, closable, maximizable, false);
        public CustomeInternalFrame(String title, boolean resizable, boolean closable, boolean maximizable,
                boolean iconifiable) {
            super(title, resizable, closable, maximizable, iconifiable);
        public TestPanel getPanel() {
            return panel;
        public void setPanel(TestPanel panel) {
            this.panel = panel;

    i had the same problem with buttons and it seemed that i overlayed my button with something else...
    so check that out first do you put something on that excact place???
    other problem i had was the VAJ one --> VisualAge for Java (terrible program)
    it does strange tricks even when you don't use the drawing tool...
    dunno 2 thoughts i had... check it out...
    SeJo

  • How can a text box overlap an object?

    I have a 1TB late 2012 iMac. Yosemite version 10.10.2 is installed.
    Processor: 2.7 GHz Intel Core i5
    Memory: 8 GB 1600 MHz DDR3
    Graphics NVDIA GeForce GT 640M 512MB
    How can I place a text box overlapping an object?
    I have pasted a photo from an email into a Pages document and I'd like to put on top of it.
    I have tried as many Help topics as seemed relevant, but 'Move Backwards' and 'Move to front' are greyed out.
    I have been confident using this technique with Mountain Lion, but now I'm stuck.
    I am old and self-taught.

    Assuming you have Pages 5.x
    Click on the object > Toolbar > Format > Arrange > Stay on Page > Text Wrap > None
    Now you can move it. It probably was inline and part of the text.
    You can not move it under the general body text however, unless you move it to the Section Masters in which case it will appear on every single page of that Section.
    You will need to create a Textbox to put your text into and move that on top of the object.
    Peter

  • Need help with overlapping divs!

    Hey everyone,
    I'm working on another website and I have come up against a common problem for newbie designers from what I hear, the dreaded overlapping div problem!  I have a 2 column fixed layout with a floating left div.  My left div has my nav bar and various images.  When my main content div has more content than the left floating div, the left div border does not reach the footer!  Until now, I have gotten by with just hitting return in my left column div until it reaches the footer.  I am sure it is not the right way to do it but it has worked so far.  The problem is, now one of the pages has the left column div overlapping onto the footer!  I did some reading and I am guessing it involves either the box properties or clear float which I am not too familiar with.
    Any advice would be stellar!  I know this is just another stumbling block to get over but I would feel so much better if I was doing it the right way. 
    Here are screens of my issue,
    And here is my code for the page in question.
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <link rel="shortcut icon" href="http://www.xldesignsonline.com/fchi/favicon.ico">
    <title>Full Circle Home Inspections</title>
    <link href="_css/main.css" rel="stylesheet" type="text/css" /><!--[if IE 5]>
    <style type="text/css">
    /* place css box model fixes for IE 5* in this conditional comment */
    .twoColFixLtHdr #sidebar1 { width: 230px; }
    </style>
    <![endif]--><!--[if IE]>
    <style type="text/css">
    /* place css fixes for all versions of IE in this conditional comment */
    .twoColFixLtHdr #sidebar1 { padding-top: 30px; }
    .twoColFixLtHdr #mainContent { zoom: 1; }
    /* the above proprietary zoom property gives IE the hasLayout it needs to avoid several bugs */
    </style>
    <![endif]-->
    <style type="text/css">
    <!--
    body {
         background-color: #FFF;
    .paragraphLead {
         font-size: 110%;
         font-weight: bold;
    a:link {
         text-decoration: none;
         color: #CF0;
    a:visited {
         text-decoration: none;
    a:hover {
         text-decoration: none;
    a:active {
         text-decoration: none;
    #apDiv1 {
         position:absolute;
         width:236px;
         height:157px;
         z-index:1;
         left: 692px;
         top: 372px;
    #apDiv2 {
         position:absolute;
         width:200px;
         height:192px;
         z-index:2;
         left: 697px;
         top: 1443px;
    #apDiv3 {
         position:absolute;
         width:158px;
         height:204px;
         z-index:2;
         left: 643px;
         top: 1502px;
    -->
    </style>
    <script src="Scripts/swfobject_modified.js" type="text/javascript"></script>
    </head>
    <body class="twoColFixLtHdr">
    <div id="container">
      <div id="header">
        <h1><!-- end #header -->
      </h1></div>
      <div id="sidebar1">
        <h3 align="center">
          <object id="FlashID" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="200" height="620">
            <param name="movie" value="_assets/menu.swf" />
            <param name="quality" value="high" />
            <param name="wmode" value="opaque" />
            <param name="swfversion" value="6.0.65.0" />
            <!-- This param tag prompts users with Flash Player 6.0 r65 and higher to download the latest version of Flash Player. Delete it if you don’t want users to see the prompt. -->
            <param name="expressinstall" value="Scripts/expressInstall.swf" />
            <!-- Next object tag is for non-IE browsers. So hide it from IE using IECC. -->
            <!--[if !IE]>-->
            <object type="application/x-shockwave-flash" data="_assets/menu.swf" width="200" height="620">
              <!--<![endif]-->
              <param name="quality" value="high" />
              <param name="wmode" value="opaque" />
              <param name="swfversion" value="6.0.65.0" />
              <param name="expressinstall" value="Scripts/expressInstall.swf" />
              <!-- The browser displays the following alternative content for users with Flash Player 6.0 and older. -->
              <div>
                <h4>Content on this page requires a newer version of Adobe Flash Player.</h4>
                <p><a href="http://www.adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" width="112" height="33" /></a></p>
              </div>
              <!--[if !IE]>-->
            </object>
            <!--<![endif]-->
          </object>
        </h3>
        <p align="center"> </p>
        <p align="center"> </p>
        <p align="center"><a href="http://www.nachi.org/"><img src="_images/interNACHI.png" alt="InterNACHI" width="190" height="164" border="0" /></a></p>
        <p align="center"> </p>
        <p align="center"> </p>
        <p align="center"><a href="http://www.nachi.org/education.htm"><img src="_images/education-seal-small.gif" alt="education seal" width="150" height="150" border="0" /></a></p>
        <p align="center"> </p>
        <p align="center"> </p>
        <p align="center"><a href="http://www.iac2.org/"><img src="_images/iac2-all.gif" width="174" height="126" alt="IAC" /></a></p>
        <p align="center"> </p>
        <p align="center"> </p>
        <p align="center"><a href="http://www.inspectopia.com/profile.b.507.r.16181.u.03bcfb.html"><img src="_images/logo_top.png" alt="Inspectopedia" width="190" height="45" border="0" /></a></p>
        <p align="center"> </p>
        <p align="center"> </p>
        <p align="center"><a href="http://www.energystar.gov/"><img src="_images/img_energy_star_partner.jpg" width="160" height="191" alt="Energy Star Partner" /></a></p>
        <p align="center"> </p>
        <p align="center"> </p>
        <p align="center"><a href="http://cjenterprises.myshaklee.com/us/en/welcome.html#"><img src="_images/Shaklee.gif" alt="Shaklee" width="119" height="160" border="0" /></a></p>
        <p align="center"> </p>
        <p align="center"> </p>
        <p align="center"><a href="http://activerain.com/"><img src="_images/ARLogoSmall.gif" alt="Active Rain" width="135" height="36" border="0" /></a></p>
        <p align="center"> </p>
        <p align="center"> </p>
        <p align="center"><a href="http://www.insiderpages.com/b/15246780294"><img src="_images/insider_pages.gif" alt="Insider Pages" width="89" height="37" border="0" /></a></p>
    <p align="center"> </p>
        <p align="center"> </p>
        <p align="center"> </p>
        <p align="center"> </p>
        <p align="center"> </p>
        <p align="center"> </p>
        <p align="center"> </p>
        <p align="center"> </p>
        <p align="center"> </p>
        <p align="center"> </p>
        <p align="center"> </p>
        <p align="center"> </p>
        <p align="center"> </p>
        <p align="center"> </p>
        <p align="center"> </p>
        <p align="center"> </p>
        <p align="center"> </p>
        <p align="center"> </p>
        <p align="center"> </p>
        <p align="center"> </p>
        <p align="center"> </p>
        <p align="center"> </p>
        <p align="center"> </p>
        <p align="center"> </p>
        <p align="center"> </p>
        <p align="center"> </p>
        <p align="center"> </p>
        <p align="center"> </p>
        <p align="center"> </p>
        <p align="center"> </p>
      </div>
      <div id="mainContent">
        <h2>Radon Gas Inspection</h2>
        <div id="paragraphFloat">
          <h5>What Is Radon?</h5>
          <p> Radon is a cancer causing radioactive gas. You cannot see, smell or taste radon, but it may be a problem in your home. The Surgeon General has warned that radon is the second leading cause of lung cancer in the United States today. </p>
          <div id="apDiv1">
        <div align="center"><a href="http://www.epa.gov/radon/video/epa-epu.wmv"><img src="_images/psa_revised.jpg" alt="What Is Radon?" width="200" height="172" border="0" /></a></div></div></div>
        <p>If you smoke and your home has high radon levels, you're at high risk for developing lung cancer. Some scientific studies of radon exposure indicate that children may be more sensitive to radon. This may be due to their higher respiration rate and their rapidly dividing cells, which may be more vulnerable to radiation damage. </p>
    <p> </p>
        <h5>Why Is It Dangerous?</h5>
    <p> The U.S. Environmental Protection Agency (US EPA) and the Surgeon General's Office have estimated that as many as 20,000 lung cancer deaths are caused each year by radon. Radon is the second leading cause of lung cancer. Radon-induced lung cancer costs the United States over $2 billion dollars per year in both direct and indirect health care costs.</p>
    <p>According to the US EPA, nearly 1 in 3 homes checked in seven states and on three Indian lands had screening levels over 4 pCi/L, the EPA's recommended action level for radon exposure.</p>
    <p>The alpha radiation emitted by radon is the same alpha radiation emitted by other alpha generating radiation sources such as plutonium.</p>
    <p>A family whose home has radon levels of 4 pCi/l is exposed to approximately 35 times as much radiation as the Nuclear Regulatory Commission would allow if that family was standing next to the fence of a radioactive waste site. (25 mrem limit, 800 mrem exposure)</p>
    <p> At the 4 pCi/l EPA action guideline level, radon carries approximately 1000 times the risk of death as any other EPA carcinogen. It is important to note that the action level is not a safe level, as there are no &quot;safe&quot; levels of radon gas.</p>
    <p> </p>
    <h5>How Does It Get Into My Home?</h5>
    <p> Radon is a radioactive gas. It comes from the natural decay of uranium that is found in nearly all soils. It typically moves up through the ground to the air above and into your home through cracks and other holes in the foundation. Your home traps radon inside, where it can build up. Any home may have a radon problem. This means new and old homes, well-sealed and drafty homes, and homes with or without basements.</p>
    <p> Radon from soil gas is the main cause of radon problems. Sometimes radon enters the home through well water. In a small number of homes, the building materials can give off radon, too. However, building materials rarely cause radon problems by themselves.</p>
    <p><strong>Radon gets in through:</strong></p>
    <ul>
      <li>Cracks in solid floors
        <div id="apDiv3">
          <div align="center"><a href="http://www.fullcirclehomeinspections.com/_assets/CitizensGuideRadon.pdf"><img src="_images/citguidecoverradon.jpg" alt="Guide To Radon" width="154" height="200" border="0" /></a></div>
        </div>
      </li>
      <li>Construction joints</li>
      <li>Cracks in walls</li>
      <li>Gaps in suspended floors</li>
      <li>Gaps around service pipes</li>
      <li>Cavities inside walls</li>
      <li>Surrounding water supply</li>
    </ul>
    <p> </p>
    <h5>What Can I Do?</h5>
    <p> Radon is a national environmental health problem. Elevated radon levels have been discovered in every state. The US EPA estimates that as many as 8 million homes throughout the country have elevated levels of radon. Current state surveys show that 1 home in 5 has elevated radon levels.</p>
    <p> Testing is the only way to know your home's radon levels. There are no immediate symptoms that will alert you to the presence of radon. It typically takes years of exposure before any problems surface. </p>
    <p>Let <strong>Full Circle Home Inspections</strong> ensure your family and your home are protected and safe from radon exposure!</p>
    <p> </p>
    <h5>Radon Myths</h5>
    <p><strong><em>MYTH:</em> Scientists are not sure that radon really is a problem.</strong></p>
    <blockquote>
      <p><strong><em>FACT:</em></strong> Although some scientists dispute the precise number of deaths due to radon, all the major health organizations (like the Centers for Disease Control and Prevention, the American Lung Association and the American Medical Association) agree with estimates that radon causes thousands of preventable lung cancer deaths every year. This is especially true among smokers, since the risk to smokers is much greater than to non-smokers.</p>
    </blockquote>
    <p><strong><em>MYTH:</em> Radon testing is difficult, time-consuming and expensive.</strong></p>
    <blockquote>
      <p><strong><em>FACT:</em></strong> Radon testing is easy. You can test your home yourself or hire a qualified radon test company. Either approach takes only a small amount of time and effort.</p>
    </blockquote>
    <p><strong><em>MYTH:</em> Homes with radon problems can't be fixed.</strong></p>
    <blockquote>
      <p><strong><em>FACT:</em></strong> There are simple solutions to radon problems in homes. Hundreds of thousands of homeowners have already fixed radon problems in their homes. Most homes can be fixed for about the same cost as other common home repairs; check with one or more qualified mitigators. Call your <a href="http://www.epa.gov/radon/whereyoulive.html">state radon office</a> for help in identifying qualified mitigation contractors.</p>
    </blockquote>
    <p><strong><em>MYTH:</em> Radon affects only certain kinds of homes.</strong></p>
    <blockquote>
      <p><strong><em>FACT: </em></strong>House construction can affect radon levels. However, radon can be a problem in homes of all types: old homes, new homes, drafty homes, insulated homes, homes with basements, and homes without basements. Local geology, construction materials, and how the home was built are among the factors that can affect radon levels in homes.</p>
    </blockquote>
    <p><strong><em>MYTH:</em> Radon is only a problem in certain parts of the country.</strong></p>
    <blockquote>
      <p><strong><em>FACT:</em></strong> High radon levels have been found in every state. Radon problems do vary from area to area, but the only way to know your radon level is to test.</p>
    </blockquote>
    <p><strong><em>MYTH:</em> A neighbor's test result is a good indication of whether your home has a problem.</strong></p>
    <blockquote>
      <p><strong><em>FACT:</em></strong> It's not. Radon levels can vary greatly from home to home. The only way to know if your home has a radon problem is to test it.</p>
    </blockquote>
    <p><strong><em>MYTH:</em> Everyone should test their water for radon.</strong></p>
    <blockquote>
      <p><strong><em>FACT:</em></strong> Although radon gets into some homes through water, it is important to first test the air in the home for radon. If your water comes from a public water supply that uses ground water, call your water supplier. If high radon levels are found and the home has a private well, call the Safe Drinking Water Hotline at 1-800-426-4791 for information on testing your water.</p>
    </blockquote>
    <p><strong><em>MYTH:</em> It's difficult to sell homes where radon problems have been discovered.</strong></p>
    <blockquote>
      <p><strong><em>FACT:</em></strong> Where radon problems have been fixed, home sales have not been blocked or frustrated. The added protection is some times a good selling point.</p>
    </blockquote>
    <p><strong><em>MYTH:</em> I've lived in my home for so long, it doesn't make sense to take action now.</strong></p>
    <blockquote>
      <p><strong><em>FACT: </em></strong>You will reduce your risk of lung cancer when you reduce radon levels, even if you've lived with a radon problem for a long time.</p>
    </blockquote>
    <p><strong><em>MYTH:</em> Short-term tests can't be used for making a decision about whether to fix your home.</strong></p>
    <blockquote>
      <p><strong><em>FACT:</em> </strong>A short-term test, followed by a second short-term test* can be used to decide whether to fix your home. However, the closer the average of your two short-term tests is to 4 pCi/L, the less certain you can be about whether your year-round average is above or below that level. Keep in mind that radon levels below 4 pCi/L still pose some risk. Radon levels can be reduced in most homes to 2 pCi/L or below.</p>
      <p> </p>
      <p> </p>
      <p> </p>
      <p align="center"><img src="_images/CA-3.jpg" width="520" height="207" /></p>
    </blockquote>
      </div>
      <div id="footer">
        <p align="center"><strong>© 2009 XL Designs Online - All Rights Reserved </strong></p>
      </div>
    <!-- end #container --></div>
    <script type="text/javascript">
    <!--
    swfobject.registerObject("FlashID");
    //-->
    </script>
    </body>
    </html>
    And here is my CSS if needed,
    @charset "utf-8";
    body  {
         font: 100% Verdana, Arial, Helvetica, sans-serif;
         background: #666666;
         margin: 0; /* it's good practice to zero the margin and padding of the body element to account for differing browser defaults */
         padding: 0;
         text-align: center; /* this centers the container in IE 5* browsers. The text is then set to the left aligned default in the #container selector */
         color: #000000;
    .twoColFixLtHdr #container {
         width: 950px; /* the auto margins (in conjunction with a width) center the page */
         border: 1px solid #000000;
         text-align: left; /* this overrides the text-align: center on the body element. */
         margin-top: 20px;
         margin-right: auto;
         margin-bottom: 20px;
         margin-left: auto;
         background-color: #557050;
    .twoColFixLtHdr #header {
         border-bottom: 1px solid #000000;
         height: 250px;
         background-color: #DDDDDD;
         padding-top: 0;
         padding-right: 10px;
         padding-bottom: 0;
         padding-left: 20px;
         background-image: url(../_images/homebanner1.png);
    .twoColFixLtHdr #header h1 {
         margin: 0; /* zeroing the margin of the last element in the #header div will avoid margin collapse - an unexplainable space between divs. If the div has a border around it, this is not necessary as that also avoids the margin collapse */
         padding: 20px 0; /* using padding instead of margin will allow you to keep the element away from the edges of the div */
         text-align: center;
         font-size: 48px;
         font-family: Tahoma, Geneva, sans-serif;
         color: #000;
    .twoColFixLtHdr #sidebar1 {
         float: left; /* since this element is floated, a width must be given */
         width: 200px;
         border-right: 1px solid #000000;
         background-color: #557050;
         padding-top: 0px;
         padding-right: 10px;
         padding-bottom: 15px;
         padding-left: 10px;
    .twoColFixLtHdr #mainContent {
         margin-top: 0;
         margin-right: 0;
         margin-bottom: 0;
         margin-left: 250px;
         padding-top: 0;
         padding-right: 20px;
         padding-bottom: 0;
         padding-left: 20px;
         text-align: left;
    .twoColFixLtHdr #mainContent h1 {
         font-size: 48px;
         font-family: "Arial Rounded MT Bold";
         font-weight: bold;
    .twoColFixLtHdr #mainContent h2 {
         font-family: "Arial Rounded MT Bold";
         font-size: 32px;
    .twoColFixLtHdr #mainContent h3 {
         font-family: Georgia, "Times New Roman", Times, serif;
         font-style: italic;
         color: #CF0;
         font-size: 125%;
    .twoColFixLtHdr #mainContent h5 {
         font-size: 120%;
    .twoColFixLtHdr #footer {
         padding: 20px 10px 20px 20px;
         border-top: 1px solid #000000;
         background-color: #A3A3A3;
         font-family: Arial, Helvetica, sans-serif;
    .twoColFixLtHdr #footer p {
         margin: 0; /* zeroing the margins of the first element in the footer will avoid the possibility of margin collapse - a space between divs */
         padding: 10px 0; /* padding on this element will create space, just as the the margin would have, without the margin collapse issue */
    .fltrt { /* this class can be used to float an element right in your page. The floated element must precede the element it should be next to on the page. */
         float: right;
         margin-left: 8px;
    .fltlft { /* this class can be used to float an element left in your page */
         float: left;
         margin-right: 8px;
    .clearfloat { /* this class should be placed on a div or break element and should be the final element before the close of a container that should fully contain a float */
         clear:both;
        height:0;
        font-size: 1px;
        line-height: 0px;
    #paragraphFloat {
         width: 350px;
    #paragraphFloat2 {
         width: 350px;
    Please if anyone knows what I'm doing wrong please please let me know!  Since I am learning, I really want to get main concepts like this down so I am not constantly doing things the hard way!  Thank you! 
    Jayson

    1) Regarding validation, what does it do?
    It validates by telling you where your code isn't er... valid.  Sometimes the results are a bit jumbled but if you work through them one at a time and revalidate, it's a good way to learn.  If you fix all of the errors shown up through the validator you should end up with standards compliant code.  Not necessarily the best, most efficient code you can write but at least it will be valid and it helps you spot errors that hours of code-staring never seems to find.
    I don't use the DW validation tool because I find the W3c one easier.
    The W3c validator has a check box of HTML Tidy which can tidy up your code but it's not always as easy to see what changes.
    2) I know the <p> tag for spacing is wrong, I could just feel it in my bones.  I just didn't know what else to do.  If I <br> all the way down won't the code be just as cluttered?
    You're obviously a born web coder!
    <br> will bloat your page if you use them to position elements.
    Here you need to get used to a) the Block Model and b) CSS positioning.  Once you crack these, CSS opens up for you and becomes a little more intuitive.
    if you have two elements on top of each other rather than push them apart with other elements you do it with padding and/or margin.  There are things to watch out for here namely, collapsing margins but if you start to read up on the above, you'll get it.
    I just thought of something.  If I add a div in main content, align it to the bottom center with CSS, use a line break between it and the text above, and add the image in question in the new div, will the spacing between the text and image work itself out?  I just really want to get out of the <p> bad habit.
    Keep thinking!  Web design is not like desktop publishing or print.  Elements on a HTML page don't behave like paragraphs on a page.  Once you begin to figure out why not it all gets a little easier.
    If you want an image at the bottom an element you put that at the end of the content in that element.  Then you need to ensure there is no margin, padding or border between the img element and the next element (your footer).  HTML elements come with some styling that is applied by default in the browser.  Many web developers include a rule like this:
    body {
    margin: 0;
    padding:0;
    This sets the margin and padding to zero of course and it's purpose is to override the defaults.  Some people advocate applying similar rules to all elements and if your interested try googling Eric Meyer who has written about it online.
    One of the key purposes of CSS is to take styling out of the page.  It's leaner, more efficient for the viewer and the coder and helps with site management.
    3) AP divs are weird, and I did only use as a last resort.
    See? You're a natural!
    The reason is I am confused by the float and clear float classes.  My left column is floated left and that element is what I was having problems understanding.  I tried to make new divs and float right but I screwed it all up.  I am sure I am just not applying the clear float in the right places.
    Getting the hang of floating is key to CSS positioning.  You use a float if you want two elements to sit side by side on the page.  It disrupts the "document flow."  Ordinarily HTML elements are rendered one after the other, on top of each other.  Floating an element takes it out of the document flow and allows other elements to occupy its space.  When you float an element it should always have a width.  If the element below it also has a width, that width has to be sufficiently narrow to allow it to occupy the space.  In short, floated elements can't be wider than their containing element.
    The clear property is used after a float to stop an element occupying the space left by a floated element.  It works but confuses the heck out of me!
    So that leads me to my final point.  I am a novice too!  I might have fluffed a few of the technical points above but it's pretty much there.
    Regards
    Martin

  • Mapviewer legend and note overlap

    I am using Mapviewer 11ea and wish to place a legend above a note in the SOUTH EAST corner of my map. The note is defined in the config file and the legend is provided in the map request. The legend itself seems to create a box larger than required and overlaps the note text below. See the image at http://www.geocities.com/ozspatial/legend-note-overlap.jpg showing the overlap and the large amount of white space at the bottom of the legend.
    The legend component of the request is from the default mapviewer request and looks like:
    <legend bgstyle="fill:#ffffff;stroke:#ff0000" profile="MEDIUM" position="SOUTH_EAST">
              <column>
                <entry text="Map Legend" is_title="true" />
                <entry style="M.STAR" text="center point" />
                <entry style="M.CITY HALL 3" text="cities" />
                <entry style="M.CITY HALL 4" text="big cities" />
                <entry is_separator="true" />
                <entry style="C.ROSY BROWN STROKE" text="state boundary" />
                <entry style="L.PH" text="interstate highway" />
                <entry text="County population:" />
                <entry style="V.COUNTY_POP_DENSITY" tab="1" />
              </column>
      </legend>Does anyone know how to reduce the white space in the legend or some other way to avoid the overlap? (whilst still placing both note and legend in the SOUTH EAST corner)
    thanks,
    Ross.

    Hi Ross,
    I don't think you will be able to reduce the white space at the bottom, but there are some parameters on the legend that you can use.
    1) In overlap situations you can set the transparency of the legend:
    <legend bgstyle="fill:#ffffff;fill-opacity:128;stroke:#ff0000" profile="MEDIUM" position="SOUTH_EAST">
    2) For the profile value there is an internal size defined. In your figure I can note that the advanced style items are also overlapping, which means that the internal size MEDIUM seems not appropriate for this legend. You can assign a height for a legend entry:
    <entry style="V.CA INCOME 2" tab="1" height="150"/>
    3) With version 11 there are two new parameters (location_x and location_y) for the legend that can be used to put the legend in any position. In this case the position attribute is ignored if defined.
    <legend bgstyle="fill:#ffffff;fill-opacity:128;stroke:#ff0000" profile="MEDIUM" location_x="20" location_y="50">
    Joao

  • Error:Could not load type from assembly Culture=neutral, PublicKeyToken=null' because it contains an object field at offset 75 that is incorrectly aligned or overlapped by a non-object field.

    I got an error while I creating a structure.
    [FieldOffset(72)]
    [MarshalAs(UnmanagedType.ByValArray,SizeConst= 3)]
    public int[] DC;
    [FieldOffset(75)]
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
    public float[] WIN;
    [FieldOffset(83)]
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
    public byte[] name;
    [FieldOffset(103)]
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
    public byte[] SET;
    [FieldOffset(106)]
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50)]
    public byte[] ID;
    Error as like this-->object field at offset 75 that is incorrectly aligned or overlapped by a non-object field. But here size constant is 3 so I think after 72 offset will be 75..If I change the offset to 76 it will works fine. I think reason is that
    size of int is 4. After changing that code will be like this.
    [FieldOffset(72)]
    [MarshalAs(UnmanagedType.ByValArray,SizeConst= 3)]
    public int[] DC;
    [FieldOffset(76)]
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
    public float[] WIN;
    [FieldOffset(84)]
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
    public byte[] name;
    [FieldOffset(104)]
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
    public byte[] SET;
    [FieldOffset(107)]
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50)]
    public byte[] ID;
    But at that time I got the  error as object field at offset 107 that is incorrectly aligned or overlapped by a non-object field..Can anyone tell me what is the main reason behind this..
    Thanks..

    Hi,
    Please firstly take a look at this documentation:
    MarshalAsAttribute.SizeConst Field
    Indicates the number of   elements in the fixed-length array or the number of characters (not bytes) in   a string to import
    Change your code like this should work:
    [FieldOffset(72)]
    [MarshalAs(UnmanagedType.ByValArray,SizeConst= 3)]
    public int[] DC;
    [FieldOffset(84)]//72+4*3
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
    public float[] WIN;
    [FieldOffset(116)]//84+4*8
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
    public byte[] name;
    [FieldOffset(136)]
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
    public byte[] SET;
    [FieldOffset(139)]
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50)]
    public byte[] ID;
    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click
    HERE to participate the survey.

Maybe you are looking for

  • I lose network connection after MacBook Wakes from Sleep

    I upgraded to Mountain Lion on my 27" iMac and 15" MacBook Pro. iMac is doing fine. MacBook Pro, however, when it wakes from sleep, seems to have the network untility crash. So the computer wakes from sleep, and the little status bar radar thing does

  • Publishing bug with FTP servers - Spaces at end of file/folder names

    I'm sharing what I've found after lots of troubleshooting with my Mom's iWeb website. I originally came across this in the previous version of iWeb, and have seen it again in the current version. For the sake of this example, she had an image gallery

  • How to pass another attribute with the attributes in the select

    i have multi select that will be generated from the database but how do a pass a parameter associated on of the selected item other then the one selected: for instance if I wanted to pass the capital of the state as hidden if a select any of these se

  • Pan and Scan and zoom

    The pan,scan and zoom on a still photo seems to be much smoother on the cheaper application 'Photo to Movie' than it is with FCE. Is it thus better to do those movements on a still on PtoM and then import them into FCE ? I am working with FCE 2. Anyo

  • WLC 4400 and multiple authentication servers e.g. RADIUS, ACS

    WLC 4400 and multiple authentication servers e.g. RADIUS, ACS Can the WCL 4400 be set up to use multiple RADIUS servers? The user accounts for accessing wireless would use a RADIUS server. The administrative accounts for the WLC would reside on an AC