var callinprogress = 0;
//var myDomain = "www.escapetravel.com.au";
var myDomain = document.URL.substring(7,document.URL.indexOf("/",7)); 

function setPlidForState() {
    var postcode = document.getElementById("pcode").value;
    var statePrefix = postcode.charAt(0);
    var statePlid = "";
    switch (statePrefix) {
    case "0":
        //NSW, ACT, NT
        statePlid = "wZwbHe4";
        break;
    case "1":
        //NSW, ACT, NT
        statePlid = "wZwbHe4";
        break;
    case "2":
        //NSW, ACT, NT
        statePlid = "wZwbHe4";
        break;
    case "3":
        //VIC, TAS
        statePlid = "xsPsE2";
        break;
    case "4":
        // QLD
        statePlid = "jLkUqJ";
        break;
    case "5":
        //SA
        statePlid = "4CXB75X";
        break;
    case "6":
        //WA
        statePlid = "kk896R";
        break;
    case "7":
        //VIC, TAS
        statePlid = "xsPsE2";
        break;
    case "8":
        //NSW, ACT, NT
        statePlid = "wZwbHe4";
        break;
    case "9":
        //NSW, ACT, NT
        statePlid = "wZwbHe4";
        break;
    default:
        statePlid = "jLkUqJ";
        break;
    }
    document.getElementById('plid').value = statePlid;
}

function do_dsdial()
 {




    var zero_re = /^0/;
    var plus_re = /^\+/;
    var let_re = /\w/;
    var phone = document.getElementById("phone").value;

    var myMsg = document.getElementById("hover_info");
    var myPhone = document.getElementById("phone");
    var PCode = document.getElementById("pcode").value;

    if (callinprogress == 1) {
        myMsg.innerHTML = '<span>Call in progress...</span>';
        return;
    }
    phone = phone.replace(let_re, "");


    if (phone == '') {
        myPhone.value = 'Enter your number';
        return;
    }


    var theTelephone = document.getElementById("phone").value;
    if ((theTelephone.length >= 1) && (theTelephone.substring(0, 1) != 0)) {
        myMsg.innerHTML = '<span>Please enter your area code before your telephone number</span>';
        return;
    }
    //check postcode validity
    if (document.getElementById("pcode").value == '') {
        document.getElementById("hover_info").innerHTML = '<span class="hghlghterr">Please enter your postcode</span>';
        return;
    }
    errorMsg = 'Australian postcodes are 3 or 4 digit numbers between 200-300\nor 800-9999.';
    // Postcode must contain 3 or 4 digits, and no characters.
    numberOfDigits = 0;
    for (i = 0; i < document.getElementById("pcode").value.length; i++) {
        digit = parseInt(document.getElementById("pcode").value.charAt(i));
        if (isNaN(digit)) {
            document.getElementById("hover_info").innerHTML = errorMsg;
            return;
        }
        numberOfDigits++;
    }
    if (numberOfDigits != 3 && numberOfDigits != 4) {
        document.getElementById("hover_info").innerHTML = errorMsg;
        return;
    }
    setPlidForState();
    var plid = document.getElementById("plid").value;

    // Ok, we should do something with the country codes
    phone = phone.replace(zero_re, "");
    phone = phone.replace(/\s/g, "");
    var Ephone = phone;
    Ephone = Ephone.replace(plus_re, "%2B");


    var myProto = document.location.protocol;

    var myUrl = myProto + '//' + myDomain + '/ptt/pt-dialer.cgi'
    var Query = 'PLID=' + plid + '&wantxml=yes&cmd=call&aparty=' + Ephone + '&pcode=' + PCode;
    myMsg.style.display = 'block';
    myMsg.innerHTML = '<span>Connecting you now...</span>';
    resetCookie("phone", Ephone);

    ajax(myUrl, Query, parse_results);

}

