/*global jQuery */
/*JSLint Strict */

if (DetectMobileLonger())
{
    window.location="http://m.moquettes.telequebec.tv";
}

jQuery.noConflict(false);

(function($)
{
    $(function()
    {
        //--------------------------------------------------------------------------
        //ON MET LE CODE JQUERY ICI

        //Lorsqu'on envoie un commentaire
        $('.envoyerCommentaires').click(function(event)
        {
            $strComments = $("#addComment").val();

            if ($strComments.length == 0)
                return false;

            $strClass = $("#classComments").val();
            $("#classComments").val($strClass == "pink" ? "blue" : "pink");

            $strCount = parseInt($(".countComments").val()) + 1;
            $(".countComments").val($strCount);

            $.ajax({
                type: this.method ? this.method : 'post',
                url: $(this).attr("href"),
                data: "comments=" + $strComments + "&class=" + $strClass + "&count=" + $strCount,
                dataType: 'xml',

                success: function(xml)
                {
                    if ($(xml).find('result'))
                    {
                        $applyXMLChanges(xml);
                    } else
                    {
                        // Handle validation (or any other) errors
                        var error = $(xml).find('error').text();
                    }
                },

                error: function(_error)
                {
                    //alert('Désolé, l\'appel ajax à échoué.');
                }
            });

            return false;
        });
        /*
        $('.stf2').livequery('click', function(event)
        {
        return false;
        });
        */
        //Lorsqu'on fait un appel ajax (normalement un fichier dans le dossier responses)
        $('.stf').click(function(event)
        {

            $.ajax({
                type: this.method ? this.method : 'post',
                url: $(this).attr("href"),
                dataType: 'xml',
                data: $(this).parents('form').serialize(),
                success: function(xml)
                {

                    $applyXMLChanges(xml);
                },

                error: function(_error)
                {
                    window.top.Shadowbox.close();
                }
            });

            return false;
        });

        //Lorsqu'on fait un appel ajax (normalement un fichier dans le dossier responses)
        $('.ajax').click(function(event)
        {

            $.ajax({
                type: this.method ? this.method : 'post',
                url: $(this).attr("href"),
                dataType: 'xml',
                data: {},

                success: function(xml)
                {
                    if ($(xml).find('result'))
                    {
                        $applyXMLChanges(xml);
                    } else
                    {
                        // Handle validation (or any other) errors
                        var error = $(xml).find('error').text();
                    }
                },

                error: function(_error)
                {
                    //alert('Désolé, l\'appel ajax à échoué.');
                }
            });

            return false;
        });

        /*  -------------------------------------------------------
        Apply changes from a xml definition (ajax response)
        @ xml : mandatory, contain the list of changes to apply. Format:
        <changes>
        <change type="attr">
        <target>#css.selector</target>
        <attr>src</attr>
        <value>../value.jpg</value>
        </change>
        <change type="append">
        <target>other > selector</target>
        <value><![CDATA[<div>A valid XHTML <em>piece</em> to append</div>]]></value>
        </change>
        <changes>
        Possible types : append, prepend, replaceInner, replace, remove, attr
        Extra selector : `:context` who use the context as target
        @ context : optionnal, the dom object in which the changes will be applied.
        ------------------------------------------------------- */

        $applyXMLChanges = function(xml, context)
        {
            $(xml).find('change').each(function()
            {
                var selector = $(this).find('target').text();
                var value = $(this).find('value').text();

                if (!selector)
                {
                    // prevent the accidental selection of document root.
                    return false;
                }
                var $target = selector === ':context' ? $(context) : $(selector, context);  // Allow the modification of the container

                switch ($(this).attr('type'))
                {
                    case 'append':
                        $target.append(value);
                        break;
                    case 'prepend':
                        $target.prepend(value);
                        break;
                    case 'replaceInner':

                        $target.empty().append(value);

                        break;
                    case 'replace':
                        $target.after(value).remove();
                        break;
                    case 'movedown':
                        //$target = $target.remove();
                        $(value).after($target);
                        break;
                    case 'moveup':
                        // $target = $target.remove();
                        $(value).before($target);
                        break;
                    case 'remove':
                        $target.animate({ opacity: 0 }, null, function()
                        {
                            $target.remove();
                        });
                        break;
                    case 'attr':
                        var attr = $(this).find('attr').text();
                        $target.attr(attr, value);
                        break;
                    case 'addClass':
                        var attr = $(this).find('attr').text();
                        $target.addClass(value);
                        break;
                    case 'removeClass':
                        var attr = $(this).find('attr').text();
                        $target.removeClass(value);
                        break;
                    case 'refresh':
                        window.location = window.location;
                        break;
                    case 'eval':
                        eval(value);
                        break;
                }
            });
        }

        //lorsqu'on choisi un nouvel épisode (sur la page d'accueil)
        $('.select_episode').change(function(event)
        {
            var strIDEmission = $(this).val();

            if (strIDEmission.length == 0)
                return;

            window.location = "?id_emission=" + strIDEmission;

        });

        $('.select_meilleurmoment').change(function(event)
        {
            var strIDEmission = $(this).val();

            var strURL = $(this).attr("url");

            if (strIDEmission.length == 0)
            {
                window.location = strURL
            }
            else
            {
                window.location = strURL + "&id_emission=" + strIDEmission;
            }
        });

        //FIN DU CODE JQUERY ICI
        //--------------------------------------------------------------------------

    });

})(jQuery);






