var castJurorRatings = function(e) {
  var link = this
  var entry = link.getProperty('entry');
  var form = "form-juror-ratings-" + entry;
  var valid = true
  $(form).getElements('.input-ratings').each(function(item) {
    if(valid == false) {
      return;
    }
    value = parseInt(item.value);
    if(value > 100 || value == 0 || item.value == '') {
      alert("All the values must be between 1 and 100");
      return (valid = false);
    }
  });
  if(valid) {
    link.setHTML('<em>Updating...</em>');
    //$(form).send({onComplete:function(r){ link.setHTML('Update Ratings'); alert('Ratings have been updated successfully'); }});
    $(form).submit();
  }
  return false;
}

var castJurorEntrySelection = function(e) {
  var buttons = this.getParent();
  var spinner = buttons.getParent().getElement('span.spinner');
  var l = this;
  var url = this.href;
  buttons.hide();
  new Element('img', { 'src' : '/images/spinner_mac.gif', 'border' : '0' }).injectInside(spinner);
  new Ajax(url, {
    method: "get",
    update: spinner,
    onComplete: function(r) {
      new Element('img', { 'src' : '/images/selected-sticker.png', 'border' : '0' }).injectAfter(spinner);
    }
  }).request();
  return false;
}

var castJurorEntryRejection = function(e) {
  var buttons = this.getParent();
  var spinner = buttons.getParent().getElement('span.spinner');
  var l = this;
  var url = this.href;
  buttons.hide();
  new Element('img', { 'src' : '/images/spinner_mac.gif', 'border' : '0' }).injectInside(spinner);
  new Ajax(url, {
    method: "get",
    update: spinner,
    onComplete: function(r) {
      new Element('img', { 'src' : '/images/rejected-sticker.png', 'border' : '0' }).injectAfter(spinner);
    }
  }).request();
  return false;
}

var castPublicVote = function(e) {
  var spinner = this.getParent().getElement('span.spinner');
  var l = this;
/*   alert(this); */
  var url = this.href;
  l.hide();
  new Element('img', { 'src' : '/images/spinner_mac.gif', 'border' : '0' }).injectInside(spinner);
  new Ajax(url, {
    method: "get",
    update: spinner,
    onComplete: function(r) {
			// Restored the sticker to the media-container.
      //new Element('img', { 'src' : '/images/voted-sticker.png', 'border' : '0' }).injectAfter(spinner);
      new Element('img', { 'src' : '/images/voted-sticker.png', 'border' : '0' }).injectInside($('sticker'));
    }
/*     }, */
/*     onSuccess: function(r) { */
/*       alert("Exito!"); */
/*     }, */
/*     onFailure: function(r) { */
/*       alert("Oops!"); */
/*       l.show(); */
/*     }
 */
  }).request();
  return false;
}

var castVote = function(e) {
       var votes_count = this.getParent().getElement('span.votes-count');
       var l = this;
       //alert(this);
       var url = this.href;
       new Element('img', { 'src' : '/images/spinner_mac.gif', 'border' : '0' }).injectInside(votes_count);
       new Ajax(url, {
         method: "get",
         update: votes_count,
         onComplete: function(r) {
          l.remove();
          new Element('img', { 'src' : '/images/voted-tick.gif', 'border' : '0' }).injectAfter(votes_count);
         }
       }).request();
       return false;
}

var deleteRing = function(e) {
  var item = $$('table#' + this.id);
  var url = this.href;
  // alert(this);
  new Ajax(url, {
    method: "get",
    onComplete: function(r) {
      item.remove();
    }
  }).request();
  return false;
}

  // Flag as inappropriate.
  var FlagAsInappropriateLink = new Class(
  {
    initialize: function(flagger)
    {
      flagger.addEvent("click", function(e) {
        e = new Event(e).stop();
        var url = this.href;
        new Ajax(url, {
          method: "get",
          onComplete: function(r) {
            $('flag-as-inappropriate').innerHTML = "This post has been flagged as inappropriate";
          }
        }).request();
      });
    }
  });

  // Spokesperson checkboxes.
  var SpokespersonCheckbox = new Class(
  {
    initialize: function(input)
    {
      input.addEvent("click", function(e) {
        url = this.getProperty('uri');
        new Ajax(url, {
          method: "get"
        }).request();
      });
    }
  });