function parse_results(xmlDoc)
 {
    var myMsg = document.getElementById("hover_info");

    try {
        var rc = xmlDoc.getElementsByTagName('rc').item(0).firstChild.data;
    }
    catch(err) {
        myMsg.style.display = 'block';
        myMsg.innerHTML = '<span>Thank you for calling Escape Travel. You have contacted us outside of office hours. Please try us again between 9am and 5pm.</span>'; 
        return;
    }
    if (rc != 1) {
        var errmsg = xmlDoc.getElementsByTagName('errmsg').item(0).firstChild.data;
        if (errmsg == 'no credit') {
            myMsg.style.display = 'block';
            myMsg.innerHTML = '<span>' + xmlDoc.getElementsByTagName('reason').item(0).firstChild.data + '</span>';
        }
        else if (errmsg == 'maximum free calls reached') {
            myMsg.style.display = 'block';
            myMsg.innerHTML = '<span>You have used all your free calls.<br>Please join to continue using Pep-Talk</span>';
        }
        else if (errmsg == 'aparty number invalid') {
            myMsg.style.display = 'block';
            myMsg.innerHTML = '<span>The number you have entered is invalid. Please enter your full number including area code.</span>';
        }
        else if (errmsg == 'out of hours') {
            myMsg.style.display = 'block';
            myMsg.innerHTML = '<span>Thank you for calling Escape Travel. You have contacted us outside of office hours. Please try us again between 9am and 5pm.</span>';
        }
        else {
            myMsg.innerHTML = '<span>' + errmsg + '</span>';
        }
        callinprogress = 0;
    }
    else {
        var status = '';
        try {
            status = xmlDoc.getElementsByTagName('status').item(0).firstChild.data;
        }
        catch(err) {
            /* Call has probably termintated, hence no status for the ptid */
            callinprogress = 0;
        }
        var ptid = xmlDoc.getElementsByTagName('ptid').item(0).firstChild.data;
        if (status == 'dialling') {
            myMsg.style.display = 'block';
            myMsg.innerHTML = '<span>Dialling...</span>';
            callinprogress = 1;
        }
        else if (status == 'call') {
            myMsg.style.display = 'block';

            myMsg.innerHTML = '<span>Connected</span>';
            callinprogress = 0;
        }
        else if (status == 'ready') {
            myMsg.style.display = 'block';
            myMsg.innerHTML = '<span>Ringing...</span>';
            callinprogress = 1;
        }
        else if (status == 'failed') {
            var Reason = xmlDoc.getElementsByTagName('reason').item(0).firstChild.data;
            callinprogress = 0;
            if (Reason == 'busy') {
                myMsg.style.display = 'block';

                myMsg.innerHTML = '<span>An ET Consultant has tried to contact you but was unable to reach you.</span>';
            }
            else if (Reason == 'busy-b') {
                myMsg.style.display = 'block';
                myMsg.innerHTML = '<span>Our consultants are unavailable just at the moment. Please try us again shortly.</span>';
            }
            else if (Reason == 'noanswer') {
                myMsg.style.display = 'block';
                myMsg.innerHTML = '<span>One of our Travel Consultants has just tried calling you.  When you are ready please try us again.</span>';
            }
            else if (Reason == 'noanswer-b') {
                myMsg.style.display = 'block';

                myMsg.innerHTML = '<span>All our Consultants are on other calls at the moment. Please try calling back in a moment.</span>';
            }
            else if (Reason == 'hangup') {
                myMsg.style.display = 'block';

                myMsg.innerHTML = '<span>It appears our call has ended. Please call back to speak with one of our travel consultants.</span>';
            }
        }

        if ((status != 'call') && (status != 'failed') && (status != '')) {
            var myProto = document.location.protocol;
            var myUrl = myProto + '//' + myDomain + '/ptt/pt-popoverlib.cgi';
            var Query = 'cmd=getstatus&ptid=' + ptid;
            ajax(myUrl, Query, parse_results);
        }
    }
}

function ajax(url, vars, callbackFunction)
 {
    var request = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("MSXML2.XMLHTTP.3.0");

    //	alert(url+'?'+vars);
    request.open("POST", url, true);
    if (request.overrideMimeType) {
        request.overrideMimeType('text/xml');
    }
    request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

    request.onreadystatechange = function() {

        if (request.readyState == 4 && request.status == 200) {
            var xmlDoc = request.responseXML;
            if (xmlDoc) {
                //				alert(request.responseText);
                callbackFunction(xmlDoc);
            }
        }
    }
    request.send(vars);
}

