var strEmailRegExp= "^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}$";
var strNonWhiteSpace= "\\S";
var strPositiveInteger= "^[1-9][0-9]*$";

function $(strId)
{
    if(strId == null || strId.length < 1)
        return null;
    else
	    return document.getElementById(strId);
}

function Check(strFormId, strDivLabelsId )
{
	var divLabels= $(strDivLabelsId);
	var aryLabels= divLabels.getElementsByTagName("label");
	var label;
	var element;
	var className;
	var strError= "";
	var strLineSeparator= "\n";
	
	for(var index= 0; index < aryLabels.length; index ++ )
	{
		label= aryLabels[index];
		element= $(label.htmlFor);
		className= label.className;
	
		    
		switch (className)
		{
			case "r":
			if( IsEmpty(element) )
				strError += label.innerHTML + strLineSeparator;
			break;
			case "s":
			if( ! IsSelectElementSelected(element) )
			    strError += label.innerHTML + strLineSeparator;
			break;
			case "rb":
			if( ! IsRadioChecked($(label.htmlFor).name,strFormId) )
				strError += label.innerHTML + strLineSeparator;
			break;
			case "e":
			if( ! (IsEmpty(element) || IsValidEmail(element.value)) )
			    strError += label.innerHTML + strLineSeparator;
			break;
			default:
			if( className.indexOf("ir_") > -1)
			{
			    if( ! CheckIntegerRange($(label.htmlFor),className.replace("ir_", "")) )
			        strError += label.innerHTML + strLineSeparator;
			}
			else
			{
			    if( ! eval(className) )
			        strError += label.innerHTML + strLineSeparator;
			}
		}
	}
	if(strError.length > 0)
	{
        /*WRAPPER= document.forms[0].id;
        /*showDialog('Error',strError + '<div style="text-align:center"><button class="btnGeneral" onclick="hideDialog()">Ok</button></div>','error');*/
        
		alert(strError);
		return false;
	}
	else
	{
		return true;
	}
	return false;
}

function IsEmpty(objTarget)
{
    var strValue= objTarget.value;
    
    if (strValue == null || ! strValue.length)
        return true;
    
    // Find any non white-space character 
    if( ! IsMatched(strValue, strNonWhiteSpace, false) )
        return true;
        
    return false;
}

function IsSelectElementSelected(ddlSelectElement)
{
    return (ddlSelectElement.selectedIndex > 0);
}

function IsValidEmail(strTarget)
{
    return IsMatched(strTarget, strEmailRegExp, false);
}

function IsRadioChecked(strName,strFormId)
{
	var frmForm= $(strFormId);
	var aryElements= frmForm.getElementsByTagName("input");
	for(var index=0; index < aryElements.length; index ++)
	{
		if(aryElements[index].type == "radio" && aryElements[index].name == strName 
		&& aryElements[index].checked)
			return true;
	}
	return false;
}

function CheckIntegerRange(objTarget, strRange)
{
    var aryRange= strRange.split("_");
    var intLower= parseInt(aryRange[0], 10);
    var intUpper= parseInt(aryRange[1], 10);
    if( IsMatched(objTarget.value, strPositiveInteger, false) )
    {
        var intTarget= parseInt(objTarget.value, 10);
        return (intTarget >= intLower && intTarget <= intUpper);
    }
    else
        return false;
}

function IsMatched(strTarget, strRegExp, bolCaseSensitive)
{
    var objRe= null;
    
    if( bolCaseSensitive )
        objRe=new RegExp(strRegExp);
    else
        objRe= new RegExp(strRegExp, "i");
        
    return objRe.test(strTarget);
}
