/*
SimpleLib & plugins

button

*/

/*
 * SimpleLib with jQuery
 *
 * http://lab.starryworks.jp/js/simplelib/
 *
 * Copyright (c) 2009 STARRYWORKS inc.
 * http://www.starryworks.co.jp/
 *
 * Licensed under MIT lisence;
 *
 */
 
var SimpleLib=SimpleLib||{},SimpleLibSettings=SimpleLibSettings||{},SimpleLib=$.extend(!0,{debug:!1,loaded:!1,numPlubinsToLoad:0,numPluginsLoaded:0,numPluginsWaitingForInit:0,_pluginsLoadStarted:{},_eventListeners:{},_onceEventListeners:{},_eventsOnceTriggered:{},jsDir:$("script[src*='simplelib.js'],script[src*='simplelib.min.js']").attr("src").replace(/simplelib\.(min\.)?js.*?$/,""),containsInArray:function(a,b){for(var c in b)if(b.hasOwnProperty(c)&&b[c]===a)return!0;return!1},queryToArray:function(a){var b=
[],a=String(a).split("?");if(!a||a.length<2||!a[1])return b;a=String(a[1]).split(",");$.each(a,function(){this&&b.push(String(this))});return b},isIE:function(){return navigator.userAgent.indexOf("MSIE")!=-1},isIE6:function(){return ('\v'=='v')},loadCSS:function(a){SimpleLib.isIE()?document.createStyleSheet(a):$("head").append('<link rel="stylesheet" type="text/css" href="'+a+'" />')},loadJS:function(a){$.ajax({type:"GET",url:a,dataType:"script",cache:!1,success:SimpleLib._sccess,error:SimpleLib._loadError})},
init:function(a,b){if(a){b=b||{};if(SimpleLib.jsDir=="")SimpleLib.jsDir="./";var c,d,e=a.length;for(c=0;c<e;c++)if(!(a[c].substr(0,3)=="ie6"&&!SimpleLib.isIE6()&&!SimpleLib.debug))d=b[a[c]]||{},SimpleLib[a[c]]=SimpleLib[a[c]]||{},SimpleLib[a[c]].settings&&(d=$.extend(SimpleLib[a[c]].settings,d)),SimpleLib[a[c]].settings=d,(!SimpleLib[a[c]]||!SimpleLib[a[c]].init)&&SimpleLib.load(a[c])}},trigger:function(a){SimpleLib._eventsOnceTriggered[a]=!0;if(SimpleLib._eventListeners[a])for(var b in SimpleLib._eventListeners[a])SimpleLib._eventListeners[a][b]();
if(SimpleLib._onceEventListeners[a]){for(b in SimpleLib._onceEventListeners[a])SimpleLib._onceEventListeners[a][b]();SimpleLib._onceEventListeners[a]=null}},bind:function(a,b,c){c?SimpleLib._eventsOnceTriggered[a]?b():(SimpleLib._onceEventListeners[a]||(SimpleLib._onceEventListeners[a]=[]),SimpleLib._onceEventListeners[a].push(b)):(SimpleLib._eventListeners[a]||(SimpleLib._eventListeners[a]=[]),SimpleLib._eventListeners[a].push(b))},unbind:function(a,b){if(SimpleLib._eventListeners[a])if(b==null)SimpleLib._eventListeners[a]=
null;else{var c=SimpleLib._eventListeners[a].length;for(i=c;i>=0;i--)SimpleLib._eventListeners[a][i]==b&&SimpleLib._eventListeners[a].splice(i,1);for(i=c=SimpleLib._onceEventListeners[a].length;i>=0;i--)SimpleLib._onceEventListeners[a][i]==b&&SimpleLib._onceEventListeners[a].splice(i,1)}},load:function(a){if(!SimpleLib._pluginsLoadStarted[a]){var b=SimpleLib.jsDir+"plugins/"+a+".js";SimpleLib.numPlubinsToLoad++;SimpleLib._pluginsLoadStarted[a]=!0;SimpleLib.loadJS(b)}},_sccess:function(){SimpleLib._loaded()},
_loaded:function(){SimpleLib.numPluginsLoaded++;if(SimpleLib.numPluginsLoaded>=SimpleLib.numPlubinsToLoad)SimpleLib.loaded=!0,SimpleLib.trigger("load"),SimpleLib.numPluginsWaitingForInit<=0&&SimpleLib.trigger("init")},_loadError:function(){SimpleLib.debug&&alert("Load error.");SimpleLib._loaded()},setup:function(){var a=SimpleLib.queryToArray($("script[src*='simplelib.js']").attr("src"));a.length&&SimpleLib.init(a,SimpleLibSettings)},extend:function(a,b){typeof SimpleLib[a]=="undefined"&&(SimpleLib[a]=
{});SimpleLib[a]=$.extend(!0,b,SimpleLib[a]);SimpleLib.trigger("load_"+a);if(SimpleLib[a].dependsOn){SimpleLib.numPluginsWaitingForInit++;var c,d;for(d in SimpleLib[a].dependsOn)c=SimpleLib[a].dependsOn[d],SimpleLib.bind("init_"+c,function(){for(var b in SimpleLib[a].dependsOn)if(!SimpleLib[SimpleLib[a].dependsOn[b]].ready)return;SimpleLib.numPluginsWaitingForInit--;SimpleLib._initPlugin(a)},!0),SimpleLib.load(c)}else SimpleLib._initPlugin(a)},_initPlugin:function(a){typeof SimpleLib[a].init=="function"&&
SimpleLib[a].init();SimpleLib[a].ready=!0;SimpleLib.trigger("init_"+a);SimpleLib.loaded&&SimpleLib.numPluginsWaitingForInit<=0&&SimpleLib.trigger("init")}},SimpleLib);
(function(e){var y=navigator.userAgent.indexOf("MSIE")!=-1,m={over:function(){e(this).button("over")},out:function(){e(this).button("out")},down:function(){e(this).button("down")},up:function(){e(this).button("up")}},n;e.fn.button=function(q){function r(a){var c=a.data("button_options"),b=a.hasClass("selected");s(a);if(!t(a))return!1;var d,e=[];if(b&&c.enableMouseEventsSelected||!b&&c.enableMouseEvents)for(d in h)c[h[d]]&&u(a,h[d])&&e.push(h[d]);a.data("button_statuses",e);v(a)}function v(a){var c=a.data("button_statuses"),b;for(b in c)a.bind(o[c[b]],m[c[b]])}function t(a){var c=a.data("button_options"),b=k(a);if(b.length<=0)return!1;if(b.data("button_default")&&b.data("button_selected"))return!0;var d=b.attr("src"),d=d.replace(n,".$2").replace(n,".$2"),f=d.replace(/\.([a-zA-Z0-9]+)$/,c.postfix.selected+".$1"),g=d.match(/\.png$/)!="";b.data("isPNG",g);b.data("button_default",d);b.data("button_selected",f);g=a.hasClass("selected");b.attr("src",g?f:d);if(!c||c.selected)e("<img />").attr("src",d),e("<img />").attr("src",f);c.fade&&a.is("a")&&!a.find("img.buttonFade").length&&(b.css("position"),a=e('<img width="'+b.width()+'" height="'+b.height()+'" class="buttonFade" />'),b.before(a),a.css({position:"absolute",display:"none"}),b.data("$button_fade",a));return!0}function u(a,c){var b=a.hasClass("selected"),d=a.data("button_options");if(b&&!d.enableMouseEventsSelected||!b&&!d.enableMouseEvents)return!1;if(!t(a))return!1;d=a.data("button_options");if(!d||!d[c]||!d.postfix||!d.postfix.hasOwnProperty(c))return!1;var f="button_"+c,g=k(a);if(!(g.length<=0)){if(g.data(f))return!0;var b=a.hasClass("selected"),h=g.data("button_default").replace(/\.([a-zA-Z0-9]+)$/,d.postfix[c]+".$1"),i=g.data("button_selected").replace(/\.([a-zA-Z0-9]+)$/,d.postfix[c]+".$1");g.data(f,b&&d.postfix[c]!=d.postfix.selected?i:h);h!=g.data("button_default")&&e("<img />").attr("src",h);d.selected&&d.enableMouseEventsSelected&&i!=g.data("button_selected")&&e("<img />").attr("src",i);return!0}}function k(a){if(a.data("$button_img"))return a.data("$button_img");var c=a.children("img:not(img.buttonFade)");!c.length&&a.attr("src")&&(c=a);a.data("$button_img",c);return c}function s(a){var c=k(a),b=c.data("button_default");b&&c.attr("src",b);for(var d in h)c.data("button_"+h[d],""),a.unbind(o[h[d]],m[h[d]]);a.data("$button_img","");c.data("button_selected","");c.data("button_default","");a.data("button_status","");a.find("img.buttonFade").remove()}function z(a,c){var b=a.data("button_status");if(b!=c){b&&a.removeClass(b);a.data("button_status",c);if(!u(a,c))return!1;var d="button_"+c,f=k(a),g=a.data("button_options"),h=f.data("isPNG");if(g.fade&&a.is("a")&&a.find("img.buttonFade").length&&(!y||!h))if(g.postfix[c]){f.attr("src",f.data("button_"+b));var b=f.data("$button_fade"),i=f.offset();b.parents().each(function(){var a=e(this).css("position");if(a=="fixed"||a=="absolute")a=e(this).offset(),i.top-=a.top,i.left-=a.left});b.css({top:i.top+"px",left:i.left+"px"});b.attr("src",f.data(d));b.stop(!0,!0).fadeIn(g.fadeTime)}else b=f.data("$button_fade"),f.attr("src",f.data(d)),b.stop(!0,!0).fadeOut(g.fadeTime);else f.attr("src",f.data(d)),g.postfix[c]?f.css("background-image","url("+f.data("button_default")+")"):f.css("background-image","none");return!0}}var o={over:"mouseenter",out:"mouseleave",down:"mousedown",up:"mouseup"},h=["over","out","down","up"];if(arguments.length>0&&(typeof arguments[0]=="string"||arguments[0]instanceof String)){var j=arguments[0];if(j=="selected")if(arguments.length>1){var w=arguments[1];return e(this).each(function(){var a=e(this),c=w=="toggle"?!e(this).hasClass("selected"):w,b=a.hasClass("selected");b!=c&&(c?a.addClass("selected"):a.removeClass("selected"),r(a))})}else return e(this).hasClass("selected");else return j=="enable"?e(this).each(function(){v(e(this))}):j=="disable"?e(this).each(function(){var a=e(this),c=a.data("button_statuses"),b;for(b in c)a.unbind(o[c[b]],m[c[b]])}):j=="clear"?e(this).each(function(){s(e(this))}):e(this).each(function(){z(e(this),j)})}var q=arguments.length&&typeof arguments[0]!="String">0?arguments[0]:{},l=e.extend(!0,{over:!0,out:!0,down:!1,up:!1,selected:!1,enableMouseEvents:!0,enableMouseEventsSelected:!0,postfix:{over:"-over",out:"",down:"-down",up:"",selected:"-selected"},fade:!1,fadeTime:200},q),x=[],p;for(p in l.postfix)l.postfix[p]&&x.push(l.postfix[p]);n=RegExp("("+x.join("|")+").([a-zA-Z0-9]+)$","g");e(this).data("button_options",l);return e(this).each(function(){r(e(this))})}})(jQuery);/* SimpleLib Plugin */SimpleLib&&SimpleLib.extend("button",{settings:{buttonSelector:"a.button, input.button",rollOverSelector:"a.rollover, a.rollOver, input.rollover, input.rollOver"},init:function(){var a=$.extend(!0,SimpleLib.button.settings,{over:!0,down:!0,up:!0}),b=$.extend(!0,SimpleLib.button.settings,{over:!0,down:!1,up:!1});$(function(){$(SimpleLib.button.settings.buttonSelector).button(a);$(SimpleLib.button.settings.rollOverSelector).button(b)})}});


/*SimpleLib SetUp*/
SimpleLib.setup();
