// $Id$

var j = jQuery.noConflict();

j(function() {
    // Article thumbnail viewing
    j('.image-row-container > img').click(function() {
        var src = j(this).attr('src');
        var srcBits = src.split('/');
        var srcLastBit = srcBits.length - 1;
        var filename = srcBits[srcLastBit];
        srcBits[srcLastBit] = filename.substr(2, filename.length - 2);
        src = srcBits.join('/');
        //j('img#ami').hide();
        //j('img#ami').attr('src', src).fadeIn(1000);
        j('img#ami').attr('src', src);

        // Scroll page to see main image
        var amiTop = Math.floor(j('#ami').offset().top);

        if (window.pageYOffset > amiTop) {
            window.scroll(0, (amiTop - 4));
        }

        return false;
    });

    // Contact form submit
    j('#btn-send').click(function() {
        var isError = false;
        var errorMsg = '';
        var firstErrorField = '';
        var fields = new Array('name', 'email', 'body');

        for (var i = 0; i < fields.length; i++) {
            var field = fields[i];

            // Reset border colour / width
            j('#' + field).css({
                'border-color':'#D0D0D0',
                'border-width':'1px'
            });

            if (j('#' + field).val() == '') {
                j('#' + field).addClass('field-error');
                isError = true;
                errorMsg = 'Please complete all required fields.';

                if (firstErrorField == '') {
                    firstErrorField = field;
                }
            }
        }

        if (isError) {
            if (j('div.msgbox-error').length > 0) {
                j('div.msgbox-error').remove();
            }

            j('div.ajax-msgbox-error > div').html(errorMsg);
            j('div.ajax-msgbox-error').fadeIn(300);
            j('#' + firstErrorField).css({
                'border-color':'#F00000',
                'border-width':'2px'
            });
            j('#' + firstErrorField).focus();
            return false;
        } else {
            return true;
        }
    });

    j('div.ajax-msgbox-error').click(function() {
        j(this).hide();
    });

    // Highlight focused text fields
    j('.text-field').focus(function() {
        j(this).addClass('field-highlight');
    });
    j('.text-field').blur(function() {
        j(this).removeClass('field-highlight');
    });

    if (j('input#acp-username').length > 0) {
        j('input#acp-username').focus();
    }

    // ACP Login
    j('#btn-acp-login').click(function() {
        var isError = false;
        var errorMsg = '';
        var firstErrorField = '';
        var fields = new Array('acp-username', 'acp-passwd');

        for (var i = 0; i < fields.length; i++) {
            var field = fields[i];

            // Reset border colour / width;
            j('#' + field).css({
                'border-color':'#D0D0D0',
                'border-width':'1px'
            });

            if (j('#' + field).val() == '') {
                j('#' + field).addClass('field-error');
                isError = true;
                errorMsg = 'Please complete all fields.';

                if (firstErrorField == '') {
                    firstErrorField = field;
                }
            }
        }

        if (isError) {
            if (j('div.msgbox-error').length > 0) {
                j('div.msgbox-error').remove();
            }

            j('div.ajax-msgbox-error > div').html(errorMsg);
            j('div.ajax-msgbox-error').fadeIn(300);
            j('#' + firstErrorField).css({
                'border-color':'#F00000',
                'border-width':'2px'
            });
            j('#' + firstErrorField).focus();
            return false;
        } else {
            return true;
        }
    });

    // ACP Icons
    j('div.icon-row > a.disabled').click(function() {
        return false;
    });

    // Logout functions
    j('a.logout').click(function() {
        return confirm('Do you really want to logout?');
    });

    // ACP Case Studies
    if (j('input#title').length > 0) {
        j('input#title').focus();
    }

    // Add / update case-studies
    j('.btn-new-case-study').click(function() {
        var isError = false;
        var errorMsg = '';
        var firstErrorField = '';
        var fields = new Array('title', 'page-name', 'body');

        for (var i = 0; i < fields.length; i++) {
            var field = fields[i];

            // Reset border colour / width
            j('#' + field).css({
                'border-color':'#D0D0D0',
                'border-width':'1px'
            });

            if (j('#' + field).val() == '') {
                j('#' + field).addClass('field-error');
                isError = true;
                errorMsg = 'Please complete all required fields.';

                if (firstErrorField == '') {
                    firstErrorField = field;
                }
            }
        }

        if (isError) {
            if (j('div.msgbox-error').length > 0) {
                j('div.msgbox-error').remove();
            }
            if (j('div.msgbox-success').length > 0) {
                j('div.msgbox-success').remove();
            }

            j('div.ajax-msgbox-error > div').html(errorMsg);
            j('div.ajax-msgbox-error').fadeIn(300);
            j('#' + firstErrorField).css({
                'border-color':'#F00000',
                'border-width':'2px'
            });
            j('#' + firstErrorField).focus();
            return false;
        }

        // Check whether page name already exists
        var pageName = j('input#title').val();
        pageName = pageName.replace(/ /g, '-').toLowerCase();

        j.get('../acp/p_case-studies-check.php?action=page_name_exists&page_name=' + pageName,
            function(data) {
                //alert(data);
                return false;
            }
        );

        return true;
    });

    // Toggle ACP 'add new' section(s)
    j('a.toggle-add-new-container').click(function() {
        if (j(this).attr('rel') == 'closed') {
            // Make sure form is empty and set to 'add' rather than 'edit'
            if (j(this).attr('class').indexOf('new-testimonial') > 0) {
                // Testimonial
                j('input#company').val('');
                j('textarea#text').val('');
                j('input#sig').val('');
                j('textarea#keywords').val('');
                j('input#page-description').val('');
                j('input#enabled').attr('checked', 'checked');
                j('input#action').val('add');
                j('input#id').val('-1');
                j('input.btn-new-testimonial').attr('id', 'btn-add');
            } else if (j(this).attr('class').indexOf('new-news') > 0) {
                // News
                j('input#title').val('');
                j('textarea#body').val('');
                j('textarea#keywords').val('');
                j('input#page-description').val('');
                j('input#published').attr('checked', '');
                j('input#enabled').attr('checked', 'checked');
                j('input.btn-new-news').attr('id', 'btn-add');
            }

            j('div.add-new-form-container').fadeIn(750);
            j(this).attr('rel', 'open');
            j(this).css({
                'background-position':'-32px 0'
            });
        } else {
            j('div.add-new-form-container').fadeOut(350);
            j(this).attr('rel', 'closed');
            j(this).css({
                'background-position':'0 0'
            });
        }

        return false;
    });

    j('a#add-new-case-study').click(function() {
        if (j(this).attr('rel') == 'open') {
            j('input#title').focus();
        }
    });

    j('a#add-new-testimonial').click(function() {
        if (j(this).attr('rel') == 'open') {
            j('input#company').focus();
        }
    });

    j('a#add-new-news').click(function() {
        if (j(this).attr('rel') == 'open') {
            j('input#title').focus();
        }
    });

    // Open new window for previews
    j('a.preview').click(function() {
        var url = j(this).attr('href');
        window.open(url);
        return false;
    });

    // Edit / delete case studies / testimonials / services etc
    j('img.click').live('click', function() {
        var item = j(this).attr('id');
        var bits = item.split('-');

        if (bits[0] == 'casestudy') {
            // Case studies
            if (bits[1] == 'edit') {
                // Edit
                j.get(
                    'case-studies.ajax.php?action=edit&id=' + bits[2],
                    function(data) {
                        var article = data.split('||');
                        var status;

                        j('input#title').val(article[2]);
                        j('input#page-name').val(article[1]);
                        j('input#cat').val(article[3]);
                        j('textarea#body').val(article[6]);
                        j('textarea#keywords').val(article[4].replace(/,/g, "\n"));
                        j('input#page-description').val(article[5]);

                        if (article[10] == '1') {
                            status = 'checked';
                        } else {
                            status = '';
                        }
                        j('input#published').attr('checked', status);

                        if (article[9] == '1') {
                            status = 'checked';
                        } else {
                            status = '';
                        }
                        j('input#force-boxed').attr('checked', status);

                        if (article[11] == '1') {
                            status = 'checked';
                        } else {
                            status = '';
                        }
                        j('input#enabled').attr('checked', status);

                        // Update form data
                        j('input.btn-new-case-study').attr('id', 'btn-update');
                        j('input#action').val('edit');
                        j('input#id').val(bits[2]);

                        if (j('a.toggle-add-new-container').attr('rel') == 'closed') {
                            j('div.add-new-form-container').fadeIn(750);
                            j('a.toggle-add-new-container').attr('rel', 'open');
                            j('a.toggle-add-new-container').css({
                                'background-position':'-32px 0'
                            });
                        }
                    }
                );
            } else if (bits[1] == 'delete') {
                // Delete
                if (confirm('Really delete this case-study?')) {
                    j.get(
                        'case-studies.ajax.php?action=delete&id=' + bits[2],
                        function(data) {
                            if (data == 'true') {
                                // Reload table
                                j.get(
                                    'case-studies.ajax.php?action=get_datagrid&enabled_only=0',
                                    function(html) {
                                        j('#datagrid-container').html(html);
                                    }
                                );
                            }
                        }
                    );
                }
            }
        } else if (bits[0] == 'testimonial') {
            // Testimonials
            if (bits[1] == 'edit') {
                // Edit
                j.get(
                    'testimonials.ajax.php?action=edit&id=' + bits[2],
                    function(data) {
                        var testimonial = data.split('||');
                        var status;

                        j('input#company').val(testimonial[1]);
                        j('textarea#text').val(testimonial[2]);
                        j('input#sig').val(testimonial[3]);
                        j('textarea#keywords').val(testimonial[5].replace(/,/g, "\n"));
                        j('input#page-description').val(testimonial[6]);

                        if (testimonial[7] == '1') {
                            status = 'checked';
                        } else {
                            status = '';
                        }
                        j('input#enabled').attr('checked', status);

                        // Update form elements
                        j('input.btn-new-testimonial').attr('id', 'btn-update');
                        j('input#action').val('edit');
                        j('input#id').val(bits[2]);

                        if (j('a.toggle-add-new-container').attr('rel') == 'closed') {
                            j('div.add-new-form-container').fadeIn(750);
                            j('a.toggle-add-new-container').attr('rel', 'open');
                            j('a.toggle-add-new-container').css({
                                'background-position':'-32px 0'
                            });
                        }
                    }
                );
            } else if (bits[1] == 'delete') {
                // Delete
                if (confirm('Really delete this testimonial?')) {
                    j.get(
                        'testimonials.ajax.php?action=delete&id=' + bits[2],
                        function(data) {
                            if (data == 'true') {
                                // Reload table
                                j.get(
                                    'testimonials.ajax.php?action=get_datagrid&enabled_only=0',
                                    function(html) {
                                        j('#datagrid-container').html(html);
                                    }
                                );
                            }
                        }
                    );
                }
            }
        } else if (bits[0] == 'news') {
            // News
            if (bits[1] == 'edit') {
                // Edit
                j.get(
                    'news.ajax.php?action=edit&id=' + bits[2],
                    function(data) {
                        var article = data.split('||');
                        var status;

                        j('input#title').val(article[2]);
                        j('input#page-name').val(article[1]);
                        j('textarea#body').val(article[5]);
                        j('textarea#keywords').val(article[3].replace(/,/g, "\n"));
                        j('input#page-description').val(article[4]);

                        if (article[12] == '1') {
                            status = 'checked';
                        } else {
                            status = '';
                        }
                        j('input#published').attr('checked', status);

                        if (article[13] == '1') {
                            status = 'checked';
                        } else {
                            status = '';
                        }
                        j('input#force-boxed').attr('checked', status);

                        if (article[14] == '1') {
                            status = 'checked';
                        } else {
                            status = '';
                        }
                        j('input#enabled').attr('checked', status);

                        // Update form elements
                        j('input.btn-new-news').attr('id', 'btn-update');
                        j('input#action').val('edit');
                        j('input#id').val(bits[2]);

                        if (j('a.toggle-add-new-container').attr('rel') == 'closed') {
                            j('div.add-new-form-container').fadeIn(750);
                            j('a.toggle-add-new-container').attr('rel', 'open');
                            j('a.toggle-add-new-container').css({
                                'background-position':'-32px 0'
                            });
                        }
                    }
                );
            } else if (bits[1] == 'delete') {
                // Delete
                if (confirm('Really delete this news article?')) {
                    j.get(
                        'news.ajax.php?action=delete&id=' + bits[2],
                        function(data) {
                            if (data == 'true') {
                                // Reload table
                                j.get(
                                    'news.ajax.php?action=get_datagrid&enabled_only=0',
                                    function(html) {
                                        j('#datagrid-container').html(html);
                                    }
                                );
                            }
                        }
                    );
                }
            }
        }

        return false;
    });

    // Toggle enabled / disabled status
    j('img.toggle-status').live('click', function() {
        var item = j(this).attr('id');
        var bits = item.split('-');
        var imgBtn = this;

        if (bits[0] == 'casestudy') {
            j.get(
                'case-studies.ajax.php?action=toggle_status&id=' + bits[2],
                function(data) {
                    if (data == 'enabled') {
                        j(imgBtn).attr({
                            src: '../_images/acp_icons/16/enabled.png',
                            rel: 'enabled',
                            alt: '[enabled]',
                            title: 'Disable this case-study'
                        });
                    } else {
                        j(imgBtn).attr({
                            src: '../_images/acp_icons/16/disabled.png',
                            rel: 'disabled',
                            alt: '[disabled]',
                            title: 'Enable this case-study'
                        });
                    }
                }
            )
        } else if (bits[0] == 'testimonial') {
            j.get(
                'testimonials.ajax.php?action=toggle_status&id=' + bits[2],
                function(data) {
                    if (data == 'enabled') {
                        j(imgBtn).attr({
                            src: '../_images/acp_icons/16/enabled.png',
                            rel: 'enabled',
                            alt: '[enabled]',
                            title: 'Disable this testimonial'
                        });
                    } else {
                        j(imgBtn).attr({
                            src: '../_images/acp_icons/16/disabled.png',
                            rel: 'disabled',
                            alt: '[disabled]',
                            title: 'Enable this testimonial'
                        })
                    }
                }
            );
        } else if (bits[0] == 'news') {
            j.get(
                'news.ajax.php?action=toggle_status&id=' + bits[2],
                function(data) {
                    if (data == 'enabled') {
                        j(imgBtn).attr({
                            src: '../_images/acp_icons/16/enabled.png',
                            rel: 'enabled',
                            alt: '[enabled]',
                            title: 'Disable this news article'
                        });
                    } else {
                        j(imgBtn).attr({
                            src: '../_images/acp_icons/16/disabled.png',
                            rel: 'disabled',
                            alt: '[disabled]',
                            title: 'Enable this news article'
                        });
                    }
                }
            );
        }
    });

    // Add new testimonial
    j('.btn-new-testimonial').click(function() {
        var isError = false;
        var errorMsg = '';
        var firstErrorField = '';
        var fields = new Array('text', 'signature');

        for (var i = 0; i < fields.length; i++) {
            var field = fields[i];

            // Reset border colour / width
            j('#' + field).css({
                'border-color':'#D0D0D0',
                'border-width':'1px'
            });

            if (j('#' + field).val() == '') {
                j('#' + field).addClass('field-error');
                isError = true;
                errorMsg = 'Please complete all required fields.';

                if (firstErrorField == '') {
                    firstErrorField = field;
                }
            }
        }

        if (isError) {
            if (j('div.msgbox-error').length > 0) {
                j('div.msgbox-error').remove();
            }
            if (j('div.msgbox-success').length > 0) {
                j('div.msgbox-success').remove();
            }

            j('div.ajax-msgbox-error > div').html(errorMsg);
            j('div.ajax-msgbox-error').fadeIn(300);
            j('#' + firstErrorField).css({
                'border-color':'#F00000',
                'border-width':'2px'
            });
            j('#' + firstErrorField).focus();
            return false;
        }

        return true;
    });

    // Add new news article
    j('.btn-new-news').click(function() {
        var isError = false;
        var errorMsg = '';
        var firstErrorField = '';
        var fields = new Array('title', 'body');

        for (var i = 0; i < fields.length; i++) {
            var field = fields[i];

            // Reset border colour / width
            j('#' + field).css({
                'border-color':'#D0D0D0',
                'border-width':'1px'
            });

            if (j('#' + field).val() == '') {
                j('#' + field).addClass('field-error');
                isError = true;
                errorMsg = 'Please complete all required fields.';

                if (firstErrorField == '') {
                    firstErrorField = field;
                }
            }
        }

        if (isError) {
            if (j('div.msgbox-error').length > 0) {
                j('div.msgbox-error').remove();
            }
            if (j('div.msgbox-success').length > 0) {
                j('div.msgbox-success').remove();
            }

            j('div.ajax-msgbox-error > div').html(errorMsg);
            j('div.ajax-msgbox-error').fadeIn(300);
            j('#' + firstErrorField).css({
                'border-color':'#F00000',
                'border-width':'2px'
            });
            j('#' + firstErrorField).focus();
            return false;
        }

        return true;
    });

    // Create page name from title
    // TODO: Check when page-name edited directly
    j('fieldset#news > input#title').blur(function() {
        createPageName('news');
    });
    j('fieldset#case-studies > input#title').blur(function() {
        createPageName('case-studies');
    });
    j('fieldset#case-studies > input#cat').blur(function() {
        createPageName('case-studies');
    });

//    j('input#title').blur(function() {
//        if ((j('input#title').length > 0) && (j('input#page-name').length > 0)) {
            // Check if page name exists
//            if (j('#frm-news').length > 0) {
                // News
//                var pageName = j('input#title').val();
//                pageName = pageName.replace(/ /g, '-').toLowerCase();
//
//                j.get(
//                    'news.ajax.php?action=page_name_exists&page_name=' + pageName,
//                    function(data) {
//                        if (data == 'false') {
                            // Page name is available..
//                            j('input#page-name').val(pageName);
//                        } else {
//                            j('input#page-name').val('');
//                        }
//                    }
//                );
//            } else if (j('#frm-case-studies').length > 0) {
                // Case studies
//                var title = j('input#title').val();
//                var cat = j('input#cat').val();
//                var pageName = cat + '-' + title;
//                pageName = pageName.replace(/ /g, '-').toLowerCase();
//
//                j.get(
//                    'case-studies.ajax.php?action=page_name_exists&page_name=' + pageName,
//                    function(data) {
//                        if (data == 'false') {
                            // Page name available..
//                            j('input#page-name').val(pageName);
//                        } else {
//                            j('input#page-name').val('');
//                        }
//                    }
//                );
//            }
//        }
//    });

    // Case study web link
    j('a.case-study-weblink').click(function() {
        var url = j(this).attr('href');
        window.open(url);
        return;
    });
});

