//-----------------------------------------------//
//  (C) 2006 Rhonda LTD
//-----------------------------------------------//

function processPage(target_page, handl_page, val)
{
    var is_data_correct = false;

    switch(handl_page)
    {
        case 'hndlMainPage':
            is_data_correct = checkMainPage();
            break;
        case 'hndlSeniorityPage':
            is_data_correct = checkSeniorityPage();
            break;
        case 'hndlEducationPage':
            is_data_correct = checkEducationPage();
            break;
        case 'hndlQuestionnairePage':
            is_data_correct = checkQuestionnairePage();
            break;
        case 'hndlRecomendPage':
            is_data_correct = checkRecommendPage();
            break;
        case 'hndlSkillsToExp':
            is_data_correct = checkSkillsToExpPage();
            break;
        case 'hndlSkillsPage':
            is_data_correct = checkSkillsPage();
            break;
    }
    
    if (is_data_correct)
    {
        goTo(target_page, handl_page, val);
        return true;
    }
    else
    {
        return false;
    }
}

function rs(str)
{
    return str.replace(/\s/g, "");
    //return str;
}

// check not null for required field in the main page
function checkMainPage(val, val2) {
    var fld, fld2;

    fld = document.resume.pFirstNameRu;
    fld2 = document.resume.pFirstNameEn;
    if ("" == rs(fld.value) && "" == rs(fld2.value))
    {
        alert("Please, fill 'Èìÿ' or 'First Name'");
        fld.focus();
        return false;
    }

    fld = document.resume.pFirstNameRu;
    fld2 = document.resume.pLastNameRu;
    if (
        ("" == rs(fld.value) && "" != fld2.value) ||
        ("" == rs(fld2.value) && "" != rs(fld.value))
    )
    {
        alert("Please, fill 'Èìÿ' and 'Ôàìèëèÿ'");
        fld.focus();
        return false;
    }

    fld = document.resume.pFirstNameEn;
    fld2 = document.resume.pLastNameEn;
    if (
        ("" == rs(fld.value) && "" != rs(fld2.value)) ||
        ("" == rs(fld2.value) && "" != rs(fld.value))
    )
    {
        alert("Please, fill 'First Name' and 'Last Name'");
        fld.focus();
        return false;
    }

    fld = document.resume.pSex;
    if ("" == rs(fld.value))
    {
        alert("Please, fill 'Sex'");
        fld.focus();
        return false;
    }

    fld = document.resume.pFamilyStatus;
    if ("" == rs(fld.value))
    {
        alert("Please, fill 'Marital Status'");
        fld.focus();
        return false;
    }

    fld = document.resume.pChildrenNum;
    if ("" == rs(fld.value))
    {
        alert("Please, fill 'Children'");
        fld.focus();
        return false;
    }

    fld = document.resume.pEmail;
    if ("" == rs(fld.value))
    {
        alert("Please, fill 'Email'");
        fld.focus();
        return false;
    }

    fld = document.resume.pTown;
    fld2 = document.resume.pTownOther;
    if (
        ("" == rs(fld.value) && "" == rs(fld2.value)) ||
        ("" != rs(fld.value) && "" != rs(fld2.value))
    )
    {
        alert("Please, fill only 'City' or only 'Other city'");
        fld.focus();
        return false;
    }

    fld = document.resume.pAddress;
    if ("" == rs(fld.value))
    {
        alert("Please, fill 'Address'");
        fld.focus();
        return false;
    }

    fld = document.resume.pBirthday;
    if ("" == rs(fld.value))
    {
        alert("Please, fill 'Birthday'");
        fld.focus();
        return false;
    }

    fld = document.resume.pBirthday;
    if ("" == rs(fld.value))
    {
        alert("Please, fill 'Date of birth'");
        fld.focus();
        return false;
    }
    
    if (false == checkDate(fld, 'Date of birth'))
    {
        return false;
    }

    
    fld = document.resume.pMilitaryDelayMonth;
    fld2 = document.resume.pMilitaryDelayYear;
    if (
        ("" != rs(fld.value) && "" == rs(fld2.value)) ||
        ("" == rs(fld.value) && "" != rs(fld2.value))
    )
    {
        alert("Please, fill 'Month' and 'Year' for military service or clear 'Month' and 'Year'");
        fld.focus();
        return false;
    }

    fld = document.resume.pDelayBeforeWork;
    if ("" == rs(fld.value))
    {
        alert("Please, fill 'Ability to start working'");
        fld.focus();
        return false;
    }

    fld = document.resume.pSchedule;
    if ("" == rs(fld.value))
    {
        alert("Please, fill 'Schedule of work'");
        fld.focus();
        return false;
    }

    
    if ("0" == document.resume.v_edu_count.value)
    {
        alert("Please, fill at least one education place");
        document.getElementById("EducationTitle").focus();
        return false;
    }

    if ("0" == document.resume.v_ques_count.value)
    {
        alert("Please, answer the questionnaire");
        document.getElementById("QuestionnaireTitle").focus();
        return false;
    }
    
    if ("0" == document.resume.v_all_skills_count.value)
    {
        alert("Please, fill at least one skill");
        document.getElementById("SkillTitle").focus();
        return false;
    }

    fld = document.resume.pPersSkills;
    if ("" == rs(fld.value))
    {
        alert("Please, fill 'Personal skills'");
        fld.focus();
        return false;
    }

    fld = document.resume.pStrongSides;
    if ("" == rs(fld.value))
    {
        alert("Please, fill 'My strengths'");
        fld.focus();
        return false;
    }

    fld = document.resume.pWeakSides;
    if ("" == rs(rs(fld.value)))
    {
        alert("Please, fill 'My weaknesses'");
        fld.focus();
        return false;
    }

    return true;
}


