﻿function giveFocusTo(obj, tooltip, type) {
    //var parDoc = window.parent.document;
    var parDoc = document;
    if (type == "two_date" || type == "maes_two_date") {
        parDoc.getElementById(obj + '_mon').style.backgroundColor = "#fff";
        parDoc.getElementById(obj + '_year').style.backgroundColor = "#fff";
    } else if (type != "radio") {
        parDoc.getElementById(obj).style.backgroundColor = "#fff";
    }
    parDoc.getElementById(obj + "_row").className = "form3CRowHighligted";
    if (tooltip == 1) {
        parDoc.getElementById(obj + "_tick").style.visibility = "hidden";
        //if (type == "phone") { alert(isPhone(parDoc.getElementById(obj).value)); }
        if ((type == "text" && parDoc.getElementById(obj).value == "") || (type == "number" && !isNumber(parDoc.getElementById(obj).value)) || (type == "price") || (type == "cc_no" && !isCCno(parDoc.getElementById(obj).value)) || (type == "forced") || (type == "selected") || (type == "radio") || (type == "image") || (type == "maes_issue") || (type == "phone" && !isPhone(parDoc.getElementById(obj).value)) || (type == "email" && !isEmail(parDoc.getElementById(obj).value)) || (type == "two_date") || (type == "maes_two_date") || (type == "cvn" && !isCVN(parDoc.getElementById(obj).value))) {
            parDoc.getElementById(obj + "_tip").style.visibility = "visible";
        }
    }
}

function removeFocusFrom(obj, style, tooltip, type, mandatory, tick) {
    //var parDoc = window.parent.document;
    var parDoc = document;
    // style: 0 = Normal, 1 = Grey, 2 = Red
    if (type == "two_date" || type == "maes_two_date") {
        parDoc.getElementById(obj + '_mon').style.backgroundColor = "#FFF";
        parDoc.getElementById(obj + '_year').style.backgroundColor = "#FFF";
    } else if (type != "radio") {
        parDoc.getElementById(obj).style.backgroundColor = "#FFF";
    }
    if (style == 1) {
        parDoc.getElementById(obj + "_row").className = "form3CRowGrey";
    } else if (style == 2) {
        parDoc.getElementById(obj + "_row").className = "form3CRowError";
    } else {
        parDoc.getElementById(obj + "_row").className = "form3CRowNormal";
    }
    if (tooltip == 1) {
        parDoc.getElementById(obj + "_tip").style.visibility = "hidden";
    }
    if (tick == 1) {
        parDoc.getElementById(obj + "_tick").style.visibility = "visible";
    }
    checkField(obj, type, mandatory, style);
}

function giveFocusToDesc(obj, tooltip, type) {
    //var parDoc = window.parent.document;
    var parDoc = document;
    if (type == "two_date" || type == "maes_two_date") {
        parDoc.getElementById(obj + '_mon').style.backgroundColor = "#fff";
        parDoc.getElementById(obj + '_year').style.backgroundColor = "#fff";
    } else if (type != "radio") {
        parDoc.getElementById(obj).style.backgroundColor = "#fff";
    }
    parDoc.getElementById(obj + "_row").className = "form3CDRowHighligted";
    if (tooltip == 1) {
        parDoc.getElementById(obj + "_tick").style.visibility = "hidden";
        //if (type == "phone") { alert(isPhone(parDoc.getElementById(obj).value)); }
        if ((type == "text" && parDoc.getElementById(obj).value == "") || (type == "number" && !isNumber(parDoc.getElementById(obj).value)) || (type == "price") || (type == "cc_no" && !isCCno(parDoc.getElementById(obj).value)) || (type == "forced") || (type == "selected") || (type == "radio") || (type == "image") || (type == "maes_issue") || (type == "phone" && !isPhone(parDoc.getElementById(obj).value)) || (type == "email" && !isEmail(parDoc.getElementById(obj).value)) || (type == "two_date") || (type == "maes_two_date") || (type == "cvn" && !isCVN(parDoc.getElementById(obj).value))) {
            parDoc.getElementById(obj + "_tip").style.visibility = "visible";
        }
    }
}

