/*
  bugfix.js
  Fix browser rendering bugs (David Oliveira)

  Version:	1.0.1
  Author:	David Oliveira <d.oliveira@mm.ciben.pt>
 */


	/*
	  Fix IE PNG rendering
	 */

	function ie_pngfix ( ) {

		var
			sc = document.styleSheets,
			norepeats = new Array();

		// Backgrounds

		// Find no-repeat's

		for ( var x = 0 ; x < sc.length ; x++ ) {
			for ( var y = 0 ; y < sc[x].rules.length ; y++ ) {
				var
					r = sc[x].rules[y],
					cs = r.style;

				if ( cs.backgroundRepeat == 'no-repeat' )
					norepeats[r.selectorText] = 1;
			}
		}

		// Replace PNG's

		for ( var x = 0 ; x < sc.length ; x++ ) {
			for ( var y = 0 ; y < sc[x].rules.length ; y++ ) {
				var
					r = sc[x].rules[y],
					cs = r.style;

				if ( cs.backgroundImage.match(/^url\((.*\.png)\)$/i) ) {
					cs.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+RegExp.$1+"',sizingMethod='"+(norepeats[r.selectorText]?'crop':'scale')+"')";
					cs.backgroundImage = '';
				}
			}
		}

		// Elements

		for ( var x = document.all.length-1 ; x >= 0 ; x-- ) {
			var
				el = document.all[x];

			if ( el.tagName == 'IMG' ) {
				if ( el.src.match(/^(.*\.png)$/i) ) {
					el.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+RegExp.$1+"',sizingMethod='crop')";
				}
			}
			else {
				if ( el.style.backgroundImage.match(/^url\((.*\.png)\)$/i) ) {
					el.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+RegExp.$1+"',sizingMethod='crop')";
					el.style.backgroundImage = '';
				}
			}
		}

	}


	/*
	  Fix IE 100% width tables with margins reajuste
	 */

	function ie_widthfix ( ) {

		var
			ts = document.getElementsByTagName('table');

		for ( var x = 0 ; x < ts.length ; x++ ) {

			var
				t = ts[x],
				m;

			for ( var p in {'marginLeft':1,'marginRight':1} ) {
				if ( m = t.style[p] ) {
					m = m.substr(0,m.length-2);
					t.style.width = t.offsetWidth-(m*2);
				}
			}


		}

	}


	/*
	  Avoid IE click to activate on ActiveX objects
	 */

	function ie_axclick2act ( ) {

		var
			objs = document.getElementsByTagName("OBJECT");

		for ( var x = 0 ; x < objs.length ; x++ )
			objs[x].outerHTML = objs[x].outerHTML;

	}


	/*
	  Reajuste the whole document on Mozilla browsers
	 */

	function mo_docreajuste ( ) {

		setTimeout("document.body.innerHTML = document.body.innerHTML",100);

	}



	/*
	 Schedule all bugfixes
	 */

	if ( document.all ) {
		attachEvent("onload",ie_pngfix);
		attachEvent("onload",ie_widthfix);
		attachEvent("onload",ie_axclick2act);
	}
	else {
		window.addEventListener("load",mo_docreajuste,false);
	}

