/* -- Navigation Vars --------------------- */
// Current Page
var cur_page = "home";
 
/* -- Animation Vars --------------------- */
// Overlay Offset.
var overlay_offset = 25;

// Overlay Animation Time
var ovelayAnimationTime = 250;

/* -- JQuery Ready --------------------- */
// Setup Page
function setupPage() {
  /* -- Setup Navigation --------------------- */
  // Init Main Navigation
  initMainNavigation();
  
  // Init Content Navigation
  initContentNavigation();
  
  
  /* -- Setup Gallery --------------------- */
  // Gallery
  $(".gridgallery").fancybox({transitionIn  : 'fade',
                              transitionOut : 'fade',
                              titlePosition : 'inside',
                              cyclic        : 'false',
                              onClosed      : handleGalleryClose,
                              onCancel      : handleGalleryClose});
  
    
  /* -- Setup Overlays --------------------- */
  // About Open/Close
  $("#content_about .content_open_arrow").bind("click",  handleAboutOpen);
  $("#content_about .content_close_arrow").bind("click", handleAboutClose);
  
  // Contact Open/Close
  $("#content_contact .content_open_arrow").bind("click",  handleContactOpen);
  $("#content_contact .content_close_arrow").bind("click", handleContactClose);
  
  
  /* -- Setup Form --------------------- */
  // Field Labels
  $("label").inFieldLabels({fadeDuration: 150});
  $("input").attr("autocomplete", "off");
  $("textarea").attr("autocomplete", "off");
  
  // Validate Form
  $("#content_contact_form_validate_target").validationEngine({promptPosition : "bottomRight"});
  
  // Contact Form Buttons
  $("#content_contact_form_reset").click(contactFormReset);
  $("#content_contact_form_submit").click(contactFormSubmit);
  
  
  /* -- Setup AJAX --------------------- */
  // Setup AJAX Code
  $.ajaxSetup({
              dataType : "json",
              type     : "POST"
              });
}


/* -- Content Overlay Interactions --------------------- */
// Initiate Main Navigation
function initMainNavigation() {
  // Validate Cur Page
  cur_page = validateSectionId(cur_page);
  
  // Stop Method - if mobile page that is
  if ($.browser.mobile) {
    navItemActivate(cur_page);
    return;
  }
  
  // Init Logo  
  $("#headerLogo a").attr("onclick", "return false");
  $("#headerLogo").click(handleLogoClick);
    
  // Setup Buttons
  $("#headerNav ul li").each (function() {
    // Get Nav ID Reference
    var navId  = $(this).attr("id");
    
    // HREF Link Adjustment
    switch (navId) {
      case "store":
      case "register":
        // Allow HREF Link
        $(this).find("a").attr("onclick", "return true");
        break;
      
      default:
        $(this).find("a").attr("onclick", "return false");
        break;
    }
    
    // Toggle Nave Item Activation
    if (navId == cur_page) navItemActivate(navId);
    else                   navItemDeactivate(navId);
  });
    
  // Init SWFAddress
  $.address.change(handleSWFAddressChange);
}

// Init Content Navigation
function initContentNavigation() {
  // Dont Adjust if Mobile
  if ($.browser.mobile)  return;
  
  // Setup Overlay Button
  $(".overlay_content h1").each (function() {
    // Get Content Id ID Reference
    var contentId  = $(this).find("a").attr("rel");
    contentId = contentId.substr(1, contentId.length - 2)
    
    // HREF Link Adjustment
    switch (contentId) {
      case "store":
      case "register":
        // Allow HREF Link
        $(this).find("a").attr("onclick", "return true");
        break;
      
      default:
        // Don't Allow HREF
        $(this).find("a").attr("onclick", "return false");
        
        // Content Item Activate
        $(this).click(handleContentItemClick);  
        break;
    }
    
  });
}

// Handle Gallery Close
function handleGalleryClose() {  
  // Don't double close
  if (cur_page == "home")   return;
  
  // SWF Address Path
  var swfAddressPath = $("#headerNav ul li:first a").attr("rel");
  
  // Change SWF Address
  $.address.value(swfAddressPath);
  
  // Remove Focus
  $(".gridgallery").blur();
}

