function edGet(fieldId) {
    return document.getElementById(fieldId);
}

function validText(fieldId) {
    var f = Trim(document.getElementById(fieldId).value);
    return f.length>0;

}

function validTextIfNotNull(fieldId) {
    var f = document.getElementById(fieldId).value;
    if(f.length==0) {
        return true;
    }
    var f = Trim(document.getElementById(fieldId).value);
    return f.length>0;

}

function validEmailIfNotNull(fieldId) {
    var f = document.getElementById(fieldId).value;
    if(f.length==0) {
        return true;
    }
    return validEmail(fieldId);
}

function validEmail(fieldId) {
    var f = document.getElementById(fieldId).value;
    var emailExp = /^[\w\-\.\+]+\@[a-zA-Z0-9\.\-]+\.[a-zA-z0-9]{2,4}$/;
    if(!f.match(emailExp)) {
        return false;
    }
    return true;
}

function validPhoneIfNotNull(fieldId) {
    var f = document.getElementById(fieldId).value;
    if(f.length==0) {
        return true;
    }
    return validPhone(fieldId);
}

function validPhone(fieldId) {
    var f = document.getElementById(fieldId).value;
    if(f.length<9 || f.length>13) {
        return false;
    }
    var regexp = /^[0-9]{9,13}$/;
    if(!f.match(regexp)) {
        return false;
    }
    return true;
}

function validTextarea(fieldId) {
    var f = Trim(document.getElementById(fieldId).value);
    f = remove_newlines_textarea (f);
    return f.length>0;

}

function validTextareaTinyMce(fieldId) {
	var content = tinyMCE.get(fieldId).getContent(); // msg = textarea id

	if( content == "" || content == null || content.length<5){
		return  false;
	 }

	return true;

}

function remove_newlines_textarea (val) {
  // Adjust newlines so can do correct character counting for MySQL. MySQL counts a newline as 2 characters.
  if (val.indexOf('\r\n')!=-1)
    ; // this is IE on windows. Puts both characters for a newline, just what MySQL does. No need to alter
  else if (val.indexOf('\r')!=-1)
    val = val.replace ( /\r/g, "" );        // this is IE on a Mac. Need to add the line feed
  else if (val.indexOf('\n')!=-1)
    val = val.replace ( /\n/g, "" );        // this is Firefox on any platform. Need to add carriage return
  else
    ;                                           // no newlines in the textarea
  return val;
}

function validSelect(fieldId, nullValue) {
    var f = document.getElementById(fieldId);
    return (f.options[f.selectedIndex].value)!=nullValue;
}

function validSelectMulti(select,mandatoryChecks) {
	var f = document.getElementById(select);
	var valid = false;
	var found = 0;

	for(var i = 0; i < f.options.length; i++) {
		if(f.options[i].selected) {
			found++;
			if(found == mandatoryChecks) {
				valid = true;
				break;
			}
		}
	}
	return valid;
}

function validYear4Digits(fieldId) {
    var f = Trim(document.getElementById(fieldId).value);
    if(f.length==0) {
        return false;
    }
    if(isNaN(f)) {
        return false;
    }
    if(f.length!=4) {
        return false;
    }
    return true;
}

function validYear4DigitsIfNotNull(fieldId) {
    var f = Trim(document.getElementById(fieldId).value);
    if(f.length==0) {
        return true;
    }
    if(f.length==0) {
        return false;
    }
    if(isNaN(f)) {
        return false;
    }
    if(f.length!=4) {
        return false;
    }
    return true;
}

//obriga que pelo menos x dos elementos do grupo,
//checkbox ou radio button, esteja seleccionado
function validCheckGroup(fieldName, mandatoryChecks) {
    var f=document.getElementsByName(fieldName);
    var checks = 0;
    for(var i=0;i<f.length;i++){
        if (f[i].checked){
            ++checks;
            if(checks==mandatoryChecks) {
                return true;
            }
        }
    }
    return false;
}

function returnChecked(fieldName) {
    var f=document.getElementsByName(fieldName);
    for(var i=0;i<f.length;i++){
        if (f[i].checked){
        	return f[i].value;
        }
    }
    return false;
}

function invalidFieldValue(strpt,stren,lang) {
	if(lang=='en'){
		return '<p> - '+stren+'</p>';
	}else {
		return '<p> - '+strpt+'</p>';
	}
}

function invalidFieldValueMensage(strpt,stren,lang) {
	if(lang=='en'){
		return '<p>'+stren+'';
	}else {
		return '<p>'+strpt+'';
	}
}

function invalidFieldValueIfNotNull(strpt,stren,lang) {
    if(lang=='en'){
		return '\nThe field «'+stren+'» is invalid.';
	}else {
		return '\nO campo «'+strpt+'» é inválido';
	}
}

function disableField(fieldId) {
    var f = document.getElementById(fieldId);
    f.disabled = true;
}

function enableField(fieldId) {
    var f = document.getElementById(fieldId);
    f.disabled = false;
}

function toggleEnableField(fieldId) {
    var f = document.getElementById(fieldId);
    if(f.disabled)
        f.disabled = false;
    else
        f.disabled = true;
}

function togglepassword2(id, idtext,ShowText, HideText) {
	var ip = document.getElementById(id);
    var t = document.getElementById(idtext);
    var np=document.createElement('input');
    np.id = ip.id;
    np.name = ip.name;
    np.size = ip.size;
    if(ip.type=='password') {
    	np.type='text';
        t.innerHTML = HideText;
    }
    else {
    	np.type='password';
        t.innerHTML = ShowText;
    }
    np.value = ip.value;
    np.className = ip.className;
    ip.parentNode.replaceChild(np,ip);
}

