// Version 1.5  //

var inputs;
var imgUnchecked = BASE_CONTEXT + '/content/en/images/customForms/btn_unchecked.gif';
var imgChecked = BASE_CONTEXT + '/content/en/images/customForms/btn_checked.gif';
var imgRadioOn = BASE_CONTEXT + '/content/en/images/customForms/btn_radio_on.gif';
var imgRadioOff = BASE_CONTEXT + '/content/en/images/customForms/btn_radio_off.gif';
var keySense = 0;
var listActive = 0;
var optionSelected = 0;
var listTmp;
var character = '';

function init() {
	reloadLists();
	replaceChecks();
	replaceRadios();

	document.body.onclick = function (event){
		event = event || window.event;
		callClick(event);
		try{
			eventClickSavedInfo(event);
		}catch(e){ /* Do nothing if not exist */ }
	}

	document.onkeyup = function keyPress(event){
		if(listActive==1){
			wkey = getKeyPress(event);
			if(wkey >= 48 && wkey <= 90 ){
				keySense = 1;
				searchList(String.fromCharCode(wkey));
			}
		}
	}
}
//---------------------Search------------------------
function getKeyPress(event){
	try{
		return(event.which?event.which:window.event.keyCode);
	}catch(e){
		return(window.event.keyCode);
	}
}

function searchList(charac){
	var active = 0;
	var bucle = 0;
	var j=0;
	var count = 0;
	if(character == charac){
		j = optionSelected + 1;
		count = optionSelected + 1;
		bucle = 1;
	}
	for(j;j < listTmp.length;j++){
		if(listTmp[j].lastChild.innerHTML.charAt(0).toLowerCase() == charac.toLowerCase()){
			listSelect(listTmp[j].lastChild);
			document.getElementById(listTmp[0].parentNode.id).scrollTop = count*19;
			optionSelected = j;
			j=listTmp.length;
			character = charac;
			active = 1;
		}
		count++;
	}
	if(bucle==1 && active==0){
		character = '';
		searchList(charac);
	}
}

function searchInit(){
	listActive = 1;
}

function searchDelete(){
	listActive = 0;
	keySense = 0;
}

//------------------- Drop Down Lists -----------------
function reloadLists() {
  var lists = document.getElementsByTagName('div');
  for (var i=0; i < lists.length ; i++) {
    if (lists[i].className=='graphicList'){
      var p2 = document.getElementsByTagName('div')[i];
      p2.parentNode.removeChild(p2);
      i=0;
    }
  }
  replaceLists();
}

function replaceLists() {
	var maxLength = '';
	var selects = document.getElementsByTagName('select');
	for(var i=0; i < selects.length; i++) {
		var lst = document.createElement('div');
		lst.className = 'graphicList';
		lst.innerHTML = '';
		var options = selects[i].getElementsByTagName('option');
		for (var j=0; j < options.length; j++) {
			if (options[j].selected){
				var current = options[j].text;
			}
			if (j==(options.length-1)) {
				lst.innerHTML+='\n		<dt><a href="javascript:void(0);" onclick="listSelect(this)" class="lastOption">'+options[j].text+'</a></dt>';
			} else {
				lst.innerHTML+='\n		<dt><a href="javascript:void(0);" onclick="listSelect(this)">'+options[j].text+'</a></dt>';
			}
		}
		lst.innerHTML= '\n\n	<span><span onclick="toggleList(this)" onselectstart="return false;" style="-moz-user-select: none;">'+current+'</span><a href="javascript:void(0);" onclick="toggleList(this)" class="btnArrow"></a></span>\n	<dl id="'+selects[i].id+'-UL">'+lst.innerHTML+'\n	</dl>\n';
		lst.style.zIndex = 100-i;
		selects[i].parentNode.insertBefore(lst, selects[i]);
		maxLength = '';
		var options = lst.getElementsByTagName('dt');
		for (j=0; j < options.length; j++ ){
			if (options[j].firstChild.innerHTML.length>maxLength.length){
				maxLength=options[j].firstChild.innerHTML;
			}
		}
		lst.getElementsByTagName('span')[0].firstChild.innerHTML=maxLength;
                if (options.length>17) { //scrollable
                    lst.getElementsByTagName('dl')[0].style.width= (lst.getElementsByTagName('span')[0].firstChild.offsetWidth+20+5)+'px';
                    lst.getElementsByTagName('dl')[0].style.height='100px';
                    lst.style.width = (lst.getElementsByTagName('span')[0].firstChild.offsetWidth+20+5)+'px';
                } else {
                    lst.style.width = (lst.getElementsByTagName('span')[0].firstChild.offsetWidth+20+5)+'px';
                }
		lst.getElementsByTagName('span')[0].firstChild.innerHTML=current;
		lst.innerHTML = lst.innerHTML.replace(/<DT>/ig,'<dt style="width:'+lst.style.width+'; display:block;">');
		selects[i].parentNode.insertBefore(lst, selects[i]);
		selects[i].style.display='none';
	}
	searchDelete();
}

