var HDN = window.HDN || {};

HDN.RolloverImages = new Array(
  "hdn_header_nav_overview",
  "hdn_header_nav_resources",
  "hdn_header_nav_support",
  "hdn_header_nav_myapps",
  "hdn_home_register",
  "hdn_home_partners_learnmore",
  "hdn_home_mixt_learnmore",
  "hdn_home_nascar_howhdndidit",
  "hdn_home_featuredapp_leftarrow_link",
  "hdn_home_featuredapp_rightarrow_link",
  "hdn_level2_form_login",
  "hdn_level2_form_submit",
  "hdn_level2_form_cancel",
  "hdn_level2_form_update"
);

HDN.FeaturedApps = new Array(
  {
    "id" : "hdn_apnewswire",
    "title" : "AP News",
    "description" : "The latest news, stories and pictures from the headlines.",
    "icon" : "graphics/icon_app_apnewswire_46x46.jpg"
  },
  {
    "id" : "hdn_yelp545",
    "title" : "mixtLocal&trade;",
    "description" : "Find local businesses and services backed by users' reviews and ratings (powered by Yelp!)",
    "icon" : "graphics/icon_app_mixtlocal_46x46.jpg"
  },
  {
    "id" : "hdn_weatheru",
    "title" : "Weather Underground&reg;",
    "description" : "Real-time weather forecasts for your location and beyond.",
    "icon" : "graphics/icon_app_wunderground_46x46.jpg"
  }
);

HDN.CurrentFeaturedApp = 1;

