// Ajax fix voor page reload
if (document.location.href.search(/#/) != -1) {
    var url = document.location.href.split("#");
    
    if (isRedirectionUrlValid(url[1])) {
	    document.location.href  =  url[1];
    }
}

/**
 * Returns true if the url passed can be considered a valid url
 * to redirect the page to
 * 
 * @param String url
 * @return Boolean
 */
function isRedirectionUrlValid(url)
{
    if (url.indexOf("http") == 0 || url.indexOf("/") == 0) {
	return true;
    }
    
    return false;
}

$(document).ready(function(){
    //initHistory();
    ToggleFaqItems();
    initAutocomplete();
    setBehaviour();
    initARC();
    setRollover();
    
    $('.stem_box .rate-program-button').live('click', function(){
    	var currentElement = $(this);
    	var vote = currentElement.attr('id').split('-').pop();
    	var hiddenInput = currentElement.prevAll('input[name="programRating"]');
    	hiddenInput.val(vote);
    	return false;
    });
    
    $('.stem_box .rate-program-button').live('mouseover', function(){
    	var currentElement = $(this);
    	currentElement.prevAll('span').andSelf().each(function(){
    		$(this).addClass('active');
    		$(this).removeClass('inactive');
    	});
    	
    	currentElement.nextAll('span').each(function(){
    		$(this).removeClass('active');
    		$(this).addClass('inactive');
    	});
    });
    
    $('.stem_box .rate-program-button').live('mouseout', function(){
		var savedVote = $(this).prevAll('input[name="programRating"]').val();
		if (!savedVote > 0) {
			savedVote = 0;
		}
		var j = 0;
		var roundedSavedVote = Math.round(savedVote / 10.0) * 10;
		var i = 10;
    	$(this).parent().children('.rate-program-button').each(function(){
    		if (i <= roundedSavedVote ) {
        		$(this).removeClass('inactive');
    			$(this).addClass('active');
    		} else {
        		$(this).removeClass('active');
        		$(this).addClass('inactive');
    		}
    		i += 10;
    	});
    });
    
    $('.stem_box a.program-rating-submit').live('click', function(){
    	var anchorElement = $(this);
    	var programId = anchorElement.prevAll('input[name="programId"]').val();
    	var vote = anchorElement.prevAll('input[name="programRating"]').val();
    	doVote(programId, vote);
    	return false;
    });
});

function doVote(programId, vote)
{
	if (programId == '') {
		return false;
	}
    ajax_load("/programmas/vote/?id=" + programId + "&vote=" + vote, null, true);
}

/**
* Zet de eigenschappen voor een aantal elementen op basis van classes etc
*
*/
function setBehaviour(tabid) {

    // Ontkoppel eerst oude eigenschappen
    $('a').unbind();
    $('form').unbind();
    $('div').unbind();

    //tabs
    
    $('#tabs').tabs({selected: tabid,spinner: 'Bezig met laden...' });
    $('#tabs_programma').tabs({spinner: 'Bezig met laden...' });
    $('#tabs_aflevering').tabs({spinner: 'Bezig met laden...' });
    $('#tabs_favorites').tabs({ selected: tabid, spinner: 'Bezig met laden...' });
    
    
    

    //voting
    setRating();

    // Zet de ajax beviour (ajax.js)
    setAjaxBehaviour();

    $('.slider_news .slider_item').click(function (){
        $('.slider_news .slider_item').removeClass('slider_item_active');
        $(this).addClass('slider_item_active');
    });

    $('.alerts.checkon').click(function (){
        $(this).removeClass('checkon');
        $(this).addClass('checkoff');
    });

    $('.alerts.checkoff').click(function (){
        $(this).removeClass('checkoff');
        $(this).addClass('checkon');
    });
    
    $('.alles_uitklappen').click(function (){
        //$('.alles_uitklappen').hide();
        //$('.alles_inklappen').css("display", "table-cell");
        $('.inklappen_knop').show();
        $('.uitklappen_knop').hide();
        $('.favorites_blocks').show();
    });
    
    $('.alles_inklappen').click(function (){
        //$('.alles_inklappen').hide();
        //$('.alles_uitklappen').css("display", "table-cell");
        $('.inklappen_knop').hide();
        $('.uitklappen_knop').show();
        $('.favorites_blocks').hide();
    });
}

function setThemasTabs(tabid)
{
    $('#tabs_themas').tabs({ selected: tabid, spinner: 'Bezig met laden...' });
}

function setProgramTabs(tabid)
{
    $('#tabs_aflevering').tabs({spinner: 'Bezig met laden...', selected: tabid });
}

function setFavoritesTabs(tabid){
    
    $('#tabs_favorites').tabs({ selected: tabid, spinner: 'Bezig met laden...' });
    setAjaxBehaviour();
}


// Laad een javascript
function includeScript(uri, callback) {
    var script = document.createElement("script");
    script.src = uri;
    script.type = "text/javascript";
    script.language = "javascript";
    if (callback != null) {
        script.onreadystatechange = function() {
            if (script.readyState == "complete") {
                callback();
            };
        };
        script.onload = callback;
    }
    document.getElementsByTagName("head")[0].appendChild(script);
    return false;
}

// Laad een stylesheet
function includeStyle(uri) {
    $("head").append("<link rel='stylesheet' type='text/css' href='" + uri + "' />");
}

var notifier = 0;
function notify(message, type) {
    notifier++;
    if (!$('#notifier').attr('id')) {
        $('#content').append("<div id='notifier'></div>");
    }
    $('#notifier').append("<div id='not" + notifier + "' class='notification'>" + message + "</div>");
    $('#notifier').css('top', 100 + $(window).scrollTop());
    window.setTimeout("$('#not" + notifier + "').fadeOut()", 5000);
}

/**
* openPlayer(sURL, iWidth, iHeight)
*
* Open the 'embedded' player with the given url.
*
* @version 1.0
* @access  public
* @author  A.J. de Vries
* @param   [string]  sURL    - the url to the player with the movie as argument (GET).
* @param   [integer] iWidth  - the width of the player window.
* @param   [integer] iHeight - the height of the player window.
* @return  [void]
*/
function openPlayer(sURL, iWidth, iHeight, aflID) {
    if(sURL != '') {
        iWidth = (iWidth) ? iWidth : 800;
        iHeight = (iHeight) ? iHeight : 612;

        var iLeftPos = (screen.availWidth - iWidth) / 2;
        var iTopPos = (screen.availHeight - iHeight) / 2;
        var sOpts = "toolbar=no, status=no, location=no, menubar=no, resizable=yes,";
        sOpts += " width=" + iWidth + ", height=" + iHeight + ", scrollbars=no,";
        sOpts += "top=" + iTopPos + ",left=" + iLeftPos;
        var eDialog = window.open("", "player", sOpts);
        if (arguments.length > 1 && aflID == 0) {
            eDialog.location = sURL;
        }
        else if(arguments.length == 1) {
            eDialog.location = 'http://www.uitzendinggemist.nl/player_redirect.php?sURL=' + escape(sURL);
        }
        else {
            eDialog.location = 'http://www.uitzendinggemist.nl/player_redirect.php?aflID=' + aflID + '&sURL=' + escape(sURL);
        }
        eDialog.focus();
    }
    return false;
}


/*favorites */


function reloadFavourites(type)
{
    $.get('/mijn/favorietenlijst?type='+type+'&small=1','',
    function(returned_data)
    {
        $("#"+type+"_favorites").html(returned_data);
        setBehaviour();
    });
}

function alertFavorite(favoriteId, mediaType, checkedStatus)
{
    ajax_load('/mijn/alertfavorite?id='+favoriteId+'&check='+checkedStatus+'&type='+mediaType, null, true);
}

function addFavorite(favorite_id,favorite_type){
    ajax_load('/mijn/addfavorite?id='+favorite_id+'&type='+favorite_type,null,true);
}

function removeFavorite(favorite_id,favorite_type){
    $('#items_'+favorite_id).remove();
    ajax_load('/mijn/removefavorite?id='+favorite_id+'&type='+favorite_type,null,true);

}

function colapseFavorite(favorite_id)
{
    $('#program_'+favorite_id).toggle();
    $('#uitklappen_'+favorite_id).toggle();
    $('#inklappen_'+favorite_id).toggle();
}

function sortableFavorite(){

    $(".favorites_sortable").sortable({
        opacity: 0.8,
        cursor: 'resize-ns',
        axis: 'y',
        delay: 50,
        revert: true,
        update: function(){
            ajax_load("/mijn/sequencefavorite/?"+$('.favorites_sortable').sortable('serialize'),null,true);
        }
    });

    $(".favorites_sortable").disableSelection();
}
function setRating(){

    $(".ratings").stars({
        inputType: "select",
        callback: function(ui, type, value)
        {
            ajax_load("/programmas/vote/?id="+ui.options.title+'&vote='+value,null,true);
        }

    });
}

function ToggleFaqItems()
{
    $('h3.question').bind('click', function(e)
    {
        $(this).parent().find('p').toggle('fast');
    });
}

function initAutocomplete()
{
    $('input.autocomplete').each( function()
    {
        if ($.isFunction($(this).autocomplete()) == false)
        {
            var url = $(this).attr('autocompleteurl');

            if (url)
            {
                $(this).unbind();

                if ($(this).attr('autocompletematch'))
                {
                    $(this).autocomplete(url, {
                        mustMatch :true
                    });
                }
                else
                {
                    $(this).autocomplete(url);
                }
                $(this).result(
                function(event, data, formatted) {
                    //console.log(data);
                    $(this).parents('form').append('<input type="hidden" value="1" name="autocompleted_' + $(this).attr('name') + ' />');
                    $(this).parents('form').append('<input type="hidden" value="1" name="autocompleted" />');
                });
            }
        }
    });

	$("input[ac]").each(function(){
		//standard settings
		var k = 3;       //k = aantal karakters tot autoaanvulling begint
		var r = 0;       //r = aantal resultaten (0=oneindig)
		var u = ''; 	 //u= url van het auto aanvul script
		var n = $(this).attr('name') + '_ac'; //n = waar de output (data[1]) heen moet
		var f = ''; 	 //f= functie aan te roepen na het auto aanvullen
		var icoon = 3;

		//get settings
		settings = $(this).attr('ac');
		settings_array = settings.split(' ');
		for(i=0;i<settings_array.length;i++) {
			setting = settings_array[i];
			setting_array = setting.split('=');

			var value = setting_array[1];
			for(j=2;j<setting_array.length;j++) {
				value = value + '=' + setting_array[j];
			}
			
			switch(setting_array[0])
			{
				case 'k':
				var k = value;
				break;
				case 'r':
				var r = value;
				break;
				case 'u':
				var u = value;
				
				break;
				case 'n':
				var n = value;
				break;
				case 'f':
				var f = value;
				break;
			}
		}
		if(u=='') {
			notify('url niet ingevoerd; autocomplete niet mogelijk');
		} else {
//			u = '/autocomplete/' + u;
			if(r==0) r=99999999;
			$(this).autocomplete(u, {
				multiple: false,
				minChars: k,
				mustMatch: false,
				selectFirst: false,
				autoFill: false,
				max: r
			});

			$(this).result(function(event, data, formatted) {
				if (data){
					$("input[name='"+n+"']").val(data[1]);
					if(f != '') {
						// trucje om variabele om te zetten naar string
						// zodat de functie ermee aangeroepen kan worden
						een = f.split('(');
						twee = een[1];
						drie = twee.split(')');
						vier = drie[0];

						variabelen = vier.split(',');
						command = een[0] + "('";
						var vars = new Array();
						for(i=0;i<variabelen.length;i++) {
							vars[i] = eval(variabelen[i]);
							vars[i] = vars[i].replace("'", "\\'");
						}
						command = command + vars.join("','") + "');";
						window.setTimeout(command, 1);
					}
				}
			});
		}
	});
}



// add a table-row with an input field (programs in cms)
function addProgram()
{
    numPrograms++;
    var input = document.createElement("input");
    input.setAttribute("type", "text");
    input.setAttribute("name", "suggestedprograms[]");
    input.setAttribute("class", "autocomplete ac_input");
    input.setAttribute("autocompleteurl", "/cms/extra/suggestrecommended?type=audio");
    input.setAttribute("autocompletematch", "true");

    var td1 = document.createElement("td");
    var text = document.createTextNode("Programma "+numPrograms.toString());
    td1.appendChild(text);

    var td2 = document.createElement("td");
    td2.appendChild(input);

    var tr = document.createElement("tr");
    tr.appendChild(td1);
    tr.appendChild(td2);

    currentEl = document.getElementById("addProgram");
    currentEl.parentNode.insertBefore(tr, currentEl);

    initAutocomplete();

    return false;
}



function selectArchief()
{
    $('#archief').click();
}




function doSlide(url,type)
{

    //weghalen van items
    $('.shuffle_item').fadeOut();

    //ophalen nieuwe items
    $.get(url,'',
    function(returned_data)
    {
        $("#"+type).html(returned_data);
        setBehaviour();
    });
}




$().ready(function() {


    $('textarea.tinymce').tinymce({
        // Location of TinyMCE script
        script_url : '/scripts/tinymce/jscripts/tiny_mce/tiny_mce.js',

        // General options
        theme : "advanced",
        plugins : "safari,pagebreak,style,advimage,advlink,paste,noneditable,visualchars,nonbreaking,xhtmlxtras",

        // Theme options
        theme_advanced_toolbar_location : "top",
        theme_advanced_toolbar_align : "left",
        theme_advanced_statusbar_location : "bottom",
        theme_advanced_resizing : true,

        // Example content CSS (should be your site CSS)
        //content_css : "css/content.css",

        // Drop lists for link/image/media/template dialogs
        template_external_list_url : "lists/template_list.js",
        external_link_list_url : "lists/link_list.js",
        external_image_list_url : "lists/image_list.js",
        media_external_list_url : "lists/media_list.js"

    });

    

    //doSlide('/index/programmas/?type=video');

});


function setRollover() {
    $('.rollover').hover(
        function(){
            var pic = $(this);
            src = $(this).attr("src");
            pic.attr({src : src.replace("_gewoon","_hover")});
        }, function(){
            var pic = $(this);
            src = $(this).attr("src");
            pic.attr({src : src.replace("_hover","_gewoon")});
        }
    );
}

function scrollDown(divID){
    $('#'+divID).scrollTo('+=95px','1000');
}

function scrollUp(divID){
    $('#'+divID).scrollTo('-=95px','1000');
}




/* WIDGET */

function play(type,widget,id,eid){


    if(type=='video'){
        url = '/widget/play?type='+type+'&widget='+widget+'&id='+id+'&eid='+eid;
        $.get(url,'',
        function(returned_data)
        {
            $("#"+type+'_favorites').html(returned_data);
            //setBehaviour();
        });
    }else{

        url = '/widget/play?type='+type+'&widget='+widget+'&id='+id+'&eid='+eid;
        $.get(url,'',
        function(returned_data)
        {
            $("#favorites_player_"+type).html(returned_data);
            //setBehaviour();
        });

    }

}



function returnList(type,widget,id)
{

    url = '/widget/'+widget+'?type='+type+'&widget='+widget+'&id='+id;

    $.get(url,'',
    function(returned_data)
    {
        $("#"+type+'_favorites').html(returned_data);

    });


    $('#'+type).click();

}


function addReaction()
{
    $("#addreaction").val('1');
    $("#pr").click();
}



//cms dingen

function addTheme(strID){
    
    opt = $("select#theme_"+strID).val();
    
    if(opt!=0){
        window.location= '/cms/themes/addsubtheme?id='+opt;
    }else{
        notify('Er zijn maar maximaal 4 subthema\'s toegestaan');
    }
}

function toggleDescription(){
    
    $("#short_desc").toggle();    
    $("#long_desc").toggle();
}



function toggleDescription2(){
    
    $("#short_desc2").toggle();    
    $("#long_desc2").toggle();
}

function initWidgetPage(){
    
        initAutocomplete();
    setBehaviour();
    
    $('#programma_label').click(function (){
        $('#programma').show();
        $('#categorie').hide();
    });

    $('#aanbevolen_label').click(function (){
        $('#programma').hide();
        $('#categorie').hide();
    });

    $('#populair_label').click(function (){
        $('#programma').hide();
        $('#categorie').hide();
    });

    $('#favorieten_label').click(function (){
        $('#programma').hide();
        $('#categorie').hide();
    });

    $('#thema_label').click(function (){
        $('#programma').hide();
        $('#categorie').show();
    });
}

