﻿
if (typeof (jQuery) == 'undefined')
{
    window.jQuery = null;
}

var FD = (function(fdInitValues, $)
{
    var emptyFranchiseContactCart1ID = fdInitValues.EmptyFranchiseContactCart1ID || '';
    var emptyFranchiseContactCart2ID = fdInitValues.EmptyFranchiseContactCart2ID || '';
    var submitFranchiseContactCartID = fdInitValues.SubmitFranchiseContactCartID || '';
    var addFranchiseToContactCartMessageID = fdInitValues.AddFranchiseToContactCartMessageID || '';
    var franchiseAddedToContactCartMessageID = fdInitValues.FranchiseAddedToContactCartMessageID || '';
    var franchiseAlreadyAddedToContactCartMessageID = fdInitValues.FranchiseAlreadyAddedToContactCartMessageID || '';
    var franchiseContactCartID = fdInitValues.FranchiseContactCartID || '';
    var franchiseContactCartDisplayMode = fdInitValues.FranchiseContactCartDisplayMode || 10;
    var currentFranchiseID = fdInitValues.CurrentFranchiseID || 0;
    var franchiseContactCartMaxCount = fdInitValues.FranchiseContactCartMaxCount || 25;
    var franchiseContactCartCookieName = fdInitValues.FranchiseContactCartCookieName || '';
    var franchiseContactCartCookieDomain = fdInitValues.FranchiseContactCartCookieDomain || '.businessesforsale.ru';
    var franchiseContactCartInitializedCookieName = fdInitValues.FranchiseContactCartInitializedCookieName || '';
    var addFranchiseToContactCartLinkNamePrefix = fdInitValues.AddFranchiseToContactCartLinkNamePrefix || '';
    var cachedFranchiseContactCartItems = [];
    var contactCartFranchises = [];
    var fd = {};
    var franchiseContactCartItemIDPrefix = 'franchiseContactCartItem_';
    var franchiseAdditionToCartInProgress = false;
    
    fd.franchiseContactCartInitialized = function()
    {
        var franchiseContactCartInitialized = true;

        if (($ != null) &&
            ($.cookie(franchiseContactCartInitializedCookieName) == null) ||
            ($.cookie(franchiseContactCartInitializedCookieName) == 'false'))
        {
            franchiseContactCartInitialized = false;
        }

        return franchiseContactCartInitialized;
    }

    fd.initializeFranchiseContactCart = function(
        isProfilePage)
    {
        if ($ == null)
        {
            return;
        }

        if (!fd.franchiseContactCartInitialized())
        {
            clearFranchiseContactCart();

            var aRFIFranchises = getCookieFranchiseArray();

            if ((aRFIFranchises) &&
                (aRFIFranchises.length > 0))
            {
                for (var index = 0; index < aRFIFranchises.length; index++)
                {
                
                
                    fd.addFranchiseToContactCart.call(
                        $('a[name="' +
                            addFranchiseToContactCartLinkNamePrefix +
                            aRFIFranchises[index].FranchiseID +
                            '"]').eq(0),
                        aRFIFranchises[index].FranchiseID,
                        aRFIFranchises[index].LeadSourceID,
                        true,
                        isProfilePage);
                }
            }
        }
        else
        {
            $.cookie(
                franchiseContactCartInitializedCookieName,
                null,
                {
                    domain: franchiseContactCartCookieDomain,
                    path: '/'
                });
        }
    };

    fd.addFranchiseToContactCart = function(
        franchiseID,
        leadSourceID,
        buildHTML,
        isProfilePage)
    {
   
   
        if (!franchiseAdditionToCartInProgress)
        {
            franchiseAdditionToCartInProgress = true;

            if (typeof (buildHTML) == 'undefined')
            {
                buildHTML = false;
            }

            if (typeof (isProfilePage) == 'undefined')
            {
                isProfilePage = false;
            }

            if ((typeof (franchiseID) != 'undefined') &&
                (franchiseID > 0))
            {
                var franchiseAlreadyExistsInCart = false;

                if (contactCartFranchises.length > 0)
                {
                    for (var index = 0; index < contactCartFranchises.length; index++)
                    {
                        if (contactCartFranchises[index].FranchiseID == franchiseID)
                        {
                            franchiseAlreadyExistsInCart = true;

                            break;
                        }
                    }
                }

                if ((!franchiseAlreadyExistsInCart) &&
                    (contactCartFranchises.length < franchiseContactCartMaxCount))
                {
                    var franchiseContactCartItemContentValid = true;

                    if (buildHTML)
                    {
                        franchiseContactCartItemContentValid = false;

                        if ($ == null)
                        {
                            return;
                        }

                        var fdCartItems = document.getElementById(
                            franchiseContactCartID);

                        if (fdCartItems)
                        {
                            var franchiseCartItem = null;

                            var cachedFranchiseCartItem = cachedFranchiseContactCartItems[franchiseID];

                            if (cachedFranchiseCartItem)
                            {
                                franchiseCartItem = cachedFranchiseCartItem;
                            }
                            else if (typeof (RemoteScriptingCall) == 'function')
                            {
                                var addFranchiseToContactCartXml = (
                                    '<AddFranchiseToContactCart FranchiseID="' +
                                    franchiseID +
                                    '" LeadSourceID="' +
                                    leadSourceID +
                                    '" ContactCartDisplayMode="' +
                                    franchiseContactCartDisplayMode +
                                    '" IsProfilePage="' +
                                    isProfilePage +
                                    '" />');

                                var sReturn = RemoteScriptingCall(
                                    ('http://businessesforsale.ru/asp/fr/default.aspx?id=' + franchiseID + '&profile=' + isProfilePage) ,
                                    addFranchiseToContactCartXml,
                                    'HelloWorld',
                                    'http://www.businessesforsale.ru/franchise',
                                    'ResponseData');
                                    
                                    franchiseCartItem = sReturn;                              
                            }
                            
                            

                            if ((franchiseCartItem != null) &&
                                (franchiseCartItem != ''))
                            {
                                $(fdCartItems).prepend(
                                    franchiseCartItem);

                                fd.toggleEmptyFullFranchiseContactCart(
                                    false);

                                if (isProfilePage)
                                {
                                    toggleAddAddedFranchiseToContactCartMessaging(
                                        true);
                                }
                                else
                                {
                                    toggleActiveInactiveAddToContactCartLink(
                                        this,
                                        false);
                                }

                                franchiseContactCartItemContentValid = true;
                            }
                        }
                    }

                    /*
                    contactCartFranchises = [{
                    FranchiseID: franchiseID,
                    LeadSourceID: leadSourceID
                    }].concat(contactCartFranchises);
                    */

                    if (franchiseContactCartItemContentValid)
                    {
                        contactCartFranchises.push(
                            {
                                FranchiseID: franchiseID,
                                LeadSourceID: leadSourceID,
                                Selected: true
                            });

                        updateFranchiseContactCartCookie();
                    }
                }
                else if (contactCartFranchises.length >= franchiseContactCartMaxCount)
                {
                    alert(
                        'Ваш список франшиз не может вмещать более ' +
                        franchiseContactCartMaxCount +
                        ' франшиз. Чтобы добавить новые франшизы в список, Вам необходимо отправить запрос по текущему списку франшиз. Нажмите OK, чтобы продолжить.');
                }
            }

            franchiseAdditionToCartInProgress = false;
        }
    };

    fd.toggleFranchiseSelectionInContactCart = function(
        franchiseID)
    {
        if ((franchiseID > 0) &&
            (contactCartFranchises.length > 0))
        {
            for (var index = 0; index < contactCartFranchises.length; index++)
            {
                if (contactCartFranchises[index].FranchiseID == franchiseID)
                {
                    contactCartFranchises[index].Selected = this.checked;

                    break;
                }
            }
        }
    };

    fd.removeFranchiseFromContactCart = function (
        franchiseID,
        removeHTML,
        isProfilePage)
	{
		removeHTML = !!removeHTML;
		isProfilePage = !!isProfilePage;

		if (franchiseID > 0)
		{
			contactCartFranchises.remove(
                franchiseID);

			updateFranchiseContactCartCookie();

			if (removeHTML)
			{
				var fdCartItems = document.getElementById(
                    franchiseContactCartID);

				if (fdCartItems)
				{
					var franchiseCartItem = document.getElementById(
                        franchiseContactCartItemIDPrefix +
                        franchiseID);

					if (franchiseCartItem)
					{
						fdCartItems.removeChild(
                            franchiseCartItem);

						// Resize container for IE6 since it doesn't allow "max-height" in CSS
						if (($.browser.msie) &&
							(parseFloat($.browser.version) <= 6))
						{
							fd.resizeFranchiseContactCartListContainer();
						}

						if (contactCartFranchises.length == 0)
						{
							fd.toggleEmptyFullFranchiseContactCart(
                                true);
						}

						if (isProfilePage)
						{
							toggleAddAddedFranchiseToContactCartMessaging(
                                false,
                                franchiseID);
						}
						else
						{
							toggleActiveInactiveAddToContactCartLink(
                                $('a[name="' +
								    addFranchiseToContactCartLinkNamePrefix +
								    franchiseID +
								    '"]').eq(0),
                                true);
						}
					}
				}
			}
		}
	};


    fd.submitFranchiseContactCart = function(
        rfiFranchiseIDsRequestKey)
    {
        if (contactCartFranchises.length > 0)
        {
            var aRFIFranchiseIDs = getFranchiseArray();

            if ((aRFIFranchiseIDs) &&
                (aRFIFranchiseIDs.length))
            {
                var sRFIFranchiseIDs = aRFIFranchiseIDs.join(',');

                this.href += (
                    ((this.href.match('\\?') == null) ?
                        '?' :
                        '&') +
                    rfiFranchiseIDsRequestKey +
                    '=' +
                    sRFIFranchiseIDs);
            }
        }
    };

    fd.toggleEmptyFullFranchiseContactCart = function(
        isFranchiseContactCartEmpty)
    {
        var emptyFranchiseContactCart1 = document.getElementById(
            emptyFranchiseContactCart1ID);

        if (emptyFranchiseContactCart1)
        {
            if (isFranchiseContactCartEmpty)
            {
                emptyFranchiseContactCart1.style.display = '';
            }
            else
            {
                emptyFranchiseContactCart1.style.display = 'none';
            }
        }

        var emptyFranchiseContactCart2 = document.getElementById(
            emptyFranchiseContactCart2ID);

        if (emptyFranchiseContactCart2)
        {
            if (isFranchiseContactCartEmpty)
            {
                emptyFranchiseContactCart2.style.display = '';
            }
            else
            {
                emptyFranchiseContactCart2.style.display = 'none';
            }
        }

        var submitFranchiseContactCart = document.getElementById(
            submitFranchiseContactCartID);

        if (submitFranchiseContactCart)
        {
            if (isFranchiseContactCartEmpty)
            {
                submitFranchiseContactCart.style.display = 'none';
            }
            else
            {
                submitFranchiseContactCart.style.display = '';
            }
        }
    };

    fd.validateMinimumFranchiseSelection = function(
        validationGroup,
        validationErrorMessage,
        validationAnchorName)
    {
		var hideErrorMessageListFunctionCall = (
			'if ((typeof(Validation) != "undefined") && (typeof(Validation.Clear' +
			validationGroup +
			'ErrorMessageList) == "function")) Validation.Clear' +
			validationGroup +
			'ErrorMessageList();');
			
        eval(
			hideErrorMessageListFunctionCall);
			
        var franchiseSelectionValid = false;

        if (contactCartFranchises.length > 0)
        {
            for (var index = 0; index < contactCartFranchises.length; index++)
            {
                if (contactCartFranchises[index].Selected)
                {
                    franchiseSelectionValid = true;

                    break;
                }
            }
        }

        if ((!franchiseSelectionValid) &&
            (typeof (TrackErrorList) == 'function'))
        {
            var addErrorMessageFunctionCall = (
				'if ((typeof(Validation) != "undefined") && (typeof(Validation.Add' +
				validationGroup +
				'ErrorMessage) == "function")) Validation.Add' +
				validationGroup +
				'ErrorMessage(validationErrorMessage);');

            eval(addErrorMessageFunctionCall);

            var errorList = (
				'<ClientSideErrorList><ClientSideError PageUrl="http://www.bizbuysell.com/fd/Profile/RFIFormMulti.aspx" ErrorSourceName="" ErrorTypeID="0" ErrorMessage="' +
				validationErrorMessage +
				'" InputData=""></ClientSideError></ClientSideErrorList>');

            TrackErrorList(
				errorList);

            top.location = (
				'#' +
				validationAnchorName);
        }

        return franchiseSelectionValid;
    };

    function getFranchiseArray()
    {
        var aRFIFranchises = [];

        if (contactCartFranchises.length > 0)
        {
            for (var index = 0; index < contactCartFranchises.length; index++)
            {
                aRFIFranchises.push(
                    contactCartFranchises[index].FranchiseID +
                    ':' +
                    contactCartFranchises[index].LeadSourceID);
            }
        }

        return aRFIFranchises;
    }

    function toggleActiveInactiveAddToContactCartLink(
        addToContactCartLink,
        isAddToContactCartLinkActive)
    {
        if ((addToContactCartLink) &&
            (typeof (addToContactCartLink.parent) != 'undefined') &&
            (addToContactCartLink.parent() != 'undefined'))
        {
            if (isAddToContactCartLinkActive)
            {
                addToContactCartLink.parent().removeClass(
                    'fdAddToRequestListInactive').addClass(
                        'fdAddToRequestListActive');

                addToContactCartLink.css(
                    { 'display': 'block' });
            }
            else
            {
                addToContactCartLink.parent().removeClass(
                    'fdAddToRequestListActive').addClass(
                        'fdAddToRequestListInactive');

                addToContactCartLink.hide();
            }
        }
    }

    function toggleAddAddedFranchiseToContactCartMessaging(
        franchiseAdded,
        removedFranchiseID)
	{
		franchiseAdded = !!franchiseAdded;
		removedFranchiseID = (removedFranchiseID || 0);

		if (franchiseAdded)
		{
			$('.addFranchiseToRequestListContainer').removeClass('added').addClass('added');

			if (($.browser.msie) &&
				(parseFloat($.browser.version) <= 6))
			{
				if ($('.addFranchiseToRequestListContainer').hasClass('alreadyAdded'))
				{
					$('.fdAlreadyAddedToRequestList').show();
				}
				else
				{
					$('.fdAddedToRequestList').show();
				}

				$('.fdAddToRequestList').hide();
			}
		}
		else if ((removedFranchiseID > 0) &&
            (currentFranchiseID > 0) &&
            (currentFranchiseID == removedFranchiseID))
		{
			$('.addFranchiseToRequestListContainer').removeClass('alreadyAdded').removeClass('added');

			if (($.browser.msie) &&
				(parseFloat($.browser.version) <= 6))
			{
				$('.fdAddedToRequestList').hide();
				$('.fdAlreadyAddedToRequestList').hide();
				$('.fdAddToRequestList').show();
			}
		}
	}



    function updateFranchiseContactCartCookie()
    {
        if ($ == null)
        {
            return;
        }

        if ($.cookie(franchiseContactCartCookieName) != null)
        {
            $.cookie(
                franchiseContactCartCookieName,
                null,
                {
                    domain: franchiseContactCartCookieDomain,
                    path: '/'
                });
        }

        var aRFIFranchiseIDs = getFranchiseArray();

        if ((aRFIFranchiseIDs) &&
            (aRFIFranchiseIDs.length > 0))
        {
            $.cookie(
                franchiseContactCartCookieName,
                aRFIFranchiseIDs.join(','),
                {
                    expires: 1,
                    domain: franchiseContactCartCookieDomain,
                    path: '/'
                });
        }
    }

    function getCookieFranchiseArray()
    {
        var aRFIFranchises = [];

        if ($ == null)
        {
            return;
        }

        if ($.cookie(franchiseContactCartCookieName) != null)
        {
            var aTempRFIFranchises = $.cookie(franchiseContactCartCookieName).split(
                ',');

            if ((aTempRFIFranchises) &&
                (aTempRFIFranchises.length > 0))
            {
                for (var index = 0; index < aTempRFIFranchises.length; index++)
                {
                    var aRFIFranchiseData = aTempRFIFranchises[index].split(
                        ':');

                    if ((aRFIFranchiseData) &&
                        (aRFIFranchiseData.length > 0))
                    {
                        var oFranchise = {};

                        if (parseInt(aRFIFranchiseData[0]))
                        {
                            oFranchise.FranchiseID = parseInt(
                                aRFIFranchiseData[0]);
                        }

                        if ((aRFIFranchiseData.length > 1) &&
                            (parseInt(aRFIFranchiseData[1])))
                        {
                            oFranchise.LeadSourceID = parseInt(
                                aRFIFranchiseData[1]);
                        }

                        aRFIFranchises.push(
                            oFranchise);
                    }
                }
            }
        }

        return aRFIFranchises;
    }

    function clearFranchiseContactCart()
    {
        contactCartFranchises = [];

        var fdCartItems = $(
            '#' +
            franchiseContactCartID);

        if (fdCartItems)
        {
            fdCartItems.empty();
        }

        // Re-activate "Add to Request List" links
        var inactiveAddToFranchiseContactCartLinks = $('div.fdAddToRequestListInactive > a');

        if (inactiveAddToFranchiseContactCartLinks.length > 0)
        {
            toggleActiveInactiveAddToContactCartLink(
                inactiveAddToFranchiseContactCartLinks,
                true);
        }
    }

    return fd;
})(FDInitValues || {}, jQuery);

Array.prototype.remove = function(
    franchiseID)
{
    if (this.length > 0)
    {
        for (var index in this)
        {
            if ((this[index]) &&
                (this[index].FranchiseID == franchiseID))
            {
                this.splice(
                    index,
                    1);

                return true;
            }
        }
    }

    return false;
};
