var DHTML = (document.getElementById || document.all || document.layers);

function getEleById(id)
{
    if (document.getElementById)
    {
        return document.getElementById(id);
    }
    else if (document.all)
    {
        return document.all[id];
    }
    else if (document.layers)
    {
        return document.layers[id];
    }
    return null;
}

function findPos(obj)
{
	var curleft = curtop = 0;
	if (obj.offsetParent)
	{
		curleft = obj.offsetLeft
		curtop = obj.offsetTop
		while (obj = obj.offsetParent)
		{
			curleft += obj.offsetLeft
			curtop += obj.offsetTop
		}
	}
	return [curleft,curtop];
}

function findYByObj(obj)
{
	var curtop = 0;
    if (obj)
    {
    	if (obj.offsetParent)
    	{
    		curtop = obj.offsetTop;
    		while (obj = obj.offsetParent)
    		{
    			curtop += obj.offsetTop;
    		}
    	}
    }
    else
    {
        alert("Huch: " + id);
    }
	return curtop;
}

function findY(id)
{
    var obj = document.getElementById(id);
    return findYByObj(obj);
}

function findXByObj(obj)
{
	var curleft = 0;
    if (obj)
    {
    	//if (obj.offsetParent)
    	{
    		curleft = obj.offsetLeft;
    		//while (obj = obj.offsetParent)
    		//{
    			//curleft += obj.offsetLeft;
    		//}
    	}
    }
    else
    {
        alert("Huch: " + id);
    }
	return curleft;
}

function findXById(id)
{
	var obj = document.getElementById(id);
	return findXByObj(obj);
}

function getStyle(el,styleProp)
{
	var x = document.getElementById(el);
	var y = 0;
	if (x.currentStyle)
	{
		y = x.currentStyle[styleProp];
	}
	else if (window.getComputedStyle)
	{
		y = document.defaultView.getComputedStyle(x,null).getPropertyValue(styleProp);
	}
	return y;
}

function getScollPosY()
{
    var y;
    if (self.pageYOffset) // all except Explorer
    {
    	y = self.pageYOffset;
    }
    else if (document.documentElement && document.documentElement.scrollTop)
    {
    	// Explorer 6 Strict
    	y = document.documentElement.scrollTop;
    }
    else if (document.body) // all other Explorers
    {
    	y = document.body.scrollTop;
    }
    return y;
}

function addDebug(str)
{
    var o = getEleById("SDDebugText");
    o.innerHTML = o.innerHTML + str;
}

function getCSSRule(ruleName, deleteFlag) {               // Return requested style obejct
   if (document.styleSheets) {                            // If browser can play with stylesheets
      for (var i=0; i<document.styleSheets.length; i++) { // For each stylesheet
         var styleSheet=document.styleSheets[i];          // Get the current Stylesheet
         var ii=0;                                        // Initialize subCounter.
         var cssRule=false;                               // Initialize cssRule.
         do {                                             // For each rule in stylesheet
            if (styleSheet.cssRules) {                    // Browser uses cssRules?
               cssRule = styleSheet.cssRules[ii];         // Yes --Mozilla Style
            } else {                                      // Browser usses rules?
               cssRule = styleSheet.rules[ii];            // Yes IE style.
            }                                             // End IE check.
            if (cssRule)  {                               // If we found a rule...
               if (cssRule.selectorText==ruleName) {      // Does current rule match ruleName?
                  if (deleteFlag=='delete') {             // Yes.  Are we deleteing?
                     if (styleSheet.cssRules) {           // Yes, deleting...
                        styleSheet.deleteRule(ii);        // Delete rule, Moz Style
                     } else {                             // Still deleting.
                        styleSheet.removeRule(ii);        // Delete rule IE style.
                     }                                    // End IE check.
                     return true;                         // return true, class deleted.
                  } else {                                // found and not deleting.
                     return cssRule;                      // return the style object.
                  }                                       // End delete Check
               }                                          // End found rule name
            }                                             // end found cssRule
            ii++;                                         // Increment sub-counter
         } while (cssRule)                                // end While loop
      }                                                   // end For loop
   }                                                      // end styleSheet ability check
   return false;                                          // we found NOTHING!
}                                                         // end getCSSRule

function killCSSRule(ruleName) {                          // Delete a CSS rule
   return getCSSRule(ruleName,'delete');                  // just call getCSSRule w/delete flag.
}                                                         // end killCSSRule

function addCSSRule(ruleName) {                           // Create a new css rule
   if (document.styleSheets) {                            // Can browser do styleSheets?
      if (!getCSSRule(ruleName)) {                        // if rule doesn't exist...
         if (document.styleSheets[0].addRule) {           // Browser is IE?
            document.styleSheets[0].addRule(ruleName, null,0);      // Yes, add IE style
         } else {                                         // Browser is IE?
            document.styleSheets[0].insertRule(ruleName+' { }', 0); // Yes, add Moz style.
         }                                                // End browser check
      }                                                   // End already exist check.
   }                                                      // End browser ability check.
   return getCSSRule(ruleName);                           // return rule we just created.
}