// Handle Logo Clik
function handleLogoClick() {
  // Stop Click
  if (cur_page == "home") return;
  
  // SWF Address Path
  var swfAddressPath = $(this).find("a").attr("rel");
  
  // Change SWF Address
  $.address.value(swfAddressPath);
  
  // Remove Focus
  $(this).find("a").blur();
}

// Activate Nav Item
function navItemActivate(navId) {
  // Show active nav item
  $("#headerNav ul li[id='"+navId+"'] div").addClass("nav_active");
  
  // Remove Mouse Events
  $("#headerNav ul li[id = '"+navId+"']").unbind();
}

// Deactivate Nav Item
function navItemDeactivate(navId) {
  // Clean Up Classes
  if ($("#headerNav ul li[id='"+navId+"'] div").hasClass("nav_active")) $("#headerNav ul li[id='"+navId+"'] div").removeClass("nav_active")
  
  // Mouse Over / Out interactions
  $("#headerNav ul li[id = '"+navId+"']").mouseenter(navItemOver);
  $("#headerNav ul li[id = '"+navId+"']").mouseleave(navItemOut);
  
  // Mouse Click (only if HREF Link is blocked) 
  if ($("#headerNav ul li[id='"+navId+"'] a").attr("onclick") == "return false") {
    $("#headerNav ul li[id = '"+navId+"']").click(navItemHit);
  }
}

// Nav Item Over
function navItemOver(eventObject) {
  $(this).children().addClass("nav_over");
}
// Nav Item Out
function navItemOut(eventObject) {
  $(this).children().removeClass("nav_over");
}
// Nav Item Hit
function navItemHit(eventObject) {    
  // SWF Address Path
  var swfAddressPath = $(this).find("div.headerNavContent a").attr("rel");
  
  // Change SWF Address
  $.address.value(swfAddressPath);
  
  // Remove Focus
  $(this).find("div.headerNavContent a").blur();
}

// Validate Section ID
function validateSectionId(navId) {
  if ($("#headerNav ul li[id='"+navId+"']").html()) return navId;
  else                                              return $("#headerNav ul li:first").attr("id");;
}

function handleContentItemClick () {
   // SWF Address Path
  var swfAddressPath = $(this).find("a").attr("rel");
  
  // Change SWF Address
  $.address.value(swfAddressPath);
  
  // Remove Focus
  $(this).find("a").blur();
}


