//Inspired by:
//Transparent PNGs in Internet Explorer 6 by Drew McLellan
//http://24ways.org/2007/supersleight-transparent-png-in-ie6
var supersleight	= function() {
	
	var id = false;
	var clas = false;
	var root = false;
	var applyPositioning = false;
	
	// Path to a transparent GIF image
	var shim = '../Common/script/x.gif';
	
	// RegExp to match above GIF image name
	var shim_pattern	= /x\.gif$/i;
		
	var fnLoadPngs = function() { 
		if (id) {
			root = document.getElementById(id);
		}else if (clas){
		    var oIterate = document.getElementsByTagName('*');
            root = [];
            var length;
            var attr;
            var re = new RegExp('\\b'+clas+'\\b');
            var i = 0;
            var elm;
            while((elm = oIterate.item(i++))){
                attr = elm.getAttributeNode("class");
                if (attr != null)
                {
                    if(re.test(attr.value))
                        root.push(elm);        
                }
            }
		}else{
			root = document;
		}
		if (root.length > 0){
		    //Process it's children
		    for (var i = 0; i <= root.length; i++){
		        obj = root[i];
			    fnProcessObject(obj);
		    }
		}else if (root.all.length > 0){
		    //Process the root object
		    fnProcessObject(root);
		    //Process it's children
		    for (var i = 0; i < root.all.length; i++){
		        obj = root.all[i];
			    fnProcessObject(obj);
		    }
		}else{
		    //Process the root object
		    fnProcessObject(root);
		}
	};
	
	var fnProcessObject = function(obj) {
        // background pngs
        if (typeof obj != "undefined"){
            if (obj.currentStyle.backgroundImage.match(/\.png/i) !== null) {
	            bg_fnFixPng(obj);
            }
            // image elements
            if (obj.tagName=='IMG' && obj.src.match(/\.png$/i) !== null){
	            el_fnFixPng(obj);
            }
            // apply position to 'active' elements
            if (applyPositioning && (obj.tagName=='A' || obj.tagName=='INPUT') && obj.style.position === ''){
	            obj.style.position = 'relative';
            }
        }
	}

	var bg_fnFixPng = function(obj) {
		var mode = 'image';
		var bg	= obj.currentStyle.backgroundImage;
		var src = bg.substring(5,bg.length-2);
		if (obj.currentStyle.backgroundRepeat == 'no-repeat') {
			mode = 'crop';
		}
		obj.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "', sizingMethod='" + mode + "')";
		obj.style.backgroundImage = 'url('+shim+')';
	};

	var el_fnFixPng = function(img) {
		var src = img.src;
		img.style.width = img.width + "px";
		img.style.height = img.height + "px";
		img.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "', sizingMethod='image')";
		img.src = shim;
	};
	
	var addLoadEvent = function(func) {
		var oldonload = window.onload;
		if (typeof window.onload != 'function') {
			window.onload = func;
		} else {
			window.onload = function() {
				if (oldonload) {
					oldonload();
				}
				func();
			};
		}
	};
	
	return {
		init: function() {
		    id = false;
	        clas = false;
	        root = false;
			addLoadEvent(fnLoadPngs);
		},
		
		findId: function(el) {
			id = el;
	        clas = false;
	        root = false;
		},
		
		findClass: function(el) {
	        id = false;
			clas = el;
	        root = false;
		},
		
		run: function() {
			fnLoadPngs();
		}
	};
}();
