var event_images;
var event_link;
var event_menu;
var event_photo;
var geocoder;
var google_map_element;
var image_ext;
var map;
var menu;
var menu_images_up;
var menu_images_over;
var page;
var promo_images;
var promo_link;
var promo_menu;
var promo_photo;
var rating_select;
var rating_value;

function addListener(element, type, expression, bubbling) {
   bubbling = bubbling || false;
   if(window.addEventListener) { // Standard
      element.addEventListener(type, expression, bubbling);
      return true;
   } else if(window.attachEvent) { // IE
      element.attachEvent('on' + type, expression);
      return true;
   } else return false;
}

function getGoogleData(results, status) {
   if (status == 'OK' && results.length > 0) {
      getGoogleMap(results[0]);
   } else {
      alert("Geocode was not successful for the following reason: " + status);
   }
}

function getGoogleMap(geodata) {
   myOptions = {
      zoom: 8,
      center: geodata.geometry.location,
      mapTypeId: google.maps.MapTypeId.ROADMAP
   }
   var map = new google.maps.Map(google_map_element, myOptions);
   map.fitBounds(geodata.geometry.viewport);
   myOptions = {
      map: map,
      position: geodata.geometry.location,
      title: google_map_element.getAttribute('gmaptitle')
   }
   marker = setGoogleMarker(myOptions)
}

function getElement(element_id) {
   if (document.getElementById(element_id)) {
      return document.getElementById(element_id);
   } else {
      return false;
   }
}

function getMap(url) {
  from_top = (screen.availHeight-600)/2;
  from_left = (screen.availWidth-800)/2;
  var dpp_map = window.open(url,"csmap","top="+ from_top +",left="+ from_left +",width=800,height=600,statusbar=false,scrollbars=false");
  dpp_map.focus();
}

function open_video_popup(url){
  from_top = (screen.availHeight-600)/2;
  from_left = (screen.availWidth-800)/2;
  
  var new_window = window.open("/show-video?url=" + url,"window","top="+ from_top +",left="+ from_left +",width=500,height=405,statusbar=false,scrollbars=false");
  new_window.focus();
}

function removeClass(element, class_name) {
   if (!element.className) {
      element = getElement(element);
   }
   if (element.className == class_name) {
      element.className = undefined;
   } else {
      classes = element.className.split(" ");
      for (i = 0, len = classes.length; i < len; i++) {
         if (class_name == classes[i]) {
            trash = classes.splice(i, 1);
            element.className = classes.join(" ");
            break;
         }
      }
   }
}

function track_page_view(url){
   var page_trackers = new Array;
   var account_keys = ["UA-9278710-1", "UA-55252-5"];
   for (var i = 0, len = account_keys.length; i<len; i++) {
      try {
         page_trackers[i] = _gat._getTracker(account_keys[i]);
         page_trackers[i]._trackPageview(url);
      }
      catch (err) {
      }
   }
}