function toggleElementById(id, _displayType) {
    var displayType = 'block';
    if(_displayType!=null) {
        displayType = _displayType;
    }
    var e = document.getElementById(id);
    if(e.style.display=='none') {
        e.style.display = displayType;
    } else {
        e.style.display = 'none';
    }
}


//params example: edOpenNewWindow('http://www.ed.com','','scrollbars=no,menubar=no,height=600,width=800,resizable=yes,toolbar=no,location=no,status=no')
function edOpenNewWindow(url, params) {
    var load = window.open(url,'',params);
    return false;
}


 function Trim(TRIM_VALUE){
    if(TRIM_VALUE.length < 1){
        return"";
    }
    TRIM_VALUE = RTrim(TRIM_VALUE);
    TRIM_VALUE = LTrim(TRIM_VALUE);
    if(TRIM_VALUE==""){
        return "";
    }
    else{
        return TRIM_VALUE;
    }
} //End Function

function RTrim(VALUE){
    var w_space = String.fromCharCode(32);
    var v_length = VALUE.length;
    var strTemp = "";
    if(v_length < 0){
        return"";
    }
    var iTemp = v_length -1;
    while(iTemp > -1){
        if(VALUE.charAt(iTemp) == w_space) { }
        else {
            strTemp = VALUE.substring(0,iTemp +1);
            break;
        }
        iTemp = iTemp-1;
    } //End While
    return strTemp;
} //End Function

function LTrim(VALUE){
    var w_space = String.fromCharCode(32);
    if(v_length < 1){
        return"";
    }
    var v_length = VALUE.length;
    var strTemp = "";
    var iTemp = 0;
    while(iTemp < v_length){
        if(VALUE.charAt(iTemp) == w_space) { }
        else{
            strTemp = VALUE.substring(iTemp,v_length);
            break;
        }
        iTemp = iTemp + 1;
    } //End While
    return strTemp;
} //End Function

function edshowm(dom1, em, dom2, cls) {
	return document.write(dom1+'@'+em+'.'+dom2);
}


function checkop() {
    var opselection = document.getElementById('opselection');
    if(opselection.selectedIndex==0) {
        alert('Tem que escolher uma operação antes de executar.');
        return false;
    } else {
        if(allCheckboxesBlank()) {
            alert('Não escolheu nenhum registo para processar.');
            return false;
        }
        if(opselection.options[opselection.options.selectedIndex].value=='deletemultiple') {
            return confirm('Tem a certeza de que quer remover os registos seleccionados?');
        }
    }
    return true;
}

function allCheckboxesBlank() {
    var inputEls = document.getElementsByTagName('input');
    for (var i = 0, tEl; tEl = inputEls[i]; i++) {
        if(tEl.checked)
            return false;
        }
        return true;
    }


function getElementsByClass( searchClass, domNode, tagName) {
    if (domNode == null) domNode = document;
    if (tagName == null) tagName = '*';
    var el = new Array();
    var tags = domNode.getElementsByTagName(tagName);
    var tcl = " "+searchClass+" ";
    for(i=0,j=0; i<tags.length; i++) {
        var test = " " + tags[i].className + " ";
        if (test.indexOf(tcl) != -1)
            el[j++] = tags[i];
    }
    return el;
}

function toggleAll() {
	 var inputEls = getElementsByClass('checkall',null, null);
	 var selectAll = document.getElementById('selectall');

    if(selectAll.checked) {
    	checkVal = '';
    } else {
    	checkVal = 'checked';
    }

    for (var i = 0, tEl; tEl = inputEls[i]; i++) {
        tEl.checked = checkVal;
    }

    /*Patch para usar o jNice - br 20100827*/
    var inputjNice = getElementsByClass('jNiceCheckbox',null, null);
    $class='jNiceCheckbox';
    if(!selectAll.checked){
    	$class='jNiceCheckbox jNiceChecked';
    }
    for (var y = 0, elementl; elementl = inputjNice[y]; y++) {
    	elementl.setAttribute("class", $class);
    }
}

function abreJanela (url,windowName) {
	window.open (url,'','left=20,top=20,width=1030,height=750,toolbar=0,location=0,status=1,resizable=1,scrollbars=1');
}

function abreJanelaComDimensoes (url, width, height, top, left) {
	window.open (url,'','left='+left+',top='+left+',width='+width+',height='+height+',toolbar=0,location=0,status=1,resizable=1,scrollbars=1');
}

function showMessageJquery(msg,title,contentText,contentDiv){
	if(contentText==null){contentText="jqueryErrorContent";}
	if(contentDiv==null){contentDiv="displayError";}
	if(title!=null){$("#modalHelpText").html(title);}

	$("#"+contentText).html(msg);
	 $.blockUI({
        message: $("#"+contentDiv),
        	fadeIn: 700,
            css: {
		 		width: "570px",
                border: "none",
                padding: "5px",
                backgroundColor: "#FFF8A4",
                "-webkit-border-radius": "10px",
                "-moz-border-radius": "10px",
                cursor:"default"
       		}
	 });
}

function edToggle(selectId, idToBeToggled) {
    var f = document.getElementById(selectId);
	var t = document.getElementById(idToBeToggled);
    if ((f.options[f.selectedIndex].value)=='Outra') {
    	t.disabled = false;
    } else {
    	t.value='';
    	t.disabled = true;
    }
}

