﻿//****************************************************************
//----------------------------------------------------------------
// Image Buttons Creator
// ver 1.1.0
// Author: Samuele Carassai
//----------------------------------------------------------------
//
// API:
//      [functions]
//      init(<group>);      -> initialize efx by group (default group is 'imagebutton')
//      create(target);     -> initialize efx on target
//
//      [properties]
//      imagesFolder        -> images path (default is 'images/')
//
//      
// Example 1 (default):
//      <body onload='SCImageButton.init();'>
//          ...
//          <img rel='imagebutton' src='normal.jpg' hover='hover.jpg' down='down.jpg' />
//          ...
//      </body>
//
// Example 2 (target):
//      <body>
//          ...
//          <img id='MyImage' src='normal.jpg' hover='hover.jpg' down='down.jpg' />
//          <script>
//              SCImageButton.create('MyImage');
//          </script>
//          ...
//      </body>
//
// Example 3 (groups):
//      <body onload="SCImageButton.init('Group1'); SCImageButton.init('Group2');">
//          ...
//          <img rel='Group1' src='normal.jpg' hover='hover.jpg' down='down.jpg' />
//          <img rel='Group1' src='normal.jpg' hover='hover.jpg' down='down.jpg' />
//          <img rel='Group2' src='normal.jpg' hover='hover.jpg' down='down.jpg' />
//          ...
//      </body>
//
//****************************************************************

if (typeof(SCFramework) == "undefined")
	alert("Image Button Creator depends from SCFramework object!\nInclude it.");
else
	// Class 
	SCImageButton = {
		imagesFolder: "images/",
		
		init: function (group) {
			var coll = document.getElementsByTagName("img");
			group = (group == null)? "imagebutton": group;
			
			for (var index = 0; index < coll.length; index ++) {
				var rel = SCFramework.getAttribute(coll[index], "rel");
				if (rel == group)
					SCImageButton.create(coll[index]);
			}
		},
		
		create: function (element) {
			if (typeof(element) == "string") element = SCFramework.$(element);
			if (element) { 
		        // Get images info
		        var normal = SCFramework.getAttribute(element, "src");
		        SCFramework.setAttribute(element, "normal", normal);
		        SCFramework.setAttribute(element, "isdown", false);
    		    
		        // Preload status images
		        SCImageButton.preloadImages(element);
    		    
		        // Attach events
		        SCFramework.attachEvent(element, "mouseover", function () {
		            var hover = SCFramework.getAttribute(element, "hover");
		            var isdown = SCFramework.getAttribute(element, "isdown");

		            if (eval(isdown) == false && hover != null && hover != "")
		                SCFramework.setAttribute(element, "src", SCImageButton.imagesFolder + hover);
		        });
    		    
		        SCFramework.attachEvent(element, "mouseout", function () {
		            var normal = SCFramework.getAttribute(element, "normal");
		            var isdown = SCFramework.getAttribute(element, "isdown");

		            if (eval(isdown) == false && normal != null && normal != "")
		                SCFramework.setAttribute(element, "src", normal);
		        });
    		    
		        SCFramework.attachEvent(element, "mousedown", function () {
		            var down = SCFramework.getAttribute(element, "down");
		            if (down != null && down != "") {
		                SCFramework.setAttribute(element, "src", SCImageButton.imagesFolder + down);
		                SCFramework.setAttribute(element, "isdown", true);
		            }
		        });
		    }
        },
        
        resetButtonStatus: function (element) {
			if (typeof(element) == "string") element = SCFramework.$(element);
			if (element) 
			    SCFramework.setAttribute(element, "isdown", false);
        },
        
        preloadImages: function (element) {
		    var hover = SCImageButton.imagesFolder + SCFramework.getAttribute(element, "hover");
		    var down = SCImageButton.imagesFolder + SCFramework.getAttribute(element, "down");
		    
		    var preHover = new Image();
		    preHover.src = hover;
		    
		    var preDown = new Image();
		    preDown.src = down;
        }   
}