/**
 * jQuery Stepy - A Wizard Plugin - http://wbotelhos.com/stepy
 * 
 * @author  Washington Botelho
 * @twitter wbotelhos
 * @version 0.4.1
 * 
 * Licensed under The MIT License
 * http://opensource.org/licenses/mit-license.php
 * 
 */

(function(d){d.fn.stepy=function(j){if(this.length==0){a("Selector invalid or missing!");return;}else{if(this.length>1){return this.each(function(){d.fn.stepy.apply(d(this),[j]);});}}var h=d.extend({},d.fn.stepy.defaults,j),n=d(this),g=this.attr("id"),p=n.children("fieldset"),t=p.size(),s="",r="",i,f=d("<ul/>",{id:g+"-titles","class":"stepy-titles"}).insertBefore(n);if(g===undefined){g="stepy-"+n.index();n.attr("id",g);}if(h.validate&&n.is("form")){n.append('<div class="stepy-error"/>');}p.each(function(u){i=d(this);i.attr("id",g+"-step-"+u).addClass("step").append('<p id="'+g+"-buttons-"+u+'" class="'+g+'-buttons"/>');r=(i.attr("title")!="")?i.attr("title"):"--";s=i.children("legend:first").html();f.append('<li id="'+g+"-title-"+u+'">'+r+"<span>"+s+"</span></li>");if(u==0){if(t>1){k(u);}}else{l(u);i.hide();if(u<t-1){k(u);}}});f.children("li:first").addClass("current-step");var q=n.children(".finish");if(h.finish){if(q.length){q.hide().click(function(){e(n,t-1,h);}).appendTo(n.find("p:last"));}else{if(n.is("form")){a('Button with class "finish" missing!');}}}if(h.titleClick){f.children().click(function(){var v=parseInt(d(this).attr("id").split("-")[2]),w=parseInt(f.children(".current-step").attr("id").split("-")[2]),u=v;if(v>w){if(m(h.onNext,v)){return;}u=o(n,h,v);}else{if(v<w){if(m(h.onBack,v)){return;}}}if(v!=w){b(n,u);if(h.finish&&u+1==t){q.show();}}});}else{f.children().css("cursor","default");}p.delegate('input[type="text"], input[type="password"]',"keypress",function(u){var w=(u.keyCode?u.keyCode:u.which);if(w==13){u.preventDefault();var y=d(this).parent().children("p."+g+"-buttons");if(y.length){var x=y.children("a.button-next");if(x.length){x.click();}else{var v=y.children("input.finish");if(v.length){v.click();}}}}});function m(w,u){var v=w.apply(n,[u+1]);return !(v||v===undefined);}function l(u){d("<a/>",{id:g+"-back-"+u,href:"javascript:void(0);","class":"button-back",html:h.backLabel}).click(function(){if(!m(h.onBack,u-1)){b(n,u-1);if(u+1==t){q.hide();}}}).appendTo(d("p#"+g+"-buttons-"+u));}function k(u){d("<a/>",{id:g+"-next-"+u,href:"javascript:void(0);","class":"button-next",html:h.nextLabel}).click(function(){if(!m(h.onNext,u+1)){var v=o(n,h,u+1);b(n,v);if(h.finish&&v+1==t){q.show();}}}).appendTo(d("p#"+g+"-buttons-"+u));}function o(y,x,w){var u=w,z=true;if(x.validate){for(var v=0;v<w;v++){z=e(n,v,x)&&z;if(x.block&&!z){u=v;break;}}}return u;}return n;};function b(h,f){var j=h.attr("id"),g=h.children("fieldset").size(),i;if(f>g-1){f=g-1;}h.children("fieldset").hide().end().children("fieldset").eq(f).show();h.prev().children().removeClass("current-step").end().children().eq(f).addClass("current-step");if(h.is("form")){h.children("fieldset").eq(f).find(":input:visible").each(function(){i=d(this);if(!i.attr("disabled")){i.focus();return false;}});}}function e(h,f,g){if(!h.is("form")){return true;}var l=h.attr("id"),j=true,i=h.children("fieldset").eq(f),k=h.prev("ul.stepy-titles").children();i.find(":input").each(function(){j&=h.validate().element(d(this));if(j===undefined){j=true;}if(j){if(g.errorImage){k.eq(f).removeClass("error-image");}}else{if(g.block){b(h,f);}if(g.errorImage){k.eq(f).addClass("error-image");}h.validate().focusInvalid();}});return j;}d.fn.stepy.step=function(g,f){var h=c(g,f,"step");if(f.indexOf(".")>=0){return;}b(h,g-1);d.fn.stepy;};function c(j,g,f){var h=undefined;if(g==undefined){a("Specify an ID or class to be the target of the action.");return;}if(g){if(g.indexOf(".")>=0){var i;return d(g).each(function(){i="#"+d(this).attr("id");if(f=="step"){d.fn.stepy.step(j,i);}});}h=d(g);if(!h.length){a('"'+g+'" is a invalid identifier for the public funtion $.fn.stepy.'+f+"().");return;}}return h;}function a(f){if(window.console&&window.console.log){window.console.log(f);}}d.fn.stepy.defaults={backLabel:"&lt; Back",block:false,errorImage:false,finish:true,onBack:function(f){return true;},onNext:function(f){return true;},nextLabel:"Next &gt;",titleClick:false,validate:false};})(jQuery);
