﻿//***************************************************************************************************//
                            //Create an object of YouTubeChannel//
                            //Assign Required field//
                            //Call Method __GetChannelVideo//
                            //Use videoIDs property to get all the videos from the channel//
                            //Get property of each video from video class//
//***************************************************************************************************//

function YouTubeChannel() {
    this.channelName = ""; //Required field
    this.maxVideo = 20;  
    this.getChannelURL = "http://gdata.youtube.com/feeds/api/users/";
    this.getVideoURL = "http://gdata.youtube.com/feeds/api/videos/";
    this.videoID;
    this.isRandom = false;
    this.isMultiple = false;
    this.jsonURL = "?v=2&alt=json-in-script&callback=";
    this.data = null;
    this.videoIDs = new Array();
    this.embed = "http://www.youtube.com/embed/";
    this.iFrameEmbed = '<iframe title="YouTube video player" class="youtube-player" type="text/html" width="" height="" src="" frameborder="0" allowFullScreen></iframe>';
    this.objName = "YouTubeChannelObj"; //Required field or create object named 'YouTubeChannelObj'
    this.videoHeight = '410';
    this.videoWidth = '685';
}

function video() {
    this.id = "";
    this.YouVidURL = "";
    this.iFrameURL = "";
	this.iFrameSrc = "";
    this.title = "";
    this.published = "";
    this.updated = "";
    this.favCount = 0;
    this.viewCount = 0;
    this.thumbObj = new videoThumb();
    this.width = "380";
    this.height = "290";
}
function videoThumb() {
    this.thumbURL = "";
    this.width = "";
    this.height = "";
}
YouTubeChannel.prototype.__GetChannelVideo = function () {    
var url = this.getChannelURL + this.channelName + '/uploads' + this.jsonURL + this.objName + '.__YoutubeFeedCallback';
   // var gObj = this;
    document.writeln('<script type="text/javascript" src="' + url + '"></script>');
}

YouTubeChannel.prototype.__YoutubeFeedCallback = function (data) {
    var count1 = 0;
    var vid;
    this.data = data;
    //alert(this.jsonURL);    
    if (this.isMultiple || (this.videoID != null && this.videoID != "")) {
        for (var entr in data.feed.entry) {

            vid = new video();

            vid.id = data.feed.entry[entr].id['$t'].substr(27);
            vid.YouVidURL = data.feed.entry[entr]["media$group"]["media$player"].url;
            vid.iFrameSrc = this.embed + vid.id + '?wmode=transparent'; 
            vid.iFrameURL = this.iFrameEmbed.replace('src=""', 'src="' + this.embed + vid.id + '?wmode=transparent"').replace('width="" height=""', 'width=' + this.videoWidth + ' height=' + this.videoHeight + '');
            vid.title = data.feed.entry[entr].title['$t'];
            vid.published = new Date(data.feed.entry[entr].published['$t'].substr(0, 4), data.feed.entry[entr].published['$t'].substr(5, 2) - 1, data.feed.entry[entr].published['$t'].substr(8, 2)).toLocaleDateString();
            vid.updated = new Date(data.feed.entry[entr].updated['$t'].substr(0, 4), data.feed.entry[entr].updated['$t'].substr(5, 2) - 1, data.feed.entry[entr].updated['$t'].substr(8, 2)).toLocaleDateString();
            //vid.category = data.feed.entry[entr].updated['$t'];
            if (data.feed.entry[entr].yt$statistics != null) {
                vid.favCount = data.feed.entry[entr].yt$statistics['favoriteCount'];
                vid.viewCount = data.feed.entry[entr].yt$statistics['viewCount'];
            }
            vid.thumbObj.thumbURL = data.feed.entry[entr].media$group.media$thumbnail[0]['url'];
            vid.thumbObj.width = data.feed.entry[entr].media$group.media$thumbnail[0]['width'];
            vid.thumbObj.height = data.feed.entry[entr].media$group.media$thumbnail[0]['height'];
            //alert(YouTubeChannelObj.isRandom);
            if (this.videoID != null && this.videoID != "" && this.videoID == vid.id) {
                this.videoIDs.unshift(vid);
                break;
            }
            else {
                this.videoIDs.push(vid);
            }

            count1 = count1 + 1;
            if (count1 >= this.maxVideo) {
                break;

            }
            //alert(entr);
        }
    }
    else {
        vid = new video();
        var entr = 0;
        if (this.isRandom) {
            entr = Math.floor(Math.random() * (this.maxVideo < data.feed.entry.length ? this.maxVideo : data.feed.entry.length));
        }
        vid.id = data.feed.entry[entr].id['$t'].substr(27);
        vid.YouVidURL = data.feed.entry[entr]["media$group"]["media$player"].url;
        vid.iFrameSrc = this.embed + vid.id + '?wmode=transparent';
        vid.iFrameURL = this.iFrameEmbed.replace('src=""', 'src="' + this.embed + vid.id + '?wmode=transparent"').replace('width="" height=""', 'width=' + this.videoWidth + ' height=' + this.videoHeight + '');
        vid.title = data.feed.entry[entr].title['$t'];
        vid.published = new Date(data.feed.entry[entr].published['$t'].substr(0, 4), data.feed.entry[entr].published['$t'].substr(5, 2) - 1, data.feed.entry[entr].published['$t'].substr(8, 2)).toLocaleDateString();
        vid.updated = new Date(data.feed.entry[entr].updated['$t'].substr(0, 4), data.feed.entry[entr].updated['$t'].substr(5, 2) - 1, data.feed.entry[entr].updated['$t'].substr(8, 2)).toLocaleDateString();
        //vid.category = data.feed.entry[entr].updated['$t'];
        if (data.feed.entry[entr].yt$statistics != null) {
            vid.favCount = data.feed.entry[entr].yt$statistics['favoriteCount'];
            vid.viewCount = data.feed.entry[entr].yt$statistics['viewCount'];
        }
        vid.thumbObj.thumbURL = data.feed.entry[entr].media$group.media$thumbnail[0]['url'];
        vid.thumbObj.width = data.feed.entry[entr].media$group.media$thumbnail[0]['width'];
        vid.thumbObj.height = data.feed.entry[entr].media$group.media$thumbnail[0]['height'];
        //alert(YouTubeChannelObj.isRandom);
        this.videoIDs[this.videoIDs.length] = vid;
    }
    //writeDetails();

    //data.feed.entry.sort(function(a, b) { return parseInt(a.yt$statistics['viewCount'], 10) - parseInt(b.yt$statistics['viewCount'], 10) });
    //data.feed.entry.sort(function(a, b) { return new Date(a.updated['$t']) - new Date(b.updated['$t']) });
    //var test = "";
}



