﻿var Root;

function TrackPage(Url) {
    var pageTracker;
    try {
        if (_gat != null) {
            pageTracker = _gat._getTracker("UA-9727484-2");
            pageTracker._trackPageview(Url);
        }
    }
    catch (e) {
        debugger;
    }
}

var _running;
function MoveNext(FromDiv, ToDiv) {
    TrackPage(ToDiv);
    if (_running) return;

    var from = document.getElementById(FromDiv)
    var to = document.getElementById(ToDiv)

    if (to == null) return;

    _running = true;

    if (from != null) from.style.left = '0px';

    to.style.display = 'block';
    to.style.left = '600px';

    MoveNext_recursive(FromDiv, ToDiv, 600);
}

function MoveNext_recursive(FromDivID, ToDivID, StartingLeft) {

    var left = RemovePX($get(ToDivID).style.left, 600);

    if (left > 3) {
        var newLeft = Math.round(left * 0.5);
        var ToDiv = $get(ToDivID);
        ToDiv.style.left = newLeft + 'px';
        setTimeout('MoveNext_recursive(\'' + FromDivID + '\',\'' + ToDivID + '\',\'' + newLeft + '\')', 25);
    }
    else {
        if (FromDivID != null) $get(FromDivID).style.display = 'none';
        $get(ToDivID).style.left = '0px';
        _running = false;
    }

}


function MovePrevious(FromDiv, ToDiv) {
    if (_running) return;

    var from = document.getElementById(FromDiv)
    var to = document.getElementById(ToDiv)

    if (from == null || to == null) return;

    _running = true;
    from.style.left = '0px';

    to.style.display = 'block';
    to.style.left = '0px';

    MovePrevious_recursive(FromDiv, ToDiv, 350);
}

function MovePrevious_recursive(FromDivID, ToDivID, StartingLeft) {

    var left = RemovePX($get(FromDivID).style.left, 0);
    if (left < 2) left = 2;
    left = parseInt(left);
    if (left < 345) {

        var newLeft = Math.round(left + ((350 - left) * 0.5));
        var FromDiv = $get(FromDivID);
        FromDiv.style.left = newLeft + 'px';
        setTimeout('MovePrevious_recursive(\'' + FromDivID + '\',\'' + ToDivID + '\',\'' + newLeft + '\')', 25);

    }
    else {
        $get(FromDivID).style.display = 'none';
        $get(ToDivID).style.left = '0px';
        _running = false;
    }

}

function RemovePX(ValuePX, DefaultValue) {
    if (ValuePX == '')
        return DefaultValue == null ? 0 : DefaultValue;
    else
        return ValuePX.split('px')[0];
}


function ValidatePages(ValidationGroup) {

    if (typeof (Page_ClientValidate) == 'function') Page_ClientValidate(ValidationGroup);
    return Page_IsValid;
}

function GetWS() {
    return Root + 'Backend/B2B.asmx/';
}
function GetNextStep(email) {
    CallWS(GetWS(), 'CredentialsRequired', ["Email", email], GetNextStepPart2);
}
function GetNextStepPart2(CredentialsRequired) {

    if (CredentialsRequired.d)
        MoveNext('divStep2', 'divStepLogin');
    else
        MoveNext('divStep2', 'divStep3');
}

function PostOrder(UserName, Password, PickupDateAndTime) {
    if (PickupDateAndTime == null) debugger;

    var order = '<?xml version="1.0"?><SoapOrders xmlns:Orders="http://www.WebCabby.com" UserName="' + UserName + '" Password="' + Password + '"><SoapOrder ';

    for (i = 0; i < document.forms[0].elements.length; i++) {
        var e = document.forms[0].elements[i];
        var ValueName = e.getAttribute('VN');
        if (ValueName != null) {
            order += ' ' + ValueName;
            if (e.type == 'text' || e.type == 'textarea')
                order += '="' + xmlencode(e.value) + '"';
            else if (e.type == 'select-one') {
                if (ValueName == 'City')
                    order += '="' + e.options[e.selectedIndex].text + '"';
                else
                    order += '="' + e.value + '"';
            }
            else if (e.type == 'checkbox')
                order += '="' + (e.checked ? 'T' : 'F') + '"';
            else
                debugger;
        }
    }

    order += ' PickupDateAndTime="' + PickupDateAndTime + '"';
    order += ' /></SoapOrders>';

    CallWS(GetWS(), 'PlaceOrder', ['XML', order], OrderPlaced, OrderFailed);        //OrderFailed
}

function ClearForm() {
    for (i = 0; i < document.forms[0].elements.length; i++) {
        var e = document.forms[0].elements[i];
        var ValueName = e.getAttribute('VN');
        if (ValueName != null) {
            if (e.type == 'text' || e.type == 'textarea')
                e.value = '';
            else if (e.type == 'checkbox')
                e.checked = false;
            else if (e.type == 'select-one') {
                //nothing
            }
            else
                debugger;
        }
    }

    if (typeof (ClearFormHook) == 'function') ClearFormHook();

}

function OrderPlaced(result) {

    var ID = parseInt(result.d);
    if (ID > 0) {
        var div = $get('divConfirmMsg');
        div.innerHTML = '<span onClick="ShowTrackOrderByID(\'' + ID + '\');MoveNext(\'divStepSuccess\',\'divStep1\');">Your order confirmation number is ' + ID + '<br/>Click here to track your order <br/></span>';
        CallWS(GetWS(), 'GetMyLastOrderSummaryHTML', [''], FillOrderSummary)
        MoveNext('divStep3', 'divStepSuccess');
        RefreshSecWord();
        ClearForm();
        if (typeof (OrderPlacedHook) == 'function') OrderPlacedHook(ID);
    }
    else
        OrderFailed('Failed');
}

var Retries = 0;
function OrderFailed(err) {
    debugger;
    Retries++;
    if (typeof (PostTaxiOrder) == 'function' && Retries < 5) {
        //try again in one second
        setTimeout('PostTaxiOrder()', '1000');
    }
    else {
        MoveNext('divStep3', 'divStepFailure');
        debugger;
    }


}

function ShowTrackOrderByID(OrderID) {
    window.open(Root + "common/TrackOrder.aspx?OrderID=" + OrderID, "Order");
}

function FillOrderSummary(result) {
    $get('divSummary').innerHTML = result.d;
}



function xmlencode(string) {
    return string.replace(/\&/g, '&' + 'amp;').replace(/</g, '&' + 'lt;')
            .replace(/>/g, '&' + 'gt;').replace(/\'/g, '&' + 'apos;').replace(/\"/g, '&' + 'quot;');
}
    
    