function validateIfNull(s){
    if(s == ''){
        return false;
        }
    return true;
}
function validateIfNumber(s){
    var resultMatch = s.match('[1-9][0-9]+');
    if(resultMatch == null || resultMatch == undefined){
        return false;
    }
    if(resultMatch[0].length != s.length){
        return false;
    }
    return true;
}

function validateIfCorrectEmail(s){
    var resultMatch = s.toLowerCase().match('^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}$');
    if(resultMatch == null || resultMatch == undefined){
        return false;
    }
    if(resultMatch[0].length != s.length){
        return false;
    }
    return true;
}

function validateIfCorrectEmails(inputs,positionErrorBox,formName){
    var errorMessage_ro = 'E-mailul nu este specificat corect( e.g. \'john@mail.com\')';
    var errorMessage_en = 'E-mail field is not corect (e.g. \'john@mail.com\')';
    var errorMessage;
    if(jsCulture == ''){
        errorMessage = errorMessage_ro;
    }else{
        errorMessage = eval('errorMessage_'+jsCulture);
    }    
    return templateValidator(inputs,positionErrorBox,formName,validateIfCorrectEmail,errorMessage);
}


function validateIfNulls(inputs,positionErrorBox,formName){
    var errorMessage_ro = 'Trebuie completat campul {*}';
    var errorMessage_en = 'You must specify the field';
    var errorMessage;
    if(jsCulture == ''){
        errorMessage = errorMessage_ro;
    }else{
        errorMessage = eval('errorMessage_'+jsCulture);
    }    
    return templateValidator(inputs,positionErrorBox,formName,validateIfNull,errorMessage);
}

function validateIfNumbers(inputs,positionErrorBox,formName){
    var errorMessage_ro = 'Campul {*} nu este specificat corect';
    var errorMessage_en = 'The field is not in the correct format';
    var errorMessage;
    if(jsCulture == ''){
        errorMessage = errorMessage_ro;
    }else{
        errorMessage = eval('errorMessage_'+jsCulture);
    } 
    return true;    
    //return templateValidator(inputs,positionErrorBox,formName,validateIfNumber,errorMessage);
}

function templateValidator(inputs,positionErrorBox,formName,validator,errorMessage){
    var isValid = true;
    
    for(var i=0;i<inputs.length;i++){
        
        var nodeToValidate = document.getElementById(inputs[i]); 
        if(nodeToValidate.hasInvalid == true && nodeToValidate.validator != validator){
            continue;
        }        
        if(!validator(nodeToValidate.value)){   
            isValid = false;
            var resultMatch = errorMessage.match('[\{][\*][\}]');
            nodeToValidate.hasInvalid = true;
            nodeToValidate.validator = validator;
            if(resultMatch){
                showInvalid(nodeToValidate,errorMessage.substring(0,resultMatch.index) +inputs[i]+ errorMessage.substring(resultMatch.index + resultMatch[0].length,errorMessage.length),positionErrorBox,formName);//'Campul '+inputs[i]+' trebuie completat');
            }else{
                showInvalid(nodeToValidate,errorMessage,positionErrorBox,formName);//'Campul '+inputs[i]+' trebuie completat');
            }
        }else{
            nodeToValidate.hasInvalid = false;
            nodeToValidate.validator = null;           
            showValid(nodeToValidate);
        }
    }
    return isValid;
}