window.addEvent( 'domready', function(){
        // sidebar signin
        var signinOpen=false;
        var signinMoving=false;
        if($('sidebar-signin')) {
                $('sidebar-signin').hide();
                $('sidebar-signin-cancel').addEvent( 'click', function(e) {
                                        $('sidebar-signin').blindUp({ duration: 300,  onComplete: function(){
                                                signinMoving=false;
                                        } }) ;
                                        signinOpen=false;
                });
        }
        if($('nav-signin')) {
                $('nav-signin').addEvent( 'click', function(e) {
                        if(!signinMoving) {
                                signinMoving=true;
                                if(signinOpen) {
                                        $('sidebar-signin').blindUp({ duration: 300,  onComplete: function(){
                                                signinMoving=false;
                                        } }) ;
                                        signinOpen=false;
                                } else {
                                        $('sidebar-signin').blindDown({ duration: 300,  onComplete: function(){
                                                signinMoving=false;
                                        } }) ;
                                        signinOpen=true;
                                }
                        }
                        return stop_event(e) ;
                });
        }

        //      Tools
        if($('site-search-keywords')) {
                $('site-search-keywords').addEvent( 'focus', function(e){
                        if ($('site-search-keywords').value == "Search everything") {this.value = ""};
                        $('site-search-keywords').select();
                        return stop_event(e) ;
                }) ;

                $('site-search-keywords').addEvent( 'blur', function(e){
                        if ($('site-search-keywords').value == "") {this.value = "Search everything"};
                        return stop_event(e) ;
                }) ;
        }

        // theme tabs
        if($('social-theme-tab') && $('design-type-tab')) {
                $('social-theme-tab').addEvent( 'click', function(e){
                        $('social-themes').style.display = 'inline';
                        $('design-types').style.display = 'none';
                        $('social-theme-tab').className = 'active-tab';
                        $('design-type-tab').className='';
                        return stop_event(e) ;
                }) ;

                $('design-type-tab').addEvent( 'click', function(e){
                        $('social-themes').style.display = 'none';
                        $('design-types').style.display = 'inline';
                        $('social-theme-tab').className='';
                        $('design-type-tab').className = 'active-tab';
                        return stop_event(e) ;
                }) ;
        }

        // create home feature links
        if($('slidr')) {
                initLinks();
        }

        //  SliderWidget
        l = (items = $$('.slider_widget')).length;
        for(i = 0; i < l; i++) new SliderWidget(items[i]);

        // control profile edit form
        if($('form-about-me')) {
                if(!$('form-about-me_open')) {
                        $('form-about-me').hide();
                }
                //h=$('form-about-me').getStyle('height').split('p')[0] ; //$('form-about-me').style.height = h+'px'; //
                //$('form-about-me').hide();
                $('edit-about-me').addEvent( 'click', function (e) {
                        controlFormAccordian('form-about-me','edit-about-me');
                        return stop_event(e);
                });
                $('cancel-about-me').addEvent( 'click', function (e) {
                        controlFormAccordian('form-about-me','edit-about-me');
                        return stop_event(e);
                });
        }
        if($('form-work-samples')) {
                if(!$('form-work-samples_open')) {
                        $('form-work-samples').hide();
                }
                //h=$('form-work-samples').getStyle('height').split('p')[0] ; //$('form-work-samples').style.height = h+'px'; //
                //$('form-work-samples').hide();
                $('edit-work-samples').addEvent( 'click', function (e) {
                        controlFormAccordian('form-work-samples','edit-work-samples');
                        return stop_event(e);
                });
        }
        if($('form-account-info')) {
                if(!$('form-account-info_open')) {
                        $('form-account-info').hide();
                }
                //h=$('form-account-info').getStyle('height').split('p')[0] ; //$('form-account-info').style.height = h+'px'; //

                $('edit-account-info').addEvent( 'click', function (e) {
                        controlFormAccordian('form-account-info','edit-account-info');
                        return stop_event(e);
                });
                $('cancel-account-info').addEvent( 'click', function (e) {
                        controlFormAccordian('form-account-info','edit-account-info');
                        return stop_event(e);
                });
        }

        if($('form-register') || $('form-account-info')) {
                if ($('member-activity-designer').checked) {
                    $('position-field').hide();
                }
                else {
                    $('designer-activities').hide();
                }
                $('member-activity-designer').addEvent( 'click', function (e) {
                        $('position-field').hide();
                        $('designer-activities').show();
                });
                $('position-field').addEvent( 'click', function (e) {
                        $('designer-activities').hide();
                        $('position-field').show();
                });
                $$('input.radio-select').addEvent( 'click', function (e) {
                        $('designer-activities').hide();
                        $('position-field').show();
                });

        }

        // control profile edit form
        if($('form-about-organization')) {
                if(!$('form-about-organization_open')) {
                        $('form-about-organization').hide();
                }
                //h=$('form-about-organization').getStyle('height').split('p')[0] ; //$('form-about-organization').style.height = h+'px';

                $('edit-about-organization').addEvent( 'click', function (e) {
                        controlFormAccordian('form-about-organization','edit-about-organization');
                        return stop_event(e);
                });
                $('cancel-about-organization').addEvent( 'click', function (e) {
                        controlFormAccordian('form-about-organization','edit-about-organization');
                        return stop_event(e);
                });
        }
        if($('form-group-spokespersons')) {
                if(!$('form-group-spokespersons_open')) {
                        $('form-group-spokespersons').hide();
                }
                //h=$('form-group-spokespersons').getStyle('height').split('p')[0] ; //$('form-group-spokespersons').style.height = h+'px'; //

                $('edit-group-spokespersons').addEvent( 'click', function (e) {
                        controlFormAccordian('form-group-spokespersons','edit-group-spokespersons');
                        return stop_event(e);
                });
                $('cancel-group-spokespersons').addEvent( 'click', function (e) {
                        controlFormAccordian('form-group-spokespersons','edit-group-spokespersons');
                        return stop_event(e);
                });
        }

        if($('form-org-contact')) {
                if(!$('form-org-contact_open')) {
                        $('form-org-contact').hide();
                }
                //h=$('form-org-contact').getStyle('height').split('p')[0] ; //$('form-org-contact').style.height = h+'px';

                $('edit-org-contact').addEvent( 'click', function (e) {
                        controlFormAccordian('form-org-contact','edit-org-contact');
                        return stop_event(e);
                });
                $('cancel-org-contact').addEvent( 'click', function (e) {
                        controlFormAccordian('form-org-contact','edit-org-contact');
                        return stop_event(e);
                });
        }

        //control blog post response form
        if($('blog-response-form')) {
                h = $('blog-response-form').getStyle('height').split('p')[0] ;
                $('blog-response-form').style.height = h+'px';
                $('blog-response-form').hide();

                if (l = $('leave-response'))
                    l.addEvent( 'click', function (e) {
                            $('blog-response-form').blindDown({duration: 280});
                            $('leave-response').hide();
                            return stop_event(e);
                    });

                if (cr = $('cancel-response'))
                    cr.addEvent( 'click', function (e) {
                            $('blog-response-form').blindUp({duration: 280});
                            $('leave-response').show();
                            return stop_event(e);
                    });

                if (cri = $('cancel-response-inner'))
                    cri.addEvent( 'click', function (e) {
                            $('blog-response-form').blindUp({duration: 280});
                            $('leave-response').show();
                            return stop_event(e);
                    });
        }

                                activate_suggested_tags = function() {
                                        $$('.suggested-tag').addEvent( 'click', function (t) {
                                                if($('selected-tags').value=='') {
                                                        newVal = this.innerHTML;
                                                } else {
                                                        newVal = ', '+this.innerHTML;
                                                }
                                                $('selected-tags').value += newVal;
                                                return stop_event(t);
                                        });
                                }

                                if($$('.suggested-tag')) {
                                        activate_suggested_tags()
                                }

        if($('tag-selection') && $('post_social_theme_id')) {
                $('post_social_theme_id').addEvent('change', function(e) {
      if($('post_social_theme_id').value == '') {
        return stop_event(e);
      } else {
        tags = eval("social_theme_" + $('post_social_theme_id').value);
        selection = tags.map(function(item, index) {
          return '<a href="#" class="suggested-tag">' + item + '</a>'
        });
        $('tag-selection').innerHTML = selection.join(', ')

                                activate_suggested_tags()
      }
                });
        }

        if($('tag-selection')) {
                $('tag-selection-container').hide();
                $('add-tags-link').addEvent( 'click', function (e) {
                        if($('tag-selection-container').style.display=='none') {
                                $('tag-selection-container').blindDown({duration: 300});
                                $('add-tags-link').innerHTML = 'Cancel';
                                $('add-tags-link').className = 'red-italic';
                        } else {
                                $('tag-selection-container').blindUp({duration: 300});
                                $('add-tags-link').innerHTML = 'Add tags to your post';
                                $('add-tags-link').className = '';
                                $('selected-tags').value='';
                        }
                        return stop_event(e);
                });
        }

        // add focus colour change to all inputs, textareas and selects
  for(var i=0;i<document.getElementsByTagName('input').length;i++) {
                o=document.getElementsByTagName('input')[i];
                if($(o).id != 'site-search-keywords') {
                        $(o).addEvent('focus', function(e){ this.setStyle('color','#000');});
                }
  }

  for(var i=0;i<document.getElementsByTagName('textarea').length;i++) {
                o=document.getElementsByTagName('textarea')[i];
                $(o).addEvent('focus', function(e){ this.setStyle('color','#000');});
  }

//  for(var i=0;i<document.getElementsByTagName('select').length;i++) {
  //              o=document.getElementsByTagName('select')[i];
    //            $(o).addEvent('focus', function(e){ this.setStyle('color','#000');});
//  }

  // Make work the juror_ratings buttons.
  l = (items = $$('button.juror-ratings')).length;
  for(i = 0; i < l; i++) {
      items[i].onclick = castJurorRatings;
  }

  // Make the juror ratings boxes input only numbers.
  l = (items = $$('.input-ratings')).length;
  for(i = 0; i < l; i++) {
    items[i].addEvent('keypress', function(e) {
      var keynum; var keychar; var numcheck = /\d/;

      if(window.event) {        // IE
        keynum = e.keyCode;
      } else if(e.which) {      // Netscape / Firefox / Opera
        keynum = e.which;
      }
      if(keynum == 13) { $('juror-ratings-' + this.getProperty('entry')).onclick() }
      if(keynum == 8) { return true; }
      if(numcheck.test(String.fromCharCode(keynum))) {
        return true;
      } else {
        return stop_event(e);
      }
    });
  }

  // Make work the juror_selection buttons.
  l = (items = $$('a.select-entry-link')).length;
  for(i = 0; i < l; i++) {
      if (!items[i].hasClass('logged-in')) next;
      items[i].onclick = castJurorEntrySelection;
  }

  // Make work the juror_rejection buttons.
  l = (items = $$('a.reject-entry-link')).length;
  for(i = 0; i < l; i++) {
      if (!items[i].hasClass('logged-in')) next;
      items[i].onclick = castJurorEntryRejection;
  }

  // Make work the contest_entry_public_vote buttons.
  l = (items = $$('a.public-vote-link')).length;
  for(i = 0; i < l; i++) {
      if (!items[i].hasClass('logged-in')) next;
      items[i].onclick = castPublicVote;
  }

  // Make work the vote buttons.
  l = (items = $$('a.vote-link')).length;
  for(i = 0; i < l; i++) {
      if (!items[i].hasClass('logged-in')) next;
      // console.log(items[i]);
      items[i].onclick = castVote;
      //new VoteLink(items[i]);
  }

  // Lookup 'Delete' links in the cart
  l = (items = $$('a.delete-ring')).length;
  for(i = 0; i < l; i++) {
    items[i].onclick = deleteRing;
  }

  // Make the juror selection pager control.
  if($('jury-review-control')) {
    $('jury-review-control').addEvent('keypress', function(e) {
      var keynum; var keychar; var numcheck = /\d/;

      if(window.event) { 			// IE
        keynum = e.keyCode;
      } else if(e.which) { 		// Netscape / Firefox / Opera
        keynum = e.which;
      }

      path = this.value == 1 ? '' : "/" + this.value;
      if(keynum == 13) { location.href = this.getProperty('uri') + path }
      if(keynum == 8) { return true; }
      return numcheck.test(String.fromCharCode(keynum))
    });
  }

  // Make work the flag as inappropriate buttons.
  if($('flag-as-inappropriate-link')) {
    new FlagAsInappropriateLink($('flag-as-inappropriate-link'));
  }

  // Make work the spokespersons checkboxes.
  l = (items = $$('.spokesperson-checkbox')).length;
  for(i = 0; i < length; i++) {
    new SpokespersonCheckbox(items[i]);
  }

  if($('edit-spokespersons')) {
    $('edit-spokespersons').addEvent( 'click', function (e) {
      window.open(e.currentTarget.href,null,"width=495,height=620,status=no,toolbar=no,menubar=no,location=no,scrollbars=1");
      return stop_event(e);
    });
  }


  if($$('.close-window')) {
    $$('.close-window').addEvent( 'click', function (e) {
       window.close();
      return stop_event(e);
    });
  }

  // Closes Popup
  if($$('.close')) {
    $$('.close').addEvent( 'click', function (e) {
       window.close();
      return stop_event(e);
    });
  }

  if (prf = $('post-response-form')) {
      prf.addEvent('submit', function (e) {
              if (prf.getElement('#title').value == '' || prf.getElement('body').value == '') {
                  $('validation-notice').hide();
                  $('validation-message').appear();
                  window.scrollTo(0, $$('div.response-header')[0].getTop() - 10);
                  return stop_event(e);
              }
      });
  }
  var currentRing='ring-thumb-ss';
//   // support landing page
//   if($$('.ring-rollover')) {
//     $$('.ring-rollover').addEvent('mouseover', function(e) {
//       showRingInfo(this.id.split('-',3)[2]);
//       $(currentRing).className = 'blue-border'
//       this.className = 'grey-border';
//       currentRing=this.id;
//     });
//   }

  // image preloading
  images.push( preload( '/images/spinner_mac.gif' ) ) ;
  images.push( preload( '/images/voted-tick.gif' ) ) ;

});