function checkStartFinishDates(start_y, start_m, finish_y, finish_m)
{
    var start_date = new Date(start_y, start_m, "01");
    var stop_date = new Date(finish_y, finish_m, "01");

    if (start_date > stop_date)
    {
        return false;
    }

    return true;
}


function checkSeniorityPage() {
    var start, finish, org, post, duty, other, i, to_focus;

    for(var i = 1; i <= document.resume.pCountRows.value; i++)
    {
        start_y  = rs(document.getElementById("pSenStartYear" + i).value);
        finish_y = rs(document.getElementById("pSenFinishYear" + i).value);
        start_m  = rs(document.getElementById("pSenStartMonth" + i).value);
        finish_m = rs(document.getElementById("pSenFinishMonth" + i).value);
        org      = rs(document.getElementById("pOrgName" + i).value);
        post     = rs(document.getElementById("pSenPost" + i).value);
        duty     = rs(document.getElementById("pSenDuty" + i).value);
        other    = rs(document.getElementById("pSenOther" + i).value);

        to_focus = document.getElementById("pSenStartMonth" + i);
        

        if (("" != start_y || "" != start_m) && "" != org && "" != post)
        {

            if ("" == start_y && "" != start_m)
            {
                alert("Please, fill year of 'Start date'.");
                document.getElementById("pSenStartYear" + i).focus();
                return false;
            }

            if ("" != start_y && "" == start_m)
            {
                alert("Please, fill month of 'Start date'.");
                document.getElementById("pSenStartMonth" + i).focus();
                return false;
            }

            if ("" == finish_y && "" != finish_m)
            {
                alert("Please, fill year of 'Finish date'.");
                document.getElementById("pSenFinishYear" + i).focus();
                return false;
            }

            if ("" != finish_y && "" == finish_m)
            {
                alert("Please, fill month of 'Finish date'.");
                document.getElementById("pSenFinishMonth" + i).focus();
                return false;
            }
        }
        else if ("" == (start_y + start_m + finish_y + finish_y + org + post + duty + other))
        {
            // OK
        }
        else
        {
            alert("Please, fill 'Start date ', 'Org. name', 'Postition' or clear all fields.");
            to_focus.focus();
            return false;
        }
        

        if ("" != start_y && "" != start_y && "" != finish_y && "" != finish_m)
        {
            if (!checkStartFinishDates(start_y, start_m, finish_y, finish_m))
            {
                alert("'Finish date' must not be less than 'Start date'");
                to_focus.focus();
                return false;
            }
        
        }
    }

    return true;
}


