function gui_checkRegExp(source, reTemplate) {
//alert(source + '\n' + reTemplate);
try {
    var result = new RegExp(reTemplate).exec(source);
//    alert(result + '\n' + result.length);
    for (var i = 0; result != null && i < result.length; i++) {
        if (result[0].length == source.length) {
            return true;
       	}
    }
    return false;
} catch (e) {
alert('GUI Module Error:\n' + e.error);
}
}
var GUI = {
    setSelectedIndex: function (list, value) {
        if (list && list.length && value) {
            for (var i = 0; i < list.length; i++) {
                if (list[i].value == value) {
                    list.selectedIndex = i;
                    break;
                }
            }
        }
    },
    getCheckedItems: function (list) {
        var result = new Array();
        var ik = 0;
        if (list && list.length) {
            for (var i = 0; i < list.length; i++) {
                if (list[i].checked && list[i].checked == true) {
                    result[ik++] = list[i];
                }
            }
        }
        return result;
    },
    getSelectedItem: function (list) {
   		if (list && list.length && list.options && list.selectedIndex >= 0) {
    		return list[list.selectedIndex];
    	}
    	return null;
    },
    setSelectedAll: function(list) {
        if (list && list.length) {
            for (var i = 0; i < list.length; i++) {
                list[i].selected = true;
            }
        }
    },
    getByValue: function(list, value) {
    	if (list && list.length) {
    		for (var i = 0; i < list.length; i++) {
    			if (list[i].value == value) {
    				return list[i];
    			}
    		}
    	}
    	return null;
    },
    removeSelected: function(list) {
    	if (list && list.options && list.options.length) {
    		var oldOptions = new Array();
    		var ik = 0;
    		for (var i = 0; i < list.options.length; i++) {
    			oldOptions[ik] = new Option(list.options[i].text, list.options[i].value);
    			oldOptions[ik].selected = list.options[i].selected;
    			ik++;
    		}
    		ik = 0;
    		list.options.length = 0;
    		for (var i = 0; i < oldOptions.length; i++) {
    			if (oldOptions[i].selected == false) {
    				list.options[ik++] = oldOptions[i];
    			}
    		}
    	}
    },
/*    
    GUI.moveUp = function(list) {
    	if (list && list.options && list.options.length) {
    		var index = list.selectedIndex;
    		if (index > 0) {
    			var prev = list.options[index - 1];
    			var curr = list.options[index];
    			try {
    				list.options[index - 1] = curr;
    			} catch (e) {}
    			list.options[index] = prev;
    		}
    		alert(list.options.length);
    	}
    }
    GUI.moveDown = function(list) {
    	if (list && list.options && list.options.length) {
    		var index = list.selectedIndex;
    		if (index < (list.options.length - 1)) {
    			var curr = list.options[index];
    			var next = list.options[index + 1];
    			try {
    				list.options[index] = next;
    			} catch (e) {}
    			list.options[index + 1] = curr;
    		}
    	}
    }
*/
    debug: function (obj, text) {
        for (i in obj) {
            if (text != null && i.toUpperCase().indexOf(text.toUpperCase()) == -1) {
                continue;
            }
            if (confirm(i + ":" + obj[i]) == false) {
                break;
            }
        }
    },
    setTextValue: function (list, text) {
    	if (list && text) {
    		var item = GUI.getSelectedItem(list);
    		if (item) {
    			text.value = item.text;
    		}
    	}
    },
    setChecked: function(list, value) {
        if (list) {
        	if (list.length) {
            	for (var i = 0; i < list.length; i++) {
                	list[i].checked = value;
	            }
	        } else {
	        	list.checked = value;
	        }
        }
    },
    getRect: function (element) {
    	var left = element.offsetLeft;
	    var top = element.offsetTop;
    	var parent = element.offsetParent;
	    while (true) {
    	    if (parent) {
        	    left += parent.offsetLeft;
            	top += parent.offsetTop;
	        } else {
    	        break;
        	}
	        parent = parent.offsetParent;
    	}
	    return {left: left, top: top};
	},
	setHandler:	function(target, functionref, tasktype) { 
    	var tasktype = (window.addEventListener) ? tasktype : "on" + tasktype;
		if (target.addEventListener) {
		   target.addEventListener(tasktype, functionref, false);
		} else if (target.attachEvent) {
		   target.attachEvent(tasktype, functionref);
		}
	}
}
    