function removeFocusFromDesc(obj, style, tooltip, type, mandatory, tick) {
    //var parDoc = window.parent.document;
    var parDoc = document;
    // style: 0 = Normal, 1 = Grey, 2 = Red
    if (type == "two_date" || type == "maes_two_date") {
        parDoc.getElementById(obj + '_mon').style.backgroundColor = "#FFF";
        parDoc.getElementById(obj + '_year').style.backgroundColor = "#FFF";
    } else if (type != "radio") {
        parDoc.getElementById(obj).style.backgroundColor = "#FFF";
    }
    if (style == 1) {
        parDoc.getElementById(obj + "_row").className = "form3CDRowGrey";
    } else if (style == 2) {
        parDoc.getElementById(obj + "_row").className = "form3CDRowError";
    } else {
        parDoc.getElementById(obj + "_row").className = "form3CDRowNormal";
    }
    if (tooltip == 1) {
        parDoc.getElementById(obj + "_tip").style.visibility = "hidden";
    }
    if (tick == 1) {
        parDoc.getElementById(obj + "_tick").style.visibility = "visible";
    }
    checkField(obj, type, mandatory, style);
}


function showPopup(obj) {
    document.getElementById("overlay").style.display = "";
    var Element = document.getElementById(obj);
    Element.style.opacity = '0';
    Element.style.filter = 'alpha(opacity = 0)';
    Element.style.display = 'block';
    centerElement(obj);
    fadeElement(obj);
    //added by sean 22/01/10 - the following line fixes a bug on the positioning of an ajax suggestion box inside a centered div.
    if (typeof onloadhandler == 'function') { onloadhandler(); }
    document.onclick = function() { hidePopup(obj) };
}

function hidePopup(obj) {
    var Element = document.getElementById(obj);
    fadeElement(obj);
    setTimeout("document.getElementById('" + obj + "').style.display = 'none'", parseInt(TimeToFade + 50));
    setTimeout("document.getElementById('overlay').style.display = 'none'", parseInt(TimeToFade + 50));
    document.onclick = null
}