function onWindowLoaded() {
   page = document.getElementsByTagName("BODY")[0].id;
   if (page=="home") {
      image_ext = "-home.jpg";
      var skip_intro = $("skip_intro");
      if (skip_intro) {
         Event.observe(skip_intro,'click', function(event) {
            track_page_view("/inline/home/skip_intro")
            getElement("intro").className = "hide";
            getElement("help").className = "";
            setCookie("_downtownphoenix_intro", "skip", 365);
            return false;
         });
      }
   } else {
      image_ext = ".jpg";
   }
   
   var hide_heading = $("hide_heading");
   if (hide_heading) {
      Event.observe(hide_heading,'click', function(event) {
         if (!$("marquee").hasClassName("hide")) {
            track_page_view("/inline/hide_heading");
            $("marquee").addClassName("hide");
            hide_heading.addClassName("hide");
            $("show_heading").removeClassName("hide");
            setCookie("_hide_heading", "true", 365);
         };
         return false;
      });
   }
   
   var show_heading = $("show_heading");
   if (show_heading) {
      Event.observe(show_heading, 'click', function(event) {
          if ($("marquee").hasClassName("hide")) {
             track_page_view("/inline/show_heading");
             $("marquee").removeClassName("hide");
             hide_heading.removeClassName("hide");
             $("show_heading").addClassName("hide");
             setCookie("_hide_heading", "false", 365);
          };
          return false;
      });
   }
   
   var corner_close = $("corner_close");
   if (corner_close) {
      Event.observe(corner_close,'click', function(event) {
         track_page_view("/inline/subscribe/hide_corner_call");
         $$("body")[0].removeClassName("corner_call");
         setCookie("_downtownphoenix_corner_close", true, 365);
         return false;
      });
   }
   
   var subscription_method = $("subscription_method");
   if (subscription_method) {
      track_page_view("/subscribed_via/"+subscription_method.innerHTML);
   };
   
   $$('a[href*=pdf]').each(function(link){
      Event.observe(link, 'click', function(event) {
         var element = Event.element(event);
         track_page_view('/pdf/'+link.href);
         setTimeout(function(){
            window.location = link.href;
         },1000);
         Event.stop(event);
      });
   });
   
   
   /* NAVIGATION */
   menu_images_up = new Array();
   menu_images_over = new Array();
   menu = getElement("menu");
   if (menu) {
      for (i=0, len=menu.getElementsByTagName('IMG').length; i<len; i++) {
         node = menu.getElementsByTagName('IMG')[i];
         if (node.src.indexOf("-over.")>0) {
            continue;
         }
         node.index = i;
         menu_images_up[i] = new Image();
         menu_images_over[i] = new Image();
         menu_images_up[i].src = node.src;
         src = node.src.replace(".gif", "-over.gif");
         menu_images_over[i].src = src.substring(0, src.indexOf("?"));
         node.onmouseover = function() {
            this.src = menu_images_over[this.index].src;
         }
         node.onmouseout = function() {
            this.src = menu_images_up[this.index].src;
         }
      }
   }
   /* EVENT VIEWER */
   event_menu = getElement("event_menu");
   if (page=="home" && event_menu) {
      event_link = getElement("event_link");
      event_photo = getElement("event_photo");
      event_images = new Array();
      for (i=0, total = event_menu.getElementsByTagName("IMG").length; i<total; i++) {
         node = event_menu.getElementsByTagName("IMG")[i];
         event_images[i] = new Image();
         event_images[i].src = node.src;
      }
      for (i=0, total=event_menu.getElementsByTagName("A").length; i<total; i++) {
         node = event_menu.getElementsByTagName("A")[i];
         node.index = i;
         /*node.onclick = function() {
            setEventPhoto(this);
            return false;
         }*/
      }
      var interval = setInterval(setEventPhoto, 5000);
   }
   /* ACCOUNT EDIT */
   var email_topics = getElement("email_topics");
   var email_checkbox = getElement("user_preference_email_alerts");
   var mobile_topics = getElement("mobile_topics");
   var mobile_checkbox = getElement("user_preference_mobile_alerts");
   if (email_topics && email_checkbox && mobile_topics && mobile_checkbox) {
      email_checkbox.onclick = function() {
         if (this.checked) {
            removeClass(email_topics, "hide");
         } else {
            email_topics.className += " hide";
         }
      }
      mobile_checkbox.onclick = function() {
         if (this.checked) {
            removeClass(mobile_topics, "hide");
         } else {
            mobile_topics.className += " hide";
         }
      }
   }
   /* AMBASSADOR VIEWER */
   var ambassador_photo = getElement("ambassador_photo")
   if (ambassador_photo) {
      var ambassador_photo_index = 0;
      var ambassador_photos = new Array();
      ambassador_photo_names = ["back", "front", "full"];
      for (i=0, len=ambassador_photo_names.length; i<len; i++) {
         ambassador_photos[i] = new Image();
         ambassador_photos[i].src = "/images/ambassadors/uniform_" + ambassador_photo_names[i] + ".jpg"
      }
      var next_link = getElement("next_link");
      var prev_link = getElement("prev_link");
      next_link.onclick = function() {
         new_index = ambassador_photo_index + 1;
         if (new_index >= ambassador_photos.length) {
            new_index = 0;
         }
         ambassador_photo.src = ambassador_photos[new_index].src;
         ambassador_photo_index = new_index;
         return false;
      }
      prev_link.onclick = function() {
         new_index = ambassador_photo_index - 1;
         if (new_index < 0) {
            new_index = 2;
         }
         ambassador_photo.src = ambassador_photos[new_index].src;
         ambassador_photo_index = new_index;
         return false;
      }
   }
   /* PHOTO VIEWER */
   var gallery = $('photo_viewer');
   if (gallery) {
      var gallery_photos = new Array();
      var gallery_active = 1;
      for (i=0, len = gallery.getElementsByTagName("IMG").length; i<len; i++) {
         node = gallery.getElementsByTagName("IMG")[i];
         if (node.className=="main") {
            var gallery_photo = node;
         } else {
            var index = gallery_photos.length;
            gallery_photos[index] = new Image();
            gallery_photos[index].src = node.src.replace("-thumb.", "-photo.");
            node.gallery_index = index;
            node.onclick = function() {
               gallery_photo.src = gallery_photos[this.gallery_index].src
               for (i = 1, len = gallery.getElementsByTagName("IMG").length; i < len; i++) {
                  node = gallery.getElementsByTagName("IMG")[i]
                  node.className = node.className.replace("active", "");
               }
               this.className += " active";
            }
         }
         //image_id = node.id.replace("promo_link", "");
         //event_images[i] = new Image();
         //event_images[i].src = "/images/businesses/" + image_id + image_ext;
      }
      /*for (i=0, total=event_menu.getElementsByTagName("A").length; i<total; i++) {
         node = event_menu.getElementsByTagName("A")[i];
         node.onclick = setEventPhoto;
      }*/
   }
   /* SEARCH FORM */
   var search_input = getElement("search_query");
   if (search_input) {
      search_input.onfocus = function() {
         if (this.value=="Search") {
            this.value = "";
         }
      }
      search_input.onblur = function() {
         if (this.value=="") {
            this.value = "Search";
         }
      }
   }
   /* INDIVIDUAL FORMS */
   var record_input = getElement("record_query");
   if (record_input) {
      record_input.onfocus = function() {
         if (this.value == "Search Keywords") {
            this.value = "";
         }
      }
      record_input.onblur = function() {
         if (this.value=="") {
            this.value = "Search Keywords";
         }
      }
   }
   /* BUSINESS REVIEWS */
   // business_review_form = getElement("business_review_form")
   // business_review_link = getElement("business_review_link")
   // if (business_review_form && business_review_link) {
   //    business_review_link.onclick = function() {
   //       classes = business_review_form.className.split(" ");
   //       for (key in classes) {
   //          if (classes[key]=="hide") {
   //             classes.splice(key, 1);
   //          }
   //       }
   //       business_review_form.className = classes.join(" ");
   //       this.className = "hide";
   //       return false;
   //    }
   // }
   
   /* LIST REVIEWS */
   list_review_form = getElement("list_review_form")
   list_review_link = getElement("list_review_link")
   if (list_review_form && list_review_link) {
      list_review_link.onclick = function() {
         classes = list_review_form.className.split(" ");
         for (key in classes) {
            if (classes[key]=="hide") {
               classes.splice(key, 1);
            }
         }
         list_review_form.className = classes.join(" ");
         this.className = "hide";
         return false;
      }
   }
   
   // RATING STARS
   rating_select = getElement("rating_select");
   rating_value = getElement("rating_value");
   if (rating_select) {
      for (i=0, len=rating_select.getElementsByTagName("IMG").length; i<len; i++) {
         node = rating_select.getElementsByTagName("IMG")[i];
         node.rating = i+1;
         node.onmouseover = function(){
            setRating(this.rating);
         }
      }
   }
   
   /* GETTING AROUND */
   var area_select = getElement("area_select");
   if (area_select) {
      area_select.onchange = function() {
         if (this.value!=undefined && this.value!="null") {
            window.location.href = "/getting-around/directions/" + this.value;
         }
         return false;
      }
   }
   
   /* DIRECTIONS */
   var business_directions = getElement("venue_directions");
   if (business_directions) {
      business_directions.onsubmit = function() {
         if (this.aid.selectedIndex==0) {
            window.alert("Please select an origin");
            return false;
         }
         if (this.did.selectedIndex==0) {
            window.alert("Please select a destination");
            return false;
         }
      }
   }
   
   /* CONTACT FORM */
   var contact_form = $('contactForm');
   if (contact_form) {
      contact_form.onsubmit = function() {
         var sEmail     = this.email.value;
         var regEmail   = /^([\w-]+\.?)*\w+@([\da-zA-z-]+\.)+[a-zA-z]{2,3}$/
         if ((this.name.value.length == 0) || (this.email.value.length == 0) || (this.comments.value.length == 0)) {
            alert("All fields are required. Please check the form and resubmit.");
            return false;
         } else if (!regEmail.test(sEmail)) {
            alert("This does not appear to be a valid email address. Please check the email address and resubmit.");
            return false;
         } else {
            return true;
         }
      }
      contact_form = undefined;
   }
   
   /* GOOGLE MAPS */
   google_map_element = $('google_map');
   if (google_map_element) {
      geocoder = new google.maps.Geocoder();
      address = google_map_element.getAttribute('gmaplocation');
      geocoder.geocode({'address': address, 'partialmatch': true}, getGoogleData);
   }
   
   /* SEND2PHONE */
   var phone_link = getElement("phone_link");
   if (phone_link) {
      phone_link.onclick = function() {
         mobile = this.attributes.getNamedItem('mobile').value;
         if (mobile.length!=10) {
            mobile = "555-123-4567"
         }
         mobile = prompt("Please enter your mobile number. Message & data rates may apply.", mobile);
         if (!mobile) {
            return false;
         } else {
            mobile = mobile.replace(/[^0-9]+/g, "");
         }
         if (mobile.length!=10) {
            alert("Please enter a valid number. " + mobile);
            return false;
         }
         setPhoneNotification(this.href + "?mobile="+mobile);
         return false;
      }
   }
   
   /* SEND2PHONE2 */
   var phone_link = getElement("phone_link_too");
   if (phone_link) {
      phone_link.onclick = function() {
         mobile = this.attributes.getNamedItem('mobile')
         if (mobile.length!=10) {
            mobile = prompt("Please enter your mobile number.", "555-123-4567");
         }
         if (!mobile) {
            return false;
         } else {
            mobile = mobile.replace(/[^0-9]+/g, "");
         }
         if (mobile.length!=10) {
            alert("Please enter a valid number. " + mobile);
            return false;
         }
         setPhoneNotification(this.href + "?mobile="+mobile);
         return false;
      }
   }
   
   /* Convention events expander */
  if ($("inline_event_activities") != undefined) {
     $("events_see_all").observe("click", function(event){
       event.preventDefault();
       Effect.Fade("events_see_all", {duration: 0.1, queue: 'front'});
       Effect.Appear("inline_event_activities", {duration: 0.3});
     });
  }
  
  if ($("inline_deal_activities") != undefined) {
     $("deals_see_all").observe("click", function(event){
       event.preventDefault();
       Effect.Appear("inline_deal_activities", {duration: 0.3});
       Effect.Fade("deals_see_all", {duration: 0.1, queue: 'front'});
     });
  }
  
  if ($("inline_deal_activities") != undefined) {
   $("hide_deals").observe("click", function(event){
     event.preventDefault();
     Effect.Fade("inline_deal_activities", {duration: 0.3});
     Effect.Appear("deals_see_all", {duration: 0.1, queue: 'end'});       
   });
  }
  
  if ($("inline_event_activities") != undefined) {
   $("hide_events").observe("click", function(event){
     event.preventDefault();
     Effect.Fade("inline_event_activities", {duration: 0.3});
     Effect.Appear("events_see_all", {duration: 0.1, queue: 'end'});       
   })
  }
  
  var quick_subscribe = $$("#footer #email_address");
  if (quick_subscribe.length > 0) {
      var default_message = "enter your email address";
      quick_subscribe = quick_subscribe[0];
      if(quick_subscribe.getValue() == "") {
         quick_subscribe.value = default_message;
      }
      Event.observe(quick_subscribe, 'focus', function(event) {
         if(quick_subscribe.getValue() == default_message) {
            quick_subscribe.value = "";
         }
      });
      Event.observe(quick_subscribe, 'blur', function(event) {
         if(quick_subscribe.getValue() == "") {
            quick_subscribe.value = default_message;
         }
      });
  }
}

