/* 
 * page control functions
 */


    window.is_dirty = false;
    window.ignore_changes = false;
    window.prev_page;
    window.default_page = "http://whatbottle.local/";
    window.ignore_is_dirty = false;



    function put_prev_page_old(override){
        //put prev page details to session
        console.log('put_prev_page()');
        var this_page = jQuery(location).attr('href');
        var prev_page = document.referrer;
        console.log('this page = '+this_page);
        console.log('prev page = '+prev_page);
        if(this_page != prev_page){
            $.post("/rpc_page_control.php", {
                //update page control session
                this_page: this_page,
                prev_page: prev_page,
                page_override: override,
                action: 'put'
            }, function(data){
                if(data.success){
                    console.log('put_prev_page complete');
                }else{
                    console.log('put_prev_page failed');
                }
            }, "json");
        }

    }


    function page_flow_set(child_url, parent_url, redirect){
        //1. adds record to page_flow array associating the parent to child
        //2. redirects to the child if redirect is true

        console.log('page_flow_set()...');
        console.log('child_page = '+child_url);
        console.log('parent_page = '+parent_url);
    
            $.post("/rpc_page_control.php", {
                //update page control session
                child_page: child_url,
                parent_page: parent_url,
                action: 'page_flow_set'
            }, function(data){
                if(data.success){
                    console.log('page_flow_set complete');
                    if(redirect){
                        window.location = child_url;
                    }
                }else{
                    console.log('page_flow_set failed');
                }
            }, "json");
 

    }


    function page_flow_return(child_url){
        //1. gets parent record from page_flow array for associated child
        //2. redirects to the parent
        var url;

        console.log('page_flow_return()...');
        console.log('child_url = '+child_url);

            $.post("/rpc_page_control.php", {
                //update page control session
                child_page: child_url,
                action: 'page_flow_return'
            }, function(data){
                if(data.success){
                    console.log('page_flow_return complete');
                    if(data.parent_url){
                        url = data.parent_url;
                    }else{
                        url = "/index.php";
                    }

                    close_page(url);
                    //window.location = data.parent_url;

                }else{
                    console.log('put_page_flow failed');
                }
            }, "json");


    }


    
    window.onbeforeunload = function(){
        console.log("ignore_is_dirty="+window.ignore_is_dirty);
        if(is_dirty && window.ignore_is_dirty==false){
            var msg = "You have unsaved changes!";
            return msg;
        }
    };

    

    function get_prev_page(callback){
        //put prev page details to session
        var this_page = jQuery(location).attr('href');
        console.log('get_prev_page for:'+this_page);
        $.post("/rpc_page_control.php", {
            //update page control session
            this_page: this_page,
            action: 'get'
        }, function(data){
            if(data.success){
                console.log('get_prev_page complete');
                //set to default if nothing returned
                if(data.prev_page==null){
                    window.prev_page = window.default_page;
                    
                } else {

                    window.prev_page = data.prev_page;
                    
                }
                console.log(window.prev_page);
                if(typeof callback == 'function'){
                    //redirect
                    callback();
                }
            }else{
                console.log('get_prev_page failed');
                window.prev_page = window.default_page;
                console.log(window.prev_page);
            }
        }, "json");

        

    }


   
    function close_page(url){
        //handle is_dirty
        var redirect_url = url;

        console.log ("close_page url="+redirect_url);

        if((is_dirty || $('#is_dirty').val()>0) && ignore_changes==false){
            //form is_dirty - ask user to commit changes before exiting
            console.log('show unsaved dialog');
            
            //show message - /includes/standard_dialogs.inc.php
            $("#unsaved_changes").dialog({
                    modal: true,
                    buttons: {
                        OK: function() {
                                $(this).dialog('close');
                                //redirect without saving - clear dirty flag to prevent
                                //on_unload event triggering
                                set_is_dirty(false);
                                redirect(redirect_url);
                        },
                        Cancel: function() {
                            $(this).dialog('close');
                        }
                    }
            });

        } else {
            //redirect
            redirect(redirect_url);
        }

    }



    function redirect(url){
        //redirect page
        console.log('redirect = '+url);
        window.location = url;
    }


    
    $(':input').live('change', function(){
        set_is_dirty(true);
    });



    function set_is_dirty(state){
        //manage dirty state and save button
        if(state){
            if(!is_dirty){
                //set flag to dirty
                is_dirty = true;
                console.log('_dirty!_');
                $('#is_dirty').val(1); //hidden field used so that dirty status is serialised with json array to server
                //reset ignore_changes flas
                ignore_changes = false;
            }
        } else {
            //reset dirty flag and set save button to diabled
            is_dirty = false;
            $('#is_dirty').val(0);

        }
    }


    


    function error_dialog(msg){
        //show generic error message dialog
        
        $("#error_dialog_text").replaceWith('<div><p>'+msg+'</p></div>');
        
        $("#generic_error").dialog({
                    modal: true,
                    buttons: {
                        OK: function() {
                                $(this).dialog('close');

                        }
                    }
            });

       
    }
