var imgButtonList = new Array();
var imgButtonArray = new Array();

function imgButton(name,normal_image,rollover_image,down_image,disabled_image, click_image, reset_on_click, group_index, group_helper_name, disabled, selected, toggle) {
  this.name = name
  this.selected=selected;
  this.disabled=disabled;
  this.toggle=toggle;
  
  this.normal_image = new Image();
  this.normal_image.src = normal_image;

  //this is used to reset all the images with this set to the same index and reset_on_click=true;
  this.reset_on_click=reset_on_click;
  this.group_index=group_index;
  this.group_helper_name = group_helper_name; // used to get the name of the hidden field storing selected button name
  
  this.useClick=click_image!="";
  if(this.useClick)
  {
      this.click_image=new Image();
      this.click_image.src= click_image; 
  }
  
  this.useRollover=rollover_image!="";
  if(this.useRollover)
  {
      this.rollover_image = new Image();
      this.rollover_image.src = rollover_image;
  }

  this.useDown=down_image!="";
  if(this.useDown)
  {
      this.down_image = new Image();
      this.down_image.src = down_image;
  }
  
  this.useDisabled=disabled_image!="";
  if(this.useDisabled)
  {
      this.disabled_image = new Image();
      this.disabled_image.src = disabled_image;
  }

  this.startdisabled=false;
}

function imgGetHiddenField(group_helper_name) {
var fieldName;

  /*if (group_helper_name) {
    fieldName = group_helper_name;
    for (var i=0;i<document.forms.length;i++) {
      if (document.forms[i].fieldName)
        return document.forms[i].fieldName; 
    }
  }
  return null;
  */
  
  return document.getElementById(group_helper_name);
}

function imgMouseOver(e) {
  var event = e ? e : window.event;  // to handle both NS and IE events
  var target = event.target ? event.target : event.srcElement;
  var name = target.id ? target.id : target.name;
  //JS: 10.10.06:  Don't do mouseover and mouseout if disabled.  It doesn't return to disabled state.
  if (!isImageDisabled(name))
    target.src = imgButtonList[name].rollover_image.src;
}

function imgOnClick(e) {
  
  var event = e ? e : window.event;  // to handle both NS and IE events
  var target = event.target ? event.target : event.srcElement;
  var name = target.id ? target.id : target.name;

  //if the flag exists and it is true.  
  //Don't change the click state of the buttons.
  //it also has to be a reset on click button. 
  //This includes items such as the left nav and filter buttons
    if ((typeof(FormTrackerChangedFlag)!="undefined"))
    {
        if ((FormTrackerChangedFlag) && (imgButtonList[name].reset_on_click))
        return;
    }
    
  var currentlySelected = imgButtonList[name].selected;
  var hiddenHelperField = imgGetHiddenField(imgButtonList[name].group_helper_name);
  if (imgButtonList[name].toggle && currentlySelected) {
    target.src = imgButtonList[name].normal_image.src;
    imgButtonList[name].selected=false;
    // if it's there clear selectedName for this group
    if (hiddenHelperField)
      hiddenHelperField.value = "";
      
    return;    
  }
  
  
      target.src = imgButtonList[name].click_image.src;
      imgButtonList[name].selected=true;
      if (hiddenHelperField) {
        hiddenHelperField.value = this.name;
      }
  
  if (imgButtonList[name].reset_on_click)
  {
	var resetIndex=imgButtonList[name].group_index;
    for (var i=0; i<imgButtonArray.length; i++)
	{
		var imgName=imgButtonArray[i];
		if ((imgButtonList[imgName].reset_on_click) && (imgButtonList[imgName].group_index==resetIndex))
		{
		    if (imgButtonList[imgName].name!=name && !imgButtonList[imgName].disabled)
    		{
    			resetImage(imgButtonList[imgName].name);
     		    imgButtonList[imgName].selected=false;     			
    		}
		}
	}
  }
}



function imgMouseOut(e) {
  var event = e ? e : window.event;  // to handle both NS and IE events
  var target = event.target ? event.target : event.srcElement;
  var name = target.id ? target.id : target.name;

  //JS: 10.10.06:  Don't do mouseover and mouseout if disabled.  It doesn't return to disabled state.
  if (!isImageDisabled(name))
  {
      if (imgButtonList[name].selected && imgButtonList[name].useClick)
        target.src = imgButtonList[name].click_image.src;
      else
        target.src = imgButtonList[name].normal_image.src;
  }
}

function imgMouseDown(e) {
  var event = e ? e : window.event;  // to handle both NS and IE events
  var target = event.target ? event.target : event.srcElement;
  var name = target.id ? target.id : target.name;

  //JS: 10.10.06:  Don't do mouseover and mouseout if disabled.  It doesn't return to disabled state.
  if (!isImageDisabled(name))
    target.src = imgButtonList[name].down_image.src;
}

