var PFCD = (function () {
  return {
    util: {
      imagePreloads: (function () {
        var imageLocations = new Array('http://c0573202.cdn.cloudfiles.rackspacecloud.com/workplaces_link_hover.jpg','http://c0573202.cdn.cloudfiles.rackspacecloud.com/schools_link_hover.jpg','http://c0573202.cdn.cloudfiles.rackspacecloud.com/health_system_link_hover.jpg','http://c0573202.cdn.cloudfiles.rackspacecloud.com/communities_link_hover.jpg');
        var imageObjects = new Array();
        for (var i = 0; i < imageLocations.length; i++) {
          imageObjects[i] = new Image();
          imageObjects[i].src = imageLocations[i];
        }
      })(),
      /* find an elements position on screen */
      findPos: function (obj) {
        var curleft = curtop = 0;
        if (obj.offsetParent) {
          do {
                curleft += obj.offsetLeft;
                curtop += obj.offsetTop;
          } 
          while (obj = obj.offsetParent); 

          return [curleft,curtop];
        } else return false;
      }
    },
    map: {
      init: function () {
        var expand_map_div = document.getElementById('mapDiv');
        var expand_map_button = document.getElementById('expand_map_link');
        var mapDiv = document.getElementById('mapDiv');
        mapDiv.style.display = 'none';
        expand_map_button.onclick = expand_map_div.onclick = expand_map_div.onmouseout = function () {
          toggleExpandedMap();
          return false;
        }
        mapDiv = mapDiv.parentNode.removeChild(mapDiv);
        document.getElementsByTagName('body')[0].appendChild(mapDiv);
        var toggleExpandedMap = (function () {
          return function () {
            PFCD.map.toggleStartYourSearchFormFields();
            if (mapDiv.style.display == 'none') {
              mapDiv.style.display = 'block';
              mapDiv.style.left = PFCD.util.findPos(expand_map_button)[0] + 'px';
              mapDiv.style.top = PFCD.util.findPos(expand_map_button)[1] + 'px';
            } else {
              mapDiv.style.display = 'none';
            }
          }
        })();
      },
      /* hides <select> elements. this is used when the map is being displayed. IE6 builds its form elments as OS components, and doesn't respect z-index, so we hide them to keep them from showing through the map */
      toggleStartYourSearchFormFields: function () {
        var lmnt = document.getElementById('start_your_search');
        var selects = false;
        if (lmnt) {
          selects = lmnt.getElementsByTagName('select');
        }
        if (selects) {
          for (var i = 0; i < selects.length; i++) {
            selects[i].style.display = (selects[i].style.display!='none') ? 'none' : 'block';
          }
        }
      }
    },
    inputs: {
      setupInputsForFirstFocus: function () {
        var inputs = document.getElementsByTagName('input');
        var removeValueOnFirstFocus = function (e) {
          var targ;
          if (!e) var e = window.event;
          if (e.target) targ = e.target;
          else if (e.srcElement) targ = e.srcElement;
          if (targ.nodeType == 3) /* defeat Safari bug */ {
            targ = targ.parentNode;
          }
          
          var attributeResult;
          if (targ.getAttribute('value')!=null) {
            attributeResult = targ.getAttribute('value');
          } else {
            attributeResult = targ.attributes['value']
          }
          if (targ.value == attributeResult) {
            targ.value = '';
          }
          targ.onfocus = null;
        };
        for (var i = 0; i < inputs.length; i++) {
          if (inputs[i].className.indexOf('remove_value_on_first_focus')!=-1) {
            inputs[i].onfocus = function (e) {removeValueOnFirstFocus(e);}
          }
        }
      }
    },
    lightBlueBox: {
      init: function () {
        var light_blue_box = document.getElementById('light_blue_box');
        var button_roll = document.getElementById('button_roll');
        if (light_blue_box.offsetHeight < button_roll.offsetHeight) {
          if (!PFCD.ie6.isIE6) {light_blue_box.style.minHeight = button_roll.offsetHeight + 'px';} else {
						light_blue_box.style.height = button_roll.offsetHeight + 'px';
					}
        }
        button_roll = light_blue_box = null;
      }
    },
    ie6: {
      isIE6 : (function () {
        var temp=navigator.appVersion.split('MSIE');
        var ieVer=parseInt(temp[1]);
        return (ieVer < 7)?true:false;
      })(),
      imageLinksHoverFix: function () {
            
        if (!PFCD.ie6.isIE6) {         
          return false;
        }

        if (!document.getElementById('image-links')) {
            return false;
        }
        
        var imageLinksDiv = document.getElementById('image-links');

        var linkElements = imageLinksDiv.getElementsByTagName('a');

        for (var i = 0; i < linkElements.length; i++) {
          linkElements[i].onmouseover = function () {

this.className = PFCD.ie6.toggleHoverClass(this.className,true);
/*alert('cn: '+this.className+',\nncn: '+PFCD.ie6.toggleHoverClass(this.className,true));*/
          }
          linkElements[i].onmouseout =  function () {
            this.className = PFCD.ie6.toggleHoverClass(this.className,false);
/*alert('cn: '+this.className+',\nncn: '+PFCD.ie6.toggleHoverClass(this.className,false));*/
          }
        }
      },
      toggleHoverClass: function (className,hovering) {
        if (className.indexOf(' hover')!=-1 && hovering == false) {
          /* this was hoverin, remove the hover class */
            return className.replace(' hover','');
        } else if (className.indexOf('hover')!=-1 && hovering == false) {
          /* this was hoverin, remove the hover class */
            return className.replace('hover','');
        } else if (className.indexOf('hover')==-1 && hovering==true) {
          /* this wasn't hovering, add hover class */
          return className + ' hover';
        }
      }
    }
  }
})();

WhenDomReady(  
  function(){  
    PFCD.inputs.setupInputsForFirstFocus();
    PFCD.map.init();
    PFCD.ie6.imageLinksHoverFix();
  }  
);  


window.onload = function () {
  /* todo: set the following code to execute ondom ready instead of onload */
  /* make sure this runs onload, not on dom ready */
  PFCD.lightBlueBox.init();
}
