{"title":"Yoga Media","description":"\u003cscript\u003e\/\/ \u003c![CDATA[\n\/*\n * jQuery Shorten plugin 1.1.0\n *\n * Copyright (c) 2014 Viral Patel\n * http:\/\/viralpatel.net\n *\n * Licensed under the MIT license:\n *   http:\/\/www.opensource.org\/licenses\/mit-license.php\n *\/\n\n\/*\n** updated by Jeff Richardson\n** Updated to use strict,\n** IE 7 has a \"bug\" It is returning underfined when trying to reference string characters in this format\n** content[i]. IE 7 allows content.charAt(i) This works fine in all modern browsers.\n** I've also added brackets where they werent added just for readability (mostly for me).\n*\/\n\n(function($) {\n    $.fn.shorten = function(settings) {\n        \"use strict\";\n\n        var config = {\n            showChars: 0,\n            ellipsesText: \"\",\n            moreText: \"LEARN MORE + \",\n            lessText: \"Read Less\",\n            errMsg: null,\n            force: false\n        };\n\n        if (settings) {\n            $.extend(config, settings);\n        }\n\n        if ($(this).data('jquery.shorten') \u0026\u0026 !config.force) {\n            return false;\n        }\n        $(this).data('jquery.shorten', true);\n\n        $(document).off(\"click\", '.morelink');\n\n        $(document).on({\n            click: function() {\n\n                var $this = $(this);\n                if ($this.hasClass('less')) {\n                    $this.removeClass('less');\n                    $this.html(config.moreText);\n                    $this.parent().prev().prev().show(); \/\/ shortcontent\n                    $this.parent().prev().hide(); \/\/ allcontent\n\n                } else {\n                    $this.addClass('less');\n                    $this.html(config.lessText);\n                    $this.parent().prev().prev().hide(); \/\/ shortcontent\n                    $this.parent().prev().show(); \/\/ allcontent\n                }\n                return false;\n            }\n        }, '.morelink');\n\n        return this.each(function() {\n            var $this = $(this);\n\n            var content = $this.html();\n            var contentlen = $this.text().length;\n            if (contentlen \u003e config.showChars) {\n                var c = content.substr(0, config.showChars);\n                if (c.indexOf('\u003c') \u003e= 0) \/\/ If there's HTML don't want to cut it\n                {\n                    var inTag = false; \/\/ I'm in a tag?\n                    var bag = ''; \/\/ Put the characters to be shown here\n                    var countChars = 0; \/\/ Current bag size\n                    var openTags = []; \/\/ Stack for opened tags, so I can close them later\n                    var tagName = null;\n\n                    for (var i = 0, r = 0; r \u003c= config.showChars; i++) {\n                        if (content[i] == '\u003c' \u0026\u0026 !inTag) {\n                            inTag = true;\n\n                            \/\/ This could be \"tag\" or \"\/tag\"\n                            tagName = content.substring(i + 1, content.indexOf('\u003e', i));\n\n                            \/\/ If its a closing tag\n                            if (tagName[0] == '\/') {\n\n\n                                if (tagName != '\/' + openTags[0]) {\n                                    config.errMsg = 'ERROR en HTML: the top of the stack should be the tag that closes';\n                                } else {\n                                    openTags.shift(); \/\/ Pops the last tag from the open tag stack (the tag is closed in the retult HTML!)\n                                }\n\n                            } else {\n                                \/\/ There are some nasty tags that don't have a close tag like \u003cbr\/\u003e\n                                if (tagName.toLowerCase() != 'br') {\n                                    openTags.unshift(tagName); \/\/ Add to start the name of the tag that opens\n                                }\n                            }\n                        }\n                        if (inTag \u0026\u0026 content[i] == '\u003e') {\n                            inTag = false;\n                        }\n\n                        if (inTag) { bag += content.charAt(i); } \/\/ Add tag name chars to the result\n                        else {\n                            r++;\n                            if (countChars \u003c= config.showChars) {\n                                bag += content.charAt(i); \/\/ Fix to ie 7 not allowing you to reference string characters using the []\n                                countChars++;\n                            } else \/\/ Now I have the characters needed\n                            {\n                                if (openTags.length \u003e 0) \/\/ I have unclosed tags\n                                {\n                                    \/\/console.log('They were open tags');\n                                    \/\/console.log(openTags);\n                                    for (j = 0; j \u003c openTags.length; j++) {\n                                        \/\/console.log('Cierro tag ' + openTags[j]);\n                                        bag += '\u003c\/' + openTags[j] + '\u003e'; \/\/ Close all tags that were opened\n\n                                        \/\/ You could shift the tag from the stack to check if you end with an empty stack, that means you have closed all open tags\n                                    }\n                                    break;\n                                }\n                            }\n                        }\n                    }\n                    c = $('\u003cdiv\/\u003e').html(bag + '\u003cspan class=\"ellip\"\u003e' + config.ellipsesText + '\u003c\/span\u003e').html();\n                }else{\n                    c+=config.ellipsesText;\n                }\n\n                var html = '\u003cdiv class=\"shortcontent\"\u003e' + c +\n                    '\u003c\/div\u003e\u003cdiv class=\"allcontent\"\u003e' + content +\n                    '\u003c\/div\u003e\u003cspan\u003e\u003ca href=\"javascript:\/\/nop\/\" class=\"morelink\"\u003e' + config.moreText + '\u003c\/a\u003e\u003c\/span\u003e';\n\n                $this.html(html);\n                $this.find(\".allcontent\").hide(); \/\/ Hide all text\n                $('.shortcontent p:last', $this).css('margin-bottom', 0); \/\/Remove bottom margin on last paragraph as it's likely shortened\n            }\n        });\n\n    };\n\n})(jQuery);\n\n$(document).ready(function() {\n$(\".text-collapse\").shorten();\n});\n\/\/ ]]\u003e\u003c\/script\u003e\n\u003cdiv class=\"text-collapse\"\u003e\n\u003ch2\u003eYoga Videos \u0026amp; Workout Videos\u003c\/h2\u003e\n\u003cp\u003e Yoga is an ancient practice with wide-ranging modern applications, allowing practitioners to achieve both physical and spiritual wellbeing through its practice. One of the greatest principles of yoga is that nearly everyone can perform it, because yoga can be customized to meet your particular capabilities. \u003c\/p\u003e\n\u003cp\u003e\u003cbr\u003e At Gaiam, we understand that you want to find the best yoga routines to benefit your health. That's why we stock a large variety of workout videos-to ensure that you can find the right one for your needs.\u003cbr\u003e \u003cbr\u003e Yoga videos can range from easy starter routines that introduce basic poses and concepts to advanced and intense workouts designed to challenge. Finding the best option for yourself is as easy as assessing your abilities and goals and then locating a complementary title from our vast catalog. Whether you want to begin with one video or a set of videos that you can use in rotation, we have options to match.\u003cbr\u003e \u003cbr\u003e Special life circumstances can dictate a change in yoga routines. Whether you are expecting a baby, nursing a back injury, trying to lose weight, or simply seeking a healthier lifestyle, \u003cbr\u003e \u003cbr\u003e Gaiam has options for you. Prenatal yoga can ease gestational aches and pains and can even help you prepare for childbirth. Back care yoga is designed to introduce gentle stretches and poses to bolster your center of strength. If you're looking to lose weight, we also carry options that involve enhanced cardio moves to get your heart rate up and help you work toward a healthier you.\u003cbr\u003e \u003cbr\u003e Yoga is also a powerful workout for your mind and combines with meditative practices to help you gain peace and acceptance in your life. When you've brought your body and mind to a healthier place, you can reap the benefits throughout the rest of your life. \u003cbr\u003e \u003cbr\u003e With a robust selection of personal and wholesale yoga videos from Gaiam, you can get started or advance on your journey toward holistic wellbeing today.\u003c\/p\u003e\n\u003c\/div\u003e","products":[],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1728\/2157\/collections\/YogaMedia-300_01.jpg?v=1552601803","url":"https:\/\/www.gaiam.com\/collections\/yoga-media.oembed?page=3","provider":"Gaiam","version":"1.0","type":"link"}