/* -- SWFAddress Functions --------------------- */
// Handle SWFAddress Change
function handleSWFAddressChange (event) {
  // Current Page
  var targetPage = event.value;
  
  // Strip Slashes
  targetPage = targetPage.replace(/\//g, '');
  
  // Validate Change
  targetPage = validateSectionId(targetPage);
  
  // Don't auto run method if default page still exists.
  if (default_page && (default_page == cur_page)) {
    default_page = null;
    return;
  }
  
  // Not a valid change - But force content to refresh
  if (targetPage == cur_page) return;
  
  // Update Current Page
  cur_page = targetPage;
  
  // Get Title
  var title = (cur_page == "home") ? "" : $("#headerNav ul li[id = '"+cur_page+"'] a").html();
  
  // Set Title
  $.address.title(formatTitle(title));
  
  // Update Nav
  updateNav();
  
  // Update Content
  updateContent();
}

// Format Title Page
function formatTitle(title) {
    return 'PHILA Apparel' + (title != '' ? ' | ' + title.replace(/\//g, ' | ') : '') + " | Clothing for the Soul";
}

/* -- Content Overlay Interactions --------------------- */
// About Open
function handleAboutOpen() {
  // Toggle Visibility
  $("#content_about .content_close_arrow").show();
  $("#content_about .content_open_arrow").hide();
  
  // Slide Up
  $("#content_about").animate({top:0}, ovelayAnimationTime, "easeOutQuad");
}
// About Close
function handleAboutClose() {
  // Toggle Visibility
  $("#content_about .content_close_arrow").hide();
  $("#content_about .content_open_arrow").show();  
  
  // Original Height
  var oHeight = $("#content_about").height();
  
  // Slide Up
  $("#content_about").animate({top:oHeight - overlay_offset}, ovelayAnimationTime);      
}

// Contact Open
function handleContactOpen() {
  // Toggle Visibility
  $("#content_contact .content_close_arrow").show();
  $("#content_contact .content_open_arrow").hide();    
  
  // Slide Up
  $("#content_contact").animate({top:0}, ovelayAnimationTime, "easeOutQuad");    
}
// Contact Close
function handleContactClose() {
  // Toggle Visibility
  $("#content_contact .content_close_arrow").hide();
  $("#content_contact .content_open_arrow").show();
  
  // Original Height
  var oHeight = $("#content_contact").height();
  
  // Hide Validation Feed back
  $("#content_contact_form_validate_target").validationEngine('hideAll');
  
  // Slide Up
  $("#content_contact").animate({top:oHeight - overlay_offset}, ovelayAnimationTime);        
}


/* -- Page Updates --------------------- */
// Update Nav
function updateNav() { 
  // Run through nav Buttons
  $("#headerNav ul li").each (function() { 
    // Get Nav ID Reference
    var navId  = $(this).attr("id");
    
    // Toggle Nave Item Activation
    if (navId == cur_page) navItemActivate(navId);
    else                   navItemDeactivate(navId);
  });
}

// Update Content
function updateContent() {
  switch (cur_page) {
    case "home":
      handleAboutClose();
      handleContactClose();
      $.fancybox.close();
      break;
    
    case "about":
      handleAboutOpen();
      handleContactClose();
      $.fancybox.close();
      break;
      
    case "gallery":
      handleAboutClose();
      handleContactClose();
      $(".gridgallery:first").trigger('click');
      break;
    
    case "contact":
      handleContactOpen();
      handleAboutClose();
      $.fancybox.close();
      break;
    
    default:
      return;
      break;
  }
}


/* -- Form Settings --------------------- */
// Submit Form
function contactFormSubmit() {
  // Stop if not yet validated
  if (!$("#content_contact_form_validate_target").validationEngine('validate')) return;
  
  // Hide Form
  $("#content_contact_form").hide();
  
  // hide Loading
  $("#content_contact_form_loading").show();
  
  // Setup AJAX Request Data
  var request_data = {
                     name    : $("#content_contact_form #name").val(),
                     email   : $("#content_contact_form #email").val(),
                     subject : $("#content_contact_form #subject").val(),
                     comment : $("#content_contact_form #comment").val(),
                     };
    
  // Make Ajax Call
  $.ajax({
          url      : "/mailer/contact.php",
          data     : (request_data),
          success  : contactFormSubmitSuccess,
          error    : contactFormSubmitSuccessError
          });
  
  // Force No Return 
  return false;
}

// Submit Form Success
function contactFormSubmitSuccess(response) {
  // hide Loading
  $("#content_contact_form_loading").hide();
  
  // Fade In View
  $("#content_contact_form_success").fadeIn(250);
  
  // Activate Buttons
  $("#content_contact_another").click(function() {
    // Reset Form
    contactFormReset();
    
    // Hide This
    $("#content_contact_form_success").hide();
    
    // Unbind
    $(this).unbind();
        
    // Show Form
    $("#content_contact_form").show();
    
    // return
    return false;
  });
}

// Submit Form Error
function contactFormSubmitSuccessError(response) {  
  // hide Loading
  $("#content_contact_form_loading").hide();
  
  // Fade In View
  $("#content_contact_form_error").fadeIn(250);
  
  // Activate Buttons
  $("#content_contact_retry").click(function() {    
    // Hide This
    $("#content_contact_form_error").hide();
    
    // Unbind
    $(this).unbind();
        
    // Show Form
    $("#content_contact_form").show();
    
    // return
    return false;
  });
}

// Reset Contact Form
function contactFormReset() {
  // Stop Validation
  $("#content_contact_form_validate_target").validationEngine('detach');
  
  // Clear And loose focus on inputs
  $("#content_contact_form_validate_target #name").val("");
  $("#content_contact_form_validate_target #name").blur();
  
  $("#content_contact_form_validate_target #email").val("");
  $("#content_contact_form_validate_target #email").blur();
  
  $("#content_contact_form_validate_target #subject").val("");
  $("#content_contact_form_validate_target #subject").blur();
  
  $("#content_contact_form_validate_target #comment").val("");
  $("#content_contact_form_validate_target #comment").blur();
  
  // Hide Validation Feed back
  $("#content_contact_form_validate_target").validationEngine('hideAll');
  
  // Reattach
  $("#content_contact_form_validate_target").validationEngine('attach', {promptPosition : "bottomRight"}); 
  
  // Return
  return false;  
}
