/******
  Do not use other custom object.
  This file is always include in the xml template files
  *****/

function correctPNG() // correctly handle PNG transparency in Win IE 5.5 or higher.
{
   if(window.external && /Win/.test(navigator.userAgent) && Number(navigator.userAgent.match(/MSIE ([0-9.]+)/)[1])>=5.5)
   {
      for(var i=0; i<document.images.length; i++)
      {
         var img = document.images[i];
         var imgName = img.src.toUpperCase();
         if (imgName.substring(imgName.length-3, imgName.length) == "PNG")
         {
            var imgID = (img.id) ? "id='" + img.id + "' " : "";
            var imgClass = (img.className) ? "class='" + img.className + "' " : "";
            var imgTitle = (img.title) ? "title='" + img.title + "' " : "title='" + img.alt + "' ";
            var imgStyle = "display:inline-block;" + img.style.cssText;
            var imgAttribs = img.attributes;
            for (var j=0; j<imgAttribs.length; j++)
            {
               var imgAttrib = imgAttribs[j];
               if (imgAttrib.nodeName == "align")
               {
                  if (imgAttrib.nodeValue == "left") 
                     imgStyle = "float:left;" + imgStyle;
                  if (imgAttrib.nodeValue == "right") 
                     imgStyle = "float:right;" + imgStyle;
                  break;
               }
            }
            var strNewHTML = "<span " + imgID + imgClass + imgTitle;
            strNewHTML += ' style="' + 'width:' + img.width + 'px; height:' + img.height + 'px;' + imgStyle;
            strNewHTML += 'filter:progid:DXImageTransform.Microsoft.AlphaImageLoader';
            strNewHTML += '(src="' + img.src + '", sizingMethod="scale");"></span>';
            img.outerHTML = strNewHTML;
            //alert(img.outerHTML);
            i = i-1;
         }
      }
   }
   return;
}

/* make document.getElementById possible with IE4 */
if (!document.getElementById && document.all) 
{ 
   document.getElementById = new Function('id', 'return document.all[id]') 
}

// Finds out if a is an ancestor of b
function contains(a,b)
{
	// we climb through b parents
	// till we find a
 	while(b && (a!=b) && (b!=null))
		b = b.parentNode;
	return a == b;
}

/*
   date : 23/06/2005
   purpose : Attach some event on a html element Compatibility with FF,Moz,Netscape,IE
*/   
function SetEvent(target,eventName,handler,capture) 
{
   if(!target)
      return;

   if (target.addEventListener)
   {
      target.addEventListener(eventName,handler, ((capture)?true:false));
   }
   else
   if (target.attachEvent)
   {
      target.attachEvent("on" + eventName,handler);
      if(capture)
         target.setCapture();      
   }
   else
   {
      var originalHandler = target["on" + eventName];
      if (originalHandler)
      {
         target["on" + eventName] = function(e){originalHandler(e); handler();};
      }
      else
      {
         target["on" + eventName] = handler;
      }
   }
}

/*
   date : 01/09/2005
   purpose : detach some event on a html element Compatibility with FF,Moz,Netscape,IE
*/
function RemoveEvent(target,eventName,handler,capture)
{
   if(!target)
      return;
   
   if (document.removeEventListener) //FF
   {
      target.removeEventListener(eventName,handler,((capture)?true:false));
   }
   else 
   if (document.detachEvent) 
   {
      target.detachEvent('on'+eventName,handler);
      if(capture)
         target.releaseCapture(); 
   }
   else
   {
      target["on" + eventName] = null;   
   }
}

/*
 date : 02/09/2005
 purpose : to fire a event
*/
function ActivateEvent(target,eventName)
{
   if(document.dispatchEvent) //FF
   {
      if(target.dispatchEvent)
      {
         /* make the event */
         var evt = document.createEvent("HTMLEvents");
         evt.initEvent(eventName,true,true);
         /* fire it */
         target.dispatchEvent(evt);
      }
   }
   else
   if(document.fireEvent) //IE
   {
      target.fireEvent("on"+eventName);
   }
   else
   {
      //??
      eval(target+"."+eventName+"()");
   }
}

if(!document.parentWindow)
{
   document.parentWindow = document.defaultView;
}

if(typeof HTMLElement!="undefined" && !HTMLElement.innerText)
{
	if(HTMLElement.prototype.__defineSetter__)
   {
      HTMLElement.prototype.__defineSetter__("innerText", function (sText) { this.innerHTML = sText.replace(/\&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");});
      HTMLElement.prototype.__defineGetter__("innerText", function () { var r = this.ownerDocument.createRange(); r.selectNodeContents(this); return r.toString().trim();});
   }
}

if(typeof(netscape) != "undefined" && netscape.security)
{
   //alert(netscape.security.PrivilegeManager);
   //netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
}

function VDW_CreateElement(tagName,id,name)
{
   var tag = tagName;
   if(window.external && /Win/.test(navigator.userAgent))
   {
      tag  = '<'+tagName;
      if(id && id!="")
         tag += ' id="'+id+'"';
      if(name && name!="")
         tag += ' name="'+name+'"';
      tag += '></'+tagName+'>';
   }
   
   var obj = document.createElement(tag);
   if(window.external && /Win/.test(navigator.userAgent))
   {
     return obj;
   }
   
   obj.setAttribute('id',  id);
   obj.setAttribute('name',name);
   return obj;
}