function checkEducationPage()
{
    for(var i = 1; i <= document.resume.pCountRows.value; i++)
    {
        var school       = rs(document.getElementById("pSchool" + i).value);
        var school_other = rs(document.getElementById("pSchoolOther" + i).value);
        var edu_type     = rs(document.getElementById("pEduType" + i).value);
        var start_m      = rs(document.getElementById("pEduStartMonth" + i).value);
        var start_y      = rs(document.getElementById("pEduStartYear" + i).value);
        var finish_m     = rs(document.getElementById("pEduFinishMonth" + i).value);
        var finish_y     = rs(document.getElementById("pEduFinishYear" + i).value);
        var mark         = rs(document.getElementById("pAverageMark" + i).value);
        var chair        = rs(document.getElementById("pChair" + i).value);
        var projects     = rs(document.getElementById("pEduProjects" + i).value);
        var other        = rs(document.getElementById("pEduOther" + i).value);


        if ("-1" != school && "" != school_other)
        {
            alert("Please, fill only 'Name' or only 'Other educational institution'.");
            document.getElementById("pSchool" + i).focus();
            return false;
        }

        if ("-1" != school && "" != edu_type && "" == school_other)
        {
            alert("Please, fill clear 'Other educational institution type' or clear 'Name' and fill 'Other educational institution'.");
            document.getElementById("pEduType" + i).focus();
            return false;
        }

        if ("" != school_other && "" == edu_type)
        {
            alert("Please, fill 'Other educational institution type'.");
            document.getElementById("pEduType" + i).focus();
            return false;
        }
        
        if ("" == school_other && "" != edu_type)
        {
            alert("Please, fill 'Other educational institution'.");
            document.getElementById("pSchoolOther" + i).focus();
            return false;
        }

        if ("" != school_other || "-1" != school)
        {
            if ("" == start_m)
            {
                alert("Please, fill month of 'Start date'.");
                document.getElementById("pEduStartMonth" + i).focus();
                return false;
            }
            if ("" == start_y)
            {
                alert("Please, fill year of 'Start date'.");
                document.getElementById("pEduStartYear" + i).focus();
                return false;
            }

            if ("" == finish_y && "" != finish_m)
            {
                alert("Please, fill year of 'Finish date'.");
                document.getElementById("pEduFinishYear" + i).focus();
                return false;
            }

            if ("" != finish_y && "" == finish_m)
            {
                alert("Please, fill month of 'Finish date'.");
                document.getElementById("pEduFinishMonth" + i).focus();
                return false;
            }

            if ("" == mark)
            {
                alert("Please, fill 'Diploma average mark'.");
                document.getElementById("pAverageMark" + i).focus();
                return false;
            }
        }
        else
        {
            if ("" != (start_m + start_y + finish_m + finish_y + mark + chair + projects + other))
            {
                alert("Please, fill 'Name', 'Start date', 'Diploma average mark'  or clear all other fields.");
                document.getElementById("pSchool" + i).focus();
                return false;
            }
        }

        if ("" != start_y && "" != finish_y && "" != start_m && "" != finish_m)
        {
            if (!checkStartFinishDates(start_y, start_m, finish_y, finish_m))
            {
                alert("'Finish date' must not be less than 'Start date'");
                document.getElementById("pEduStartMonth" + i).focus();
                return false;
            }
        
        }
    }

    return true;
}

function checkQuestionnairePage() {
    for(var i = 1; i <= document.resume.pCountRows.value; i++) {
        var vAnswer = rs(document.getElementById("pAnswer" + i).value);

        if (vAnswer == "") {
            alert("Please, answer all questions!");
            document.getElementById("pAnswer" + i).focus();
            return false;
        }
    }

    return true;
}


function checkRecommendPage()
{
    for(var i = 1; i <= document.resume.pCountRows.value; i++)
    {
        var name       = rs(document.getElementById("pRcmndName" + i).value);
        var cont_inf   = rs(document.getElementById("pRcmndContInf" + i).value);
        var email      = rs(document.getElementById("pRcmndEmail" + i).value);
        var is_rhonda  = (document.getElementById("pRcmndIsRhonda" + i).checked) ? "checked" : "";
        var wrk_place  = rs(document.getElementById("pRcmndWorkPlace" + i).value);
        var post       = rs(document.getElementById("pRcmndPost" + i).value);


        if ("" != name && "" == cont_inf)
        {
            alert("Please, fill 'Contact information '.");
            document.getElementById("pRcmndContInf" + i).focus();
            return false;
        }

        if ("" == name && "" != cont_inf)
        {
            alert("Please, fill 'Name'.");
            document.getElementById("pRcmndName" + i).focus();
            return false;
        }

        if ("" == name && "" != (cont_inf + email + is_rhonda + wrk_place + post))
        {
            alert("Please, fill 'Name', 'Contact information' or clear all other fields.");
            document.getElementById("pRcmndName" + i).focus();
            return false;
        }

    }

    return true;
}

function checkSkillsToExpPage()
{
    var is_selected_one_box = false;

    var row_count = 0;

    for(var i = 1; i <= document.resume.pCountRows.value; i++)
    {
        var elem = document.getElementById("p_skill_to_exp" + i);
        
        var first_number = elem.value.split("_")[0];

        if (true == elem.checked)
        {
            is_selected_one_box = true;
        }

        if ("-1" == first_number)
        {
            row_count ++;
            if (is_selected_one_box)
            {
                is_selected_one_box = false;
            }
            else
            {
                alert("Please, pick at least one checkbox at each row. Check row #" + row_count);
                return false;
            }
        }
    }

    if (is_selected_one_box)
    {
        alert("Please, pick at least one checkbox at each row. Check row #" + row_count);
        return false;
    }
    return true;
}

