﻿/* This file will be used to put validation check on the form controls */

function form_validate()
{
    var elem, i=0, elemName, flag=true, elemFocus, elemId;
    var label, labels, i=0;
    var regEmail = /^([0-9a-zA-Z]+[-._+&])*[0-9a-zA-Z]+@([-0-9a-zA-Z]+[.])+[a-zA-Z]{2,6}$/;
    labels = document.getElementsByTagName("label");
    
    while(label=labels[i++])
    {
        elemId=GetElemId(label.htmlFor);
        if(elemId=='')
            continue;
        elem = document.getElementById(elemId);
        switch( (elem.id).substring( (elem.id).lastIndexOf('_') + 1 ).substring(0,3) )
        {
            case 'ddl':     if( (elem.value=="-1") || (elem.value=="") )
                            {
                                modifyLabelProperties(elem,label,true);
                                if(flag)
                                {
                                    elemFocus=elem;
                                    flag=false;
                                }
                            }
                            else
                                modifyLabelProperties(elem,label,false);
                            break;
            case 'txt':    if(elem.value.trim()=="")
                            {
                                modifyLabelProperties(elem,label,true);
                                if(flag)
                                {
                                    elemFocus=elem;
                                    flag=false;
                                }
                            }
                            else
                                modifyLabelProperties(elem,label,false);
                            break;
             case 'eml':    if( (elem.value.trim()=="") || (regEmail.test(elem.value) == false) )
                            {
                                modifyLabelProperties(elem,label,true);
                                if(flag)
                                {
                                    elemFocus=elem;
                                    flag=false;
                                }
                            }
                            else
                                modifyLabelProperties(elem,label,false);
                            break;
            case 'lbx':     if(elem.value=="")
                            {
                                modifyLabelProperties(elem,label,true);
                                if(flag)
                                {
                                    elemFocus=elem;
                                    flag=false;
                                }
                            }
                            else
                                modifyLabelProperties(elem,label,false);
                            break;
            case 'cb1':     if(elem.checked == false)
                            {
                                elem.title = 'Agree to the terms and Official Rules';
                                modifyLabelProperties(elem,label,true);
                                if(flag)
                                {
                                    elemFocus=elem;
                                    flag=false;
                                }
                            }
                            else
                                modifyLabelProperties(elem,label,false);
                            break;
            case 'cbg':     var count=0;
                            var elemChk;
                            i--;
                            while( label=labels[i++] )
                            {
                                elemChk = document.getElementById(GetElemId(label.htmlFor));
                                if ( (elemChk.id).substring( (elemChk.id).lastIndexOf('_') + 1 ).substring(0,3) == 'chk' )
                                {
                                    if (elemChk.checked == true)
                                    {
                                        count++;
                                    }
                                }
                                else
                                {
                                    break;
                                }
                            }
                            if ( count < 1)
                            {
                                boxError(elem,'Select atleast 1 checkbox')
                                if(flag)
                                {
                                    elemFocus=elem;
                                    flag=false;
                                }
                            }
                            else
                                removeError(elem);
                                
                            i--;
                            break;
            default: continue;
        }
    }
    if(flag)
        return true;
    else
    {
        elemFocus.focus();
        return false;
    }
}

function modifyLabelProperties(f_elem,label,error)
{
    if(error)
    {
        boxError(f_elem,'');
        label.className = 'errHilite';
    }
    else
    {
        removeError(f_elem);
        label.className = '';
    }
}

function boxError(f_elem,errormsg)
{
    var errorId = 'fv_error_' + (f_elem.id).substring((f_elem.id).lastIndexOf('_')+1);
    if(typeof document.getElementById('errors').children[errorId] != 'undefined') return;
    if ( typeof bxError == 'undefined' ) bxError = document.getElementById('errors');
    var errorElem = document.createHTMLElement( 'li', { id: errorId, 'innerHTML': (f_elem.title=='')? errormsg.toHTML():(f_elem.title).toHTML(), title: 'Click to target field' } );
    bxError.appendChild( errorElem );
    errorElem.onclick = function()
    {
        var elem = document.forms[0].elements[GetElemId(this.id.replace( 'fv_error_', "" ))];
        if ( typeof elem.fields != 'undefined' ) elem = elem.fields[0];
        if ( typeof elem.select != 'undefined' ) elem.select();
        if ( typeof elem.focus != 'undefined' ) elem.focus();
    }
    bxError.style.display = "block";
    document.getElementById('errorContainer').style.display = "block";
}

function removeError(f_elem)
{
    var errorElem, child, i=0, errorId = 'fv_error_' + (f_elem.id).substring((f_elem.id).lastIndexOf('_')+1);
    if ( typeof bxError == 'undefined' ) bxError = document.getElementById('errors');
    if ( errorElem = document.getElementById(errorId) )
    {
        bxError.removeChild( errorElem );
    }
}

document.createHTMLElement = function( elemName, attribs )
{
    if ( typeof document.createElement == 'undefined' ) return;
    var elem = document.createElement( elemName );
    if ( typeof attribs != 'undefined' )
    {
        for ( var i in attribs )
        {
	        switch ( true )
	        {
		        case ( i == 'text' )  : elem.appendChild( document.createTextNode( attribs[i] ) ); break;
		        case ( i == 'class' ) : elem.className = attribs[i]; break;
		        default : elem.setAttribute( i, '' ); elem[i] = attribs[i];
	        }
        }
    }
    return elem;    
}

function GetElemId(strid)
{
    var count = document.forms[0].length ;
    var i = 0;
    var eleName ='',e;
    for (i = 0 ;  i < count ;  i++ )
    {
        e = document.forms[0].elements[i].id;
        pos = e.indexOf(strid);
        if(pos >= 0)
        {
            eleName = e;
            break;
        }
     }
     return eleName;
 }

String.prototype.trim = function()
{
    return this.replace(/^\s+|\s+$/g,"");
}
    
String.prototype.ltrim = function()
{
    return this.replace(/^\s+/,"");
}
    
String.prototype.rtrim = function()
{
    return this.replace(/\s+$/,"");
}

String.prototype.toHTML = function()
{
    return this.replace( /\n/g, "<br />" ).replace( /\t/g, "&nbsp;&nbsp;&nbsp;&nbsp;" );
}



