/**
 * @author Cientista
 */

var Utils = new function() {
	// Converts newlines to HTML line breaks  
    // 
    // version: 911.1619
    // discuss at: http://phpjs.org/functions/nl2br    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: Philip Peterson
    // +   improved by: Onno Marsman
    // +   improved by: Atli Þór
    // +   bugfixed by: Onno Marsman    // +      input by: Brett Zamir (http://brett-zamir.me)
    // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: Brett Zamir (http://brett-zamir.me)
    // +   improved by: Maximusya
	this.nl2br = function(str) {
    	return (str + '').replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, '$1'+ "<br />" +'$2');
	}
	
	this.isFilled = function(field, minChars) {
		return (field.value.length >= minChars);
	}
	
	this.isEmail = function(field) {
		if (!Utils.isFilled(field, 7));
		email = field.value;
		apos=email.indexOf("@");
	  	dotpos=email.lastIndexOf(".");
	  	if (apos<1 || dotpos-apos<2) return false;
		return true;
	}
	
	this.selectedText = function(txtarea) {
		return txtarea.value.substring(txtarea.selectionStart, txtarea.selectionEnd); 
	}
	
	this.replaceSelectedText = function(txtarea, replace) {
		var start = txtarea.selectionStart;
		var end = txtarea.selectionEnd;
		var text = txtarea.value;
		text = text.substring(0, start) + replace + text.substring(end);
		txtarea.value = text;
	}
	
	this.setDisplay = function (elem, display) {
		if (display) {
			elem.style.display = "block";
			Utils.setAlpha (elem, 1);
		}
		else {
			elem.style.display = "none";
			Utils.setAlpha (elem, 0);
		}
	}
	
	this.setAlpha = function (elem, alpha) {
		elem.style.opacity = alpha;
		elem.style.filter = 'alpha(opacity = ' + (alpha*100) + ')';
	}
	
	this.refresh = function () {
		location.reload(true);
	}
	
	this.selectCaption = function(select) {
		var index = select.selectedIndex;
		return select.options[index].text;
	}
	
	this.redirect = function (loc) {
		var b = document.getElementsByTagName("base");
		if (b && b[0] && b[0].href) {
   			if (b[0].href.substr(b[0].href.length-1) == '/' && loc.charAt(0) == '/') loc = loc.substr(1);
   			loc = b[0].href + loc;
 		}
		window.location = loc;
	}
	
	/*
	 * written by Simon Willison
	 * http://simonwillison.net/
	 */
    this.addLoadEvent = function(func) {
        var oldonload = window.onload;
        if (typeof window.onload != 'function') {
            window.onload = func;
        }
        else {
            window.onload = function(){
                if (oldonload) {
                    oldonload();
                }
                func();
            }
        }
    }
	
	/*
	 * written by Bernard Marx
	 * http://www.webmasterworld.com/forum91/1729.htm
	 */
	this.getElementsByAttribute = function(attr, val, container) {
		container = container || document;
        var all = container.all || container.getElementsByTagName('*');
        var arr = [];
        for (var k = 0; k < all.length; k++) 
            if (all[k].getAttribute(attr) == val) {
                arr[arr.length] = all[k];
			}
        return arr;
	}
}
