
  // ================================================

    Basis.set_element_position = function (element, options) {

      var element = Basis.get_element(element);

      if (element) {

        var options   = options ? options : {};
        var positions = {};

        options["x"]  = Basis.is_number(options["x"]) ? Basis.parse_number(options["x"]) : 0;
        options["y"]  = Basis.is_number(options["y"]) ? Basis.parse_number(options["y"]) : 0;

        switch (options["mode"]) {

          case "relative":

            element.style.position = "relative";

            var relative_to = Basis.get_element(options["relative_to"]);

            if (relative_to) {

              element.style.left = 0;
              element.style.top  = 0;

              positions["element"]     = MochiKit.Style.getElementPosition(element);
              positions["relative_to"] = MochiKit.Style.getElementPosition(relative_to);

              positions["element"]     = positions["element"]     ? positions["element"]     : {"x" : 0, "y" : 0};
              positions["relative_to"] = positions["relative_to"] ? positions["relative_to"] : {"x" : 0, "y" : 0};

              var offset = {"x" : ((positions["relative_to"].x - positions["element"].x) + options["x"]),
                            "y" : ((positions["relative_to"].y - positions["element"].y) + options["y"])};

              element.style.left = offset.x + "px";
              element.style.top  = offset.y + "px";

            } // end if

            break;

          case "absolute":
          default:

            element.style.position = "absolute";

            var relative_to = Basis.get_element(element.offsetParent);

            if (relative_to) {

              positions["relative_to"] = MochiKit.Style.getElementPosition(relative_to);

              MochiKit.Style.setElementPosition(element, {"x" : -1 * (positions["relative_to"].x - options["x"]),
                                                          "y" : -1 * (positions["relative_to"].y - options["y"])});

            } // end if

            break;

        } // end switch

      } // end if

    }; // end Basis.set_element_position()

    Basis.element_move = function (element, options) {

      var element     = Basis.get_element(element);

      var duration    = Basis.is_number(options["duration"]) ? options["duration"] : 0.50;
      var x           = Basis.is_number(options["x"])        ? options["x"]        : null;
      var y           = Basis.is_number(options["y"])        ? options["y"]        : null;

      if (element && x && y) {

        element.style.display = "";

        var xTween   = new Tween(element.style, "left", Tween.regularEaseOut, MochiKit.Style.getElementPosition(element).x, x, duration, "px");
        var yTween   = new Tween(element.style, "top",  Tween.regularEaseOut, MochiKit.Style.getElementPosition(element).y, y, duration, "px");

        var parallel = new Parallel();

        parallel.addChild(xTween);
        parallel.addChild(yTween);
        parallel.onMotionFinished = Basis.is_function(options["afterFinish"]) ? options["afterFinish"] : function () {};
        parallel.start();

        if (options["start"] !== false) {

          parallel.start();

        } // end if

        return parallel;

      } // end if

    }; // end Basis.element_move()

    Basis.element_fade = function (element, options) {

      var element     = Basis.get_element(element);

      options["from"] = (options["from"] == "current") ? element.style.opacity : options["from"];
      options["to"]   = (options["to"]   == "current") ? element.style.opacity : options["to"];

      var duration    = Basis.is_number(options["duration"]) ? options["duration"]     : 0.50;
      var from        = Basis.is_number(options["from"])     ? (options["from"] * 100) : 100;
      var to          = Basis.is_number(options["to"])       ? (options["to"] * 100)   : 0;

      if (element) {

        element.style.display = "";

        var opacityTween = new OpacityTween(element, Tween.regularEaseOut, from, to, duration);
        opacityTween.onMotionFinished = Basis.is_function(options["afterFinish"]) ? options["afterFinish"] : function () {};

        if (options["start"] !== false) {

          opacityTween.start();

        } // end if

        return opacityTween;

      } // end if

    }; // end Basis.element_fade()

    Basis.element_appear = function (element, options) {

      var element  = Basis.get_element(element);
      var duration = Basis.is_number(options["duration"]) ? options["duration"]     : 0.50;
      var from     = Basis.is_number(options["from"])     ? (options["from"] * 100) : 0;
      var to       = Basis.is_number(options["to"])       ? (options["to"] * 100)   : 100;

      if (element) {

        element.style.display = "";

        var opacityTween = new OpacityTween(element, Tween.regularEaseOut, from, to, duration);
        opacityTween.onMotionFinished = Basis.is_function(options["afterFinish"]) ? options["afterFinish"] : function () {};

        if (options["start"] !== false) {

          opacityTween.start();

        } // end if

        return opacityTween;

      } // end if

    }; // end Basis.element_appear()

  // ================================================
  // fancybox
  // ================================================

    $(document).ready(function() {
      $("a.zoom").fancybox({
        "zoomSpeedChange" : 0,
        "zoomSpeedIn"     : 200,
        "zoomSpeedOut"    : 200,
        "overlayShow"     : false
      });
    });

  // ================================================
  // cufon
  // ================================================

    Cufon.replace('.cufon');

  // ================================================
  // menu
  // ================================================

    var graphic_menu = new Basis.simple_graphic_menu();

    graphic_menu.add_menu_item(getElement("menu_item_01"),
                               {"onmouseover_src" : "images/tabs.websites_and_development.over.png",
                                "selected_src"    : "images/tabs.websites_and_development.on.png",
                                "on_load"         : function () { Basis.remove_element("color_popup"); var obj = getElement("websites_and_development"); if (obj) { obj.style.display = ""; activate_scroller(obj.id, obj.tiles); } },
                                "on_unload"       : function () { var obj = getElement("websites_and_development"); if (obj) { obj.style.display = "none"; } }
                               });


    graphic_menu.add_menu_item(getElement("menu_item_02"),
                               {"onmouseover_src" : "images/tabs.graphic_design.over.png",
                                "selected_src"    : "images/tabs.graphic_design.on.png",
                                "on_load"         : function () { Basis.remove_element("color_popup"); var obj = getElement("graphic_design"); if (obj) { obj.style.display = ""; activate_scroller(obj.id, obj.tiles); } },
                                "on_unload"       : function () { var obj = getElement("graphic_design"); if (obj) { obj.style.display = "none"; } }
                               });

    graphic_menu.add_menu_item(getElement("menu_item_03"),
                               {"onmouseover_src" : "images/tabs.code_samples.over.png",
                                "selected_src"    : "images/tabs.code_samples.on.png",
                                "on_load"         : function () { Basis.remove_element("color_popup"); var obj = getElement("code_samples"); if (obj) { obj.style.display = ""; activate_scroller(obj.id, obj.tiles); } },
                                "on_unload"       : function () { var obj = getElement("code_samples"); if (obj) { obj.style.display = "none"; } }
                               });

    graphic_menu.add_menu_item(getElement("menu_item_04"),
                               {"onmouseover_src" : "images/tabs.photography.over.png",
                                "selected_src"    : "images/tabs.photography.on.png",
                                "on_load"         : function () { Basis.remove_element("color_popup"); var obj = getElement("photography"); if (obj) { obj.style.display = ""; activate_scroller(obj.id, obj.tiles); } },
                                "on_unload"       : function () { var obj = getElement("photography"); if (obj) { obj.style.display = "none"; } }
                               });

    graphic_menu.add_menu_item(getElement("menu_item_05"),
                               {"onmouseover_src" : "images/email.on.png"});

    graphic_menu.compile(true);
    graphic_menu.select(0);

  // ================================================
  // websites_and_development
  // ================================================

    var obj = getElement("websites_and_development");

    obj.tiles = [// 01
                 {"image" : "images/transparent/slider.websites_and_development.www.sitequarters.com.png",
                  "info"  : {"alias"   : "sitequarters",
                             "url"     : "http://www.sitequarters.com",
                             "title"   : "SiteQuarters",
                             "summary" : "<a href='http://www.sitequarters.com' target='_preview' style='color: #002f62;'>www.sitequarters.com</a>"}
                 },
                 // 02
                 {"image" : "images/transparent/slider.websites_and_development.www.dataresolutions.com.png",
                  "info"  : {"alias"   : "dataresolutions",
                             "url"     : "http://www.dataresolutions.com",
                             "title"   : "Data Resolutions, Inc",
                             "summary" : "<a href='http://www.dataresolutions.com' target='_preview' style='color: #002f62;'>www.dataresolutions.com</a>"}
                 },
                 // 03
                 {"image" : "images/transparent/slider.websites_and_development.www.livingstonseed.com.png",
                  "info"  : {"alias"   : "livingstonseed",
                             "url"     : "http://www.livingstonseed.com",
                             "title"   : "Livingston Seed",
                             "summary" : "<a href='http://www.livingstonseed.com' target='_preview' style='color: #002f62;'>www.livingstonseed.com</a>"}
                 },
                 // 04
                 {"image" : "images/transparent/slider.websites_and_development.www.homestead-america.com.png",
                  "info"  : {"alias"   : "homesteadamerica",
                             "url"     : "http://www.homestead-america.com",
                             "title"   : "Homestead America",
                             "summary" : "<a href='http://www.homestead-america.com' target='_preview' style='color: #002f62;'>www.homestead-america.com</a>"}
                 },
                 // 05
                 {"image" : "images/transparent/slider.websites_and_development.www.onlinepdfprinter.com.png",
                  "info"  : {"alias"   : "onlinepdfprinter",
                             "url"     : "http://www.onlinepdfprinter.com",
                             "title"   : "Online PDF Printer",
                             "summary" : "<a href='http://www.onlinepdfprinter.com' target='_preview' style='color: #002f62;'>www.onlinepdfprinter.com</a>"}
                 },
                 // 06
                 {"image" : "images/transparent/slider.websites_and_development.www.ohiosupport.com.png",
                  "info"  : {"alias"   : "ohiosupport",
                             "url"     : "http://www.ohiosupport.com",
                             "title"   : "Ohio Support Services",
                             "summary" : "<a href='http://www.ohiosupport.com' target='_preview' style='color: #002f62;'>www.ohiosupport.com</a>"}
                 },
                 // 07
                 {"image" : "images/transparent/slider.websites_and_development.www.opdn.org.png",
                  "info"  : {"alias"   : "opdn",
                             "url"     : "http://www.opdn.org",
                             "title"   : "Ohio Professional Development Network",
                             "summary" : "<a href='http://www.opdn.org' target='_preview' style='color: #002f62;'>www.opdn.org</a>"}
                 },
                 // 08
                 {"image" : "images/transparent/slider.websites_and_development.www.zcucina.com.png",
                  "info"  : {"alias"   : "zcucina",
                             "url"     : "http://www.zcucina.com",
                             "title"   : "Z Cucina",
                             "summary" : "<a href='http://www.zcucina.com' target='_preview' style='color: #002f62;'>www.zcucina.com</a>"}
                 },
                 // 09
                 {"image" : "images/transparent/slider.websites_and_development.intranet.damons.com.png",
                  "info"  : {"alias"   : "damons",
                             "url"     : "",
                             "title"   : "Damon's Corporate Intranet",
                             "summary" : ""}
                 },
                 // 10
                 {"image" : "images/transparent/slider.websites_and_development.www.sitequarters.com.old.png",
                  "info"  : {"alias"   : "sitequarters_old",
                             "url"     : "http://www.sitequarters.com",
                             "title"   : "SiteQuarters (old layout)",
                             "summary" : "<a href='http://www.sitequarters.com' target='_preview' style='color: #002f62;'>www.sitequarters.com</a>"}
                 },
                 // 11
                 {"image" : "images/transparent/slider.websites_and_development.www.tpctennis.com.png",
                  "info"  : {"alias"   : "tpctennis",
                             "url"     : "http://www.tpctennis.com",
                             "title"   : "The Player's Club Tennis",
                             "summary" : "<a href='http://www.tpctennis.com' target='_preview' style='color: #002f62;'>www.tpctennis.com</a>"}
                 },
                 // 12
                 {"image" : "images/transparent/slider.websites_and_development.www.tasteofoldetowne.org.png",
                  "info"  : {"alias"   : "tasteofoldetowne",
                             "url"     : "http://www.tasteofot.com",
                             "title"   : "Taste of Olde Towne 2009",
                             "summary" : "<a href='http://www.tasteofot.com' target='_preview' style='color: #002f62;'>www.tasteofot.com</a>"}
                 },
                 // 13
                 {"image" : "images/transparent/slider.websites_and_development.www.americancheese.org.png",
                  "info"  : {"alias"   : "americancheese",
                             "url"     : "http://www.americancheese.org",
                             "title"   : "American Cheese",
                             "summary" : "<a href='http://www.americancheese.org' target='_preview' style='color: #002f62;'>www.americancheese.org</a>"}
                 },
                 // 14
                 {"image" : "images/transparent/slider.websites_and_development.intranet.thelube.com.png",
                  "info"  : {"alias"   : "thelube",
                             "url"     : "",
                             "title"   : "Quaker Steak & Lube&#0174; Corporate Intranet",
                             "summary" : ""}
                 },
                 // 15
                 {"image" : "images/transparent/slider.websites_and_development.www.sitequarters.com.interstitial.png",
                  "info"  : {"alias"   : "sitequarters_verticals",
                             "url"     : "http://www.sitequarters.com/sharepoint",
                             "title"   : "SiteQuarters (microsites)",
                             "summary" : "<a href='http://www.sitequarters.com/sharepoint' target='_preview' style='color: #002f62;'>http://www.sitequarters.com/sharepoint</a>"}
                 },
                 // 16
                 {"image" : "images/transparent/slider.websites_and_development.www.ramgroup.net.png",
                  "info"  : {"alias"   : "ramgroup",
                             "url"     : "http://www.ramgroup.net",
                             "title"   : "RAM Group",
                             "summary" : "<a href='http://www.ramgroup.net' target='_preview' style='color: #002f62;'>www.ramgroup.net</a>"}
                 },
                 // 17
                 {"image" : "images/transparent/slider.websites_and_development.www.keteraintegration.com.png",
                  "info"  : {"alias"   : "keteraintegration",
                             "url"     : "http://www.keteraintegration.com",
                             "title"   : "Ketera Integration",
                             "summary" : "<a href='http://www.keteraintegration.com' target='_preview' style='color: #002f62;'>www.keteraintegration.com</a>"}
                 },
                 // 18
                 {"image" : "images/transparent/slider.websites_and_development.www.asis27.org.png",
                  "info"  : {"alias"   : "asis27",
                             "url"     : "http://www.asis27.org",
                             "title"   : "ASIS (Chapter 27)",
                             "summary" : "<a href='http://www.asis27.org' target='_preview' style='color: #002f62;'>www.asis27.org</a>"}
                 },
                 // 19
                 {"image" : "images/transparent/slider.websites_and_development.www.phusionrecords.com.png",
                  "info"  : {"alias"   : "phusionrecords",
                             "url"     : "http://www.phusionrecords.com",
                             "title"   : "Phusion Records",
                             "summary" : "<a href='http://www.phusionrecords.com' target='_preview' style='color: #002f62;'>www.phusionrecords.com</a>"}
                 },
                 // 20
                 {"image" : "images/transparent/slider.websites_and_development.www.rohinischutneys.com.png",
                  "info"  : {"alias"   : "rohini",
                             "url"     : "http://www.chutneylady.com",
                             "title"   : "Rohini's Chutneys",
                             "summary" : "<a href='http://www.chutneylady.com' target='_preview' style='color: #002f62;'>www.chutneylady.com</a>"}
                 }
                ];

    var scroller = build_scroller("websites_and_development");

    getElement("websites_and_development").appendChild(scroller);

    activate_scroller("websites_and_development", obj.tiles);

  // ================================================
  // graphic_design
  // ================================================

    var obj = getElement("graphic_design");

    obj.tiles = [// 01
                 {"image" : "images/graphic_design/slider.graphic_design.logos.png",
                  "info"  : {"alias" : "logos",
                             "title" : "Logo Design - Web and Print"
                            }
                 },
                 // 02
                 {"image" : "images/graphic_design/slider.graphic_design.vinyl_and_cd_graphics.png",
                  "info"  : {"alias" : "vinyl_and_cd_graphics",
                             "title" : "Vinyl / LP Labels and CD Covers"
                            }
                 },
                 // 03
                 {"image" : "images/graphic_design/slider.graphic_design.business_cards.png",
                  "info"  : {"alias" : "business_cards",
                             "title" : "Business Cards"
                            }
                 },
                 // 04
                 {"image" : "images/graphic_design/slider.graphic_design.apparel.png",
                  "info"  : {"alias" : "apparel",
                             "title" : "Apparel and Clothing Designs"
                            }
                 },
                 // 05
                 {"image" : "images/transparent/slider.graphic_design.sitequarters.brochure.png",
                  "info"  : {"alias" : "sitequarters_brochure",
                             "title" : "SiteQuarters Brochure"
                            }
                 },
                 // 06
                 {"image" : "images/graphic_design/slider.graphic_design.planes_trains_and_automobiles.png",
                  "info"  : {"alias"   : "planes_trains_and_alcohol_bills",
                             "title"   : "<span class=\"blue\">Planes, Trains and Alcohol Bills</a>",
                             "summary" : "CD, Case and Insert Design"
                            }
                 },
                 // 07
                 {"image" : "images/transparent/slider.graphic_design.flyer.ac_slater.attack_of_the_hams.png",
                  "info"  : {"url"   : "http://www.myspace.com/theacslater",
                             "title" : "AC Slater - <span class=\"blue\">Attack of the Hams</span> 2009 Tour Flyer"
                            }
                 },
                 // 08
                 {"image" : "images/transparent/slider.graphic_design.flyer.ac_slater.australian_tour_2009.png",
                  "info"  : {"url"   : "http://www.myspace.com/theacslater",
                             "title" : "AC Slater - <span class=\"blue\">Australian Tour</span> 2009 Tour Flyer"
                            }
                 },
                 // 09
                 {"image" : "images/transparent/slider.graphic_design.flyer.ac_slater.thats_right_bitches_tour.png",
                  "info"  : {"url"   : "http://www.myspace.com/theacslater",
                             "title" : "AC Slater - <span class=\"blue\">That's Right Bitches</span> Tour Flyer"
                            }
                 },
                 // 10
                 {"image" : "images/transparent/slider.graphic_design.flyer.heat_it_up_tour.png",
                  "info"  : {"title" : "<span class=\"blue\">Heat It Up</span> Tour Flyer"
                            }
                 },
                 // 11
                 {"image" : "images/transparent/slider.graphic_design.flyer.krafty_beats.png",
                  "info"  : {"title" : "<span class=\"blue\">Krafty Beats</span> Event Flyer"
                            }
                 },
                 // 12
                 {"image" : "images/transparent/slider.graphic_design.flyer.mixtapehost.png",
                  "info"  : {"title" : "<span class=\"blue\">MixtapeHost</span> / <span class=\"blue\">Pitched Up Recordings</span> Marketing Postcard"
                            }
                 },
                 // 13
                 {"image" : "images/transparent/slider.graphic_design.flyer.neurodisc_cd_release_tour.png",
                  "info"  : {"title" : "<span class=\"blue\">Neurodisc CD Release</span> Tour Flyer"
                            }
                 },
                 // 14
                 {"image" : "images/transparent/slider.graphic_design.flyer.pc_flyer_ads.png",
                  "info"  : {"title" : "<span class=\"blue\">PC Flyer Computers</span> Newspaper Ads"
                            }
                 },
                 // 15
                 {"image" : "images/transparent/slider.graphic_design.flyer.revenge.png",
                  "info"  : {"title" : "<span class=\"blue\">Revenge</span> Event Flyer"
                            }
                 },
                 // 16
                 {"image" : "images/transparent/slider.graphic_design.flyer.sitequarters_postcard.png",
                  "info"  : {"title" : "<span class=\"blue\">SiteQuarters</span> Marketing Postcard"
                            }
                 },
                 // 17
                 {"image" : "images/transparent/slider.graphic_design.flyer.bring_it_back.png",
                  "info"  : {"title" : "<span class=\"blue\">Bring It Back</span> Event Flyer"
                            }
                 },
                 // 18
                 {"image" : "images/transparent/slider.graphic_design.flyer.crossfire.png",
                  "info"  : {"title" : "<span class=\"blue\">Crossfire</span> Event Flyer"
                            }
                 },
                 // 19
                 {"image" : "images/transparent/slider.graphic_design.flyer.kandiland.png",
                  "info"  : {"title" : "<span class=\"blue\">Kandiland</span> Event Flyer"
                            }
                 },
                 // 20
                 {"image" : "images/transparent/slider.graphic_design.flyer.straight_from_the_core.png",
                  "info"  : {"title" : "<span class=\"blue\">Straight From The Core</span> Event Flyer"
                            }
                 }
                ];

    var scroller = build_scroller("graphic_design");

    getElement("graphic_design").appendChild(scroller);

  // ================================================
  // code_samples
  // ================================================

    var obj = getElement("code_samples");

    obj.tiles = [
                 // 01
                 {"image" : "images/code_samples/slider.code_samples.game_programming_gems.png",
                  "info"  : {"alias" : "game_programming_gems",
                             "url"   : "http://www.amazon.com/Game-Programming-Gems/dp/1584500492",
                             "title" : "<span class=\"blue\">Game Programming Gems</span> - Contributing Author"
                            }
                 },
                 // 01
                 {"image" : "images/code_samples/slider.code_samples.color_chooser_demo.png",
                  "html"  : '\
<table align="center" cellpadding="0" cellspacing="0" class="no_select" style="margin-top: 30px;">\
<tr>\
<td id="a"></td>\
<td></td>\
<td id="b"></td>\
</tr>\
<tr>\
<td></td>\
<td><div id="container" style="border: 2px solid #000000;"></div></td>\
<td></td>\
</tr>\
<tr>\
<td id="d"></td>\
<td></td>\
<td id="c"></td>\
</tr>\
</table>\
<script>\
\
if (!Basis.demo) {\
Basis.demo = new color_chooser_demo();\
Basis.demo.render();\
\
document.getElementById("a").appendChild(Basis.demo.color_chooser(0, Basis.demo.colors[0], "left"));\
document.getElementById("b").appendChild(Basis.demo.color_chooser(1, Basis.demo.colors[1]));\
document.getElementById("c").appendChild(Basis.demo.color_chooser(3, Basis.demo.colors[3]));\
document.getElementById("d").appendChild(Basis.demo.color_chooser(2, Basis.demo.colors[2], "left"));\
}\
</script>',
                  "info" : {"alias" : "color_chooser",
                            "title" : "Color Chooser Demo"}
                 },
                ];

    var scroller = build_scroller("code_samples");

    getElement("code_samples").appendChild(scroller);

  // ================================================
  // preload images
  // ================================================

    function preload_images() {

      Basis.images   = [];
      var imgs       = getElementsByTagAndClassName("img", "");
      var js_imgs    = [];
      var final_imgs = {};

      var sections = ["websites_and_development", "graphic_design", "code_samples"];

      for (var x = 0; x < sections.length; x++) {

        var obj = getElement(sections[x]);

        for (var i = 0; i < obj.tiles.length; i++) {

          if (obj.tiles && obj.tiles[i]) {

            js_imgs.push(obj.tiles[i]["image"]);

          } // end if

        } // end for

      } // end for

      for (var x = 0; x < imgs.length; x++) {

        final_imgs[imgs[x].src] = true;

      } // end for

      for (var x = 0; x < js_imgs.length; x++) {

        final_imgs[js_imgs[x]] = true;

      } // end for

      var x = 0;

      for (var i in final_imgs) {

        if (i && final_imgs[i]) {

          Basis.images[x]     = new Image();
          Basis.images[x].src = i;

          x++;

        } // end if

      } // end for

    } // end preload_images()

    addLoadEvent(function () {

//    preload_images();

    });

  // ================================================

    function create_background() {

      var obj = Basis.get_element("background");

      if (!obj) {

        var element = DIV({"id"    : "background", // set absolute id, no need to have 2 backgrounds in existence at any time
                           "style" : "display: none; background-color: #000000; position: absolute; z-index: 1001;"});

        document.body.appendChild(element);

      } // end if

      var obj = Basis.get_element("background");

      if (obj) {

        var screend      = Basis.get_element_dimensions(document.body);
        var scroll       = Basis.scroll_coords();

        obj.style.width  = screend.w + "px"; // + 300;
        obj.style.height = screend.h + "px"; // + 300;

        Basis.element_appear(obj, {"duration" : 0.5, "from" : obj.style.opacity, "to" : 0.5});

        Basis.set_element_position(obj, {"x" : scroll.x,
                                         "y" : scroll.y
                                        });

      } // end if

    } // end create_background()

    function feedback() {

      var obj = Basis.get_element("feedback_box");

      if (!obj) {

        var feedback      = TEXTAREA({"style" : "width: 350px; height: 175px;"});
        var name          = INPUT({"id" : "feedback_box_name", "type" : "text", "style" : "width: 350px;"});
        var email_address = INPUT({"type" : "text", "style" : "width: 350px;"});

        var cancel_button = SPAN({"style" : "color: #9d9d9d; font-size: 10px; cursor: pointer; position: relative; left: -2px;", "class" : "cufon"}, "cancel");

        MochiKit.Signal.connect(cancel_button, "onclick", function () { Basis.remove_element("feedback_box"); Basis.element_fade("background", {"from" : 0.5, "afterFinish" : function () { Basis.remove_element("background"); }}); });

        var submit_button = IMG({"src" : "images/email.off.png", "style" : "cursor: pointer; position: relative; left: 15px;"});

        MochiKit.Signal.connect(submit_button, "onclick", partial(function (options) {

          var send = true;

          if (!options["feedback"].value)      { send = false; options["feedback"].style.border      = "1px solid #6a9acc"; } else { options["feedback"].style.border      = ""; } // end if
          if (!options["name"].value)          { send = false; options["name"].style.border          = "1px solid #6a9acc"; } else { options["name"].style.border          = ""; }// end if
          if (!options["email_address"].value) { send = false; options["email_address"].style.border = "1px solid #6a9acc"; } else { options["email_address"].style.border = ""; }// end if

          if (send) {

            send_feedback(options);

          } // end if

        }, {"feedback"      : feedback,
            "name"          : name,
            "email_address" : email_address}));

        var element = DIV({"id" : "feedback_box", "style" : "display: none;"},
                        P({"style" : "margin-top: 0px;  margin-bottom: 0px; font-size: 22px;", "class" : "cufon"}, "Contact", IMG({"src" : "images/spacer.gif", "style" : "width: 2px; height: 2px;"}), SPAN({"style" : "color: #9d9d9d;"}, "Me")),
                        DIV({"style" : "padding-left: 10px; padding-top : 10px; padding-right: 10px;"},
                          P({"style" : "font-size: 14px; color: #9d9d9d;", "class" : "cufon"}, "Your Name"),
                          name,
                          P({"style" : "font-size: 14px; color: #9d9d9d;", "class" : "cufon"}, "Email Address"),
                          email_address,
                          P({"style" : "font-size: 14px; color: #9d9d9d;", "class" : "cufon"}, "Comments"),
                          feedback,
                          P({"style" : "text-align: right; padding-top: 0px; margin: 0px;"},
                            TABLE({"width" : "100%"},
                              TBODY(null,
                                TR(null,
                                  TD({"style" : "text-align: left; vertical-align: bottom; padding-bottom: 14px;"},
                                    cancel_button
                                  ),
                                  TD({"style" : "text-align: right; vertical-align: bottom; padding-bottom: 14px;"},
                                    IMG({"id" : "ajax_loader", "src" : "images/ajax_loader.gif", "style" : "display: none; position: relative; bottom: -2px;"})
                                  ),
                                  TD({"style" : "width: 77px; vertical-align: bottom;"},
                                    submit_button
                                  )
                                )
                              )
                            )
                          )
                        )
                      );

        document.body.appendChild(element);

        Cufon.replace(".cufon");

      } // end if

      var obj = Basis.get_element("feedback_box");

      if (obj) {

        Basis.center_element(obj);

        Basis.element_appear(obj, {"duration" : 0.5, "afterFinish" : function () { getElement("feedback_box_name").focus(); }});

      } // end if

    } // end feedback()

    MochiKit.Signal.connect(window, "onresize", function () {

      if (getElement("feedback_box")) {

        create_background();
        Basis.center_element(Basis.get_element("feedback_box"), true);

      } // end if

    });

    function send_feedback(options) {

      if (options) {

        var values = {"name"          : options["name"].value,
                      "feedback"      : options["feedback"].value,
                      "email_address" : options["email_address"].value
                     };

        doSimpleXMLHttpRequest("http://www.kevinkaiser.info/contact.php", values);

        getElement("ajax_loader").style.display = "";

        callLater(3, function () {

          Basis.remove_element("feedback_box");

          Basis.element_fade("background", {"from" : 0.5, "afterFinish" : function () { Basis.remove_element("background"); }});

        });

      } // end if

    } // end send_feedback()

  // ================================================