var stop_event = function(e){

        if (e.stopPropagation){
                e.stopPropagation();
                e.preventDefault();
        } else {
                e.returnValue = false;
                e.cancelBubble = true;
        }
        return false;
};

// show ring info
// NOTE This is AWFULLY hardcoded and I think would be better to decide if we need
// a fully supported shop with many products, or just this ones.
function showRingInfo(r) {
        rt = $('ring-title');
        rp = $('rp-inner');
        im = $('ring-image');
        switch(r) {
                case ('ss'):
                        rt.innerHTML = "Allumonde Stainless Steel"; rp.innerHTML = "35";

                        im.src = '/images/rings/ss.gif';
                break
                case ('ti'):
                        rt.innerHTML = "Allumonde SS Titanium Black"; rp.innerHTML = "55";
                        im.src = '/images/rings/ti.gif';
                break
                case ('ssgold'):
                        rt.innerHTML = "Allumonde SS Titanium Gold"; rp.innerHTML = "65";
                        im.src = '/images/rings/ssgold.gif';
                break
                case ('sil'):
                        rt.innerHTML = "Allumonde Silver"; rp.innerHTML = "85";
                        im.src = '/images/rings/sil.gif';
                break
                case ('gold'):
                        rt.innerHTML = "Allumonde Gold"; rp.innerHTML = "2800";
                        im.src = '/images/rings/gold.gif';
                break
                case ('set'):
                        rt.innerHTML = "Allumonde Kids' Acrylic Set of 6"; rp.innerHTML = "25";
                        im.src = '/images/rings/set.gif';
                break
        }
}