function showInvalid(obj,errorMsg,positionErrorBox,formName){
    obj.style.background = '#C43838';
    var showTipEventHandler = function(e){errShowTip(errorMsg,positionErrorBox,formName,e);};
    var hideTipEventHandler = function(e){errHideTip(errorMsg,positionErrorBox,formName,e);}
    //elimin handlerul atasat anterior la o eroare mai "slaba"
    if(obj.removeEventListener){
        obj.removeEventListener('mouseover',obj.showTipEventHandler , false); 
        obj.removeEventListener('mouseout',obj.hideTipEventHandler, false); 					
    }else if(obj.detachEvent && obj.showTipEventHandler){
     obj.detachEvent('onmouseenter', obj.showTipEventHandler);
     obj.detachEvent('onmouseleave', obj.hideTipEventHandler);				 
    }		
    //pun handlerii cu mesajul de eroare mai "important"
    if(obj.addEventListener){
        obj.addEventListener('mouseover',showTipEventHandler, false); 
        obj.addEventListener('mouseout',hideTipEventHandler, false); 
    }else if(obj.attachEvent){
     obj.attachEvent('onmouseenter', showTipEventHandler);
     obj.attachEvent('onmouseleave', hideTipEventHandler);				 
    }
    //retin referintele la handleri pentru ai putea scoate de pe element
    obj.showTipEventHandler = showTipEventHandler;
    obj.hideTipEventHandler = hideTipEventHandler;
}

function showValid(obj){
    obj.style.background = '#000000';    	
    if(obj.removeEventListener){
        obj.removeEventListener('mouseover',obj.showTipEventHandler , false); 
        obj.removeEventListener('mouseout',obj.hideTipEventHandler, false); 					
    }else if(obj.detachEvent && obj.showTipEventHandler){
     obj.detachEvent('onmouseenter', obj.showTipEventHandler);
     obj.detachEvent('onmouseleave', obj.hideTipEventHandler);				 
    }				
}
    
/**
* shows an error tip (if the object is in an "error" state) when the mouse is over the object
*/
function errShowTip(useMsg,positionErrorBox,formName,e){					
    var theToolTip = createTooltip(positionErrorBox,formName);
    if ( theToolTip == null )
        return;
    if ( theToolTip.style.visibility == 'visible' )
        return;

    if( !objectExists( useMsg )){					
        if ( typeof( msg ) == "undefined" || msg == "" )
            return;
    }
    else{
        msg = useMsg;
    }
    theToolTip.innerHTML = msg;
    theToolTip.style.visibility = 'visible';
    var point = detectMouseCoord(e);
    theToolTip.style.top = point.y+'px';
    theToolTip.style.left = point.x+'px';
}

/**
* hides the error tip object
*/
function errHideTip(){
    var theToolTip = document.getElementById('toolTipDiv');
    if ( theToolTip == null )
        return;
    if ( theToolTip.style.visibility == 'hidden' )
        return;				
    theToolTip.innerHTML = "";
    theToolTip.style.visibility = 'hidden';				
}

function createTooltip(positionErrorBox,formName){
    //check if the document already has a tooltip
    //check if the document already has a tooltip;if not define one. the tool tip is a document wise global variable
    var theToolTip = document.getElementById('toolTipDiv');
    if ( theToolTip == null ){	
        theToolTip = document.createElement('div');										
        theToolTip.style.cssText = 'font-weight:normal;font-size: 11px;font-family: Tahoma,Helvetica,Verdana, Arial, sans-serif;overflow: auto;background: #FFFFE1;border: solid 1px black;padding: 2px;';
        theToolTip.id='toolTipDiv';
        theToolTip.style.position = 'absolute';
        theToolTip.style.top = positionErrorBox.y;
        theToolTip.style.left = positionErrorBox.x;
        document.forms[formName].appendChild(theToolTip);
    }
    return theToolTip;
}
function objectExists( obj ){
    if( obj != null && obj != undefined )
        return true;
    return false;
}
function detectMouseCoord(e) {
    var point={x : 0, y : 0};				
    if (e.pageX || e.pageY) 	{
        point.x = e.pageX+1;
        point.y = e.pageY+1;
    }
    else if (e.clientX || e.clientY) 	{
        point.x = e.clientX + document.body.scrollLeft
            + document.documentElement.scrollLeft+1;
        point.y = e.clientY + document.body.scrollTop
            + document.documentElement.scrollTop+1;
    }	
return point;
}

function ifNonValueThanOne(idInput,idForm){
    
    var form = document.getElementById(idForm);
    var input = document.getElementById(idInput);    
    var intResult = parseInt(input.value);        
        if(isNaN(intResult) || intResult <= 0 ){        
            input.value = 1; 
        }
}