function checkValidateType(ValidateType, value){
    var Expression;
    switch(ValidateType){
        case 'email':
            Expression = /^[\w\-\.\+]+\@[a-zA-Z0-9\.\-]+\.[a-zA-z0-9]{2,4}$/;
            break;    
       
        case 'Y-d-m':
            Expression = /^[2]{1}[0-9]{3}\-[0-1]?[0-9]{1}\-[0-3]?[0-9]{1}$/;
            break;    
       
        case 'text':
            Expression = /\w/; 
            break;    
			  
                    
        case 'number':
            Expression = /^[0-9]+$/; 
            break;  

        case 'passwordClear':
            Expression = /^[a-z0-9A-Z_]{4,12}$/; 
            break; 			  

        case 'passwordSpecial':
            Expression = /^[a-z0-9A-Z*_\#\%\s\'\;\]\[\}\{\"\:\`\~\!\@\^]{4,}$/; 
            break;  			  
			
        case 'username':
            Expression = /^[a-z0-9A-Z_]{4,20}$/;
            break;
                        
        case 'foldername':
            Expression = /^[a-z0-9A-Z_\! ]{1,}$/;
            break;  

        case 'usernameEmail':
            Expression = /^[a-z0-9A-Z_]{4,20}$|^[\w\-\.\+]+\@[a-zA-Z0-9\.\-]+\.[a-zA-z0-9]{2,4}$/;
            break; 
        
		 
        default:
            alert('Uknown type of validator type');
            break;
    } 
    var isValid = value.match(Expression);		
    return isValid;
}

function checkForm(formObj){
    var inputTextElems = formObj.getElementsByTagName("input");
    for(var i=0; i<inputTextElems.length; i++){
        var inputType = inputTextElems[i].getAttribute("type");
        var validateType;
        var errorNote;
        if((inputType=="textbox" || inputType=="password") && inputTextElems[i].getAttribute("valtype")){
            validateType = inputTextElems[i].getAttribute("valtype");
            errorNote = inputTextElems[i].getAttribute("errorNote");
            removeErrorNote(inputTextElems[i]);
            if(!checkValidateType(validateType, inputTextElems[i].value)){
                displayErrorNote(inputTextElems[i], errorNote);
                inputTextElems[i].focus();
                return false;
            }
        }
        
        var textAreaElems = formObj.getElementsByTagName("textarea");
        for(var j=0; j<textAreaElems.length; j++){
            if(textAreaElems[j].getAttribute("valtype")){
                var textType = textAreaElems[j].getAttribute("valtype");
                var textErrorNote = textAreaElems[j].getAttribute("errorNote");
                removeErrorNote(textAreaElems[j]);
                if(!checkValidateType(textType, textAreaElems[j].value)){
                    displayErrorNote(textAreaElems[j], textErrorNote);
                    textAreaElems[j].focus();
                    return false;
                
                }
            }
    
        }
    }
    return true;
}

function displayErrorNote(obj, note){
    var newErrorNoteDiv = document.createElement("div");
    newErrorNoteDiv.setAttribute("id", "errorNote");
    newErrorNoteDiv.setAttribute("class", "errorNote");
    var newErrorNoteText = document.createTextNode(note);
    newErrorNoteDiv.appendChild(newErrorNoteText);
    YAHOO.util.Dom.insertAfter(newErrorNoteDiv,obj);
    
}

function removeErrorNote(obj){
    var errorNote = YAHOO.util.Dom.getNextSiblingBy(obj, function(e){return (e.id=="errorNote")});
    if(errorNote){
        errorNote.parentNode.removeChild(errorNote);
    }
}


function getHeightofElement(obj){
    var lastchild = YAHOO.util.Dom.getLastChild(obj);
    var firstchild = YAHOO.util.Dom.getFirstChild(obj);
    var firstchildregion = YAHOO.util.Dom.getRegion(firstchild);
    var lastchildregion = YAHOO.util.Dom.getRegion(lastchild);
    var heightexpand = lastchildregion['bottom'] - firstchildregion['top'];
    return heightexpand;
}


function minMaxNews(obj) {
    var attributes;
    var objHeight = getHeightofElement(obj);

    var clickBtn = YAHOO.util.Dom.getFirstChild(YAHOO.util.Dom.getFirstChild(obj));
    if (obj.offsetHeight < objHeight){
        attributes = { height: { to: objHeight } };
        obj.style.height="auto";
        clickBtn.innerHTML = "Réduire";
    }else {
        attributes = { height: { to: 8} };  
        clickBtn.innerHTML = "Affichage";
    }
    var anim = new YAHOO.util.Anim(obj, attributes, .3, YAHOO.util.Easing.easeOut);
    anim.animate();
}