function checkField(obj, type, mandatory, style) {
    //var parDoc = window.parent.document;
    var parDoc = document;
    /* Values of 'type'
    text
    selected
    image
    radio 
    forced
    phone
    email 
    cc_no 
    two_date
    cvn 
    maes_issue 
    maes_two_date */
    if (type == "image") {
        return false;
    }
    field = parDoc.getElementById(obj);
    var ok = false;
    if (type == "forced") {
        ok = false;
    } else if (type == "text") {
        var fieldContent = field.value;
        if (!mandatory && fieldContent == "") {
            ok = true;
        } else if (fieldContent.length > 0) {
            ok = true;
        }
    } else if (type == "selected") {
        var fieldLength = field.length;
        var count = 0;
        for (var i = 0; i < fieldLength; i++) {
            if (field[i].selected) {
                count++;
            }
        }
        if (field.selectedIndex > 0 && count <= 5) {
            ok = true;
        }
    } else if (type == "radio") {
        var radioChosen = false;
        radioChosen = checkRadio(obj);
        if (radioChosen) {
            ok = true;
        }
    } else if (type == "url") {
        var fieldContent = field.value;
        if (!mandatory && fieldContent == "") {
            ok = true;
        } else if (!mandatory && fieldContent == "http://") {
            ok = true;
        } else if (isUrl(fieldContent)) {
            ok = true;
        }
    } else if (type == "phone") {
        var fieldContent = field.value;
        if (isPhone(fieldContent)) {
            ok = true;
        }
    } else if (type == "email") {
        var fieldContent = field.value;
        if (isEmail(fieldContent)) {
            ok = true;
        }
    } else if (type == "cc_no") {
        var fieldContent = field.value;
        if (isCCno(fieldContent)) {
            ok = true;
        }
    } else if (type == "two_date") {
        var month = parDoc.getElementById(obj + '_mon');
        var monthSelected = month.selectedIndex;
        var year = parDoc.getElementById(obj + '_year');
        var yearSelected = year.selectedIndex;
        if (monthSelected > 0 && yearSelected > 0) {
            ok = true;
        }
    } else if (type == "maes_two_date") {
        // check if the card is maestro and the issue number is used (instead of this)
        var cardType = document.getElementById('pay_card_type')[document.getElementById('pay_card_type').selectedIndex].value;
        /*var issueNumber = document.getElementById('pay_issue').value;
        if (cardType == '024' && issueNumber == '') {*/
        if (cardType == '024') {
            var month = parDoc.getElementById(obj + '_mon');
            var monthSelected = month.selectedIndex;
            var year = parDoc.getElementById(obj + '_year');
            var yearSelected = year.selectedIndex;
            if (monthSelected > 0 && yearSelected > 0) {
                ok = true;
            }
        } else {
            ok = true;
        }
    } else if (type == "cvn") {
        var fieldContent = field.value;
        if (isCVN(fieldContent)) {
            ok = true;
        }
    } else if (type == "number") {
        var fieldContent = field.value;
        if (!mandatory && fieldContent == "") {
            ok = true;
        } else if (isNumber(fieldContent)) {
            ok = true;
        }
    } else if (type == "price") {
        var fieldContent = field.value;
        if (!mandatory && fieldContent == "") {
            ok = true;
        } else {
            fieldContent = fieldContent.replace("£","");
            feildContent = fieldContent.replace("p","");
            if (isNumber(fieldContent)) {
                ok = true;
            }
        }
    } else if (type == "maes_issue") {
        // If selected card is maestro check only if a start date isn't selected - both have to be??
        var cardType = document.getElementById('pay_card_type')[document.getElementById('pay_card_type').selectedIndex].value;
        if (cardType == '024') {
            var fieldContent = field.value;
            /*var startMonth = document.getElementById('pay_starts_mon').selectedIndex;
            var startYear = document.getElementById('pay_starts_year').selectedIndex;
            if (fieldContent == "" && startMonth > 0 && startYear > 0) {
            ok = true;
            } else if (fieldContent != "" && startMonth == 0 && startYear == 0) {
            ok = true;
            }*/
            if (fieldContent != "") {
                ok = true;
            }
        } else {
            ok = true;
        }
    }
    if (ok) {
        parDoc.getElementById(obj + "_tick").innerHTML = '<img src="http://www.caravanselecta.co.uk/images/newpaa/form_tick.png" width="18" height="18" alt="Completed" />';
        if (style == 2) {
            parDoc.getElementById(obj + "_row").className = "form3CRowNormal";
        }
    } else {
    parDoc.getElementById(obj + "_tick").innerHTML = '<img src="http://www.caravanselecta.co.uk/images/newpaa/form_cross.png" width="18" height="18" alt="Needs attention" />';
    }
}

function checkRadio(obj) {
    field = document.PAAform[obj];
    for (var i = 0; i < field.length; i++) {
        if (field[i].checked) return true;
    }
    return false;
}

function isUrl(s) {
    var regexp = /http:\/\/[A-Za-z0-9\.-]{3,}\.[A-Za-z]{3}/;
    return regexp.test(s);
}

function isPhone(s) {
    if (s.length > 0) {
        var regexp = /[^0-9 \+\(\)-\.]/;
        return (!regexp.test(s));
    } else {
        return false;
    }
}

function isEmail(s) {
    var regexp = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
    return regexp.test(s);
}

function isCCno(s) {
    s = s.replace(/[^0-9]/g, '');
    if (s.length >= 14 && s.length <= 20) {
        return true;
    } else {
        return false;
    }
}

function isCVN(s) {
    s = s.replace(/[^0-9]/g, '');
    if (s.length > 0 && s.length <= 4) {
        return true;
    } else {
        return false;
    }
}

function isNumber(s) {
    s = s.replace(/[^0-9]/g, '');
    if (s.length > 0) {
        return true;
    } else {
        return false;
    }
}