HDN.Page = (function() {

  var rollFocus = null;
  var mouseFocus = null;

  return {

    imageRollover : function(e) {

      e = e || window.event;

      var target = HOWF.Utils.getEventTarget(e);
      var targetTag = (typeof target.tagName != "undefined" ? target.tagName.toLowerCase() : "");

      HOWF.Debug.log("imageRollover event: " + e.type + " registered on " + targetTag + " (id: " + target.id + ")");

      // handle mouse events
      if (e.type == "mouseover" || e.type == "mouseout") {

        // do nothing if we're not an image or image input
        if (targetTag != "img" && targetTag != "input") {
          HOWF.Debug.log("__imageRollover final tag is " + targetTag + "; doing nothing");
          return;
        }

        if (e.type == "mouseover") {

          if (target == rollFocus) {
            HOWF.Debug.log("__imageRollover did nothing upon focus rollover");
            return;
          }

          target.src = target.src.substring(0,target.src.lastIndexOf(".")) + "_on" + target.src.substring(target.src.lastIndexOf("."));

          mouseFocus = target;

        } else if (e.type == "mouseout") {

          if (target == rollFocus) {
            HOWF.Debug.log("__imageRollover did nothing upon focus rollout");
            return;
          }

          target.src = target.src.substring(0,target.src.indexOf("_on")) + target.src.substring((target.src.indexOf("_on") + 3));

          mouseFocus = null;

        }

      } else if (e.type == "focus" || e.type == "blur") {

        // if target is a link, see if it is containing an image
        if (targetTag == "a") {

          target = HOWF.Utils.getFirstDomChild(target);

          if (!target) {
            HOWF.Debug.log("__imageRollover could not find an image child; doing nothing");
            return;
          }

          targetTag = target.tagName.toLowerCase();

          HOWF.Debug.log("__imageRollover translated event: " + e.type + " registered on " + targetTag + " (id: " + target.id + ")");

        }

        // do nothing if we're not an image or image input
        if (targetTag != "img" && targetTag != "input") {
          HOWF.Debug.log("__imageRollover final tag is " + targetTag + "; doing nothing");
          return;
        }

        if (e.type == "focus") {

          if (target == mouseFocus) {
            HOWF.Debug.log("__imageRollover did nothing upon mouseover focus");
            return;
          }

          target.src = target.src.substring(0,target.src.lastIndexOf(".")) + "_on" + target.src.substring(target.src.lastIndexOf("."));

          rollFocus = target;

        } else if (e.type == "blur") {

          if (target == mouseFocus) {
            HOWF.Debug.log("__imageRollover did nothing upon mouseover blur");
            return;
          }

          if (rollFocus == null) {
            HOWF.Debug.log("__imageRollover did nothing upon blur; rollFocus was null");
            return;
          }

          target.src = target.src.substring(0,target.src.indexOf("_on")) + target.src.substring((target.src.indexOf("_on") + 3));

          rollFocus = null;

        }

      }

    },

    attachRollovers : function(elements) {

      // will use this to preload
      var imagePreload = new Image();

      for (var i = 0; i < elements.length; i++) {

        var target = null;

        if (typeof elements[i] == "string") {

          HOWF.Debug.log("HDN.Page.attachRollovers: Attaching rollover events to: " + elements[i]);

          if (document.getElementById(elements[i])) {

            target = document.getElementById(elements[i]);

            document.getElementById(elements[i]).onmouseover = HDN.Page.imageRollover;
            document.getElementById(elements[i]).onfocus = HDN.Page.imageRollover;
            document.getElementById(elements[i]).onmouseout = HDN.Page.imageRollover;
            document.getElementById(elements[i]).onblur = HDN.Page.imageRollover;

          }

        } else {

          HOWF.Debug.log("HDN.Page.attachRollovers: Attaching rollover events to: " + elements[i].getAttribute("id"));

          if (elements[i]) {

            target = elements[i];

            elements[i].onmouseover = HDN.Page.imageRollover;
            elements[i].onfocus = HDN.Page.imageRollover;
            elements[i].onmouseout = HDN.Page.imageRollover;
            elements[i].onblur = HDN.Page.imageRollover;

          }

        }

        if (target != null) {

          if (target.tagName != "img") {

            var targetImages = target.getElementsByTagName("img");

            if (targetImages.length > 0) {
              target = targetImages[0];
            }

          }

          if (typeof target.src != "undefined") {

            var newSrc = target.src.substring(0,target.src.lastIndexOf(".")) + "_on" + target.src.substring(target.src.lastIndexOf("."));

            HOWF.Debug.log("HDN.Page.attachRollovers: Preloading image: " + newSrc);

            imagePreload.src = newSrc;

          }

        }

      }

    },

    prepareSideMenu : function() {

      var list = document.getElementsByTagName("div");
      var capturedNodes = [];

      for (var i = 0; i < list.length; i++) {

        if (list[i].className && list[i].className.indexOf("hdn_page_subtitle") != -1) {

          capturedNodes.push(list[i]);

        }

      }

      for (var j = 0; j < capturedNodes.length; j++) {

        // store the id
        capturedNodes[j].id = "howf_jumpnode_" + j;

        var link = document.createElement("a");
        link.setAttribute("href","#");

        // create the link back; store id in a closure
        link.onclick = (function() {

          var localId = capturedNodes[j].id;

          return function() {
            return HOWF.PageScroll.scrollToElement(localId);
          }

        })();

        link.appendChild(document.createTextNode(HOWF.Utils.getElementText(capturedNodes[j])));

        var linkContainer = document.createElement("div");
        linkContainer.className = "hdn_edgebox_link_bigpad hdn_edgebox_sublink";
        linkContainer.appendChild(link);

        document.getElementById("hdn_level2menu_current").appendChild(linkContainer);

      }

    },

    moveFeaturedAppList : function(e) {

      e = e || window.event;

      var target = HOWF.Utils.getEventTarget(e);

      if (target.getAttribute("id") == "hdn_home_featuredapp_leftarrow") {

        if (--HDN.CurrentFeaturedApp < 0) {
          HDN.CurrentFeaturedApp = HDN.FeaturedApps.length - 1;
        }

      } else if (target.getAttribute("id") == "hdn_home_featuredapp_rightarrow") {

        if (++HDN.CurrentFeaturedApp >= HDN.FeaturedApps.length) {
          HDN.CurrentFeaturedApp = 0;
        }

      }

      HDN.Page.loadFeaturedAppList();

      return false;

    },

    loadFeaturedAppList : function() {

      var pos_a = (HDN.CurrentFeaturedApp > 0 ? (HDN.CurrentFeaturedApp-1) : (HDN.FeaturedApps.length-1));
      var pos_b = HDN.CurrentFeaturedApp;
      var pos_c = (HDN.CurrentFeaturedApp < (HDN.FeaturedApps.length-1) ? (HDN.CurrentFeaturedApp+1) : 0);

      document.getElementById("hdn_home_featured_app_a").src = HDN.FeaturedApps[pos_a].icon;
      document.getElementById("hdn_home_featured_app_b").src = HDN.FeaturedApps[pos_b].icon;
      document.getElementById("hdn_home_featured_app_c").src = HDN.FeaturedApps[pos_c].icon;

      HOWF.Utils.replaceChildrenWithText(document.getElementById("hdn_home_featuredapp_title"),HDN.FeaturedApps[pos_b].title);
      HOWF.Utils.replaceChildrenWithText(document.getElementById("hdn_home_featuredapp_description"),HDN.FeaturedApps[pos_b].description);

      document.getElementById("hdn_home_featuredapp_link").setAttribute("href","overview.php?action=featured#" + HDN.FeaturedApps[pos_b].id);

    },

    prepareFeaturedAppList : function() {

      HDN.Page.loadFeaturedAppList();

      document.getElementById("hdn_home_featuredapp_leftarrow_link").onclick = HDN.Page.moveFeaturedAppList;
      document.getElementById("hdn_home_featuredapp_rightarrow_link").onclick = HDN.Page.moveFeaturedAppList;

    }

  }

})();

