var loadMyHawaiiTab = function(){
  
  var useLoggedIn = myHawaiiGet();

  if(useLoggedIn != false && useLoggedIn != 'false'){
    if($$('#myhawaiiload')[0]){
      
      var objMH = modules.sanitizeResponse(useLoggedIn, {});
      //console.log(objMH);
      $$('#mh-user strong')[0].innerHTML = objMH.name;
      $$('#mh-saved a')[0].innerHTML = objMH.tCount + ' Saved';
      
      $$('#myhawaiiload')[0].style.display = 'block'
      
      refeshMyHawaiiTab();
    }
  }
  else if($$('#myhawaiistatic')[0]){
    $$('#myhawaiistatic')[0].style.display = 'block'
  }
  
}

var refeshMyHawaiiTab = function(){
  if($$('#myhawaiiload')[0]){
    var url = (SiteVars.sitePrefix == '')? '/myhawaii/ajaxload' : '/' + SiteVars.sitePrefix +'/myhawaii/ajaxload';
    var params     =  '';
    new Ajax.Updater('myhawaiiload',url,params);
  }
}

var forceMyHawaiiTab = function(){
    var url = (SiteVars.sitePrefix == '')? '/myhawaii/ajaxload' : '/' + SiteVars.sitePrefix +'/myhawaii/ajaxload';
    new Ajax.Updater('myhawaiiload',url,{
        onComplete:function(req){
          $$('#myhawaiiload')[0].style.display = 'block'
          $$('#myhawaiistatic')[0].style.display = 'none'
        }
    });
}


myHawaiiGet = function(){
  var isLoggedIn = Cookie.get('myHawaiiLogin');
  return isLoggedIn;
}

myHawaiiSet = function(set){
  Cookie.set('myHawaiiLogin', set, 0, '/');
}


checkMyEvents = function(id){
  var parentList = $(id).parentNode;
  var parentListItems = Element.select(parentList, 'li');
  var totalCount = parentListItems.length;
  var runningCount = 0;
  var msg = '';
  parentListItems.each(function(item){
      if(Element.hasClassName(item, 'deleted')){
        runningCount++
      }
  });
  if(totalCount == runningCount){
    msg = '<li>Your search returned 0 results</li>';
    parentList.innerHTML = msg;
    
    if(Element.hasClassName(parentList, 'myevents-pending')){
      if($$('p.pending-message')[0]){
        $$('p.pending-message')[0].innerHTML = 'No Events found';
      }
    }
  }
}

var submitSerializedNotesDom = function(displayId){
  
  var fDiv = $('form-' + displayId);
  var serializedForm = 'entryId=' + Element.select(fDiv, '.entry-id')[0].value + '&note=' + escape(Element.select(fDiv, '.entry-note')[0].value)
  var url = SiteVars.path_to_top+'/myhawaii/addnote';
    
  //if( window.console ) window.console.log ('Serialized Form'+formId+' = %s',serializedForm);
  
    new Ajax.Request(url, {parameters:serializedForm,
        onComplete:function(response){
          var xmlDoc = response.responseXML;
          
          if(xmlDoc.getElementsByTagName('Error').length <= 0 ){
            //$('success_</xsl:text><xsl:value-of select="$boxId"/><xsl:text>').show();
            
            Element.appear('success_'+displayId,{ duration: 0.01 });
            Element.fade.delay(1.5,'success_'+displayId);
          }
          else{
            $('failure_'+displayId).show();
          }
          
        }
      
    });
  
}


document.observe( 'dom:loaded', function(){
    var myHawaiiTab = new loadMyHawaiiTab();
});


/* alert */
/* map it functionality */
AlertOptions = Object.extend({
    fileLoadingImage:        'images/loading.gif',     
    fileBottomNavCloseImage: 'images/closelabel.gif',

    overlayOpacity: 0.8,   // controls transparency of shadow overlay

    animate: true,         // toggles resizing animations
    resizeSpeed: 7,        // controls the speed of the image resizing animations (1=slowest and 10=fastest)

    borderSize: 10,         //if you adjust the padding in the CSS, you will need to update this variable

	// When grouping images this is used to write: Image # of #.
	// Change it for non-english localization
	labelImage: "Image",
	labelOf: "of"
}, window.AlertOptions || {});