function toggleList(src){
	//alert(src.parentNode.innerHTML);
	searchInit();
	var dsp = src.parentNode.parentNode.getElementsByTagName('dl')[0].style.display;
	if ( (dsp == '') || (dsp == 'none') ) {
		var lists = document.getElementsByTagName('dl');
		for (var i=0; i < lists.length ; i++) {
			if ( (lists[i].id.substr(lists[i].id.length-3,3))=='-UL'  ) {
				lists[i].style.display='none';
			}
		}
		src.parentNode.parentNode.getElementsByTagName('dl')[0].style.display='inline';
		listTmp = src.parentNode.parentNode.getElementsByTagName('dl')[0].getElementsByTagName('dt');
	} else {
		src.parentNode.parentNode.getElementsByTagName('dl')[0].style.display='none';
	}
}

function listSelect(src){
	if(keySense == 0){
		src.parentNode.parentNode.style.display='none';
		searchDelete();
	}else{
		keySense = 0;
	}
	src.parentNode.parentNode.parentNode.getElementsByTagName('span')[1].innerHTML=src.innerHTML;
	var options = document.getElementById(src.parentNode.parentNode.id.replace("-UL","")).getElementsByTagName('option');
	for (var i=0; i < options.length; i++) {
		if (options[i].text == src.innerHTML) {
			options[i].selected=true;
		} else {
			options[i].selected=false;
		}
	}

	var sel = document.getElementById(src.parentNode.parentNode.id.replace("-UL",""));
	if (sel.onchange!=null){
		sel.onchange();
	}
}

function callClick(event){ //Reset List-Boxes
	var target = event.target || event.srcElement;
	if (target && target.parentNode.tagName!="HTML") {

                //alert();
		if (
			(target.className!='btnArrow') &&
			(target.parentNode.parentNode.id.search('-UL')<=0) &&
			(target.parentNode.parentNode.className!='graphicList')
		) {
			searchDelete();
			var lists = document.getElementsByTagName('dl');
			for (var i=0; i < lists.length ; i++) {
				if ( (lists[i].id.substr(lists[i].id.length-3,3))=='-UL'  ) {
					lists[i].style.display='none';
				}
			}
		}

	}
}

//------------------- Checkboxes -----------------
var inputs = document.getElementsByTagName('input');
function replaceChecks() {
    for(var i=0; i < inputs.length; i++) {
        if(inputs[i].getAttribute('type') == 'checkbox') {
            var img = document.createElement('img');
            if(inputs[i].checked) {
                img.src = imgChecked;
            } else {
                img.src = imgUnchecked;
            }
			img.className='chkBox';
            img.id = 'checkImage'+i;
            img.onclick = new Function('checkChange('+i+')');
            inputs[i].parentNode.insertBefore(img, inputs[i]);
           	inputs[i].style.display='none';
        }
    }
}

function checkChange(i) {
    if(inputs[i].checked) {
        inputs[i].checked = '';
    } else {
        inputs[i].checked = 'checked';
    }
	switchCheck(i);
	if (inputs[i].onclick!=null) {
		inputs[i].onclick();
	}
}

function switchCheck (num) {
	var imgsrc = document.getElementById('checkImage'+num).src;
	if (imgsrc.search('unchecked')>0){
		document.getElementById('checkImage'+num).src = imgsrc.replace('unchecked','checked');
	} else {
		document.getElementById('checkImage'+num).src = imgsrc.replace('checked','unchecked');
	}
}

function checkSelect(src, value){
	var options = document.getElementById('sideOptions').getElementsByTagName('input');
	for (var i=0; i < options.length; i++) {
		options[i].checked = value;
	}
	var options = document.getElementById('sideOptions').getElementsByTagName('img');
	for (var i=0; i < options.length; i++) {
		if (options[i].src.search("checked")>0) {
			if (value) {
				options[i].src=options[i].src=imgChecked;
			} else {
				options[i].src=options[i].src=imgUnchecked;
			}
		}
	}
}
//------------------- RadioButtons -----------------
function replaceRadios() {
    for(var i=0; i < inputs.length; i++) {
        if(inputs[i].getAttribute('type') == 'radio') {
            var img = document.createElement('img');
            if(inputs[i].checked) {
                img.src = imgRadioOn;
            } else {
                img.src = imgRadioOff;
            }
            img.className='radioBtn';
            img.id = 'radioImage'+i;
            img.onclick = new Function('radioChange('+i+')');
            inputs[i].parentNode.insertBefore(img, inputs[i]);
           	inputs[i].style.display='none';
        }
    }
}

function radioChange(i) {
    inputs[i].checked = 'checked';
	if (inputs[i].onclick!=null) {
		inputs[i].onclick();
	}
	for(var j=0; j < inputs.length; j++) {
		if ( (inputs[j].getAttribute('type') == 'radio')  &&
		(inputs[j].getAttribute('name')==inputs[i].getAttribute('name'))
		) {
			if(inputs[j].checked) {
				document.getElementById('radioImage'+j).src = imgRadioOn;
			} else {
				document.getElementById('radioImage'+j).src = imgRadioOff;
			}
		}
	}
}


//------------------------------------------------------

AttachEvent(window,'load',init);