Saturday, 7 May 2016

News Slider in SharePoint Dynamic

Object : Create a dynamic News slider with picture and some text,easy to use and customizable according to requirement .SharePoint Picture library holds the picture and news description .
Client Side HTML 



<%--<script src="../../../../_layouts/15/SharePointNewsLetter/jquery.cycle.all.min.js"></script>--%>


<script src="../../../../_layouts/15/SharePointNewsLetter/jquery.js"></script>
<link href="../../../../_layouts/15/SharePointNewsLetter/TopNews.css" rel="stylesheet" />

<script src="../../../../_layouts/15/SharePointNewsLetter/TopNews.js"></script>

<script src="../../../../_layouts/15/SharePointNewsLetter/jquery.cycle.all.js"></script>
 <div>
    <div id="Container">
<table cellpadding="0" cellspacing="4" style="width:100%" class="">
    <tr>
        <td style="width:40%" valign="top" valign="middle">
            <div class="main_news" style="width:100% !important">
                <div class="logo">Top News</div>
                <img id="imgMain" width="100%"/>
                <div class="desc">
                    <div class="block">
                        <table style="width:100%" cellpadding="0" cellspacing="0">
                            <tr>
                                <td><h4></h4></td>
                                <td id="toggleDescIcon" style="width:15px;font-weight:bold;padding:0px 5px;cursor:pointer;" align="center" >&#9472;</td>
                            </tr>
                        </table>
                        <small></small>
                        <p></p>
                    </div>
                </div>
            </div>
            <table style="width:100%;background:#111" cellpadding="0" cellspacing="0">
                <tr style="display:none;">
                    <td colspan="2" align="center" id="subtCont" style="display:none;">
                        <div class="subtitlebar">
                        </div>
                    </td>
                </tr>
                <tr class="toolbar">
                    <td align="right" style="white-space:nowrap;">
                        <ul></ul>
                    </td>
                    <td style="white-space:nowrap;width:1%;" align="center" >
                        <img alt="" id="btnPrev" src="../../../../_layouts/15/img/Prev.png" /> 
                        <img alt="" id="btnPausePlay" src="../../../../_layouts/15/img/Pause.png" width="25" height="25" /> 
                        <img alt="" id="btnNext" src="../../../../_layouts/15/img/Next.png" /> 
                    </td>
                </tr>
            </table>
        </td>
        <td align="left" valign="top" style="100%">
            <table cellpadding="0" cellspacing="0" width="60%">
                <tr>
                    <td style="margin:0;padding:0;background-image:url('../../../../_layouts/15/img/po_bottom.png');background-repeat:repeat-x;height:15px;"></td>
                </tr>
            </table>
            <div class="news_thumb">
            </div>
            
            <table style="text-align:justify" cellpadding="0" cellspacing="0" width="60%" >
                <tr>
                    <td colspan="3" style="margin:0;padding:0;background-image:url('../../../../_layouts/15/img/po_top.png');background-repeat:repeat-x;height:7px;"></td>
                </tr>
                <tr >
                    <td style="width:14px;height:20px;background-image:url('../../../../_layouts/15/img/pagerbl.png');background-repeat:no-repeat;"></td>
                    <td>
                        <table class="pagerbar" cellpadding="0" cellspacing="0" width="100%">
                            <tr >
                                <td align="center" style="width:10%;background:#111;"><span>Pages</span></td>
                                <td style="background:#111;"><ul ></ul></td>
                                <td align="center" style="width:10%;background:#111;"><span>Next</span></td>
                            </tr>
                        </table>
                    </td>
                    <td style="width:14px;height:20px;background-image:url('../../../../_layouts/15/img/pagerbr.png');background-repeat:no-repeat;"></td>
                </tr>
            </table>

        </td>
    </tr>
</table>
</div>
<script type="text/javascript">
    new TopNews('#Container', 7, true, 6000);
</script>  
    </div>
  

CS File


using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Collections.Generic;
using System.Text;
using System.IO;
using Microsoft.SharePoint;
using System.Web.Script.Serialization;
using System.Linq;
namespace SharePointNewsLetter.SharePointNewsLetter
{

    public partial class SharePointNewsLetterUserControl : UserControl
    {
        public SharePointNewsLetter WebPart { get; set; }

        List<News> currentNews = new List<News>();
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {

                GetAllNews();
                if (string.IsNullOrEmpty(Request.Params["Callback"]))
                {
                    return;
                }
                else
                {
                    // *** Route to the Page level callback 'handler'
                    this.HandleCallbacks();

                    //reading request JSON parameters
                    string requestJsonParam = "";
                    byte[] b = new byte[Request.ContentLength];
                    Request.InputStream.Read(b, 0, Request.ContentLength);
                    requestJsonParam = System.Text.UTF8Encoding.UTF8.GetString(b);

                    // do something with input request parameter, but nothing to do for now
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        // Callback routing
        public void HandleCallbacks()
        {
            // *** We have an action try and match it to a handler
            switch (Request.Params["Callback"])
            {
                case "fetchAllNews":
                    this.FetchAllNews();
                    break;
            }

            Response.StatusCode = 500;
            Response.Write("Invalid Callback Method");
            Response.End();
        }
        public void GetAllNews()
        {
            try
            {
                currentNews.Clear();
                SPSecurity.RunWithElevatedPrivileges(delegate
                {
                    using (SPSite site = new SPSite(SPContext.Current.Web.Url))
                    {

                        using (SPWeb web = site.OpenWeb())
                        {
                            SPList list = web.Lists.TryGetList(this.WebPart.libraryName);
                            SPQuery query = new SPQuery();
                            SPListItemCollection items = list.GetItems(query);
                            foreach (SPListItem item in items)
                            {
                                News n = new News
                                {
                                    Id = item.ID,
                                    ListName = item.ParentList.Title,
                                    Title = Convert.ToString(item["Title"]),
                                    ImgSrc = SPContext.Current.Web.Url + "/" + Convert.ToString(item.File.Url),
                                    Summary = Convert.ToString(item["Description"]),
                                    ImgThumbSrc = SPContext.Current.Web.Url + "/" + Convert.ToString(item.File.Url),
                                    NewsDate = Convert.ToDateTime(item["Created"])

                                };
                                currentNews.Add(n);



                            }
                        }
                    }
                });
            }
            catch (Exception ex)
            { 
            
            }
        
        }
        public void FetchAllNews()
        {
            List<NewsItem> lsttst = new List<NewsItem>();
            foreach (var newsItem in currentNews)
            {
                string summary = newsItem.Summary;
                if (summary.Length > 80)
                {
                    summary = summary.Substring(0, 75) + GetDivElements(SPContext.Current.Web.Url + "/" +newsItem.ListName+"/Forms/DispForm.aspx?ID="+newsItem.Id);
                }
                lsttst.Add(new NewsItem(newsItem.Title, newsItem.ImgSrc, newsItem.ImgThumbSrc, summary, DateTime.Now.ToShortDateString()));
            }
            Response.ContentType = "application/json; charset=utf-8";         
           //Response.Write(Newtonsoft.Json.JavaScriptConvert.SerializeObject(lsttst));
            var jsonScript = new JavaScriptSerializer().Serialize(lsttst);
            Response.Write(jsonScript.ToString());
            Response.End();
        }
        public string GetDivElements(string linkUrl)
        {
            // Initialize StringWriter instance.
            StringWriter stringWriter = new StringWriter();

            // Put HtmlTextWriter in using block because it needs to call Dispose.
            using (HtmlTextWriter writer = new HtmlTextWriter(stringWriter))
            {
                // Loop over some strings.
                // foreach (var word in _words)
                {
                    var word = "Read more";
                    // Some strings for the attributes.
                    //  string classValue = "ClassName";
                 //   string urlValue = "http://www.dotnetperls.com/";
                    // string imageValue = "image.jpg";

                    // The important part:
                    //    writer.AddAttribute(HtmlTextWriterAttribute.Class, classValue);

                    writer.RenderBeginTag(HtmlTextWriterTag.Div); // Begin #1
                    writer.AddAttribute(HtmlTextWriterAttribute.Style, "color:blue");
                    writer.AddAttribute(HtmlTextWriterAttribute.Href, linkUrl);
                    writer.AddAttribute(HtmlTextWriterAttribute.Target, "_blank");
                    writer.RenderBeginTag(HtmlTextWriterTag.A); // Begin #2

                    writer.Write(word);
                    writer.RenderEndTag(); // End #3

                    writer.Write("...");

                    writer.RenderEndTag(); // End #2
                    //  writer.RenderEndTag(); // End #1
                }
            }
            // Return the result.
            return stringWriter.ToString();
        }
        public class News
        {
            private string listName;

            public string ListName
            {
                get { return listName; }
                set { listName = value; }
            }
            private int id;

            public int Id
            {
                get { return id; }
                set { id = value; }
            }
            private string title;

            public string Title
            {
                get { return title; }
                set { title = value; }
            }
            private string imgSrc;

            public string ImgSrc
            {
                get { return imgSrc; }
                set { imgSrc = value; }
            }
            private string imgThumbSrc;

            public string ImgThumbSrc
            {
                get { return imgThumbSrc; }
                set { imgThumbSrc = value; }
            }
            private string summary;

            public string Summary
            {
                get { return summary; }
                set { summary = value; }
            }
            private DateTime newsDate;

            public DateTime NewsDate
            {
                get { return newsDate; }
                set { newsDate = value; }
            }
        
        }



    }
}
public class NewsItem
{
    public string Title = "";
    public string imgSrc = "";
    public string imgThumbSrc = "";
    public string Summary = "";
    public string newsDate = "";