var openForm='';
var openLink='';

function controlFormAccordian(f,l) {
        if(openForm=='') {
                openFormAccordian(f,l);
        } else {
                if(f==openForm) {
                        closeFormAccordian(f,l,false);
                } else {
                        closeFormAccordian(f,l,true);
                        //setTimeout(openFormAccordian, 3000, f, l);
                }
        }
}
function openFormAccordian(f,l) {
        openForm = f;
        openLink = l;
        $(openForm).blindDown({ duration: 280, onComplete: function(){
                        $(openLink).innerHTML = 'Cancel Edit';
                        $(openLink).className = 'red-italic';
                }
        }) ;
}
function closeFormAccordian(f,l,openNext) {
        if(openNext==true) {
                $(openForm).blindUp({ duration: 280, onComplete: function(){
                                $(openLink).innerHTML = 'Edit';
                                $(openLink).className = 'blue';
                                openForm = '';
                                openLink = '';
                                //setTimeout(openFormAccordian, 200, f, l);
                                openFormAccordian(f,l);
                        }
                }) ;
        } else {
                $(openForm).blindUp({ duration: 280, onComplete: function(){
                                $(openLink).innerHTML = 'Edit';
                                $(openLink).className = 'blue';
                                openForm = '';
                                openLink = '';
                        }
                }) ;
        }
}

