// Place your application-specific JavaScript functions and classes here
// This file is automatically included by javascript_include_tag :defaults

ElevatorUp = {
  toggleVisibility : function (element, visible) {
    var element = $(element);
    visible ? element.show() : element.hide();
  }
};

if (!Ascribe) {
  var Ascribe = { }; 
}

Ascribe.DefaultPhoto = {
  select : function(photo, url, photoSrc) {
    photo = $(photo);
    
    new Ajax.Request(url, { method:'put' })
    
    $$(".default-photo").each(function(e) {
      e.removeClassName("default-photo");
    })
    
    this.unHover(photo);
    photo.addClassName("default-photo");
    
    $$("#default-photo img")[0].src = photoSrc;
  }, 
  
  maskFor : function(photo) {
    photo = $(photo);
    
    var siblings = photo.siblings();
    var mask = null;
    siblings.each(function(e) {
      
      if (e.hasClassName('select-photo-mask')) {
        mask = e;
      }
    });
    
    return mask;
  },
  
  hover : function(photo) {
    photo = $(photo);
    
    if (!photo.hasClassName('default-photo')) {
      var mask = this.maskFor(photo);
      mask.setStyle({ display:'block' });
    }
    
  },
  
  unHover : function(photo) {
    photo = $(photo);
    
    if (!photo.hasClassName('default-photo')) {
      var mask = this.maskFor(photo);
      mask.setStyle({ display:'none' });
    }
  }
}

Ascribe.Utils = {
  setSelectedStateOnLabel : function (element, klass, removeOthers) {
    var newSelected = $(element);
    var klassWhenSelected = "selected-" + klass;
    var removeOthers = removeOthers || false;
    $$("label." + klass).each(function(label, index) {
      var labelElement = $(label);
      if (newSelected.id == labelElement.readAttribute("for") && newSelected.checked) {
        labelElement.addClassName(klassWhenSelected)
      } else if (removeOthers) {
        labelElement.removeClassName(klassWhenSelected)
      } else if (newSelected.id == labelElement.readAttribute("for") && !newSelected.checked) {
        labelElement.removeClassName(klassWhenSelected)
      }
    });
  }
}


Effect.Transitions.bounce = function(p){
	var value;
	p = 1 - p;
	
	for (var a = 0, b = 1; 1; a += b, b /= 2){
		if (p >= (7 - 4 * a) / 11){
			value = - Math.pow((11 - 6 * a - 11 * p) / 4, 2) + b * b;
			break;
		}
	}
	
	return 1 - value;
}

Effect.Transitions.back = function(p) {
  // var x = 1.618;
  var x = 0.5;
  // var x = .;
  p = 1 - p;
  
	return 1 - Math.pow(p, 2) * ((x + 1) * p - x);
}


function log(){
  $A(arguments).each(function(arg) {
    console.log(arg);
  });
}

if(typeof(jQuery) != 'undefined') {
  jQuery(function() {
    Ascribe.AutoJoin.bootstrap();
  });
}