function URLencode(myString)
 {
    var result = '';
    var x = 0;
    myString = myString.toString();
    var re = /(^[a-zA-Z0-9_.]*)/;
    while (x < myString.length) {
        var match = re.exec(myString.substr(x));
        if (match != null && match.length > 1 && match[1] != '') {
            result += match[1];
            x += match[1].length;
        } else {
            if (myString[x] == ' ') {
                result += '+';
            }
            else {
                var chars = myString.charCodeAt(x);
                var val = chars.toString(16);
                result += '%' + (val.length < 2 ? '0': '') + val.toUpperCase();
            }
            x++;
        }
    }
    return result;
}
function do_rollover()
 {
    document.getElementById('hover_info').style.display = 'block';
    //	document.getElementById('butimg').src='http://pep-talk.com.au/images/gui/icon_btn_call_on.png';
    //       document.getElementById('butdiv').style.backgroundImage='url(http://pep-talk.com.au/images/gui/icon_btn_text_on.png)';
}
function do_rollback()
 {
    document.getElementById('hover_info').style.display = 'block';
    //	document.getElementById('butimg').src='http://pep-talk.com.au/images/gui/icon_btn_call.png';
    //       document.getElementById('butdiv').style.backgroundImage='url(http://pep-talk.com.au/images/gui/icon_btn_text.png)';
}

function resetCookie(cookieName, cookieValue) {
    if (readCookie(cookieName)) {
        eraseCookie(cookieName);
        setCookie(cookieName, cookieValue);
    }
}

function setCookie(name, value, days) {
    if (days) {
        var date = new Date();
        date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
        var expires = "; expires=" + date.toGMTString();
    }
    else var expires = "";
    document.cookie = name + "=" + value + expires + "; path=/";
}

function readCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for (var i = 0; i < ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0) == ' ') c = c.substring(1, c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
    }
    return null;
}

function eraseCookie(name) {
    setCookie(name, "", -1);
}

function ShowCTCHelper() {
    elem = document.getElementById("side-ctc-helper");
    elem.style.display = "block";
}
function HideCTCHelper(elementID) {
    elem = document.getElementById("side-ctc-helper");
    elem.style.display = "none";
}

function getKeyCode(x) {
    var charfield;
    if (x == 1) {
        charfield = document.getElementById("phone");
    } else if (x == 2) {
        charfield = document.getElementById("pcode");
    }
    charfield.onkeydown = function(e) {
        var e = window.event || e
        if (e.keyCode == 13) {
            do_dsdial();
        }
    }
}


;ET.CTC = 
{
    $form: null,
    
    fieldMappings: 
    {
        pcode: 'Post code'
    },
    
    init: function()
    {
        this.$form = $('#ctcForm');
        
        // Display bubble
        this.$form.bind('mouseenter', function() { ET.CTC.$form.find('#ctcBubble').removeClass('hide'); });
        this.$form.bind('mouseleave', function() { ET.CTC.$form.find('#ctcBubble').addClass('hide'); });
        
        // Replace png with gif if IE6
        if(window.attachEvent) 
        { 
             ET.CTC.$form.find('#ctcBubble').attr('src', '/images/general/ctc-helper.gif');
        }
        
        ET.FORMS.inputTextShowHide(this.$form.find('#phone'));
        
        this.setupValidation();
    },
    
    setupValidation: function()
    {
        this.$form.validate(
        {
            rules: 
            {
                phone:
                {
                    required: true,
                    digits: true    
                },
                pcode:
                {
                    required: true,
                    digits: true 
                }
            },
            
            invalidHandler: function(e, validator)
            {
                ET.FORMS.invalidForm(e, validator, ET.CTC.fieldMappings);
            },

            submitHandler: function(form) 
            {
                // Record event in Google Analytics
                ET.registerGAPageView(
                { 
                    basePath: '/on-page-event/',
                    path: 'click-to-call'
                });
                
                do_dsdial();
                return false;
            }
        });
    }
};
ET.CTC.init();