function createPageName(section) {
    if (section == 'news') {
        // News
        var pageName = j('input#title').val();
        pageName = sanitisePageName(pageName).toLowerCase();

        if (pageName == j('input#page-name').val()) {
            return false;
        }

        j.get(
            'news.ajax.php?action=page_name_exists&page_name=' + pageName,
            function(data) {
                if (data == 'false') {
                    // Page name is available..
                    j('input#page-name').val(pageName);
                } else {
                    j('input#page-name').val('');
                }
            }
        );
    } else if (section == 'case-studies') {
        // Case studies
        var cat = j('input#cat').val();
        var title = j('input#title').val();
        var pageName = '';

        if ((cat != undefined) && (cat != '')) {
            pageName = cat + '-';
        }

        pageName = pageName + title;
        pageName = sanitisePageName(pageName).toLowerCase();

        if (pageName == j('input#page-name').val()) {
            return false;
        }

        j.get(
            'case-studies.ajax.php?action=page_name_exists&page_name=' + pageName,
            function(data) {
                if (data == 'false') {
                    // Page name available
                    j('input#page-name').val(pageName);
                } else {
                    j('input#page-name').val('');
                }
            }
        );
    }
}

function sanitisePageName(pageName) {
    pageName = pageName.replace(/ /g, '-');
    pageName = pageName.replace(/&/g, 'and');
    pageName = pageName.replace(/\?/g, '_');

    return pageName;
}