﻿/*******************************************************************/
/*                ErrorValidator.js for WCI - 8/6/2009             */
/*******************************************************************/
//General Functions
   function IsIE()  {
        //IE detector
        return /*@cc_on!@*/false;
        }
   function classByBrowser()
   {    return IsIE() ? 'className' : 'class';
   }     

/******************************************************************
 ///                     EnterInfoWC Validation                  ///
 *******************************************************************/
 
 String.prototype.trim = function() {
            return this.replace(/^\s*/, "").replace(/\s*$/, "");
        }


    function InputValidation(id) {
        var input = document.getElementById(id);
        var classAsig = (input.value == '' || input.value == null) ? 'txtError' : '';
        var IsValid = false;
        input.setAttribute(classByBrowser(), classAsig);

        if (input.id.search('txtCode')!=-1) {
            var ctrlReq = document.getElementById('errorReqCode');
            var ctrlExp = document.getElementById('errorExpCode');
            
            if (input.value == '' || input.value == null) {
                ctrlExp.style.display = 'none';
                ctrlReq.style.display = 'block';
                IsValid = false;
            }
            else {
                switch (input.value.trim().length) {
                    case 6:
                        var exp = /\s*([0-9a-zA-Z]{6})\s*/
                        IsValid = ExpresionValidator(input, exp, ctrlExp);
                        break;
                    case 8:
                        var exp = /\s*([a-zA-Z]{2}\d{6})\s*/
                        IsValid = ExpresionValidator(input, exp, ctrlExp);
                        break;
                    case 12: case 13: case 14:
                        var exp = /\s*(\d{12,14})\s*/
                        IsValid = ExpresionValidator(input, exp, ctrlExp);
                        break;
                    default:
                        input.setAttribute(classByBrowser(), 'txtError');
                        ctrlExp.style.display = 'block';
                        IsValid = false;
                }
                ctrlReq.style.display = 'none';

            }
        }
        else if (input.id.search('txtLastName')!=-1) {
            var ctrlReq = document.getElementById('errorReqLastName');
            var ctrlExp = document.getElementById('errorExpLastName');

            if (input.value == '' || input.value == null) {
                ctrlExp.style.display = 'none';
                ctrlReq.style.display = 'block';
                IsValid = false
            }
            else {
                ctrlReq.style.display = 'none';
                IsValid = LastNameValidator(input, ctrlExp)
            }
        }
        else {
            input.setAttribute(classByBrowser(), '');
            IsValid = true;
        }
        
        return IsValid;
    }

    function ExpresionValidator(input, exp, span) {
        if (input.value.search(exp) == -1) {
            input.setAttribute(classByBrowser(), 'txtError');
            span.style.display = 'block';
            var IsValid = false;
        }
        else {
            input.setAttribute(classByBrowser(), '');
            span.style.display = 'none';
            var IsValid = true;
        }
        return IsValid;
    }

    function LastNameValidator(input, span) {
        if (input.value.trim().search(/[0-9]|\.|\,|\+|\-|\*|\&|\@|\#|\(|\)|\=|\?|\¿|\<|\>|\:|\;|\_|\&|\%|\°|\!|\¡/) != -1) {
            input.setAttribute(classByBrowser(), 'txtError');
            span.style.display = 'block';
            var IsValid = false;
        }
        else {
            input.setAttribute(classByBrowser(), '');
            span.style.display = 'none';
            var IsValid = true;
        }
        return IsValid;
    }

    function CheckInValidator() {
        var IsValCode = InputValidation('ctl00_WCIContentPlaceHolder_txtCode');
        var IsValLastName = InputValidation('ctl00_WCIContentPlaceHolder_txtLastName');

        return (IsValCode && IsValLastName);

    }
    
    function emailValidator(id)
    {
        var IsValid = false;
        var IsCheckBoxChecked =  false;
        var input = document.getElementById(id);
        var flag = new Boolean(input.value == '' || input.value == null);
        
        var checkboxs = document.getElementsByTagName('input');
        for(index = 0; index < checkboxs.length; index++)
        {   if(checkboxs[index].type=='checkbox' && checkboxs[index].id.search('SelectRowCheckBox')!=-1 && checkboxs[index].checked)
            {   IsCheckBoxChecked = true;
                break;
            }
        }
        if(IsCheckBoxChecked)
        {
            if(flag == true)
            {   //function inside PrintBoardingPass control.
               ShowMessage('NOT_PROVIDED');
               input.setAttribute(classByBrowser(), 'txtError');
            }
            else if(input.value.trim().search(/\s*^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*([,;]\s*\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)*$\s*/) == -1)
            {  ShowMessage('ERROR_FORMAT');
               input.setAttribute(classByBrowser(), 'txtError');
            }
            else
            {   input.setAttribute(classByBrowser(), '');
                IsValid = true;
            }
        }
        else 
        {  ShowMessage(''); }
        
        return IsValid;   
    }
/***************************************************************
              PassPortNumberAndExpirationWC Validation      
****************************************************************/

    function ValidateControls()
    {   //Validate Inputs
        var inputs = document.getElementsByTagName('input');
        var IsValid = true, valid = true;  
        for(index = 0; index < inputs.length; index++)
        {
            if(inputs[index].type=='text')
            {
                var input = inputs[index];
                valid = ValidateInput(input);
            }
            IsValid = IsValid && valid;
        }
        //Validate Selects
        var selects = document.getElementsByTagName('select');
        for(index = 0; index < selects.length; index++)
        {
            if(selects[index].id.search('ddl')!=-1)
            {
                var select = selects[index];
                valid = ValidateSelect(select);
                IsValid = IsValid && valid;  
            }
        }
        //Validate Calendar Controls
        valid = ValidateCalendar('CalendarBirthday');
        valid = ValidateCalendar('CalendarPassportExpDate') &&  valid;
        valid = ValidateCalendar('CalendarDocumentExpDate') &&  valid;
        IsValid = IsValid && valid;
        if(!IsValid){window.scrollTo(0,0);}
        //return controls evaluation.
        return IsValid;
        
        
    }
    
    function ValidateInputHandler(id)
    {   return ValidateInput(document.getElementById(id));
    }
    
    function ValidateSelectHandler(id)
    {   return ValidateSelect(document.getElementById(id));
    }
    
    function ValidateInput(input)
    {
       var span = document.getElementById(input.id.substring(input.id.search('txt') + 3));
       var flat = input.value==''||input.value==null;
       
       if(input.value==''||input.value==null)
       {
            input.setAttribute(classByBrowser(), 'TextBoxStyle txtError');
            span.setAttribute(classByBrowser(), 'asterisk show');
            ShowMessage();
            var IsValid=false;
       }
       else
       {
            var exp=(input.id.match('txtWhereIsStayingZipAndPostalCode')!=null)? /^\d{5}$|^\d{5}-\d{4}$/ :/^([\w]|[\s])*$/ ;
            var CssClass = (input.value.search(exp)==-1)?'TextBoxStyle txtError':'TextBoxStyle';
            var spanClass= (input.value.search(exp)==-1)?'asterisk show':'asterisk';
            input.setAttribute(classByBrowser(), CssClass);
            span.setAttribute(classByBrowser(), spanClass);
            if (input.value.search(exp)==-1){ ShowMessage(); var IsValid = false; }
            else { var IsValid = true; }
       }
       return IsValid;
    
    
    }
    
    function ValidateSelect(select)
    {
        var span = document.getElementById(select.id.substring(select.id.search('ddl') + 3));
        var spanClass = (select.options[select.selectedIndex].value=='')?'asterisk show':'asterisk';
        span.setAttribute(classByBrowser(), spanClass);
        return (select.options[select.selectedIndex].value!='')
        
    }
    
 
    
    //Calendar Validation
    function ValidateCalendar(id)
    { 
       var CurrentDate = new Date();
       var SelectedDate = new Date();
       
       var SelectsCalendar = document.getElementsByTagName('select');
       for(index = 0; index < SelectsCalendar.length ; index++)
       {
            if(SelectsCalendar[index].id.search(id)!=-1)
            {
                if(SelectsCalendar[index].id.search('Year')!=-1)
               {
                 var Year = SelectsCalendar[index].options[SelectsCalendar[index].selectedIndex].value;
               }
               else if(SelectsCalendar[index].id.search('Month')!=-1)
               {
                 var Month = SelectsCalendar[index].options[SelectsCalendar[index].selectedIndex].index;
               }
               else if(SelectsCalendar[index].id.search('Day')!=-1)
               {
                 var Day = SelectsCalendar[index].options[SelectsCalendar[index].selectedIndex].value;
                 break;
               }
            }
       }
       if( Year!=null || Month!=null ||  Day!=null )
       {    
            SelectedDate.setFullYear(Year,Month,Day);
            return CompareDate(CurrentDate,SelectedDate,id);
       } 
       else {return true;}               
    
    }
    
function CompareDate(currentDate, selectedDate, id)
{
    if(id.search('Birthday')!=-1)
    {    
        var dateIsValid = (selectedDate < currentDate);
    }
    else  if(id.search('Document')!=-1||id.search('Passport')!=-1)
    {    
        var dateIsValid = (selectedDate > currentDate); 
    }
    else 
    { var dateIsValid = (selectedDate < currentDate);}  
    
    var spanArr = document.getElementsByTagName('span');
    for(index = 0; index < spanArr.length; index++)
    {
        if(spanArr[index].id.search(id)!=-1)
        {
            var span=spanArr[index];
            var disp= (!dateIsValid)?'inline':'none';
            span.style.display=disp;
            
        }
    }
    if(!dateIsValid)
    { ShowMessage();}   
         
    return dateIsValid;           
 }
 