var Alert = Class.create();
Alert.prototype = {

  lightbox: undefined,
  overlay: undefined,
  
  hideAll: function(){
		
		
				Element.hide("alert-lightbox")
		
		
	},
	
	// just need to inject HTML
  loadalert:function(link) {
    //$('alertDetails').innerHTML = '<div class="loader"><img src="/template_images/loading.gif"/></div>';
    
    that = this;
    
    var loginForm = '<div class="signin-block" style="display:none;"><div class="signin-error" style="display:none;"><span style="color: red;">Wrong username or password. </span><a href="' + SiteVars.path_to_top + '/myhawaii/forgotpwd">Forgot your password?</a></div><form action="' + SiteVars.path_to_top + '/myhawaii/signin-check" class="myhawaiiform login signin-form" method="post"><div style="display:none;"><input type="hidden" name="action" value="form"></div><div class="error-required" style="display:none;">The following fields must be filled in:</div><script type="text/javascript">if(Form && Form.properties){Form.properties.ErrorMessageOther = " is not in the correct format.";}</script><fieldset id="Login"><label id="label_email" for="email">E-Mail:<em> *</em></label><input type="text" name="email" id="email" size="20" style="" value=""><label id="label_password" for="password">Password:<em> *</em></label><input type="password" name="password" id="password" size="20" style="" value=""><button class="submit">Sign In</button></fieldset></form></div>';
    
    var msgDiv = "<div class='myhawaiiplannerbox'><div class='inside'><h2><a href='/myhawaii'>My Hawaii Planner</a></h2><div class='signin-intro'>To add items to your MyHawaii account, please <a href='/myhawaii' class='signin-link'> sign in</a> or <a href='/myhawaii/register?myhawaii.listingRef="+location.href+"'>create an account</a>.</div> "+ loginForm  +"</div><a href='#' class='close' id='close'>close</a></div>";
    //console.log(this.lightbox);
    //originalHTML = this.lightbox.innerHTML;
    this.lightbox.innerHTML = msgDiv;
    
    this.signinLink = Element.select(this.lightbox, '.signin-link')[0];
    this.signinForm = Element.select(this.lightbox, '.signin-form')[0];
    this.closeLink  = Element.select(this.lightbox, '#close')[0];
    
    $(this.closeLink).observe('click', (function(event) { event.stop(); this.end(); }).bind(this));    
    //console.log(this.signinLink);
    //console.log(this.signinForm); 
    
    Event.observe(this.signinLink, 'click', function(e){
        Element.select(this.lightbox, '.signin-intro')[0].toggle();
        Element.select(this.lightbox, '.signin-block')[0].toggle();
        Event.stop(e);
    });
    
    Event.observe(this.signinForm, 'submit', function(e){
        Event.stop(e);
        //console.log(that.signinForm);
        Form.request(that.signinForm, {
            onSuccess:function(req){
              if(req.responseText.indexOf('Error message=')!=-1){
                Element.select(that.lightbox, '.signin-error')[0].show();
              }
              else{
                forceMyHawaiiTab();
                //console.log('hiding : ');
                //console.log(link);
                $('add_'+link.rel).hide();
                $('ok_'+link.rel).show();
                that.end();
              }
              //console.log(req);
            }
        });
    });
    
  },
  
  
  initialize:function() {
    var links = $$('.getalert');
    var self = this;
    
    
    
    this.resizeDuration = AlertOptions.animate ? ((11 - AlertOptions.resizeSpeed) * 0.15) : 0;
    this.overlayDuration = AlertOptions.animate ? 0.2 : 0;  // shadow fade in/out duration

    //console.log('initializing...');
    
    links.each(function(linkItem) {
        // override other lightboxes
        //linkItem.json = linkItem.title;
        //linkItem.removeAttribute('title');
        linkItem.stopObserving('click');
        
        
        
        Event.observe(linkItem, 'click', function(e) {
           
           Event.stop(e);
           
           new Ajax.Request(linkItem.href, { 
               onSuccess:function(response){
                 var xmlDoc = response.responseXML;
                 if(response.responseText.indexOf('no active session found') >= 0){
                   self.start(linkItem);
                   self.loadalert(linkItem); //linkItem.json.evalJSON()
                 }
            
                 var result = xmlDoc.getElementsByTagName('Result').item(0).getAttribute('message');
                 if(result.indexOf(' successful') >= 0){
                    refeshMyHawaiiTab();
                    //console.log('hiding : ');
                    //console.log(linkItem);
                    $('add_'+linkItem.rel).hide();
                   $('ok_'+linkItem.rel).show();
                 }
                 else if(result.indexOf(' has already been added') >= 0){
                   $('add_'+linkItem.rel).hide();
                   $('exists_'+linkItem.rel).show();
                 }
               }
           });
           
           //alert('loading alert box');
           if(Element.hasClassName(linkItem, "single-tracked-link")){
             modules.actions.trackedLinks.singleCall(linkItem);
           }
           //Event.stop(e);
        
        });
    });
    
    
    
    
    this.initBox();	
    this.hideAll();
		
    
    
    /* from lightbox */
   
    
    
  },
  
  resetLinks:function() {
    /* just need to reset the links (ie - a new batch has been loaded in via ajax) - all other initializing should be done again */
    var links = null;
    var links = $$('.getalert');
    var self = this;
    
    links.each(function(linkItem) {
        linkItem.stopObserving('click');
        Event.observe(linkItem, 'click', function(e) {
           Event.stop(e);
           new Ajax.Request(linkItem.href, { 
               onSuccess:function(response){
                 var xmlDoc = response.responseXML;
                 if(response.responseText.indexOf('no active session found') >= 0){
                   self.start(linkItem);
                   self.loadalert(linkItem); //linkItem.json.evalJSON()
                 }
                 var result = xmlDoc.getElementsByTagName('Result').item(0).getAttribute('message');
                 if(result.indexOf(' successful') >= 0){
                   $('add_'+linkItem.rel).hide();
                   $('ok_'+linkItem.rel).show();
                   refeshMyHawaiiTab();
                 }
                 else if(result.indexOf(' has already been added') >= 0){
                   $('add_'+linkItem.rel).hide();
                   $('exists_'+linkItem.rel).show();
                 }
               }
           });
           if(Element.hasClassName(linkItem, "single-tracked-link")){
             modules.actions.trackedLinks.singleCall(linkItem);
           }
        });
    });
  },
  
  start:function(link) {
    
    try{
    var arrayPageSize = Lightbox.prototype.getPageSize();
    this.overlay.setStyle({ width: arrayPageSize[0] + 'px', height: arrayPageSize[1] + 'px'});
    new Effect.Appear(this.overlay, { duration: this.overlayDuration, from: 0.0, to: AlertOptions.overlayOpacity });
    
    
    
    var arrayPageScroll = document.viewport.getScrollOffsets();
    var lightboxTop = arrayPageScroll[1] + (document.viewport.getHeight() / 3);
    var lightboxLeft = arrayPageScroll[0];
    this.lightbox.setStyle({ top: lightboxTop + 'px', left: lightboxLeft + 'px' }).show();
    $$('select', 'object', 'embed').each(function(node){ node.style.visibility = 'hidden' });
    }
    catch(e){
      console.dir(e);
    }
  },
  

  
  
  initBox:function() {
    
    
    
    var objBody = $$('body')[0];
    
    Event.observe(objBody, 'unload', function() {
       GUnload(); 
    });
    
    objBody.appendChild(Builder.node('div',{id:'alert-overlay'}));
    objBody.appendChild(Builder.node('div',{id:'alert-lightbox'}, [
      
          Builder.node('div', {className:'woverlay'},[
            
            
            Builder.node('div', {id:'alert-imageDataContainer'}, [
                Builder.node('div',{className:'close'}, [
                    Builder.node('a', {className:'closewin', id:'alert-closewin', href:'#'}, 'CLOSE'), ' X' 
                ]),
                
                Builder.node('div',{id:'alertDetails'})
                
            ]),
            
            Builder.node('div', {className:'clear'})
            
          ]),

          Builder.node('div', {className:'wbottom'}, [ 
             Builder.node('span',{id:'alert-mc-closewin'})
          ])
        
        
      ]));
    
    
    
      this.lightbox = $('alert-lightbox');
      this.overlay = $('alert-overlay');
    
      $('alert-closewin').observe('click', (function(event) { event.stop(); this.end(); }).bind(this));
      
      this.overlay.hide().observe('click', (function() { this.end(); }).bind(this));
      this.lightbox.hide().observe('click', (function(event) { if (event.element().id == 'lightbox') this.end(); }).bind(this));
    
      var th = this;
      (function(){
          var ids = 
              'alert-overlay alert-lightbox innerImageContainer outerImageContainer imageContainer lightboxImage hoverNav prevLink nextLink loading loadingLink ' + 
              'galleryCopy alert-imageDataContainer imageData imageDetails caption numberDisplay hireslink bottomNav bottomNavClose';   
          $w(ids).each(function(id){ th[id] = $(id); });
      }).defer();      
    
  },
  
  
  end: function() {
        //this.disableKeyboardNav();
        this.lightbox.hide();
        new Effect.Fade(this.overlay, { duration: this.overlayDuration });
        $$('select', 'object', 'embed').each(function(node){ node.style.visibility = 'visible' });
  }
  
  
};

var objAlert = null;
document.observe("dom:loaded", function() {
    objAlert = new Alert();
});

