function trim(s){
	return rtrim(ltrim(s));
}

function ltrim(s){
	return s.replace(/^\s+/, ''); 
}

function rtrim(s){
	return s.replace(/\s+$/, ''); 
}

Array.prototype.inArray = function (value) {
        var i;
        for (i=0; i < this.length; i++) {
                if (this[i] === value) {
                        return true;
                }
        }
        return false;
};

function addImageButtonEvent(handle){
	if(!handle)
		allImages = document.getElementsByTagName('IMG');
	else
		allImages = handle.getElementsByTagName('IMG');
	
	for(var i=0; i<allImages.length; i++){
		if(allImages[i].getAttribute("switch") != null && allImages[i].getAttribute("switch") != ""){
			iswitch = allImages[i].getAttribute("switch");
			if(iswitch.lastIndexOf(':') != -1){
				istate = iswitch.slice(iswitch.lastIndexOf(':') + 1);
				iswitch = iswitch.slice(0, iswitch.lastIndexOf(':'));
			}else{
				istate = "";
			}
			switch(iswitch){
				case "button":
					if(allImages[i].getAttribute("onclick")){
						temp = allImages[i].getAttribute("onclick") + "";
						if(temp.indexOf("javascript:") != -1){
							temp = temp.slice(11);
						}else if(temp.indexOf("function anonymous") != -1){
							temp = temp.slice(temp.indexOf('{')+1, temp.lastIndexOf('}'));
						}

						temp = "javascript:if(!SwitchIsLocked(this)){ " + temp + " }";
						setAttribute(allImages[i], "onclick", temp);
					}
					break;
				
				case "check":
						temp = "";
						if(allImages[i].getAttribute("onclick")){
							temp = allImages[i].getAttribute("onclick") + "";
							if(temp.indexOf("javascript:") != -1){
								temp = temp.slice(11);
							}else if(temp.indexOf("function anonymous") != -1){
								temp = temp.slice(temp.indexOf('{')+1, temp.lastIndexOf('}'));
							}
						}
						temp = "SwitchImage(this, SwitchState(this), '" + trim(temp) + "');";
						temp = "javascript:if(!SwitchIsLocked(this)){ " + temp + " }";
		
						setAttribute(allImages[i], "onclick", temp);				
					break;
				case "select":
						temp = "";
						if(allImages[i].getAttribute("onclick")){
							temp = allImages[i].getAttribute("onclick") + "";
							if(temp.indexOf("javascript:") != -1){
								temp = temp.slice(11);
							}else if(temp.indexOf("function anonymous") != -1){
								temp = temp.slice(temp.indexOf('{')+1, temp.lastIndexOf('}'));
							}
						}
						temp = "SwitchImage(this, SwitchState(this), '" + trim(temp) + "');";
						temp = "javascript:if(!SwitchIsLocked(this)){ " + temp + " }";
						setAttribute(allImages[i], "onclick", temp);
									
					break;
			}
			if(istate != ""){
				SwitchImage(allImages[i], istate);
			}
			setAttribute(allImages[i], "onmouseover", "javascript:SwitchImage(this, 'over');");	
		}
	}
}

function SwitchState(element){
	iswitch = element.getAttribute("switch");
	if(iswitch.lastIndexOf(':') != -1){
		istate = iswitch.slice(iswitch.lastIndexOf(':') + 1);
		iswitch = iswitch.slice(0, iswitch.lastIndexOf(':'));
	}else{
		istate = "";
	}
	switch(iswitch){
		case "check":
			if(element.checked == null || eval(element.checked) == false){
				return "check";
			}else{
				return "uncheck";
			}
			break;
		case "select":
			
			if(element.selected == null || eval(element.selected) == false){
				return "select";
			}else{
				return "unselect";
			}
			break;
	}
}
function SwitchGroupSelected(group){
	allImages = document.getElementsByTagName('IMG');
	for(var i=0; i<allImages.length; i++){
		if(allImages[i].getAttribute("switchgroup") == group && eval(allImages[i].getAttribute("selected")) == true){
			return allImages[i];
		}
	}
	return null;
}
function SwitchIsLocked(element){
	if(element.getAttribute("state") == "locked"){
		return true;	
	}else{
		return false;	
	}
}
function SwitchImage(element, state, functions){
	if(!state){ state = ""; }
	if(!functions){ functions = ""; }
	
	switch(state){
		case "lock":
			state = "locked";
			break;
		case "unlock":
			state = null;
			break;
		case "check":
			state = "checked";
			break;
		case "uncheck":
			state = null;
			break;
		case "select":
			state = "selected";
			break;
		case "unselect":
			state = "unselected";
			break;
	}
	
	if(element.getAttribute("state") != null || element.getAttribute("state") != ""){
		istate = element.getAttribute("state");
	}else{
		istate = null;	
	}
	
	image = element.src;
	ignore = ["locked", "checked", "selected"];

	if(!ignore.inArray(istate) || (ignore.inArray(istate) && state == null) || state == "unselected"){
		iselected = false;
		if(state == null){ state = ""; }
		if(state == "unselected"){ state = ""; }
		if(istate == null || istate == ""){
			i_state = ".";
		}else{
			i_state = "_" + istate;
		}
		
		extesion = image.slice(image.lastIndexOf('.'));
		image = image.slice(0, image.lastIndexOf(i_state));

		if(state == "checked"){
			element.checked = true;
		}else if(istate == "checked"){
			element.checked = false;
			state = "over";
		}

		if(state == "selected"){
			iselected = SwitchGroupSelected(element.getAttribute("switchgroup"));
			element.setAttribute("selected", true);
		}else if(istate == "selected"){
			element.setAttribute("selected", false);
		}
		
		element.setAttribute("state", state);
		
		if(state != ""){ state = "_" + state; }

		element.src = image + state + extesion;
		
		if(element.onmouseout == null){
			element.onmouseout = function(){
				SwitchImage(this);
			}
		}

		if(iselected != null && iselected != false){
			SwitchImage(iselected, "unselect");
		}
		
		if(functions != ""){
			functions = functions.replace("this", "element");
			eval(functions);
		}
	}
}