//////
// slideshow controller (home)
//////

//create links
var posArray = new Array();
var linkArray = new Array();
var currentRotatePos = 0;
function initLinks() {
        homeSlidrMoving=false; currentActiveLink = 'ssNav1';
        var divs = $('slidr').getElementsByTagName('div');
        currentDiv = divs[0];
        for (var i =0; i < divs.length; i++) {
                n=i+1; p=i*280; newID = 'ssNav'+n;
                                posArray[i] = p;
                                linkArray[i] = newID;
                var newLink = new Element('a').setHTML(n).injectInside($('slideshow-nav'));
                $(newLink).id=newID;
                $(newLink).href='javascript:doSlide('+p+',\'ssNav'+n+'\',false,'+i+');';
        }
        // highlight current link
        $('ssNav1').className = 'active';
                rotate = setInterval(autoRotate, 4000);
}
// auto rotate
function autoRotate() {
        doSlide(posArray[currentRotatePos], linkArray[currentRotatePos], true, currentRotatePos);
        if(currentRotatePos==$('slidr').getElementsByTagName('div').length-1) {
                currentRotatePos=0;
        } else {
                currentRotatePos++;
        }
}
// slide panel
function doSlide(to, currentLink, auto, pos) {
        if(!homeSlidrMoving) {
                homeSlidrMoving=true;
                $('slidr').slide_to( to,{ transition: Fx.Transitions.quintOut, duration: 1000, onComplete: unlockSlidr } );
                highlightCurrent(currentLink);
        }
                if(auto==true) {

                } else {
                        clearInterval(rotate);
                        currentRotatePos = pos;
                        rotate = setInterval(autoRotate, 4000);
                }
}
// unlock slider
function unlockSlidr() { homeSlidrMoving=false;}

// un-highlight all except current
function highlightCurrent(currentLink) {
        var divs = $('slidr').getElementsByTagName('div');
        if(currentActiveLink != currentLink) {
                for (var i =0; i < divs.length; i++) {
                        e = 'ssNav'+(i+1);
                        $(e).className = '';
                }
                $(currentLink).className = 'active';
                currentActiveLink = currentLink;
        }
}
