if (typeof UIEvent == "undefined") UIEvent = {}
UIEvent.VIEW_STYLE_CHANGED = "UIViewStyleChanged";
UIEvent.PLAY_FIRED         = "UIPlayProgramFired";

$(function() {
    var search_interval = null;
    var SEARCH_DEFAULT_VALUE = $('#search_query').val();
    $('#search_query').focus(function() {
        if (this.value == SEARCH_DEFAULT_VALUE)
            $(this).val("");
    })
    $('#search_query').blur(function() {
        if (this.value == "")
            $(this).val(SEARCH_DEFAULT_VALUE);
    })
    
    $('#search_query').keydown(function() {
        clearInterval(search_interval);
        var query = this.value;
		if (query == SEARCH_DEFAULT_VALUE)
			query = "";
        if (query.length > 1) {
             search_interval = setTimeout(function () {
                reveal_fake_results(query);
            }, 500);
        } else
            search_interval = setTimeout(hide_fake_results, 500);
    });
    
    ws = $.VXOneWS({customer: CUSTOMER_ID, site_id:  SITE_ID, language: LANGUAGE_ID});
    
    // Load channels. No display event
    //ws.get_channels(function() {});
});

function switch_language(lang) {
    if (typeof(program_permalinks[clip_id]) != "undefined") {
        document.location.href =  "/"+ lang +"/program/"+ program_permalinks[clip_id];
        return false;
    } else {
        return true;
    }
}

function show_overlay_banner() {
    $("#video_overlay_banner").show();
    $("#video_overlay_banner_close").click(function() {
        $("#video_overlay_banner").hide();
    });
}

function hide_overlay_banner() {
    $("#video_overlay_banner").hide();
}

function supports_canvas() {
  return !!document.createElement('canvas').getContext;
}

function setKlass(link, target, klass) {
    $(link.parentElement).find("a").removeClass("on");
    $(link).addClass("on");
    $("#"+target).attr("class", klass);
    dispatch(UIEvent.VIEW_STYLE_CHANGED, klass);
    return false;
}

function goToVideos() {
    var channel = $("#channel_list a.on").attr("rel");
    var category = $("#category_list a.on").attr("rel");
    document.location.href = BASE_URL + "videos/"+ encodeURI(channel) +"/"+ encodeURI(category);
    return false;
}

function switchVideoView(link, mode) {
    if (mode == 'list') {
        setKlass(link, 'clip_list', 'list');
        pagination.setViewHeight(460);
        pagination.setPerPage(4);
    } else if (mode == 'grid') {
        setKlass(link, 'clip_list', 'grid');
        pagination.setViewHeight(460);
        pagination.setPerPage(20);
    }
}

function vidunia_play_clip(evt) {
    var clip      = evt.data;    
    inventory_id  = clip.inventoryUid;    
    clip_id       = clip.programUid;
    technology_id = clip.technologyId;
    
    if (typeof(clip.programInventory) != "undefined")
        inventory_id = clip.programInventory[0].inventoryUid;
    
    $.log("playing clip vidunia_play_clip "+ inventory_id + " - "+ clip_id);
    $.log(clip);
    
	if (clip_id && inventory_id) {
	    if (player_type == "html5") {
	        player = new HTML5Player(ws);
	        player.playClipId(inventory_id, technology_id); 
	    }
    
	    if (player_type == "flash") {
			$.log(technology_id)
	        $("#OSMFPlayer").get(0).playProgram(clip_id, inventory_id, LANGUAGE_ID, technology_id);
	    }
		
		dispatch(UIEvent.PLAY_FIRED, clip);
	}

    return false;
}

// tmp

function program_purchased(program_id) {
    //return false;
    return true;
}

/* WS events */

/*
listen(Event.DATA_LOADED, function(evt, service_name, data) {
    $.log("Event.DATA_LOADED");
    $.log(evt);
    $.log(service_name);
    $.log(data);
    $.log("--");
});
*/

listen(UIEvent.PLAY_FIRED, function(evt, clip) {
	if (clip.programUid) {
        $("#share_this").show();
        $("#video_data_advert").hide();
        
        ws.get_program_info(clip.programUid, clip.technologyId, function(data) {
            $("#video_data").show();
            $("#video_title").html(data.programInfo.title);
            $("#video_description").html("");
            $("#video_description").html(data.programInfo.synopsis);
            
            // tmp
            var addthis = $("#addthis_link");
            addthis.attr("addthis:url", "http://vidunia.com/"+ program_url(clip));
            addthis.attr("addthis:title", data.programInfo.title);
            addthis.attr("addthis:description", data.programInfo.synopsis);
        });
    } else {
        $("#video_data").hide();
    }
});