//To enable, use resetImage
function isImageDisabled(name)
{
  imgcol = document.getElementsByName(name);
  img = imgcol[0];
  if ((img) && (imgButtonList[name].disabled_image)) {
    return img.src == imgButtonList[name].disabled_image.src;
  }
  return false;
}

//To enable, use resetImage
function disableImageByObj(img)
{
  if (img) {
    img.src = imgButtonList[img.name].disabled_image.src;
    imgButtonList[img.name].startdisabled=true;
  }
}

function resetImageByObj(img)
{
    if (img) {
      img.src = imgButtonList[img.name].normal_image.src;
    }
}

//To enable, use resetImage
function disableImage(name)
{
  imgcol = document.getElementsByName(name);
  img = imgcol[0];
  if (img) {
    img.src = imgButtonList[name].disabled_image.src;
    imgButtonList[name].startdisabled=true;
  }
}

function resetImage(name)
{
  // do all images with matching name
  
  imgcol = document.getElementsByName(name);
    img = imgcol[0];
    if (img) {
      img.src = imgButtonList[name].normal_image.src;
    }




/*
  // do all images with matching name
  imgcol = document.getElementsByName(name);
//  for (var i=0; i<imgcol.length ;i++ )
//  {
    img = imgcol[0];
    if (img) {
      //alert(img.src);
      img.src = imgButtonList[name].normal_image.src;
      //alert(img.src);
    }
//  }
  // do all images with matching id (legacy)
  //img = document.getElementById(name);
  //if (img) {
  //  alert(name);
  //  img.src = imgButtonList[name].normal_image.src;
  //}
*/
}

function addImageButton(name,normal_image,rollover_image,down_image,disabled_image, click_image, reset_on_click, group_index, group_helper_name, disabled, selected, toggle) {
  imgButtonList[name] = new imgButton(name,normal_image,rollover_image,down_image, disabled_image, click_image, reset_on_click,group_index, group_helper_name, disabled, selected, toggle);

  imgButtonArray.push(name);
}

function imgButtonInit() 
{
    for (var j=0; j<imgButtonArray.length; j++)
	{
		var name=imgButtonArray[j];	
        // do all images with matching name
        imgcol = document.getElementsByName(name);
        for (var i=0; i<imgcol.length ;i++ )
        {
            img = imgcol[i];
            if (!imgButtonList[name].disabled)
              img.style.cursor="pointer";
            if (img) {
                if (!imgButtonList[name].disabled) {
                    if (imgButtonList[name].useRollover)
                    {
                        img.onmouseover = imgMouseOver;
                        img.onmouseout  = imgMouseOut;
                    }
                    if (imgButtonList[name].useDown) {
                        img.onmousedown = imgMouseDown;
                        img.onmouseup = imgMouseOut;
                    }
                    if (imgButtonList[name].useClick)
                    {
                        img.onclick=imgOnClick;
                    }
                }

                                
                if ((imgButtonList[name].selected) && (imgButtonList[name].useClick))
                    img.src = imgButtonList[name].click_image.src;
                else if (((imgButtonList[name].disabled) && (imgButtonList[name].useDisabled)) || ((imgButtonList[name].startdisabled) && (imgButtonList[name].useDisabled)))
                    img.src = imgButtonList[name].disabled_image.src;
                else
                    img.src = imgButtonList[name].normal_image.src;
            }
         }

        // do all images with matching id (legacy)
        img = document.getElementById(name);
        if (img) {
            if (!imgButtonList[name].disabled)
              img.style.cursor="pointer";
            if (!imgButtonList[name].disabled) {
                if (imgButtonList[name].useRollover)
                {
                img.onmouseover = imgMouseOver;
                img.onmouseout  = imgMouseOut;
                }
                if (imgButtonList[name].useDown) {
                img.onmousedown = imgMouseDown;
                img.onmouseup = imgMouseOut;
                }
                if (imgButtonList[name].useClick)
                {
	                img.onclick=imgOnClick;
                }
            }
            
            if ((imgButtonList[name].selected) && (imgButtonList[name].useClick))
                img.src = imgButtonList[name].click_image.src;
            else if (((imgButtonList[name].disabled) && (imgButtonList[name].useDisabled)) || ((imgButtonList[name].startdisabled) && (imgButtonList[name].useDisabled)))
                img.src = imgButtonList[name].disabled_image.src;
            else
                img.src = imgButtonList[name].normal_image.src;
                
        }
    }
}

function _imgButtonInit() {
  if (typeof(imgButtonInit)!="undefined")
    imgButtonInit(); // have to call a different one that's defined in the page but underscore one needs to be defined at time of attach call
}

if (document.getElementById && document.createElement) {
  if (window.addEventListener) {
    window.addEventListener("load",_imgButtonInit,true);
  } else if (window.attachEvent){
    window.attachEvent("onload",_imgButtonInit);
  }
}