// searches through the parent's nodes looking for a class matching lookfor
function FindComponent(Parent, LookFor) {
	var divs = Parent.childNodes;
	var found = false;
	
	if (divs) {
	    for (var x = 0; x < divs.length; x++) {
		    if (divs[x].className && divs[x].className.indexOf(LookFor) > -1) found = divs[x];
	    }
	}
	  
	return found;
};
	
// add an event to an object
function AddEvent(eventObj, eventName, targetFunction) {
	if (eventObj.attachEvent)
		eventObj.attachEvent("on" + eventName, targetFunction);
	else
		eventObj.addEventListener(eventName, targetFunction, false);
};

// remove an event from an object
function RemoveEvent(eventObj, eventName, targetFunction) {
	if (eventObj.detachEvent)
		eventObj.detachEvent("on" + eventName, targetFunction);
	else
		eventObj.removeEventListener(eventName, targetFunction, false);
};

// returns the mouse location from an event object
function GetClickPoint(eventObj) {
	var Point = {};

	if (eventObj.offsetX) {
		Point.X = eventObj.offsetX;
		Point.Y = eventObj.offsetY;
	} else {
		Point.X = eventObj.layerX;
		Point.Y = eventObj.layerY;
	}

	return Point;
};

// prevents the ability to drag images in firefox  
function PreventImgDrag(eventObj) {
	try {
		eventObj.preventDefault();
	} catch(err) {
		// do nothing, this only works for firefox and causes errors in other browsers
	}
};

// find the absolute position of an element
function FindElementOffset(obj, stopclass) {
    var offset = {};
	var ok = true;
    
    offset.X = 0;
    offset.Y = 0;
    
    if (obj.offsetParent) {
		if (stopclass) {
			while (ok) {
				offset.X += obj.offsetLeft;
				offset.Y += obj.offsetTop;
				obj = obj.offsetParent;	
				
				if (obj.offsetParent) {
					if (obj.className && obj.className == stopclass) ok = false; 
				}
			}
		} else {
			while (obj.offsetParent) {
				offset.X += obj.offsetLeft;
				offset.Y += obj.offsetTop;
				obj = obj.offsetParent;
			}		
		}
    }
    
    return offset;
};

// return the inner window size
function GetDocumentSize() {
    var Size = {};
        
    Size.Width = 0;
    Size.Height = 0;
        
    if( typeof( window.innerWidth ) == 'number' ) {
        //Non-IE
        Size.Width = window.innerWidth;
        Size.Height = window.innerHeight;
    } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
        //IE 6+ in 'standards compliant mode'
        Size.Width = document.documentElement.clientWidth;
        Size.Height = document.documentElement.clientHeight;
    } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
        //IE 4 compatible
        Size.Width = document.body.clientWidth;
        Size.Height = document.body.clientHeight;
    }
    
    return Size;
};

function IE6onResize() {
	var divs = document.getElementsByTagName("div");
	
	if (divs) {
		for (var x = 0; x < divs.length; x++) {
			if (divs[x].className && divs[x].className.indexOf("TDStretchH") >= 0) {
				var offset = parseInt(divs[x].className.replace("TDStretchH", ""));
				divs[x].style.width = (divs[x].offsetParent.offsetWidth - offset) + "px";
			} else if (divs[x].className && divs[x].className.indexOf("TDStretchV") >= 0) {
				var offset = parseInt(divs[x].className.replace("TDStretchV", ""));
				divs[x].style.height = (divs[x].offsetParent.offsetHeight - offset) + "px";
			} else if (divs[x].className && divs[x].className.indexOf("TDStretchBoth") >= 0) {
				var parts = divs[x].className.replace("TDStretchBoth", "").split("x");
				divs[x].style.width = (divs[x].offsetParent.offsetWidth - parseInt(parts[0])) + "px";
				divs[x].style.height = (divs[x].offsetParent.offsetHeight - parseInt(parts[1])) + "px";
			} else if (divs[x].className && divs[x].className.indexOf("TDMinSize") >= 0) {
				var parts = divs[x].className.replace("TDMinSize", "").split("x");
				
				var width = parts[0].split("-");
				if (divs[x].offsetWidth < parseInt(width[1]))
					divs[x].style.width = width[1] + "px";
				else if (divs[x].offsetWidth < (divs[x].offsetParent.offsetWidth * (width[0] / 100)))
					divs[x].style.width = width[0] + "%";
					
				var height = parts[1].split("-");
				if (divs[x].offsetHeight < parseInt(height[1]))
					divs[x].style.height = height[1] + "px";
				else if (divs[x].offsetHeight < (divs[x].offsetParent.offsetHeight * (height[0] / 100)))
					divs[x].style.height = height[0] + "%";
			}
		}
	}
};

