// JavaScript Document
var btn = {
    init : function() {
        if (!document.getElementById || !document.createElement || !document.appendChild) return false;

		var legacyButtons = document.getElementsByTagName("input");
		
		for(i=0; i<legacyButtons.length;i++){
			var legacyButton = legacyButtons[i];
			if(!legacyButton.getAttribute("type") || !(legacyButton.getAttribute("type") == "button" || legacyButton.getAttribute("type") == "submit" || legacyButton.getAttribute("type") == "reset")) continue;
			//IE7
			if(!legacyButton.getAttribute("className") || legacyButton.getAttribute("className").indexOf("btn") <= 0)
				legacyButton.setAttribute("className","btn" + (legacyButton.getAttribute("className")?" "+legacyButton.getAttribute("className"):"") + " input");
				
			//OTHER Browsers
			if(!legacyButton.getAttribute("class") || legacyButton.getAttribute("class").indexOf("btn") <= 0)
				legacyButton.setAttribute("class","btn" + (legacyButton.getAttribute("class")?" "+legacyButton.getAttribute("className"):"") + " input");

		}
		
		
        as = btn.getElementsByClassName('btn(.*)');
		for (i=0; i<as.length; i++) {
			btn.transform(as[i]);
        }
		/*
        // The following lines submits the form if the button id is "submit_btn"
        btn.addEvent(document.getElementById('submit_btn'),'click',function() {
            var form = btn.findForm(this);
            form.submit();
        });
        // The following lines resets the form if the button id is "reset_btn"
        btn.addEvent(document.getElementById('reset_btn'),'click',function() {
            var form = btn.findForm(this);
            form.reset();
        });
		*/
    },
	transform : function(elem){
		var transferrableAttributes = new Array("onclick", "onmouseover", "onmouseout", "onmousemove");
		if ( elem.tagName == "INPUT" && ( elem.type.toLowerCase() == "submit" || elem.type.toLowerCase() == "reset" || elem.type.toLowerCase() == "button" ) ) {
			elem_type = elem.type.toLowerCase();
			
			var a1 = document.createElement("a");
			var a2 = document.createElement("input");
			a2.type = elem.type;
			a2.value = elem.value;
			a2.id = elem.id;
			a2.setAttribute("style",elem.getAttribute("style") + "; ");
			if(navigator.userAgent.toLowerCase().indexOf('safari') != -1) a2.setAttribute("style",a2.getAttribute("style") + "; display: none;");
			
			a1.appendChild(a2);
			a1.appendChild(document.createTextNode(elem.value));
			
			a1.className = elem.className;
			//a1.id = elem.id;
			a1.setAttribute("style",elem.getAttribute("style"));
			
			//if(elem.type.toLowerCase() == "submit")
			//	elem.setAttribute("onclick",(elem.getAttribute("onclick")?elem.getAttribute("onclick"):"")+"btn.findForm(this).submit();");
			//if(elem.type.toLowerCase() == "reset")
			//	elem.setAttribute("onclick",(elem.getAttribute("onclick")?elem.getAttribute("onclick"):"")+"btn.findForm(this).reset();");
			
			for(j=0;j<transferrableAttributes.length;j++)
				if(elem.getAttribute(transferrableAttributes[j])) a1.setAttribute(transferrableAttributes[j], elem.getAttribute(transferrableAttributes[j]));
			
			elem = elem.parentNode.replaceChild(a1, elem);
			elem = a1;
			elem.style.cursor = "pointer";
			
			if(elem_type == "submit") btn.addEvent(elem,'click',function(){btn.findForm(this).submit();});
			if(elem_type == "reset") btn.addEvent(elem,'click',function(){btn.findForm(this).reset();});
			
		}
		else if (elem.tagName == "A") {
			var tt = elem.childNodes;
		}
		else { return false };
		
		
		var i1 = document.createElement('i');
		var i2 = document.createElement('i');
		var s1 = document.createElement('span');
		var s2 = document.createElement('span');
		s1.appendChild(i1);
		s1.appendChild(s2);
		
		while (elem.firstChild) {
		  s1.appendChild(elem.firstChild);
		}
		
		elem.appendChild(s1);
		elem = elem.insertBefore(i2, s1);
	},
    findForm : function(f) {
        while(f.tagName != "FORM") {
            f = f.parentNode;
        }
        return f;
    },
    addEvent : function(obj, type, fn) {
        if (obj.addEventListener) {
            obj.addEventListener(type, fn, false);
        }
        else if (obj.attachEvent) {
            obj["e"+type+fn] = fn;
            obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
            obj.attachEvent("on"+type, obj[type+fn]);
        }
    },
    getElementsByClassName : function(className, tag, elm) {
        var testClass = new RegExp("(^|\s)" + className + "(\s|$)");
        var tag = tag || "*";
        var elm = elm || document;
        var elements = (tag == "*" && elm.all)? elm.all : elm.getElementsByTagName(tag);
		var returnElements = [];
        var current;
        var length = elements.length;
		out = "";
        for(var i=0; i<length; i++){
            current = elements[i];
			
			cclass = current.className;
            if(testClass.test(cclass)){
                returnElements.push(current);
            }
        }
        return returnElements;
    },
	getStyle : function(oElm, strCssRule){
		var strValue = "";
		if(document.defaultView && document.defaultView.getComputedStyle){
			strValue = document.defaultView.getComputedStyle(oElm, "").getPropertyValue(strCssRule);
		}
		else if(oElm.currentStyle){
			strCssRule = strCssRule.replace(/\-(\w)/g, function (strMatch, p1){
				return p1.toUpperCase();
			});
			strValue = oElm.currentStyle[strCssRule];
		}
		return strValue;
	}
}
btn.addEvent(window,'load', function() { btn.init();} );