function checkSkillsPage()
{
    for(var i = 1; i <= document.resume.pCountRows.value; i++)
    {
        var id      = document.getElementById("pIdSkill" + i).value;
        var years   = document.getElementById("pExpYears" + i).value;
        var months  = document.getElementById("pExpMonths" + i).value;
        var level   = document.getElementById("pSkill" + i).value;
        var sert    = (document.getElementById("pExistSert" + i).checked) ? "checked" : "";
        var descr   = document.getElementById("pSDescr" + i).value;

        if ("" == level && "" != (years + months + sert + descr))
        {
            alert("Please, fill 'Level' or clear all other fields.");
            document.getElementById("pSkill" + i).focus();
            return false;
        }

        if ("" != level && "" == id)
        {
            alert("Please, choose 'Skill'.");
            document.getElementById("pIdSkill" + i).focus();
            return false;
        }

        if ("" != level && "" == years && "" == months)
        {
            alert("Please, fill 'Experience'.");
            document.getElementById("pExpYears" + i).focus();
            return false;
        }

        for(var j = 1; j <= document.resume.pCountRows.value; j++)
        {
            var id2 = document.getElementById("pIdSkill" + j).value;
            if(i != j && id == id2 && id != "")
            {
                alert("Please, shoose one 'Skill' only once.");
                document.getElementById("pIdSkill" + j).focus();
                return false;
            }
        }
    }

    return true;
}

// check 
function checkRusAlpabet(n, name) {
    var r = /^([à-ÿÀ-ß\-]+)$/;
    if (n.value != "") {
        if(!r.test(n.value)) {
            alert("'" + name + "' may contain only russian letters");
            n.focus();
        }
    }
    return;
}

function checkEngAlpabet(n, name) {
    var r = /^([a-zA-Z\-\']+)$/;
    if (n.value != "") {
        if(!r.test(n.value)) {
            alert("'" + name + "' may contain only english letters");
            n.focus();
        }
    }
    return;
}

function checkNumbersOnly(field, e) {
    var key, keyChar;

    if (window.event)
        key = window.event.keyCode;
    else if (e)
        key = e.which;
    else
        return true;

    keyChar = String.fromCharCode(key);

    if ( key == null || key == 0 || key == 8 || key == 9 || key == 13 || key == 27 )
        return true;

    if ("0123456789".indexOf(keyChar) > -1)
        return true;
    else
        return false;
}

// check Date format 
function checkDate(n, field_name) {
    var r = /^(\d{2})\/(\d{2})\/(\d{4})$/;
    if (n.value != "") {
        if (!r.test(n.value)) {
            alert("Date of '" + field_name + "' must be in following format: MM/DD/YYYY");
            n.focus();
            return false;
        }
        if (n.value.match(r)) {
            var month = RegExp.$1;
            var day = RegExp.$2;
            var year = RegExp.$3;

            if ((month<1)||(month>12)||(day<1)||(day>31)) {
                alert("Please, correct the date '" + field_name + "' (" + month+ "/" + day + "/" +year + ")");
                n.focus();
                return false;
            }
            var max_year = new Date().getFullYear() - 18;
            if ((year < 1930) || (year > max_year)) {
                alert("The date '" + field_name + "' must be in interval from 01/01/1930 to 01/01/" + max_year + ".");
                n.focus();
                return false;
            }
        }
    }
    return true;
}

// check pEmail
function checkEmail(n) {
    //var r = /^([0-9a-zA-Z\.\-\_]+\@[0-9a-zA-Z\-\_]+\.[0-9a-zA-Z\.\-\_]+)$/;
    var r = /^([0-9a-zA-Z\.\-\_]+\@[0-9a-zA-Z\-\_]+\.[0-9a-zA-Z\.]+)$/;
    if (n.value != "") {
        if(!r.test(n.value)) {
            alert("E-mail is incorrect. Please, correct it.");
            n.focus();
        }
    }
    return;
}

function goTo(param, param2, param3) {
    document.resume.pagetype.value = param;
    document.resume.handler.value = param2;
    document.resume.skill_categ.value = param3;
    document.resume.submit();
}

function ckTextAreaLength(cur_length, max_length) {
  if (cur_length > max_length)
  {
      alert('Max size is ' + max_length + ' symbols!');
      return 0;
  }
  return 1;
}

function getCurrentYear() {
    var v_CurrentDate = new Date();
    var v_CurrentYear = v_CurrentDate.getFullYear();

  return v_CurrentYear;
}

function getYearsCount() {
    var v_CurrentYear = getCurrentYear();
    var v_StartDate = new Date("december 13, 1995");
    var v_StartYear = v_StartDate.getFullYear();
    var v_YearsCount = v_CurrentYear - v_StartYear;

  return v_YearsCount;
}