// return the distance the page has been scrolled in the window
function GetPageScrollDistance() {
    var Loc = {};
    
    Loc.X = 0;
    Loc.Y = 0;
    
    if (window.pageXOffset) {
        // firefox, opera
        Loc.X = window.pageXOffset;
        Loc.Y = window.pageYOffset;
    } else if (document.documentElement) {
        // ie 6+
        Loc.X = document.documentElement.scrollLeft;
        Loc.Y = document.documentElement.scrollTop;
    } else if (document.body) {
        // ie 4 compatible
        Loc.X = document.body.scrollLeft;
        Loc.Y = document.body.scrollTop;
    }
    
    return Loc;
};

// Returns the version of Internet Explorer or a -1
// (indicating the use of another browser).
function GetIEVersion() {
    var rv = -1; // Return value assumes failure.
    if (navigator.appName == 'Microsoft Internet Explorer') {
        var ua = navigator.userAgent;
        var re  = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
        if (re.exec(ua) != null)
            rv = parseFloat( RegExp.$1 );
    }
    return rv;
};

function FixPNG() {
    var tags;
      
    tags = document.getElementsByTagName("img");
    if (tags) {
        for (var x = 0; x < tags.length; x++) {
            if (tags[x].className && tags[x].className == "TDFixPNGAuto") FixPNGSingle(tags[x], true);
            if (tags[x].className && tags[x].className == "TDFixPNG") FixPNGSingle(tags[x]);
        }
    }
};

function FixPNGSingle(img, autosize) {
    if (img.parentNode) {
        img.style.visibility = "hidden";
        if (autosize) {
            img.parentNode.style.width = img.offsetWidth;
            img.parentNode.style.height = img.offsetHeight;
        }
		img.parentNode.style.backgroundImage = "";
        img.parentNode.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=scale src=" + img.src + ")";
    }
};

function FormValidator(count) {
    var msg = "<input type=\"hidden\" id=\"validate\" value=\"no\" />";
    
    for (var x = 1; x <= count; x++) {
        msg += "<span class=\"TDValidate\" id=\"TDValidate" + x + "\">&nbsp;x&nbsp;</span>&nbsp;";
    }
    
    return msg;
};

function RGBtoHTML(RGB) {
    var Parts = new Array();
    var Color = "#";
    
    if (RGB.substr(0,3) != "rgb") return RGB;
    RGB = RGB.replace("rgb(", "");
    RGB = RGB.replace(")", "");
    RGB = RGB.replace(" ", "");
    
    Parts = RGB.split(",");
    
    Temp = parseInt(Parts[0], 10).toString(16).toUpperCase();
    if (Temp.length < 2) Temp = "0" + Temp;
    if (Temp.length < 2) Temp = "0" + Temp;
    Color += Temp;
    
    Temp = parseInt(Parts[1], 10).toString(16).toUpperCase();
    if (Temp.length < 2) Temp = "0" + Temp;
    if (Temp.length < 2) Temp = "0" + Temp;
    Color += Temp;
    
    Temp = parseInt(Parts[2], 10).toString(16).toUpperCase();
    if (Temp.length < 2) Temp = "0" + Temp;
    if (Temp.length < 2) Temp = "0" + Temp;
    Color += Temp;
    
    return Color;
};