function onWindowUnloaded() {
   delete geocoder;
   delete google_map_element;
   delete map;
}

function setCookie(c_name, value, expiredays) {
   var exdate = new Date();
   exdate.setDate(exdate.getDate()+expiredays);
   document.cookie = c_name + "=" + escape(value)+";path=/"+((expiredays==null) ? "" : ";expires="+exdate.toGMTString());
}

function setEventPhoto(element) {
   if (!element || !element.className) { 
      n = event_menu.className.replace("active", "").toString();
      if (n >= event_menu.getElementsByTagName("LI").length) {
         n = 0;
      }
      element = event_menu.getElementsByTagName("LI")[n].firstChild;
   }
   index = element.className.replace("event", "");
   id = element.id.replace("event", "");
   event_menu.className = "active" + index;
   event_link.href = element.href;
   event_link.title = element.title;
   event_photo.src = event_images[index - 1].src;
}

function setGoogleMarker(options) {
   return new google.maps.Marker(options)
}

function setMarqueePhoto(element) {
   if (!element || !element.className) { 
      n = promo_menu.className.replace("active", "").toString();
      if (n>=promo_menu.getElementsByTagName("LI").length) {
         n = 0;
      }
      element = promo_menu.getElementsByTagName("LI")[n].firstChild;;
   }
   index = element.className.replace("promo_index", "");
   promo_link.href = element.href;
   promo_link.title = element.title;
   promo_photo.alt = element.title;
   promo_menu.className = "active" + index;
   $('promo_excerpt').firstChild.data = element.getAttribute("excerpt");
   $('promo_name').firstChild.data = element.title;
   promo_photo.src = promo_images[index-1].src;
}

function setPhoneNotification(url) {
   var myAjax = new Ajax.Request(url, {
      method: 'get',
      onCreate: function(object) {
         //alert("create " + object.status);
      },
      onSuccess: function(object) {
         if (object.status == 200) {
            alert("Successfully sent to phone.");
         } else {
            alert(json.Response.result.status);
         }
      }
   });
   return false;
}

function setRating(value) {
   for (i=0, len=rating_select.getElementsByTagName("IMG").length; i<len; i++) {
      node = rating_select.getElementsByTagName("IMG")[i];
      if (i < value) {
         node.src = "/images/ratings/yes.gif";
      } else {
         node.src = "/images/ratings/no.gif";
      }
      rating_value.value = value;
   }
}

Event.observe(window, "load", onWindowLoaded);
Event.observe(window, "unload", onWindowUnloaded);