    public NewsItem(string _Title, string _imgSrc, string _imgThumbSrc, string _Summary, string _newsDate)
    {
        this.Title = _Title;
        this.imgSrc = _imgSrc;
        this.imgThumbSrc = _imgThumbSrc;
        this.Summary = _Summary;
        this.newsDate = _newsDate;
    }
}


TopNews.js


function TopNews(objRoot,newsCountPerPage,viewSubtitle,Interval) {
    //Init
    //root element in DOM.module container.used in jquery selector to gain unique objects
    this._root=objRoot;
    this._currPageIndex = 0;
    this._currNewsIndex = 0;
    this._slideShowInterval = Interval;
    this.nextNewsIntervalId = 0;
    this._newsCountPerPage = newsCountPerPage;
    this._viewSubtitle = viewSubtitle;
    this.news = new Array();
    this.baseHeight = 0;
    
    this.fetchAllNews();
    
}

TopNews.prototype = {
    //call asp.net page method asynchronous (send and recives data in JSON format)
    PageMethod: function(fn, paramArray, successFn, errorFn) {
        var pagePath = window.location.pathname;
        var that = this;
        //Call the page method  
        $.ajax({
            type: "POST",
            url: pagePath + "?Callback=" + fn,
            contentType: "application/json; charset=utf-8",
            data: paramArray,
            dataType: "json",
            success: function(res) { successFn(res, that) },
            error: errorFn
        });
    },

    //override jquery selector to ensure selected DOM objects be unique in multiple instanse of module
    getElement: function(domElement) {
        return $(this._root).find(domElement);
    },

    ToggleDesc: function(itm) {
        var ht = this.getElement('.main_news').find('.block').height() - $(itm).parent().height();
        if (escape($(itm).text()) == '%u2500')
            this.getElement('.main_news .block').animate({ marginBottom: -ht }, 250, function() { $(itm).text('+'); });
        else
            this.getElement('.main_news .block').animate({ marginBottom: "0" }, 250, function() { $(itm).text(unescape('%u2500')); });
    },

    initUI: function() {
        var that = this;
        this.baseHeight = Math.ceil(this.getElement('.news_thumb div:first').height() / this.getElement('.news_thumb div:first ul li').length);
        var minHeight = this.getElement('.news_thumb div:first').height() > (this.baseHeight * 7) ? this.getElement('.news_thumb div:first').height() : (this.baseHeight * 7);
        this.getElement('.news_thumb').css({ 'height': minHeight + 'px', 'min-height': minHeight + 'px' });
        this.getElement('.news_thumb div').css({ 'height': minHeight + 'px', 'min-height': minHeight + 'px' });

      //  this.getElement('.main_news').height(this.getElement('.main_news').parent().height() - this.getElement('.main_news').siblings().height());
      //  this.getElement('.main_news').width(this.getElement('.main_news').height() * 1.5);

        this.getElement('.main_news .logo').animate({ opacity: 0.75 }, 1);

        for (var i = 0; i < this.getElement('.news_thumb div.active ul li').length; i++)
            this.getElement('.toolbar ul').append('<li>&#8226</li>');

        if (!this._viewSubtitle) {
            this.getElement('.subtitlebar').parents('tr:first').hide();
        }

        //add handlers
        this.getElement('#toggleDescIcon').click(function() { that.ToggleDesc(this); });
        this.getElement('.toolbar #btnPrev').click(function() { that.prevNews(); });
        this.getElement('.toolbar #btnNext').click(function() { that.nextNews(that); });
        this.getElement('.toolbar #btnPausePlay').click(function() { that.PausePlay(this); });
        this.getElement('.news_thumb ul li').click(function() {
            if ($(this).is('.active')) {
                return false;
            }
            else {
                that.getElement('.news_thumb ul li').removeClass('active');
                $(this).addClass('active');
                that._currNewsIndex = (that._currPageIndex * that._newsCountPerPage) + $(this).prevAll('li').size();
                that.setTopOne();
            }
            return false;
        }).hover(function() {
            $(this).addClass('hover');
        }, function() {
            $(this).removeClass('hover');
        });

        this.getElement('.pagerbar ul li').click(function() {
            if ($(this).is('.active')) {
                return false;
            }
            else {
                that.getElement('.pagerbar ul li').removeClass('active');
                $(this).addClass('active');

                var selectedPageIndex = $(this).prevAll('li').size();
                var ht = that.getElement('.news_thumb div.active').height();

                var step = Math.abs(selectedPageIndex - that._currPageIndex);

                if (selectedPageIndex > that._currPageIndex) {
                    var upStep = Math.abs(parseInt(that.getElement('.news_thumb div:first').css('margin-top'))) + (ht * step);
                    that.getElement('.news_thumb div:first').animate({ marginTop: -upStep }, 1000, function() {
                        that.getElement('.news_thumb div').removeClass('active');
                        that.getElement('.news_thumb div:eq(' + selectedPageIndex + ')').addClass('active');

                        that._currPageIndex = selectedPageIndex;

                        that.getElement('.toolbar ul').empty();
                        for (var i = 0; i < that.getElement('.news_thumb div.active ul li').length; i++) {
                            that.getElement('.toolbar ul').append('<li>&#8226</li>');
                        }

                        that.setSubtitle();
                        if (that._viewSubtitle)
                            that.getElement('.subtitlebar').cycle({ fx: 'scrollUp', random: 1, cleartype: 0, timeout: 6000 });

                        that.getElement('.news_thumb div.active ul li:first').click();
                    });
                }
                else {
                    var downStep = parseInt(that.getElement('.news_thumb div:first').css('margin-top')) + (ht * step);
                    that.getElement('.news_thumb div:first').animate({ marginTop: downStep }, 1000, function() {
                        that.getElement('.news_thumb div').removeClass('active');
                        that.getElement('.news_thumb div:eq(' + selectedPageIndex + ')').addClass('active');

                        that._currPageIndex = selectedPageIndex;

                        that.getElement('.toolbar ul').empty();
                        for (var i = 0; i < that.getElement('.news_thumb div.active ul li').length; i++) {
                            that.getElement('.toolbar ul').append('<li>&#8226</li>');
                        }

                        that.setSubtitle();
                        if (that._viewSubtitle)
                            that.getElement('.subtitlebar').cycle({ fx: 'scrollUp', random: 1, cleartype: 0, timeout: 6000 });

                        that.getElement('.news_thumb div.active ul li:first').click();
                    });
                }
            }
        }).hover(function() {
            $(this).addClass('hover');
        }, function() {
            $(this).removeClass('hover');
        });
    },

    setTopOne: function() {
        //set variables
        var that = this;
        var imgSrc = this.news[this._currNewsIndex].imgSrc;
        var newsTitle = this.news[this._currNewsIndex].Title;
        var newsDesc = this.news[this._currNewsIndex].Summary;
        var newsDate = this.news[this._currNewsIndex].newsDate;
        var newsDescHeight = this.getElement('.main_news').find('.block').height();

        this.getElement('.main_news .desc').show();

        this.getElement('.main_news .block').animate({ opacity: 0, marginBottom: -newsDescHeight }, 250, function() {
            that.getElement('.main_news .block h4').text(newsTitle);
            that.getElement('.main_news .block small').text(newsDate);
            //that.getElement('.main_news .block p').text(newsDesc);
            that.getElement('.main_news .block p').html(newsDesc);
            that.getElement('.main_news .block').animate({ opacity: 0.75, marginBottom: "0" }, 250, function() { that.getElement('.main_news .block #toggleDescIcon').text(unescape('%u2500')); });
            that.getElement('.main_news #imgMain').attr('src', imgSrc);
            that.getElement('.main_news #imgMain').hide(1, function() {
                if ($(this).height() > $(this).width())
                    $(this).css({ 'height': that.getElement('.main_news').height() });
                else
                    $(this).css({ 'width': that.getElement('.main_news').width() });
                $(this).show(1, function() { $(this).css('display', 'inline'); });
            });
        });

        this.getElement('.toolbar ul li').removeClass('active');
        this.getElement('.toolbar td ul li:eq(' + (this._currNewsIndex % this._newsCountPerPage) + ')').addClass('active');
    },

    BindTextNews: function() {
        for (var index = 0; index < this.news.length; index++) {
            if (index % this._newsCountPerPage == 0) {
                $('<div><ul></ul></div>').appendTo(this.getElement('.news_thumb'));
                this.getElement('.pagerbar td:eq(1) ul').append($('<li></li>').text(Math.floor(index / this._newsCountPerPage) + 1));
            }
            $('<li></li>').append($('<h4></h4>').text(this.news[index].Title)).appendTo(this.getElement('.news_thumb div:last ul'));
            this.getElement('.news_thumb div:last ul').append('<hr />');

        }

        this.getElement('.news_thumb div:first').addClass('active');
        this.getElement('.news_thumb ul li:first').addClass('active');

        this.getElement('.pagerbar td:eq(1) ul li:first').addClass('active');
    },

    setSubtitle: function() {
        if (this._viewSubtitle) {
            this.getElement('.subtitlebar').parents('tr:first').show();
            this.getElement('.subtitlebar').empty();

            var startIndex = this._currPageIndex * this._newsCountPerPage;
            var endIndex = startIndex + this.getElement('.news_thumb div.active ul li').length;
            for (var index = 0; index < this.news.length; index++) {
                if (index < startIndex || index >= endIndex) {
                    this.getElement('.subtitlebar').append($('<span></span>').text(this.news[index].Title));
                }
            }
            if (this.getElement('.subtitlebar span').length == 1)
                this.getElement('.subtitlebar').append('<span></span>');
        }

    },

    nextNews: function(that) {
        that.getElement('.news_thumb div.active ul li:eq(' + ((that._currNewsIndex + 1) % that._newsCountPerPage) % that.getElement('.news_thumb div.active ul li').length + ')').click();
    },

    prevNews: function() {
        if (this._currNewsIndex % this._newsCountPerPage == 0)
            this.getElement('.news_thumb div.active ul li:eq(' + (this.getElement('.news_thumb div.active ul li').length - 1) + ')').click();
        else
            this.getElement('.news_thumb div.active ul li:eq(' + ((this._currNewsIndex - 1) % this._newsCountPerPage) % this.getElement('.news_thumb div.active ul li').length + ')').click();
    },

    PausePlay: function(itm) {
        var str = new String($(itm).attr('src'));
        var pattern, s;
        if (str.toLowerCase().search('pause.png') != -1) {
            pattern = new RegExp('(Pause.png)', 'gi');
            s = $(itm).attr('src').replace(pattern, 'play.png');
            $(itm).attr('src', s);
            clearInterval(this.nextNewsIntervalId);
        }
        else {
            pattern = new RegExp('(play.png)', 'gi');
            s = $(itm).attr('src').replace(pattern, 'Pause.png');
            $(itm).attr('src', s);
            var that = this;
            this.nextNewsIntervalId = setInterval(function() { that.nextNews(that); }, this._slideShowInterval);
        }
    },

    BindNews: function() {
        this.BindTextNews();
        this.setSubtitle();
        this.initUI();
        this.setTopOne();
        if (this._viewSubtitle)
            this.getElement('.subtitlebar').cycle({ fx: 'scrollUp', random: 1, cleartype: 0, timeout: 6000 });
        var that = this;
        this.nextNewsIntervalId = setInterval(function() { that.nextNews(that); }, this._slideShowInterval);
    },

    SuccessFetchNews: function(response, that) {
        that.news = response;
        if (response.length == undefined)
            that.news = new Array(response);
        that.BindNews();
    },

    FailFetchNews: function(err) {
        alert('Error!  ' + err.responseText);
    },

    fetchAllNews: function() {
        this.PageMethod('fetchAllNews', '{}', this.SuccessFetchNews, this.FailFetchNews);
    }

}
TopNews.css


.main_news
{
background:#333;
position:relative;
overflow:hidden;  
color:#fff;
text-align:center;
}
.main_news .desc .block h4
{
margin:0px 10px;
padding:0;
font-size:85%;
}
.main_news .desc .block p 
{
font-family:Tahoma;
font-size:70%;
line-height:1.6em;
padding:5px 0px;
margin:0px 10px;
line-height:1.2em;
}
.main_news .desc .block small 
{
margin:0px 30px;
font-family:Tahoma;
font-size: 70%;
}
.main_news .desc{
position: absolute;
bottom: 0;
left: 0; 
width: 100%;
display: none; 
}
.main_news .desc .block{
width: 100%;
background: #111;
border-top: 1px solid #000;
text-align:justify;
}
.rtl .main_news .desc .block
{
direction:rtl;
}
.main_news .logo{
position: absolute;
text-align:center;
background:#111;
margin:10px;
padding:2px;
font-weight:bold;
top:0;
left:0;
}
.rtl .main_news .logo{right:0;left:auto !important;}
.subtitlebar
{
background:#fff;
width:98%;
}
.subtitlebar span
{
padding:2px 0px;
color:Navy;
white-space:nowrap;
font-family:Tahoma;
font-size:85%;
width:100%;
}
.toolbar
{
background:#111;
height:25px;
max-height:25px;
overflow:hidden;
}
.toolbar img
{
border:0;
vertical-align:middle;
cursor:pointer;
}
.toolbar ul
{
padding:0;
margin:0;
white-space:nowrap;
}
.toolbar ul li
{
margin-left:5px;
margin-right:5px;
display:inline;
font-weight:bold;
font-size:20px;
color:Gray;
}
.toolbar ul li.active {
color:#fff;
font-size:20px;
}
.rtl .pagerbar
{
direction:rtl;
}
.pagerbar span
{
color:#fff;
margin:0px 15px;
}
.pagerbar ul
{
padding:0;
margin:0;
white-space:nowrap;
}
.pagerbar ul li
{
margin:0px 1px;
padding:0px 5px;
display:inline;
font-weight:bold;
color:#e99;
}
.rtl .pagerbar ul li
{
float:right;
}
.pagerbar ul li.hover { 
cursor: pointer;
color:Yellow;
}
.pagerbar ul li.active {
color:#222;
cursor:default;
background-color:#aaa;
}

.picndate
{
float:left;
position:relative;
}
.picndate div
{
position:absolute;
bottom:0;
left:0;
background:#111;
font-size:9px;
font-family:Tahoma;
color:#fff;
padding-left:2px;
padding-right:2px;
}
.news_thumb
{
min-width: 300px;
vertical-align:top;
overflow:hidden;
position:relative;
text-align:justify;
width:60%;
}
.news_thumb img {
border-bottom: 1px solid #ccc;
border-left:1px solid #ccc;
border-top:none;
border-right:none;
padding: 2px;
background: #fff;
width:66px;
height:50px;
}
.news_thumb div
{
margin-top:0px;
}
.news_thumb ul {
margin: 0;
padding: 0;
list-style: none;
}
.rtl .news_thumb ul 
{
direction:rtl;
}
.news_thumb ul hr
{
margin:0px 3%;
color: #fff; 
background-color: #fff; 
border: 1px dotted #008080; 
border-style: none none dotted; 
}
.news_thumb ul li{
background: #f0f0f0;
margin: 2px 0px;
padding: 3px;
}
.news_thumb ul li.hover { 
background: #ddd;
cursor: pointer;
}
.news_thumb ul li.active {
background: #fff;
cursor: default;
}

.news_thumb ul li h4 {
margin:2px;
padding:0;
white-space:nowrap;
color:#0054E3;
font-family:Times New Roman;
font-size:15px;
}
.news_thumb ul li .block {
float: left;
margin-left: 4px;
padding: 0;
width: 75%;
overflow:hidden;
}
.news_thumb ul li p
{
background:#fff;
margin:0;
margin-top:5px;
padding:0;
white-space:nowrap;
}

jquery.cycle.all.js

/*!
 * jQuery Cycle Plugin (with Transition Definitions)
 * Examples and documentation at: http://jquery.malsup.com/cycle/
 * Copyright (c) 2007-2013 M. Alsup
 * Version: 3.0.3 (11-JUL-2013)
 * Dual licensed under the MIT and GPL licenses.
 * http://jquery.malsup.com/license.html
 * Requires: jQuery v1.7.1 or later
 */
;(function($, undefined) {
"use strict";

var ver = '3.0.3';

function debug(s) {
if ($.fn.cycle.debug)
log(s);
}
function log() {
/*global console */
if (window.console && console.log)
console.log('[cycle] ' + Array.prototype.join.call(arguments,' '));
}
$.expr[':'].paused = function(el) {
return el.cyclePause;
};


// the options arg can be...
//   a number  - indicates an immediate transition should occur to the given slide index
//   a string  - 'pause', 'resume', 'toggle', 'next', 'prev', 'stop', 'destroy' or the name of a transition effect (ie, 'fade', 'zoom', etc)
//   an object - properties to control the slideshow
//
// the arg2 arg can be...
//   the name of an fx (only used in conjunction with a numeric value for 'options')
//   the value true (only used in first arg == 'resume') and indicates
// that the resume should occur immediately (not wait for next timeout)

$.fn.cycle = function(options, arg2) {
var o = { s: this.selector, c: this.context };

// in 1.3+ we can fix mistakes with the ready state
if (this.length === 0 && options != 'stop') {
if (!$.isReady && o.s) {
log('DOM not ready, queuing slideshow');
$(function() {
$(o.s,o.c).cycle(options,arg2);
});
return this;
}
// is your DOM ready?  http://docs.jquery.com/Tutorials:Introducing_$(document).ready()
log('terminating; zero elements found by selector' + ($.isReady ? '' : ' (DOM not ready)'));
return this;
}

// iterate the matched nodeset
return this.each(function() {
var opts = handleArguments(this, options, arg2);
if (opts === false)
return;

opts.updateActivePagerLink = opts.updateActivePagerLink || $.fn.cycle.updateActivePagerLink;
// stop existing slideshow for this container (if there is one)
if (this.cycleTimeout)
clearTimeout(this.cycleTimeout);
this.cycleTimeout = this.cyclePause = 0;
this.cycleStop = 0; // issue #108

var $cont = $(this);
var $slides = opts.slideExpr ? $(opts.slideExpr, this) : $cont.children();
var els = $slides.get();

if (els.length < 2) {
log('terminating; too few slides: ' + els.length);
return;
}

var opts2 = buildOptions($cont, $slides, els, opts, o);
if (opts2 === false)
return;

var startTime = opts2.continuous ? 10 : getTimeout(els[opts2.currSlide], els[opts2.nextSlide], opts2, !opts2.backwards);

// if it's an auto slideshow, kick it off
if (startTime) {
startTime += (opts2.delay || 0);
if (startTime < 10)
startTime = 10;
debug('first timeout: ' + startTime);
this.cycleTimeout = setTimeout(function(){go(els,opts2,0,!opts.backwards);}, startTime);
}
});
};

function triggerPause(cont, byHover, onPager) {
var opts = $(cont).data('cycle.opts');
if (!opts)
return;
var paused = !!cont.cyclePause;
if (paused && opts.paused)
opts.paused(cont, opts, byHover, onPager);
else if (!paused && opts.resumed)
opts.resumed(cont, opts, byHover, onPager);
}

// process the args that were passed to the plugin fn
function handleArguments(cont, options, arg2) {
if (cont.cycleStop === undefined)
cont.cycleStop = 0;
if (options === undefined || options === null)
options = {};
if (options.constructor == String) {
switch(options) {
case 'destroy':
case 'stop':
var opts = $(cont).data('cycle.opts');
if (!opts)
return false;
cont.cycleStop++; // callbacks look for change
if (cont.cycleTimeout)
clearTimeout(cont.cycleTimeout);
cont.cycleTimeout = 0;
if (opts.elements)
$(opts.elements).stop();
$(cont).removeData('cycle.opts');
if (options == 'destroy')
destroy(cont, opts);
return false;
case 'toggle':
cont.cyclePause = (cont.cyclePause === 1) ? 0 : 1;
checkInstantResume(cont.cyclePause, arg2, cont);
triggerPause(cont);
return false;
case 'pause':
cont.cyclePause = 1;
triggerPause(cont);
return false;
case 'resume':
cont.cyclePause = 0;
checkInstantResume(false, arg2, cont);
triggerPause(cont);
return false;
case 'prev':
case 'next':
opts = $(cont).data('cycle.opts');
if (!opts) {
log('options not found, "prev/next" ignored');
return false;
}
if (typeof arg2 == 'string') 
opts.oneTimeFx = arg2;
$.fn.cycle[options](opts);
return false;
default:
options = { fx: options };
}
return options;
}
else if (options.constructor == Number) {
// go to the requested slide
var num = options;
options = $(cont).data('cycle.opts');
if (!options) {
log('options not found, can not advance slide');
return false;
}
if (num < 0 || num >= options.elements.length) {
log('invalid slide index: ' + num);
return false;
}
options.nextSlide = num;
if (cont.cycleTimeout) {
clearTimeout(cont.cycleTimeout);
cont.cycleTimeout = 0;
}
if (typeof arg2 == 'string')
options.oneTimeFx = arg2;
go(options.elements, options, 1, num >= options.currSlide);
return false;
}
return options;
function checkInstantResume(isPaused, arg2, cont) {
if (!isPaused && arg2 === true) { // resume now!
var options = $(cont).data('cycle.opts');
if (!options) {
log('options not found, can not resume');
return false;
}
if (cont.cycleTimeout) {
clearTimeout(cont.cycleTimeout);
cont.cycleTimeout = 0;
}
go(options.elements, options, 1, !options.backwards);
}
}
}

function removeFilter(el, opts) {
if (!$.support.opacity && opts.cleartype && el.style.filter) {
try { el.style.removeAttribute('filter'); }
catch(smother) {} // handle old opera versions
}
}

// unbind event handlers
function destroy(cont, opts) {
if (opts.next)
$(opts.next).unbind(opts.prevNextEvent);
if (opts.prev)
$(opts.prev).unbind(opts.prevNextEvent);
if (opts.pager || opts.pagerAnchorBuilder)
$.each(opts.pagerAnchors || [], function() {
this.unbind().remove();
});
opts.pagerAnchors = null;
$(cont).unbind('mouseenter.cycle mouseleave.cycle');
if (opts.destroy) // callback
opts.destroy(opts);
}

// one-time initialization
function buildOptions($cont, $slides, els, options, o) {
var startingSlideSpecified;
// support metadata plugin (v1.0 and v2.0)
var opts = $.extend({}, $.fn.cycle.defaults, options || {}, $.metadata ? $cont.metadata() : $.meta ? $cont.data() : {});
var meta = $.isFunction($cont.data) ? $cont.data(opts.metaAttr) : null;
if (meta)
opts = $.extend(opts, meta);
if (opts.autostop)
opts.countdown = opts.autostopCount || els.length;

var cont = $cont[0];
$cont.data('cycle.opts', opts);
opts.$cont = $cont;
opts.stopCount = cont.cycleStop;
opts.elements = els;
opts.before = opts.before ? [opts.before] : [];
opts.after = opts.after ? [opts.after] : [];

// push some after callbacks
if (!$.support.opacity && opts.cleartype)
opts.after.push(function() { removeFilter(this, opts); });
if (opts.continuous)
opts.after.push(function() { go(els,opts,0,!opts.backwards); });

saveOriginalOpts(opts);

// clearType corrections
if (!$.support.opacity && opts.cleartype && !opts.cleartypeNoBg)
clearTypeFix($slides);

// container requires non-static position so that slides can be position within
if ($cont.css('position') == 'static')
$cont.css('position', 'relative');
if (opts.width)
$cont.width(opts.width);
if (opts.height && opts.height != 'auto')
$cont.height(opts.height);

if (opts.startingSlide !== undefined) {
opts.startingSlide = parseInt(opts.startingSlide,10);
if (opts.startingSlide >= els.length || opts.startSlide < 0)
opts.startingSlide = 0; // catch bogus input
else 
startingSlideSpecified = true;
}
else if (opts.backwards)
opts.startingSlide = els.length - 1;
else
opts.startingSlide = 0;

// if random, mix up the slide array
if (opts.random) {
opts.randomMap = [];
for (var i = 0; i < els.length; i++)
opts.randomMap.push(i);
opts.randomMap.sort(function(a,b) {return Math.random() - 0.5;});
if (startingSlideSpecified) {
// try to find the specified starting slide and if found set start slide index in the map accordingly
for ( var cnt = 0; cnt < els.length; cnt++ ) {
if ( opts.startingSlide == opts.randomMap[cnt] ) {
opts.randomIndex = cnt;
}
}
}
else {
opts.randomIndex = 1;
opts.startingSlide = opts.randomMap[1];
}
}
else if (opts.startingSlide >= els.length)
opts.startingSlide = 0; // catch bogus input
opts.currSlide = opts.startingSlide || 0;
var first = opts.startingSlide;

// set position and zIndex on all the slides
$slides.css({position: 'absolute', top:0, left:0}).hide().each(function(i) {
var z;
if (opts.backwards)
z = first ? i <= first ? els.length + (i-first) : first-i : els.length-i;
else
z = first ? i >= first ? els.length - (i-first) : first-i : els.length-i;
$(this).css('z-index', z);
});

// make sure first slide is visible
$(els[first]).css('opacity',1).show(); // opacity bit needed to handle restart use case
removeFilter(els[first], opts);

// stretch slides
if (opts.fit) {
if (!opts.aspect) {
       if (opts.width)
           $slides.width(opts.width);
       if (opts.height && opts.height != 'auto')
           $slides.height(opts.height);
} else {
$slides.each(function(){
var $slide = $(this);
var ratio = (opts.aspect === true) ? $slide.width()/$slide.height() : opts.aspect;
if( opts.width && $slide.width() != opts.width ) {
$slide.width( opts.width );
$slide.height( opts.width / ratio );
}

if( opts.height && $slide.height() < opts.height ) {
$slide.height( opts.height );
$slide.width( opts.height * ratio );
}
});
}
}

if (opts.center && ((!opts.fit) || opts.aspect)) {
$slides.each(function(){
var $slide = $(this);
$slide.css({
"margin-left": opts.width ?
((opts.width - $slide.width()) / 2) + "px" :
0,
"margin-top": opts.height ?
((opts.height - $slide.height()) / 2) + "px" :
0
});
});
}

if (opts.center && !opts.fit && !opts.slideResize) {
$slides.each(function(){
var $slide = $(this);
$slide.css({
"margin-left": opts.width ? ((opts.width - $slide.width()) / 2) + "px" : 0,
"margin-top": opts.height ? ((opts.height - $slide.height()) / 2) + "px" : 0
});
});
}
// stretch container
var reshape = (opts.containerResize || opts.containerResizeHeight) && $cont.innerHeight() < 1;
if (reshape) { // do this only if container has no size http://tinyurl.com/da2oa9
var maxw = 0, maxh = 0;
for(var j=0; j < els.length; j++) {
var $e = $(els[j]), e = $e[0], w = $e.outerWidth(), h = $e.outerHeight();
if (!w) w = e.offsetWidth || e.width || $e.attr('width');
if (!h) h = e.offsetHeight || e.height || $e.attr('height');
maxw = w > maxw ? w : maxw;
maxh = h > maxh ? h : maxh;
}
if (opts.containerResize && maxw > 0 && maxh > 0)
$cont.css({width:maxw+'px',height:maxh+'px'});
if (opts.containerResizeHeight && maxh > 0)
$cont.css({height:maxh+'px'});
}

var pauseFlag = false;  // https://github.com/malsup/cycle/issues/44
if (opts.pause)
$cont.bind('mouseenter.cycle', function(){
pauseFlag = true;
this.cyclePause++;
triggerPause(cont, true);
}).bind('mouseleave.cycle', function(){
if (pauseFlag)
this.cyclePause--;
triggerPause(cont, true);
});

if (supportMultiTransitions(opts) === false)
return false;

// apparently a lot of people use image slideshows without height/width attributes on the images.
// Cycle 2.50+ requires the sizing info for every slide; this block tries to deal with that.
var requeue = false;
options.requeueAttempts = options.requeueAttempts || 0;
$slides.each(function() {
// try to get height/width of each slide
var $el = $(this);
this.cycleH = (opts.fit && opts.height) ? opts.height : ($el.height() || this.offsetHeight || this.height || $el.attr('height') || 0);
this.cycleW = (opts.fit && opts.width) ? opts.width : ($el.width() || this.offsetWidth || this.width || $el.attr('width') || 0);

if ( $el.is('img') ) {
var loading = (this.cycleH === 0 && this.cycleW === 0 && !this.complete);
// don't requeue for images that are still loading but have a valid size
if (loading) {
if (o.s && opts.requeueOnImageNotLoaded && ++options.requeueAttempts < 100) { // track retry count so we don't loop forever
log(options.requeueAttempts,' - img slide not loaded, requeuing slideshow: ', this.src, this.cycleW, this.cycleH);
setTimeout(function() {$(o.s,o.c).cycle(options);}, opts.requeueTimeout);
requeue = true;
return false; // break each loop
}
else {
log('could not determine size of image: '+this.src, this.cycleW, this.cycleH);
}
}
}
return true;
});

if (requeue)
return false;

opts.cssBefore = opts.cssBefore || {};
opts.cssAfter = opts.cssAfter || {};
opts.cssFirst = opts.cssFirst || {};
opts.animIn = opts.animIn || {};
opts.animOut = opts.animOut || {};

$slides.not(':eq('+first+')').css(opts.cssBefore);
$($slides[first]).css(opts.cssFirst);

if (opts.timeout) {
opts.timeout = parseInt(opts.timeout,10);
// ensure that timeout and speed settings are sane
if (opts.speed.constructor == String)
opts.speed = $.fx.speeds[opts.speed] || parseInt(opts.speed,10);
if (!opts.sync)
opts.speed = opts.speed / 2;
var buffer = opts.fx == 'none' ? 0 : opts.fx == 'shuffle' ? 500 : 250;
while((opts.timeout - opts.speed) < buffer) // sanitize timeout
opts.timeout += opts.speed;
}
if (opts.easing)
opts.easeIn = opts.easeOut = opts.easing;
if (!opts.speedIn)
opts.speedIn = opts.speed;
if (!opts.speedOut)
opts.speedOut = opts.speed;

opts.slideCount = els.length;
opts.currSlide = opts.lastSlide = first;
if (opts.random) {
if (++opts.randomIndex == els.length)
opts.randomIndex = 0;
opts.nextSlide = opts.randomMap[opts.randomIndex];
}
else if (opts.backwards)
opts.nextSlide = opts.startingSlide === 0 ? (els.length-1) : opts.startingSlide-1;
else
opts.nextSlide = opts.startingSlide >= (els.length-1) ? 0 : opts.startingSlide+1;

// run transition init fn
if (!opts.multiFx) {
var init = $.fn.cycle.transitions[opts.fx];
if ($.isFunction(init))
init($cont, $slides, opts);
else if (opts.fx != 'custom' && !opts.multiFx) {
log('unknown transition: ' + opts.fx,'; slideshow terminating');
return false;
}
}

// fire artificial events
var e0 = $slides[first];
if (!opts.skipInitializationCallbacks) {
if (opts.before.length)
opts.before[0].apply(e0, [e0, e0, opts, true]);
if (opts.after.length)
opts.after[0].apply(e0, [e0, e0, opts, true]);
}
if (opts.next)
$(opts.next).bind(opts.prevNextEvent,function(){return advance(opts,1);});
if (opts.prev)
$(opts.prev).bind(opts.prevNextEvent,function(){return advance(opts,0);});
if (opts.pager || opts.pagerAnchorBuilder)
buildPager(els,opts);

exposeAddSlide(opts, els);

return opts;
}

// save off original opts so we can restore after clearing state
function saveOriginalOpts(opts) {
opts.original = { before: [], after: [] };
opts.original.cssBefore = $.extend({}, opts.cssBefore);
opts.original.cssAfter  = $.extend({}, opts.cssAfter);
opts.original.animIn = $.extend({}, opts.animIn);
opts.original.animOut   = $.extend({}, opts.animOut);
$.each(opts.before, function() { opts.original.before.push(this); });
$.each(opts.after,  function() { opts.original.after.push(this); });
}

function supportMultiTransitions(opts) {
var i, tx, txs = $.fn.cycle.transitions;
// look for multiple effects
if (opts.fx.indexOf(',') > 0) {
opts.multiFx = true;
opts.fxs = opts.fx.replace(/\s*/g,'').split(',');
// discard any bogus effect names
for (i=0; i < opts.fxs.length; i++) {
var fx = opts.fxs[i];
tx = txs[fx];
if (!tx || !txs.hasOwnProperty(fx) || !$.isFunction(tx)) {
log('discarding unknown transition: ',fx);
opts.fxs.splice(i,1);
i--;
}
}
// if we have an empty list then we threw everything away!
if (!opts.fxs.length) {
log('No valid transitions named; slideshow terminating.');
return false;
}
}
else if (opts.fx == 'all') {  // auto-gen the list of transitions
opts.multiFx = true;
opts.fxs = [];
for (var p in txs) {
if (txs.hasOwnProperty(p)) {
tx = txs[p];
if (txs.hasOwnProperty(p) && $.isFunction(tx))
opts.fxs.push(p);
}
}
}
if (opts.multiFx && opts.randomizeEffects) {
// munge the fxs array to make effect selection random
var r1 = Math.floor(Math.random() * 20) + 30;
for (i = 0; i < r1; i++) {
var r2 = Math.floor(Math.random() * opts.fxs.length);
opts.fxs.push(opts.fxs.splice(r2,1)[0]);
}
debug('randomized fx sequence: ',opts.fxs);
}
return true;
}

// provide a mechanism for adding slides after the slideshow has started
function exposeAddSlide(opts, els) {
opts.addSlide = function(newSlide, prepend) {
var $s = $(newSlide), s = $s[0];
if (!opts.autostopCount)
opts.countdown++;
els[prepend?'unshift':'push'](s);
if (opts.els)
opts.els[prepend?'unshift':'push'](s); // shuffle needs this
opts.slideCount = els.length;

// add the slide to the random map and resort
if (opts.random) {
opts.randomMap.push(opts.slideCount-1);
opts.randomMap.sort(function(a,b) {return Math.random() - 0.5;});
}

$s.css('position','absolute');
$s[prepend?'prependTo':'appendTo'](opts.$cont);

if (prepend) {
opts.currSlide++;
opts.nextSlide++;
}

if (!$.support.opacity && opts.cleartype && !opts.cleartypeNoBg)
clearTypeFix($s);

if (opts.fit && opts.width)
$s.width(opts.width);
if (opts.fit && opts.height && opts.height != 'auto')
$s.height(opts.height);
s.cycleH = (opts.fit && opts.height) ? opts.height : $s.height();
s.cycleW = (opts.fit && opts.width) ? opts.width : $s.width();

$s.css(opts.cssBefore);

if (opts.pager || opts.pagerAnchorBuilder)
$.fn.cycle.createPagerAnchor(els.length-1, s, $(opts.pager), els, opts);

if ($.isFunction(opts.onAddSlide))
opts.onAddSlide($s);
else
$s.hide(); // default behavior
};
}

// reset internal state; we do this on every pass in order to support multiple effects
$.fn.cycle.resetState = function(opts, fx) {
fx = fx || opts.fx;
opts.before = []; opts.after = [];
opts.cssBefore = $.extend({}, opts.original.cssBefore);
opts.cssAfter  = $.extend({}, opts.original.cssAfter);
opts.animIn = $.extend({}, opts.original.animIn);
opts.animOut   = $.extend({}, opts.original.animOut);
opts.fxFn = null;
$.each(opts.original.before, function() { opts.before.push(this); });
$.each(opts.original.after,  function() { opts.after.push(this); });

// re-init
var init = $.fn.cycle.transitions[fx];
if ($.isFunction(init))
init(opts.$cont, $(opts.elements), opts);
};

// this is the main engine fn, it handles the timeouts, callbacks and slide index mgmt
function go(els, opts, manual, fwd) {
var p = opts.$cont[0], curr = els[opts.currSlide], next = els[opts.nextSlide];

// opts.busy is true if we're in the middle of an animation
if (manual && opts.busy && opts.manualTrump) {
// let manual transitions requests trump active ones
debug('manualTrump in go(), stopping active transition');
$(els).stop(true,true);
opts.busy = 0;
clearTimeout(p.cycleTimeout);
}

// don't begin another timeout-based transition if there is one active
if (opts.busy) {
debug('transition active, ignoring new tx request');
return;
}


// stop cycling if we have an outstanding stop request
if (p.cycleStop != opts.stopCount || p.cycleTimeout === 0 && !manual)
return;

// check to see if we should stop cycling based on autostop options
if (!manual && !p.cyclePause && !opts.bounce &&
((opts.autostop && (--opts.countdown <= 0)) ||
(opts.nowrap && !opts.random && opts.nextSlide < opts.currSlide))) {
if (opts.end)
opts.end(opts);
return;
}

// if slideshow is paused, only transition on a manual trigger
var changed = false;
if ((manual || !p.cyclePause) && (opts.nextSlide != opts.currSlide)) {
changed = true;
var fx = opts.fx;
// keep trying to get the slide size if we don't have it yet
curr.cycleH = curr.cycleH || $(curr).height();
curr.cycleW = curr.cycleW || $(curr).width();
next.cycleH = next.cycleH || $(next).height();
next.cycleW = next.cycleW || $(next).width();

// support multiple transition types
if (opts.multiFx) {
if (fwd && (opts.lastFx === undefined || ++opts.lastFx >= opts.fxs.length))
opts.lastFx = 0;
else if (!fwd && (opts.lastFx === undefined || --opts.lastFx < 0))
opts.lastFx = opts.fxs.length - 1;
fx = opts.fxs[opts.lastFx];
}

// one-time fx overrides apply to:  $('div').cycle(3,'zoom');
if (opts.oneTimeFx) {
fx = opts.oneTimeFx;
opts.oneTimeFx = null;
}

$.fn.cycle.resetState(opts, fx);

// run the before callbacks
if (opts.before.length)
$.each(opts.before, function(i,o) {
if (p.cycleStop != opts.stopCount) return;
o.apply(next, [curr, next, opts, fwd]);
});

// stage the after callacks
var after = function() {
opts.busy = 0;
$.each(opts.after, function(i,o) {
if (p.cycleStop != opts.stopCount) return;
o.apply(next, [curr, next, opts, fwd]);
});
if (!p.cycleStop) {
// queue next transition
queueNext();
}
};

debug('tx firing('+fx+'); currSlide: ' + opts.currSlide + '; nextSlide: ' + opts.nextSlide);
// get ready to perform the transition
opts.busy = 1;
if (opts.fxFn) // fx function provided?
opts.fxFn(curr, next, opts, after, fwd, manual && opts.fastOnEvent);
else if ($.isFunction($.fn.cycle[opts.fx])) // fx plugin ?
$.fn.cycle[opts.fx](curr, next, opts, after, fwd, manual && opts.fastOnEvent);
else
$.fn.cycle.custom(curr, next, opts, after, fwd, manual && opts.fastOnEvent);
}
else {
queueNext();
}

if (changed || opts.nextSlide == opts.currSlide) {
// calculate the next slide
var roll;
opts.lastSlide = opts.currSlide;
if (opts.random) {
opts.currSlide = opts.nextSlide;
if (++opts.randomIndex == els.length) {
opts.randomIndex = 0;
opts.randomMap.sort(function(a,b) {return Math.random() - 0.5;});
}
opts.nextSlide = opts.randomMap[opts.randomIndex];
if (opts.nextSlide == opts.currSlide)
opts.nextSlide = (opts.currSlide == opts.slideCount - 1) ? 0 : opts.currSlide + 1;
}
else if (opts.backwards) {
roll = (opts.nextSlide - 1) < 0;
if (roll && opts.bounce) {
opts.backwards = !opts.backwards;
opts.nextSlide = 1;
opts.currSlide = 0;
}
else {
opts.nextSlide = roll ? (els.length-1) : opts.nextSlide-1;
opts.currSlide = roll ? 0 : opts.nextSlide+1;
}
}
else { // sequence
roll = (opts.nextSlide + 1) == els.length;
if (roll && opts.bounce) {
opts.backwards = !opts.backwards;
opts.nextSlide = els.length-2;
opts.currSlide = els.length-1;
}
else {
opts.nextSlide = roll ? 0 : opts.nextSlide+1;
opts.currSlide = roll ? els.length-1 : opts.nextSlide-1;
}
}
}
if (changed && opts.pager)
opts.updateActivePagerLink(opts.pager, opts.currSlide, opts.activePagerClass);
function queueNext() {
// stage the next transition
var ms = 0, timeout = opts.timeout;
if (opts.timeout && !opts.continuous) {
ms = getTimeout(els[opts.currSlide], els[opts.nextSlide], opts, fwd);
         if (opts.fx == 'shuffle')
            ms -= opts.speedOut;
      }
else if (opts.continuous && p.cyclePause) // continuous shows work off an after callback, not this timer logic
ms = 10;
if (ms > 0)
p.cycleTimeout = setTimeout(function(){ go(els, opts, 0, !opts.backwards); }, ms);
}
}

// invoked after transition
$.fn.cycle.updateActivePagerLink = function(pager, currSlide, clsName) {
   $(pager).each(function() {
       $(this).children().removeClass(clsName).eq(currSlide).addClass(clsName);
   });
};

// calculate timeout value for current transition
function getTimeout(curr, next, opts, fwd) {
if (opts.timeoutFn) {
// call user provided calc fn
var t = opts.timeoutFn.call(curr,curr,next,opts,fwd);
while (opts.fx != 'none' && (t - opts.speed) < 250) // sanitize timeout
t += opts.speed;
debug('calculated timeout: ' + t + '; speed: ' + opts.speed);
if (t !== false)
return t;
}
return opts.timeout;
}

// expose next/prev function, caller must pass in state
$.fn.cycle.next = function(opts) { advance(opts,1); };
$.fn.cycle.prev = function(opts) { advance(opts,0);};

// advance slide forward or back
function advance(opts, moveForward) {
var val = moveForward ? 1 : -1;
var els = opts.elements;
var p = opts.$cont[0], timeout = p.cycleTimeout;
if (timeout) {
clearTimeout(timeout);
p.cycleTimeout = 0;
}
if (opts.random && val < 0) {
// move back to the previously display slide
opts.randomIndex--;
if (--opts.randomIndex == -2)
opts.randomIndex = els.length-2;
else if (opts.randomIndex == -1)
opts.randomIndex = els.length-1;
opts.nextSlide = opts.randomMap[opts.randomIndex];
}
else if (opts.random) {
opts.nextSlide = opts.randomMap[opts.randomIndex];
}
else {
opts.nextSlide = opts.currSlide + val;
if (opts.nextSlide < 0) {
if (opts.nowrap) return false;
opts.nextSlide = els.length - 1;
}
else if (opts.nextSlide >= els.length) {
if (opts.nowrap) return false;
opts.nextSlide = 0;
}
}

var cb = opts.onPrevNextEvent || opts.prevNextClick; // prevNextClick is deprecated
if ($.isFunction(cb))
cb(val > 0, opts.nextSlide, els[opts.nextSlide]);
go(els, opts, 1, moveForward);
return false;
}

function buildPager(els, opts) {
var $p = $(opts.pager);
$.each(els, function(i,o) {
$.fn.cycle.createPagerAnchor(i,o,$p,els,opts);
});
opts.updateActivePagerLink(opts.pager, opts.startingSlide, opts.activePagerClass);
}

$.fn.cycle.createPagerAnchor = function(i, el, $p, els, opts) {
var a;
if ($.isFunction(opts.pagerAnchorBuilder)) {
a = opts.pagerAnchorBuilder(i,el);
debug('pagerAnchorBuilder('+i+', el) returned: ' + a);
}
else
a = '<a href="#">'+(i+1)+'</a>';
if (!a)
return;
var $a = $(a);
// don't reparent if anchor is in the dom
if ($a.parents('body').length === 0) {
var arr = [];
if ($p.length > 1) {
$p.each(function() {
var $clone = $a.clone(true);
$(this).append($clone);
arr.push($clone[0]);
});
$a = $(arr);
}
else {
$a.appendTo($p);
}
}

opts.pagerAnchors =  opts.pagerAnchors || [];
opts.pagerAnchors.push($a);
var pagerFn = function(e) {
e.preventDefault();
opts.nextSlide = i;
var p = opts.$cont[0], timeout = p.cycleTimeout;
if (timeout) {
clearTimeout(timeout);
p.cycleTimeout = 0;
}
var cb = opts.onPagerEvent || opts.pagerClick; // pagerClick is deprecated
if ($.isFunction(cb))
cb(opts.nextSlide, els[opts.nextSlide]);
go(els,opts,1,opts.currSlide < i); // trigger the trans
// return false; // <== allow bubble
};
if ( /mouseenter|mouseover/i.test(opts.pagerEvent) ) {
$a.hover(pagerFn, function(){/* no-op */} );
}
else {
$a.bind(opts.pagerEvent, pagerFn);
}
if ( ! /^click/.test(opts.pagerEvent) && !opts.allowPagerClickBubble)
$a.bind('click.cycle', function(){return false;}); // suppress click
var cont = opts.$cont[0];
var pauseFlag = false; // https://github.com/malsup/cycle/issues/44
if (opts.pauseOnPagerHover) {
$a.hover(
function() { 
pauseFlag = true;
cont.cyclePause++; 
triggerPause(cont,true,true);
}, function() { 
if (pauseFlag)
cont.cyclePause--; 
triggerPause(cont,true,true);
);
}
};

// helper fn to calculate the number of slides between the current and the next
$.fn.cycle.hopsFromLast = function(opts, fwd) {
var hops, l = opts.lastSlide, c = opts.currSlide;
if (fwd)
hops = c > l ? c - l : opts.slideCount - l;
else
hops = c < l ? l - c : l + opts.slideCount - c;
return hops;
};

// fix clearType problems in ie6 by setting an explicit bg color
// (otherwise text slides look horrible during a fade transition)
function clearTypeFix($slides) {
debug('applying clearType background-color hack');
function hex(s) {
s = parseInt(s,10).toString(16);
return s.length < 2 ? '0'+s : s;
}
function getBg(e) {
for ( ; e && e.nodeName.toLowerCase() != 'html'; e = e.parentNode) {
var v = $.css(e,'background-color');
if (v && v.indexOf('rgb') >= 0 ) {
var rgb = v.match(/\d+/g);
return '#'+ hex(rgb[0]) + hex(rgb[1]) + hex(rgb[2]);
}
if (v && v != 'transparent')
return v;
}
return '#ffffff';
}
$slides.each(function() { $(this).css('background-color', getBg(this)); });
}

// reset common props before the next transition
$.fn.cycle.commonReset = function(curr,next,opts,w,h,rev) {
$(opts.elements).not(curr).hide();
if (typeof opts.cssBefore.opacity == 'undefined')
opts.cssBefore.opacity = 1;
opts.cssBefore.display = 'block';
if (opts.slideResize && w !== false && next.cycleW > 0)
opts.cssBefore.width = next.cycleW;
if (opts.slideResize && h !== false && next.cycleH > 0)
opts.cssBefore.height = next.cycleH;
opts.cssAfter = opts.cssAfter || {};
opts.cssAfter.display = 'none';
$(curr).css('zIndex',opts.slideCount + (rev === true ? 1 : 0));
$(next).css('zIndex',opts.slideCount + (rev === true ? 0 : 1));
};

// the actual fn for effecting a transition
$.fn.cycle.custom = function(curr, next, opts, cb, fwd, speedOverride) {
var $l = $(curr), $n = $(next);
var speedIn = opts.speedIn, speedOut = opts.speedOut, easeIn = opts.easeIn, easeOut = opts.easeOut, animInDelay = opts.animInDelay, animOutDelay = opts.animOutDelay;
$n.css(opts.cssBefore);
if (speedOverride) {
if (typeof speedOverride == 'number')
speedIn = speedOut = speedOverride;
else
speedIn = speedOut = 1;
easeIn = easeOut = null;
}
var fn = function() {
$n.delay(animInDelay).animate(opts.animIn, speedIn, easeIn, function() {
cb();
});
};
$l.delay(animOutDelay).animate(opts.animOut, speedOut, easeOut, function() {
$l.css(opts.cssAfter);
if (!opts.sync) 
fn();
});
if (opts.sync) fn();
};

// transition definitions - only fade is defined here, transition pack defines the rest
$.fn.cycle.transitions = {
fade: function($cont, $slides, opts) {
$slides.not(':eq('+opts.currSlide+')').css('opacity',0);
opts.before.push(function(curr,next,opts) {
$.fn.cycle.commonReset(curr,next,opts);
opts.cssBefore.opacity = 0;
});
opts.animIn   = { opacity: 1 };
opts.animOut   = { opacity: 0 };
opts.cssBefore = { top: 0, left: 0 };
}
};

$.fn.cycle.ver = function() { return ver; };

// override these globally if you like (they are all optional)
$.fn.cycle.defaults = {
    activePagerClass: 'activeSlide', // class name used for the active pager link
    after:            null,     // transition callback (scope set to element that was shown):  function(currSlideElement, nextSlideElement, options, forwardFlag)
    allowPagerClickBubble: false, // allows or prevents click event on pager anchors from bubbling
    animIn:           null,     // properties that define how the slide animates in
    animInDelay:      0,        // allows delay before next slide transitions in
    animOut:          null,     // properties that define how the slide animates out
    animOutDelay:     0,        // allows delay before current slide transitions out
    aspect:           false,    // preserve aspect ratio during fit resizing, cropping if necessary (must be used with fit option)
    autostop:         0,        // true to end slideshow after X transitions (where X == slide count)
    autostopCount:    0,        // number of transitions (optionally used with autostop to define X)
    backwards:        false,    // true to start slideshow at last slide and move backwards through the stack
    before:           null,     // transition callback (scope set to element to be shown):     function(currSlideElement, nextSlideElement, options, forwardFlag)
    center:           null,     // set to true to have cycle add top/left margin to each slide (use with width and height options)
    cleartype:        !$.support.opacity,  // true if clearType corrections should be applied (for IE)
    cleartypeNoBg:    false,    // set to true to disable extra cleartype fixing (leave false to force background color setting on slides)
    containerResize:  1,        // resize container to fit largest slide
    containerResizeHeight:  0,  // resize containers height to fit the largest slide but leave the width dynamic
    continuous:       0,        // true to start next transition immediately after current one completes
    cssAfter:         null,     // properties that defined the state of the slide after transitioning out
    cssBefore:        null,     // properties that define the initial state of the slide before transitioning in
    delay:            0,        // additional delay (in ms) for first transition (hint: can be negative)
    easeIn:           null,     // easing for "in" transition
    easeOut:          null,     // easing for "out" transition
    easing:           null,     // easing method for both in and out transitions
    end:              null,     // callback invoked when the slideshow terminates (use with autostop or nowrap options): function(options)
    fastOnEvent:      0,        // force fast transitions when triggered manually (via pager or prev/next); value == time in ms
    fit:              0,        // force slides to fit container
    fx:               'fade',   // name of transition effect (or comma separated names, ex: 'fade,scrollUp,shuffle')
    fxFn:             null,     // function used to control the transition: function(currSlideElement, nextSlideElement, options, afterCalback, forwardFlag)
    height:           'auto',   // container height (if the 'fit' option is true, the slides will be set to this height as well)
    manualTrump:      true,     // causes manual transition to stop an active transition instead of being ignored
    metaAttr:         'cycle',  // data- attribute that holds the option data for the slideshow
    next:             null,     // element, jQuery object, or jQuery selector string for the element to use as event trigger for next slide
    nowrap:           0,        // true to prevent slideshow from wrapping
    onPagerEvent:     null,     // callback fn for pager events: function(zeroBasedSlideIndex, slideElement)
    onPrevNextEvent:  null,     // callback fn for prev/next events: function(isNext, zeroBasedSlideIndex, slideElement)
    pager:            null,     // element, jQuery object, or jQuery selector string for the element to use as pager container
    pagerAnchorBuilder: null,   // callback fn for building anchor links:  function(index, DOMelement)
    pagerEvent:       'click.cycle', // name of event which drives the pager navigation
    pause:            0,        // true to enable "pause on hover"
    pauseOnPagerHover: 0,       // true to pause when hovering over pager link
    prev:             null,     // element, jQuery object, or jQuery selector string for the element to use as event trigger for previous slide
    prevNextEvent:    'click.cycle',// event which drives the manual transition to the previous or next slide
    random:           0,        // true for random, false for sequence (not applicable to shuffle fx)
    randomizeEffects: 1,        // valid when multiple effects are used; true to make the effect sequence random
    requeueOnImageNotLoaded: true, // requeue the slideshow if any image slides are not yet loaded
    requeueTimeout:   250,      // ms delay for requeue
    rev:              0,        // causes animations to transition in reverse (for effects that support it such as scrollHorz/scrollVert/shuffle)
    shuffle:          null,     // coords for shuffle animation, ex: { top:15, left: 200 }
    skipInitializationCallbacks: false, // set to true to disable the first before/after callback that occurs prior to any transition
    slideExpr:        null,     // expression for selecting slides (if something other than all children is required)
    slideResize:      1,        // force slide width/height to fixed size before every transition
    speed:            1000,     // speed of the transition (any valid fx speed value)
    speedIn:          null,     // speed of the 'in' transition
    speedOut:         null,     // speed of the 'out' transition
    startingSlide:    undefined,// zero-based index of the first slide to be displayed
    sync:             1,        // true if in/out transitions should occur simultaneously
    timeout:          4000,     // milliseconds between slide transitions (0 to disable auto advance)
    timeoutFn:        null,     // callback for determining per-slide timeout value:  function(currSlideElement, nextSlideElement, options, forwardFlag)
    updateActivePagerLink: null,// callback fn invoked to update the active pager link (adds/removes activePagerClass style)
    width:            null      // container width (if the 'fit' option is true, the slides will be set to this width as well)
};

})(jQuery);


/*!
 * jQuery Cycle Plugin Transition Definitions
 * This script is a plugin for the jQuery Cycle Plugin
 * Examples and documentation at: http://malsup.com/jquery/cycle/
 * Copyright (c) 2007-2010 M. Alsup
 * Version: 2.73
 * Dual licensed under the MIT and GPL licenses:
 * http://www.opensource.org/licenses/mit-license.php
 * http://www.gnu.org/licenses/gpl.html
 */
(function($) {
"use strict";

//
// These functions define slide initialization and properties for the named
// transitions. To save file size feel free to remove any of these that you
// don't need.
//
$.fn.cycle.transitions.none = function($cont, $slides, opts) {
opts.fxFn = function(curr,next,opts,after){
$(next).show();
$(curr).hide();
after();
};
};

// not a cross-fade, fadeout only fades out the top slide
$.fn.cycle.transitions.fadeout = function($cont, $slides, opts) {
$slides.not(':eq('+opts.currSlide+')').css({ display: 'block', 'opacity': 1 });
opts.before.push(function(curr,next,opts,w,h,rev) {
$(curr).css('zIndex',opts.slideCount + (rev !== true ? 1 : 0));
$(next).css('zIndex',opts.slideCount + (rev !== true ? 0 : 1));
});
opts.animIn.opacity = 1;
opts.animOut.opacity = 0;
opts.cssBefore.opacity = 1;
opts.cssBefore.display = 'block';
opts.cssAfter.zIndex = 0;
};

// scrollUp/Down/Left/Right
$.fn.cycle.transitions.scrollUp = function($cont, $slides, opts) {
$cont.css('overflow','hidden');
opts.before.push($.fn.cycle.commonReset);
var h = $cont.height();
opts.cssBefore.top = h;
opts.cssBefore.left = 0;
opts.cssFirst.top = 0;
opts.animIn.top = 0;
opts.animOut.top = -h;
};
$.fn.cycle.transitions.scrollDown = function($cont, $slides, opts) {
$cont.css('overflow','hidden');
opts.before.push($.fn.cycle.commonReset);
var h = $cont.height();
opts.cssFirst.top = 0;
opts.cssBefore.top = -h;
opts.cssBefore.left = 0;
opts.animIn.top = 0;
opts.animOut.top = h;
};
$.fn.cycle.transitions.scrollLeft = function($cont, $slides, opts) {
$cont.css('overflow','hidden');
opts.before.push($.fn.cycle.commonReset);
var w = $cont.width();
opts.cssFirst.left = 0;
opts.cssBefore.left = w;
opts.cssBefore.top = 0;
opts.animIn.left = 0;
opts.animOut.left = 0-w;
};
$.fn.cycle.transitions.scrollRight = function($cont, $slides, opts) {
$cont.css('overflow','hidden');
opts.before.push($.fn.cycle.commonReset);
var w = $cont.width();
opts.cssFirst.left = 0;
opts.cssBefore.left = -w;
opts.cssBefore.top = 0;
opts.animIn.left = 0;
opts.animOut.left = w;
};
$.fn.cycle.transitions.scrollHorz = function($cont, $slides, opts) {
$cont.css('overflow','hidden').width();
opts.before.push(function(curr, next, opts, fwd) {
if (opts.rev)
fwd = !fwd;
$.fn.cycle.commonReset(curr,next,opts);
opts.cssBefore.left = fwd ? (next.cycleW-1) : (1-next.cycleW);
opts.animOut.left = fwd ? -curr.cycleW : curr.cycleW;
});
opts.cssFirst.left = 0;
opts.cssBefore.top = 0;
opts.animIn.left = 0;
opts.animOut.top = 0;
};
$.fn.cycle.transitions.scrollVert = function($cont, $slides, opts) {
$cont.css('overflow','hidden');
opts.before.push(function(curr, next, opts, fwd) {
if (opts.rev)
fwd = !fwd;
$.fn.cycle.commonReset(curr,next,opts);
opts.cssBefore.top = fwd ? (1-next.cycleH) : (next.cycleH-1);
opts.animOut.top = fwd ? curr.cycleH : -curr.cycleH;
});
opts.cssFirst.top = 0;
opts.cssBefore.left = 0;
opts.animIn.top = 0;
opts.animOut.left = 0;
};

// slideX/slideY
$.fn.cycle.transitions.slideX = function($cont, $slides, opts) {
opts.before.push(function(curr, next, opts) {
$(opts.elements).not(curr).hide();
$.fn.cycle.commonReset(curr,next,opts,false,true);
opts.animIn.width = next.cycleW;
});
opts.cssBefore.left = 0;
opts.cssBefore.top = 0;
opts.cssBefore.width = 0;
opts.animIn.width = 'show';
opts.animOut.width = 0;
};
$.fn.cycle.transitions.slideY = function($cont, $slides, opts) {
opts.before.push(function(curr, next, opts) {
$(opts.elements).not(curr).hide();
$.fn.cycle.commonReset(curr,next,opts,true,false);
opts.animIn.height = next.cycleH;
});
opts.cssBefore.left = 0;
opts.cssBefore.top = 0;
opts.cssBefore.height = 0;
opts.animIn.height = 'show';
opts.animOut.height = 0;
};

// shuffle
$.fn.cycle.transitions.shuffle = function($cont, $slides, opts) {
var i, w = $cont.css('overflow', 'visible').width();
$slides.css({left: 0, top: 0});
opts.before.push(function(curr,next,opts) {
$.fn.cycle.commonReset(curr,next,opts,true,true,true);
});
// only adjust speed once!
if (!opts.speedAdjusted) {
opts.speed = opts.speed / 2; // shuffle has 2 transitions
opts.speedAdjusted = true;
}
opts.random = 0;
opts.shuffle = opts.shuffle || {left:-w, top:15};
opts.els = [];
for (i=0; i < $slides.length; i++)
opts.els.push($slides[i]);

for (i=0; i < opts.currSlide; i++)
opts.els.push(opts.els.shift());

// custom transition fn (hat tip to Benjamin Sterling for this bit of sweetness!)
opts.fxFn = function(curr, next, opts, cb, fwd) {
if (opts.rev)
fwd = !fwd;
var $el = fwd ? $(curr) : $(next);
$(next).css(opts.cssBefore);
var count = opts.slideCount;
$el.animate(opts.shuffle, opts.speedIn, opts.easeIn, function() {
var hops = $.fn.cycle.hopsFromLast(opts, fwd);
for (var k=0; k < hops; k++) {
if (fwd)
opts.els.push(opts.els.shift());
else
opts.els.unshift(opts.els.pop());
}
if (fwd) {
for (var i=0, len=opts.els.length; i < len; i++)
$(opts.els[i]).css('z-index', len-i+count);
}
else {
var z = $(curr).css('z-index');
$el.css('z-index', parseInt(z,10)+1+count);
}
$el.animate({left:0, top:0}, opts.speedOut, opts.easeOut, function() {
$(fwd ? this : curr).hide();
if (cb) cb();
});
});
};
$.extend(opts.cssBefore, { display: 'block', opacity: 1, top: 0, left: 0 });
};

// turnUp/Down/Left/Right
$.fn.cycle.transitions.turnUp = function($cont, $slides, opts) {
opts.before.push(function(curr, next, opts) {
$.fn.cycle.commonReset(curr,next,opts,true,false);
opts.cssBefore.top = next.cycleH;
opts.animIn.height = next.cycleH;
opts.animOut.width = next.cycleW;
});
opts.cssFirst.top = 0;
opts.cssBefore.left = 0;
opts.cssBefore.height = 0;
opts.animIn.top = 0;
opts.animOut.height = 0;
};
$.fn.cycle.transitions.turnDown = function($cont, $slides, opts) {
opts.before.push(function(curr, next, opts) {
$.fn.cycle.commonReset(curr,next,opts,true,false);
opts.animIn.height = next.cycleH;
opts.animOut.top   = curr.cycleH;
});
opts.cssFirst.top = 0;
opts.cssBefore.left = 0;
opts.cssBefore.top = 0;
opts.cssBefore.height = 0;
opts.animOut.height = 0;
};
$.fn.cycle.transitions.turnLeft = function($cont, $slides, opts) {
opts.before.push(function(curr, next, opts) {
$.fn.cycle.commonReset(curr,next,opts,false,true);
opts.cssBefore.left = next.cycleW;
opts.animIn.width = next.cycleW;
});
opts.cssBefore.top = 0;
opts.cssBefore.width = 0;
opts.animIn.left = 0;
opts.animOut.width = 0;
};
$.fn.cycle.transitions.turnRight = function($cont, $slides, opts) {
opts.before.push(function(curr, next, opts) {
$.fn.cycle.commonReset(curr,next,opts,false,true);
opts.animIn.width = next.cycleW;
opts.animOut.left = curr.cycleW;
});
$.extend(opts.cssBefore, { top: 0, left: 0, width: 0 });
opts.animIn.left = 0;
opts.animOut.width = 0;
};

// zoom
$.fn.cycle.transitions.zoom = function($cont, $slides, opts) {
opts.before.push(function(curr, next, opts) {
$.fn.cycle.commonReset(curr,next,opts,false,false,true);
opts.cssBefore.top = next.cycleH/2;
opts.cssBefore.left = next.cycleW/2;
$.extend(opts.animIn, { top: 0, left: 0, width: next.cycleW, height: next.cycleH });
$.extend(opts.animOut, { width: 0, height: 0, top: curr.cycleH/2, left: curr.cycleW/2 });
});
opts.cssFirst.top = 0;
opts.cssFirst.left = 0;
opts.cssBefore.width = 0;
opts.cssBefore.height = 0;
};

// fadeZoom
$.fn.cycle.transitions.fadeZoom = function($cont, $slides, opts) {
opts.before.push(function(curr, next, opts) {
$.fn.cycle.commonReset(curr,next,opts,false,false);
opts.cssBefore.left = next.cycleW/2;
opts.cssBefore.top = next.cycleH/2;
$.extend(opts.animIn, { top: 0, left: 0, width: next.cycleW, height: next.cycleH });
});
opts.cssBefore.width = 0;
opts.cssBefore.height = 0;
opts.animOut.opacity = 0;
};

// blindX
$.fn.cycle.transitions.blindX = function($cont, $slides, opts) {
var w = $cont.css('overflow','hidden').width();
opts.before.push(function(curr, next, opts) {
$.fn.cycle.commonReset(curr,next,opts);
opts.animIn.width = next.cycleW;
opts.animOut.left   = curr.cycleW;
});
opts.cssBefore.left = w;
opts.cssBefore.top = 0;
opts.animIn.left = 0;
opts.animOut.left = w;
};
// blindY
$.fn.cycle.transitions.blindY = function($cont, $slides, opts) {
var h = $cont.css('overflow','hidden').height();
opts.before.push(function(curr, next, opts) {
$.fn.cycle.commonReset(curr,next,opts);
opts.animIn.height = next.cycleH;
opts.animOut.top   = curr.cycleH;
});
opts.cssBefore.top = h;
opts.cssBefore.left = 0;
opts.animIn.top = 0;
opts.animOut.top = h;
};
// blindZ
$.fn.cycle.transitions.blindZ = function($cont, $slides, opts) {
var h = $cont.css('overflow','hidden').height();
var w = $cont.width();
opts.before.push(function(curr, next, opts) {
$.fn.cycle.commonReset(curr,next,opts);
opts.animIn.height = next.cycleH;
opts.animOut.top   = curr.cycleH;
});
opts.cssBefore.top = h;
opts.cssBefore.left = w;
opts.animIn.top = 0;
opts.animIn.left = 0;
opts.animOut.top = h;
opts.animOut.left = w;
};

// growX - grow horizontally from centered 0 width
$.fn.cycle.transitions.growX = function($cont, $slides, opts) {
opts.before.push(function(curr, next, opts) {
$.fn.cycle.commonReset(curr,next,opts,false,true);
opts.cssBefore.left = this.cycleW/2;
opts.animIn.left = 0;
opts.animIn.width = this.cycleW;
opts.animOut.left = 0;
});
opts.cssBefore.top = 0;
opts.cssBefore.width = 0;
};
// growY - grow vertically from centered 0 height
$.fn.cycle.transitions.growY = function($cont, $slides, opts) {
opts.before.push(function(curr, next, opts) {
$.fn.cycle.commonReset(curr,next,opts,true,false);
opts.cssBefore.top = this.cycleH/2;
opts.animIn.top = 0;
opts.animIn.height = this.cycleH;
opts.animOut.top = 0;
});
opts.cssBefore.height = 0;
opts.cssBefore.left = 0;
};

// curtainX - squeeze in both edges horizontally
$.fn.cycle.transitions.curtainX = function($cont, $slides, opts) {
opts.before.push(function(curr, next, opts) {
$.fn.cycle.commonReset(curr,next,opts,false,true,true);
opts.cssBefore.left = next.cycleW/2;
opts.animIn.left = 0;
opts.animIn.width = this.cycleW;
opts.animOut.left = curr.cycleW/2;
opts.animOut.width = 0;
});
opts.cssBefore.top = 0;
opts.cssBefore.width = 0;
};
// curtainY - squeeze in both edges vertically
$.fn.cycle.transitions.curtainY = function($cont, $slides, opts) {
opts.before.push(function(curr, next, opts) {
$.fn.cycle.commonReset(curr,next,opts,true,false,true);
opts.cssBefore.top = next.cycleH/2;
opts.animIn.top = 0;
opts.animIn.height = next.cycleH;
opts.animOut.top = curr.cycleH/2;
opts.animOut.height = 0;
});
opts.cssBefore.height = 0;
opts.cssBefore.left = 0;
};

// cover - curr slide covered by next slide
$.fn.cycle.transitions.cover = function($cont, $slides, opts) {
var d = opts.direction || 'left';
var w = $cont.css('overflow','hidden').width();
var h = $cont.height();
opts.before.push(function(curr, next, opts) {
$.fn.cycle.commonReset(curr,next,opts);
opts.cssAfter.display = '';
if (d == 'right')
opts.cssBefore.left = -w;
else if (d == 'up')
opts.cssBefore.top = h;
else if (d == 'down')
opts.cssBefore.top = -h;
else
opts.cssBefore.left = w;
});
opts.animIn.left = 0;
opts.animIn.top = 0;
opts.cssBefore.top = 0;
opts.cssBefore.left = 0;
};

// uncover - curr slide moves off next slide
$.fn.cycle.transitions.uncover = function($cont, $slides, opts) {
var d = opts.direction || 'left';
var w = $cont.css('overflow','hidden').width();
var h = $cont.height();
opts.before.push(function(curr, next, opts) {
$.fn.cycle.commonReset(curr,next,opts,true,true,true);
if (d == 'right')
opts.animOut.left = w;
else if (d == 'up')
opts.animOut.top = -h;
else if (d == 'down')
opts.animOut.top = h;
else
opts.animOut.left = -w;
});
opts.animIn.left = 0;
opts.animIn.top = 0;
opts.cssBefore.top = 0;
opts.cssBefore.left = 0;
};

// toss - move top slide and fade away
$.fn.cycle.transitions.toss = function($cont, $slides, opts) {
var w = $cont.css('overflow','visible').width();
var h = $cont.height();
opts.before.push(function(curr, next, opts) {
$.fn.cycle.commonReset(curr,next,opts,true,true,true);
// provide default toss settings if animOut not provided
if (!opts.animOut.left && !opts.animOut.top)
$.extend(opts.animOut, { left: w*2, top: -h/2, opacity: 0 });
else
opts.animOut.opacity = 0;
});
opts.cssBefore.left = 0;
opts.cssBefore.top = 0;
opts.animIn.left = 0;
};

// wipe - clip animation
$.fn.cycle.transitions.wipe = function($cont, $slides, opts) {
var w = $cont.css('overflow','hidden').width();
var h = $cont.height();
opts.cssBefore = opts.cssBefore || {};
var clip;
if (opts.clip) {
if (/l2r/.test(opts.clip))
clip = 'rect(0px 0px '+h+'px 0px)';
else if (/r2l/.test(opts.clip))
clip = 'rect(0px '+w+'px '+h+'px '+w+'px)';
else if (/t2b/.test(opts.clip))
clip = 'rect(0px '+w+'px 0px 0px)';
else if (/b2t/.test(opts.clip))
clip = 'rect('+h+'px '+w+'px '+h+'px 0px)';
else if (/zoom/.test(opts.clip)) {
var top = parseInt(h/2,10);
var left = parseInt(w/2,10);
clip = 'rect('+top+'px '+left+'px '+top+'px '+left+'px)';
}
}

opts.cssBefore.clip = opts.cssBefore.clip || clip || 'rect(0px 0px 0px 0px)';

var d = opts.cssBefore.clip.match(/(\d+)/g);
var t = parseInt(d[0],10), r = parseInt(d[1],10), b = parseInt(d[2],10), l = parseInt(d[3],10);

opts.before.push(function(curr, next, opts) {
if (curr == next) return;
var $curr = $(curr), $next = $(next);
$.fn.cycle.commonReset(curr,next,opts,true,true,false);
opts.cssAfter.display = 'block';

var step = 1, count = parseInt((opts.speedIn / 13),10) - 1;
(function f() {
var tt = t ? t - parseInt(step * (t/count),10) : 0;
var ll = l ? l - parseInt(step * (l/count),10) : 0;
var bb = b < h ? b + parseInt(step * ((h-b)/count || 1),10) : h;
var rr = r < w ? r + parseInt(step * ((w-r)/count || 1),10) : w;
$next.css({ clip: 'rect('+tt+'px '+rr+'px '+bb+'px '+ll+'px)' });
(step++ <= count) ? setTimeout(f, 13) : $curr.css('display', 'none');
})();
});
$.extend(opts.cssBefore, { display: 'block', opacity: 1, top: 0, left: 0 });
opts.animIn   = { left: 0 };
opts.animOut   = { left: 0 };
};

})(jQuery);



Thursday, 5 May 2016

Troubleshooting of SharePoint 2013 Workflow




1.    User Profile Service
2.       App Management Service
3.       Managed Metadata services
4.       Workflow Proxy Services Connected
5.       Association of workflow services with targeted  Web Application

6.       Register-SPWorkflowService -SPSite http://site:port/ –WorkflowHostUri http://wfm1:12291/ –AllowOAuthHttp


7.       Make sure the “http://wfm1:12291/”  services is running and Status is Active


8.       get-WFStatus using powershell


   if not active or connected then  Verify that all the following Windows NT services are running if not then start or restart:
a.     WorkflowServiceBackend
b.     Service Bus Backend
c.     Service Bus Gateway
d.     FabricHostSvc
e.     Windows Fabric App


IF error à unable to properly communicate with the workflow service or  Create designer WF for testing. When you trying to publishing the designer WF. It will throw Scope State Error
Try to re-register proxy with scope name
Register-SPWorkflowService -SPSite http://sit:port/ –WorkflowHostUri http://wfm1:12291/ –AllowOAuthHttp –Force -ScopeName “SharePoint”

IF workflow  getting Suspended or Workflow getting Automatically Cancelled or getting Token Issue.

Refresh “Trusted Security Token Services Metadata feed” Timer job.


Configure Workflow Manager with the SharePoint Server 2013 farm

Configure Workflow Manager to work with the SharePoint Server 2013 farm
You must consider the following two key factors before configuring Workflow Manager to work with SharePoint Server 2013.
  • Is Workflow Manager installed on a server that is part of the SharePoint farm?
  • Will communication between Workflow Manager and SharePoint Server 2013 use HTTP or HTTPS?

Prerequisites
Workflow Manager is not a part of the SharePoint installation media and must be downloaded from Microsoft website.
1. We need an additional service account for Workflow Manager Service.
2. User Profile Service application must be configured and running.
3. App Management Service application must be configured and running.
Required
1.    Database Server Name and Credential
2.    WF Installation Account/SharePoint Farm Group Account
3.    Certificate Generation Key to Add Existing Farm


Installation

The first step is to download installation files. We have 2 options:
·         Install through Web Platform Installer v4
·         Install through Web Platform Installer v4 Command Line

I will use the Command Line tool – this tool allows us to download all the required components and install Workflow Manager on an online or offline machine.
1.      Download and install Web Platform Installer v4 Command Line
2.      Open an elevated command prompt and go to the installation directory
cd “c:\Program Files\Microsoft\Web Platform Installer”
3.      Run the following command. It will download Workflow Manager and the other required services: webpicmd /offline /Products:WorkflowManager /Path:c:\WorkflowManagerFiles
4.      Copy the folder with the downloaded Manager (c:\WorkflowManagerFiles) to the destination server.
5.      Open an elevated command prompt and go to the directory cd “c:\WorkflowManagerFiles\bin”
6.      Run the following command to install Workflow Manager WebpiCmd.exe /Install /Products:WorkflowManager /XML:c:/WorkflowManagerFiles/feeds/latest/webproductlist.xml
This command will install the required sevices.
7.      Run the following command to install Workfow Client WebpiCmd.exe /Install /Products:WorkflowClient /XML:c:/WorkflowManagerFiles/feeds/latest/webproductlist.xml
This command will install the required sevices.
8.      Open Workflow Manager Configuration wizard and select Configure Workflow Manager with Default Settings (Recommended).

9.      Fill in the required fields on the next page:
·         SQL SERVER INSTANCE – your SQL Server name
·         USER ID – service account for Workflow Manager service
·         PASSWORD – password for the service account
·         Allow Workflow management over HTTP on this computer – check if you need to use HTTP for testing or development. For production it is recommended to use only SSL.
·         Certificate Generation Key – key required for joining other servers to the farm






10.   Review and confirm all the information on the next page. You can also get all the installation commands for PowerShell.


11.   Review the installation status.


12.   Test the installation by browsing to the Workflow Manager site. You should see a XML definition of Workflow Service.


Configuration


Now we need to connect Workflow service with our SharePoint farm. To achieve this run the following command in SharePoint 2013 Management Shell:
1.  Register-SPWorkflowService -SPSite http://vmsp13 -WorkflowHostUri http://vmsp13:12291 –AllowOAuthHttp


SPSite parameter is your SharePoint site,  WorkflowHostUri is the Workflow Manager service URL (port 12291 is for HTTP, port 12290 is for SSL).
2.  Open SharePoint Central Administration
  1. On the Central Administration Home page, click Application Management.
  2. On the Application Management page, in the Service Applications section, click Configure service application associations.
  3. On the Service Application Associations page, select Web Applications from the View drop-down menu.
  4. In the list of Web applications, in the Application Proxy Group column, click the name of the service application connection group that you want to change.
  5. To add a service connection to the group, select the check box that is next to the service application that you want to add to the connection group. To remove a service application connection from the connection group, clear the check box next to the service application that you want to remove from the connection group. When you have made the changes that you want, click OK.



Now we can create SharePoint 2013 Workflow from SharePoint Designer 2013!





Wednesday, 4 May 2016

Get Farm GUID Uisng Powershell

Get Build version


PS C:\Users\Administrator> (Get-SPFarm).BuildVersion

Major  Minor  Build  Revision
-----  -----  -----  --------
15     0      4569   1000


Get Configuration Database Name

PS C:\Users\Administrator> (Get-SPFarm).name
SharePoint_Config_swcc


Get FARM GUID


PS C:\Users\Administrator> (Get-SPFarm).id

Guid
----
f0b6ac34-919f-4ff8-9960-c2ea9ace7319




Download all WSP From Sharepoint Server using Powershell





$pathName = "c:\WSPFiles\"
foreach ($solution in Get-SPSolution)
   {
 
    $solid = $Solution.SolutionID
    $title = $Solution.Name
    $filename = $Solution.SolutionFile.Name
    $solution.SolutionFile.SaveAs("$pathName\$filename")
}

get Application Pool ID Using Command Promopt



1. Open Command Prompt Run As Administrator
2. type the command below command
cd   C:\Windows\System32\inetsrv\        then press Enter
3. Type appcmd.exe list wp     then press enter

Now the List of Application Pool Will be Available with ID



Saturday, 16 April 2016

On Export to Excel having problem on second Click

client side in HTML Tag add

OnClientClick="_spFormOnSubmitCalled = false;_spSuppressFormOnSubmitWrapper=true;"


Example


<asp:Button ID="btnExportToExcel" runat="server" Text="Export to Excel" onclick="btnExportToExcel_Click" OnClientClick="_spFormOnSubmitCalled = false;_spSuppressFormOnSubmitWrapper=true;" />

Monday, 14 March 2016

Access on ContentBD for deployment using PoweShell


1. Open PowerShell window "Run as Administrator"
2. put in below script desired SiteCollectionName and UserName whom need to grant permission.



$contentdb = Get-SPContentDatabase -Site http://serverName/sites/siteName
Add-SPShellAdmin -UserName 'domainName\userloginid' -database $contentdb

Thursday, 10 March 2016

Web services/WCF binding on Client Machine




Step 1. Accessing Web services with impersonation Credential 

          1. Add Service reference in Project.
          2. Add Service NameSpace
                     using MyNameSpace.MyNameSpacee;
                         MyNameSpacee.MyWebServiceSoapClient myNameSpacee = new MyWebServiceSoapClient();





Step 2. change the binding in web.config/App.Config like below...



<system.serviceModel>
        <bindings>
            <basicHttpBinding>
              <binding name="MyWebServiceSoap">
                <security mode="TransportCredentialOnly">
                  <transport clientCredentialType="Ntlm" proxyCredentialType="None" realm=""/>
                  <message clientCredentialType="UserName" algorithmSuite="Default"/>
                </security>
              </binding>
            </basicHttpBinding>
        </bindings>
        <client>
            <endpoint address=""
                binding="basicHttpBinding" bindingConfiguration="MyWebServiceSoap"
                contract="MyNameSpace.MyWebServiceSoap" name="MyWebServiceSoap" />
        </client>
    </system.serviceModel>

          3. Add Dynamically Address for current Web

  myNameSpacee.Endpoint.Address = new System.ServiceModel.EndpointAddress(SPContext.Current.Web.Url+"/_layouts/15/MyWebServices/MyWebService.asmx");

OR

Add Static Services Address in

Web.config/App.config like below inside Client Tag

 <client>
            <endpoint address="http://site:port/_layouts/15/MyWebServices/MyWebService.asmx""
                binding="basicHttpBinding" bindingConfiguration="MyWebServiceSoap"
                contract="MyNameSpace.MyWebServiceSoap" name="MyWebServiceSoap" />
        </client>



            myNameSpacee.ChannelFactory.Credentials.Windows.ClientCredential = System.Net.CredentialCache.DefaultNetworkCredentials;
            myNameSpacee.ClientCredentials.Windows.AllowedImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Impersonation;



4. finally Call your WebMethod 


myNameSpacee.GetMYMethod();










OutLook Add-In VSTOInstaller.exe.config error while installing Add-in

Error like below 


The value of the property 'type' cannot be parsed. The error is: Could not load file or assembly 'Microsoft.Office.BusinessApplications.Fba, Version=14.0.0.0, Culture=neutral, PublicKeyToken=XXXXXXXXX' or one of its dependancies. The system cannot find the file specified. (C:\Program Files (x86)\Common Files\Microsoft Shared\VSTO\10.0\VSTOInstaller.exe.Config line 10)

or

The value of the property 'type' cannot be parsed. The error is: Could not load file or assembly 'Microsoft.Office.BusinessApplications.Fba, Version=14.0.0.0, Culture=neutral, PublicKeyToken=XXXXXXXXX' or one of its dependancies. The system cannot find the file specified. (C:\Program Files\Common Files\Microsoft Shared\VSTO\10.0\VSTOInstaller.exe.Config line 10)


Solution




  • Open Windows Explorer
  • Open the folder C:\Program Files (x86)\Common Files\Microsoft Shared\VSTO\10.0
  • If that folder does not exist, try C:\Program Files\Common Files\Microsoft Shared\VSTO\10.0
  • Rename the file VSTOInstaller.exe to VSTOInstaller.exe.Config