/*
 * Copyright 2007 OST-SYSTEMS. All rights reserved.
 */

function setupDashCode(win) {
  if (win.setupParts) {
    //fix setup
    win.setupParts.called = false;
    if (win.dashcode) {
      win.dashcode.setupParts.called = false;
      win.dashcode.window = win;
    }
    
    win.originalCreateInfoButton = win.CreateInfoButton;
    win.CreateInfoButton = hectorCreateInfoButton;
    
    win.originalCreateGlassButton = win.CreateGlassButton;
    win.CreateGlassButton = hectorCreateGlassButton;
    
    win.originalCreateHorizontalSlider = win.CreateHorizontalSlider;
    win.CreateHorizontalSlider = hectorCreateHorizontalSlider;
    
    win.originalCreateShape = win.CreateShape;
    win.CreateShape = hectorCreateShape;

    win.originalCreateText = win.CreateText;
    win.CreateText = hectorCreateText;
    
    win.originalCreateIndicator = win.CreateIndicator;
    win.CreateIndicator = hectorCreateIndicator;
    
    win.originalCreateButton = win.CreateButton;
    win.CreateButton = hectorCreateButton;
    
    //fix innerText
    if (win.setElementText) {
      win.setElementText = function(elementId, text) {
        var element = this.window.document.getElementById(elementId);
        if (element) {
          element.innerHTML = "";
          element.appendChild(element.ownerDocument.createTextNode(text));
        }
      }
    }
    
    //fix startup
    if (win.remove) {
      win.widget.onremove = win.remove;
    }
    if (win.hide) {  
	    win.widget.onhide = win.hide;
    }
    if (win.show) {  
	    win.widget.onshow = win.show;  
    }
  }  
}

function hectorCreateInfoButton(id, params, win) {
	if (!win) {
	  win = this.window
	}
	var flipElement = win.document.getElementById(id);
  if (flipElement) {
    flipElement.loaded = false;
  }  
  return win.originalCreateInfoButton(id, params);
}    

function hectorCreateGlassButton(id, params, win) {
	if (!win) {
	  win = this.window
	}
	var buttonElement = win.document.getElementById(id);
  buttonElement.loaded = false;
  return win.originalCreateGlassButton(id, params);
}

function hectorCreateHorizontalSlider(id, params, win) {
	if (!win) {
	  win = this.window
	}
	var sliderElement = win.document.getElementById(id);
  sliderElement.loaded = false;
  return win.originalCreateHorizontalSlider(id, params);
}

function hectorCreateShape(id, params, win) {
	if (!win) {
	  win = this.window
	}
	var shapeElement = win.document.getElementById(id);
  shapeElement.loaded = false;
  return win.originalCreateShape(id, params);
}

function hectorCreateText(id, params, win) {
	if (!win) {
	  win = this.window
	}
  if (params.text && win.document.getElementById(id)) {
    var text = params.text;
    if (win.getLocalizedString) {
      text = win.getLocalizedString(text);
    }  
    win.document.getElementById(id).innerHTML = text;
  }
}

function hectorCreateIndicator(id, params, win) {
	if (!win) {
	  win = this.window
	}
	var indicatorElement = win.document.getElementById(id);
  indicatorElement.loaded = false;
  win.originalCreateIndicator(id, params);
}

function hectorCreateButton(id, params, win) {
	if (!win) {
	  win = this.window
	}
  var buttonElement = win.document.getElementById(id);
  if (buttonElement) {
    var text = params.text;
    if (!text) {
      text = "";
    }
    if (win.getLocalizedString) {
      text = win.getLocalizedString(text);
    }  
		var imagePrefix = "Images/" + id + "_";
		var height = 20;
		var leftImageWidth = params.leftImageWidth;
		if (!leftImageWidth) {
		  leftImageWidth = 0;
		}
		var rightImageWidth = params.rightImageWidth;
		if (!rightImageWidth) {
		  rightImageWidth = 0;
		}
		
		var onclick = params.onclick;
		if (!onclick) {
		  onclick = null;
		}
		if (typeof (onclick) != 'function') {
		  try { onclick = eval("win." + onclick); } catch (e) { onclick = null; }
		}  
		
		buttonElement.object = new HectorButton(buttonElement, text, height, imagePrefix + "left.png", imagePrefix + "left_clicked.png", leftImageWidth, imagePrefix + "middle.png", imagePrefix + "middle_clicked.png", imagePrefix + "right.png", imagePrefix + "right_clicked.png", rightImageWidth, onclick);
		buttonElement.object.setEnabled(!params.disabled);
		return buttonElement.object;
  }
}  