listen(UIEvent.PLAY_FIRED, function(evt, info) {
	$.log("PLAY_FIRED", evt, info);
});

listen(UIEvent.PAGE_INITIALISED, function(evt, info) {
    //$.log("Page initialised! "+ get_cookie("_current_page"));
    var new_page = parseInt(get_cookie("_current_page"));
    if (new_page && new_page < info.pages) {
        dispatch(UIEvent.CHANGE_PAGE, get_cookie("_current_page"));
    }
    set_cookie("_current_page", 0);
});
listen(UIEvent.PAGE_CHANGED, function(evt, info) {
    //$.log("Page changed!"+ info.current);
    set_cookie("_current_page", info.current);
});

/*
listen(Event.DATA_LOADED, function(evt, service_name, data) {
    if (service_name == "GetChannels") {
        var channels_container = $("#channel_links");
        channels_container.html("");
        for (var i=0; i < data.channels.length; i++) {
            channel = data.channels[i];
            if (channel.channelUid == "c4b0ef4b-b096-4a3c-b26c-1966db3be957")
                continue;
            
            var link = $("<a></a>");
            link.attr("href", BASE_URL + "videos/"+ channel.channelUid);
            link.html(channel.name);
            link.attr("rel", channel.channelUid);
            if (typeof(channel_name) != "undefined" && channel.channelUid == channel_name)
                link.addClass("on");
            //link.bind("click", channel, delegate(this, this.selectChannel));
            channels_container.append(link);
        }
    }
});
*/

/* HTML5 player events */
// fixme
/*
listen(Event.CLIP_PLAYING, function(evt, player) {
    $.log("clip playing");
    setTimeout(show_overlay_banner, 2000);
    setTimeout(hide_overlay_banner, 15000);
});
*/

listen(Event.CLIP_ENDED, function(evt, player) {
    $.log("clip ended");
    hide_overlay_banner();
    $("#video_container").hide();
    $("#swipe_container").show();
    new SwipeWindow({webservice: ws, channel_uid: swipe_channel_id});
});

listen(Event.CLIP_ENDED, function(evt, player) {
    //alert("CLIP_ENDED FFS");    
    
});

/* Flash player events */

/*
inventoryUid: "70c521a7-ff19-4452-b0d2-466fcf19cfca"
languageId: 50
programUid: "354e51c2-1686-447b-81e3-1f36c691193f"


addEventListener("framework.events.ProgramStatusEvent.PlayState", function(name, params, source) {
    $.log("PlayState "+ source);
    $.log(params);
});

addEventListener("framework.events.ProgramStatusEvent.ProgressUpdate", function(name, params, source) {
    $.log("ProgressUpdate "+ source);
    $.log(params);
});
*/


//addEventListener(vxEvents.PROGRAM_COMPLETE, function(name, params, source) {
addEventListener("com.kit.framework.events.ProgramEvent::EndProgram", function(name, params, source) {
    $.log("ProgramComplete "+ source);
    $.log(params);

    $("#OSMFPlayer").hide();
    $("#swipe_container").show();
    new SwipeWindow({webservice: ws, channel_uid: swipe_channel_id});
});

function reveal_fake_results(query) {
    ws.search_programs(query, function(data) {
        //var clip_list = $("#"+ this.config.clip_container_id);
        var clip_list = $("#search_results_list");
        clip_list.html("");
                    
        for (var i=0; i < data.contentList.length; i++) {
            var clip = data.contentList[i];

            var div  = $("<div></div>");
            div.addClass("item");
            
            var link = $("<a></a>");
            link.attr("href", BASE_URL + "?inventory="+ clip.inventoryUid + "&clip="+ clip.programUid);
            link.bind('click', clip, vidunia_play_clip);
            link.addClass("thumb");
            
            var img = $("<img></img>");
            img.attr("width", 120);
            img.attr("height", 68);
            try {
                img.attr("alt", clip.thumbnails[0].title);
                img.attr("src", clip.thumbnails[0].url);
            } catch(e) {
                $.log("** No thumbnails");
                $.log(e);
            }
            
            var h3 = $("<h3></h3>");
            h3.html(clip.title);
            h3.addClass("title");
            
            var p = $("<p></p>");
            p.addClass("desc");
            p.html(clip.titleBrief); // synopsis
            
            link.append(img).append(h3).append(p);
            
            //link.bind("click", clip, delegate(this.player, this.player.play));
            //link.bind("click", clip, delegate(this, alert));
            div.append(link);

            clip_list.append(div);
        }
        
        $("#search_results_container").slideDown('slow');
    });
}

function hide_fake_results() {
    $("#search_results_container").slideUp('slow');
}