var inputFields = {

  // form on play.php for registering a web user
  "apply" : {

    "carrier" : {

      "type" : "select",
      "description" : "Your Carrier",
      "confirm" : false,
      "empty" : false

    },

    "cellnum" : {

      "type" : "text",
      "description" : "Your Mobile Number",
      "confirm" : false,
      "empty" : false

    },

    "email" : {

      "type" : "email",
      "description" : "Your Email Address",
      "confirm" : false,
      "empty" : false

    },

    "optin" : {

      "type" : "checkbox",
      "description" : "Over 13 Years Old",
      "confirm" : false,
      "empty" : true,
      "mandatory" : true

    }

  }

};


function checkform ( form )
{
  if (form.last_name.value == "") {
    alert( "Please enter your last name." );
    form.last_name.focus();
    return false ;
  }

  if (form.first_name.value == "") {
    alert( "Please enter your first name." );
    form.first_name.focus();
    return false ;
  }

  if (form.city.value == "") {
    alert( "Please enter your city." );
    form.city.focus();
    return false ;
  }

  if (form.state.value == "") {
    alert( "Please enter your state." );
    form.state.focus();
    return false ;
  }

  if ( form.email_address.value == "" || form.confirm_email_address.value == "" ) {
    alert( "Please enter your email address in both spaces." );
    form.email_address.focus();
    return false ;
  }

  if ( form.email_address.value != form.confirm_email_address.value) {
    alert( "Your email addresses don't match up.  Please check them." );
    form.email_address.focus();
    return false ;
  }

  eAddr = form.email_address.value;

  var ndxAt = ndxDot =  0;

  var ndxAt = eAddr.indexOf("@");
  var ndxDot = eAddr.indexOf(".");
  var ndxDot2 = eAddr.lastIndexOf(".");

  if ((ndxDot < 0) || (ndxAt < 0)) {
    alert("Your email address lacks a '.' or '@'.\n\nThe valid format is 'you@domain.suffix.'");
    return false;
  } else if ( (ndxDot2 - 3) <= ndxAt) {
    alert("You may be missing your domain name.\n\nThe format is 'you@domain.suf'");
    return false;
  }

  if (form.description.value == "") {
      alert( "Please enter a description of your product." );
      form.description.focus();
      return false ;
  }

  if ( !form.option1.checked && !form.option2.checked && !form.option3.checked) {
    alert( "You need to select at least one platform." );
    form.option1.focus();
    return false ;
  }

  if (!form.mobile_experience.selectedIndex) {
      alert( "Please select a level of mobile experience." );
      form.mobile_experience.focus();
      return false ;
  }

  if (!form.dev_experience.selectedIndex) {
      alert( "Please select a level of development experience." );
      form.dev_experience.focus();
      return false ;
  }

  if (form.features.value == "") {
      alert( "Please describe the features that you think make your concept stand out." );
      form.features.focus();
      return false ;
  }

  if (form.interest_mobile.value == "") {
      alert( "Please select what element of HDN you are most interested in." );
      form.interest_mobile.focus();
      return false ;
  }

  return true ;
}
