// replaceSelects}
var REPLACE_SELECTS = new Array();
var REPLACE_SELECTS_CLASSNAME = new Array("SelectBasic");
var REPLACE_LOADED = false;

function OnloadReplace() {
	if (!REPLACE_LOADED) {
		GetReplaceSelects();
		REPLACE_LOADED = true;
	}
}


function GetReplaceSelects() {
if (!$.browser.msie) return;
  var GetAllSelects = document.getElementsByTagName('select');
  SelectedNum = 0;
  for(i=0; i<GetAllSelects.length; i++) {
    for(j=0; j<REPLACE_SELECTS_CLASSNAME.length; j++) {
      if(GetAllSelects[i].className.split(' ')[0] == REPLACE_SELECTS_CLASSNAME[j]) {
        REPLACE_SELECTS[SelectedNum] = GetAllSelects[i];
        SelectedNum++;
      }
    }
  }
  replaceSelects();
}


function replaceSelects() {
   for(var i=0; i < REPLACE_SELECTS.length; i++) {
    var selectWidth = findObjWidth(REPLACE_SELECTS[i]);
    var selectHeight = findObjHeight(REPLACE_SELECTS[i]);
	var classNameList = REPLACE_SELECTS[i].className.split(' ');
	var selectClassName = classNameList[0]; 
	var selectAdditionalClassName = classNameList[1] || '';

    if(REPLACE_SELECTS[i].id == "") {
      REPLACE_SELECTS[i].id = "RootSelectID" + i;
    }

    var REPLACE_SELECTS_TEXT = REPLACE_SELECTS[i].options[REPLACE_SELECTS[i].selectedIndex].innerHTML;

    var selectArea = document.createElement('div');
    var textArea = document.createElement('a');
    var text = document.createTextNode(REPLACE_SELECTS_TEXT);

    selectArea.className = selectClassName + "_selectArea";
	if (selectAdditionalClassName) {
		selectArea.className += ' ' + selectAdditionalClassName  + "_selectArea";;
	}
    selectArea.style.width = selectWidth + 'px';
	if (selectWidth === 0) {
		selectArea.style.display = 'none';
	}
    selectArea.style.position = 'absolute';
    selectArea.style.top = findPosY(REPLACE_SELECTS[i]) + 'px';
    selectArea.style.left = findPosX(REPLACE_SELECTS[i]) + 'px';
    textArea.id = "mySelectText"+i;

    textArea.appendChild(text);
    selectArea.appendChild(textArea);

    REPLACE_SELECTS[i].style.visibility = 'hidden';

    textArea.href="javascript:showOptions("+i+")";

    var optionsDiv = document.createElement('div');
    var optionHolder = document.createElement('p');
    optionsDiv.id = "optionsDiv"+i;
    optionsDiv.className = selectClassName + "_optionsDiv";
    if (selectAdditionalClassName) {
		optionsDiv.className += ' ' + selectAdditionalClassName + "_optionsDiv";
	}
	optionsDiv.style.display = 'none';
    optionsDiv.style.position = 'absolute';
    optionsDiv.style.width = selectWidth + 'px';
    optionsDiv.style.top = findPosY(REPLACE_SELECTS[i])  + 'px';
    optionsDiv.style.left = findPosX(REPLACE_SELECTS[i]) + 'px';

    for(var j=0; j < REPLACE_SELECTS[i].options.length; j++) {
      var optionLink = document.createElement('a');
      var optionTxt = document.createTextNode(REPLACE_SELECTS[i].options[j].text);
      optionLink.href = "javascript:showOptions("+i+"); selectMe('"+REPLACE_SELECTS[i].id+"',"+j+","+i+");";
      optionLink.appendChild(optionTxt);
      optionHolder.appendChild(optionLink);
      optionsDiv.appendChild(optionHolder);
    }

    document.body.appendChild(selectArea);
    document.body.appendChild(optionsDiv);

    if (REPLACE_SELECTS[i].disabled == true) {
      selectArea.className += " SelectDisable";
      textArea.href = '#';
    }
  }
}


function showOptions(g) {
    var Element = document.getElementById("optionsDiv"+g);

    if(Element.style.display == 'none') {
		for (var i=0; i<SelectedNum; i++) {
			document.getElementById("optionsDiv"+i).style.display = 'none';
		}
		Element.style.display = 'block';
	}
    else if(Element.style.display == 'block') {
		Element.style.display = 'none';
	}
}


function selectMe(selectFieldId,OptionNo,selectNo) {
  selectField = document.getElementById(selectFieldId);
  selectField.selectedIndex = OptionNo;
  selectField.fireEvent('onchange');

  textVar = document.getElementById("mySelectText"+selectNo);
  var newText = document.createTextNode(selectField.options[OptionNo].innerHTML);
  textVar.replaceChild(newText, textVar.childNodes[0]);
}


function findPosY(obj) {
  var posTop = 0;
  while (obj.offsetParent) {
    posTop += obj.offsetTop;
    obj = obj.offsetParent;
  }
  return posTop;
}


function findPosX(obj) {
  var posLeft = 0;
  while (obj.offsetParent) {
    posLeft += obj.offsetLeft;
    obj = obj.offsetParent;
  }
  return posLeft;
}


function findObjWidth(obj) {
  if(obj.style.width) return obj.style.width;
  return obj.offsetWidth;
}


function findObjHeight(obj) {
  if(obj.style.height) return obj.style.height;
  else return obj.offsetHeight;
}


function RelocateSelects() {
  for(var j=0; j<REPLACE_SELECTS_CLASSNAME.length; j++) {
    var t = REPLACE_SELECTS_CLASSNAME[j];
    var sel = getElementsByClass(t + '_selectArea');
    var opt = getElementsByClass(t + '_optionsDiv');
    for (var k = 0; k<sel.length; k++) {
      document.body.removeChild(sel[k]);
      document.body.removeChild(opt[k]);
    }
  }
  REPLACE_LOADED = false;
  OnloadReplace();
  return false;
}


function RemoveSelects(t, n) {
  if (n == null) n=0;
  var sel = getElementsByClass(t + '_selectArea');
  var opt = getElementsByClass(t + '_optionsDiv');
  if (!sel[n]) return;
  document.body.removeChild(sel[n]);
  document.body.removeChild(opt[n]);
}

var getElementsByClass = function(searchClass){
    return $('.' + searchClass).get();
}

$(function(){
	OnloadReplace();
});