// A List Apart
// http://alistapart.com/articles/makingcompactformsmoreaccessible
// Modified to use jQuery

function initOverLabels () {
  if (!document.getElementById) return;

  var labels, id, field;

  // Set focus and blur handlers to hide and show
  // LABELs with 'overlabel' class names.
  labels = document.getElementsByTagName('label');
  for (var i = 0; i < labels.length; i++) {

    if (labels[i].className == 'overlabel') {

      // Skip labels that do not have a named association
      // with another field.
      id = labels[i].htmlFor || labels[i].getAttribute('for');
      if (!id || !(field = document.getElementById(id))) {
        continue;
      }

      // Change the applied class to hover the label
      // over the form field.
      labels[i].className = 'overlabel-apply';

      // Hide any fields having an initial value.
      if (field.value !== '') {
        hideLabel(field.getAttribute('id'), true);
      }

      // Set handlers to show and hide labels.
      field.onkeyup = function () {
		if (this.value === '') hideLabel(this.getAttribute('id'), false);
      };
	  field.onkeydown = function () {
        hideLabel(this.getAttribute('id'), true);
      };
	  field.onfocus = function () {
	  	if(this.value == "") {
        	dimLabel(this.getAttribute('id'), true);
        } else {
        	hideLabel(this.getAttribute('id'), true);
        }
      };
      field.onblur = function () {
        if (this.value === '') {
          hideLabel(this.getAttribute('id'), false);
		  dimLabel(this.getAttribute('id'), false);
        }
      };

      // Handle clicks to LABEL elements (for Safari).
      labels[i].onclick = function () {
        var id, field;
        id = this.getAttribute('for');
        if (id && (field = document.getElementById(id))) {
          field.focus();
        }
      };

    }
  }
};

function hideLabel (field_id, hide) {
  var field_for;
  var labels = document.getElementsByTagName('label');
  for (var i = 0; i < labels.length; i++) {
    field_for = labels[i].htmlFor || labels[i].getAttribute('for');
    if (field_for == field_id) {
      labels[i].style.textIndent = (hide) ? '-999em' : '0';
      return true;
    }
  }
}

function dimLabel (field_id, dim) {
	var field_for;
	var labels = document.getElementsByTagName('label');
	for (var i = 0; i < labels.length; i++) {
		field_for = labels[i].htmlFor || labels[i].getAttribute('for');
			if (field_for == field_id) {
    		if(dim == true) {
    			$(labels[i]).addClass('dimmed');
    		} else {
    			$(labels[i]).removeClass('dimmed');
    		}
			return true;
		}
	}
}


// SH Hover (similar to suckerfish hover class)

function initJHover () {
	$('button').hover(function() {
		$(this).addClass('jhover');
	}, function() {
		$(this).removeClass('jhover');
	});
}

function initJFocus () {
	$('.text').focus(function() {
		$(this).addClass('jfocus');
	});
	$('.text').blur(function() {
		$(this).removeClass('jfocus');
	});
}


// nyroModal for lightboxes

function initnyroModal() {
	$('a[@href$=".jpg"]').nyroModal({
		bgColor: 'transparent',
		minWidth: 50,
		minHeight: 50
	});
}


// Init

$(document).ready(function() {
	if(!$("body").hasClass("single") && !$("body").hasClass("page")) {
		shrinkWrapper();
	}
	initOverLabels();
	initJHover();
	initJFocus();
	initnyroModal();
});


// Widths

$(window).resize(function() {
	if(!$("body").hasClass("single") && !$("body").hasClass("page")) {
		shrinkWrapper();
	}
});
function shrinkWrapper() {
	var winWidth = 0;
	if(typeof(window.innerWidth) == 'number' ) {
		//Non-IE
		winWidth = window.innerWidth;
	} else if(document.documentElement && (document.documentElement.clientWidth)) {
		//IE 6+ in 'standards compliant mode'
		winWidth = document.documentElement.clientWidth;
	} else if(document.body && (winWidth)) {
		//IE 4 compatible
		winWidth = winWidth;
	}
	if (winWidth > 1720) {
		$("#wrapper").css("width", 1420);
	} else if (winWidth > 1440) {
		$("#wrapper").css("width", 1140);
	} else if (winWidth > 1160) {
		$("#wrapper").css("width", 860);
	} else {
		$("#wrapper").css("width", 580);
	}
}
