/**
 * SE-KİZ JS Pack Core for SE-KİZ Content Management System
 * @author Mehmet Gülbilge
 * @version 1.0 rc5
 * @date 18.06.2011
 * @last_Update 07.10.2011
 */

/**
 * @version v1.0 rc5s
 * added: browser image cache
 */

var core = {
    sitedir:String,
    themedir:String,
    themeName:String,
    homedir:String,
    init:function () {
        core.prototypes.init();
        core.paging.init();
        core.tools.init();
        core.cache.init();
    },
    cache:{
        init:function () {
            $("body").find('img').each(function (i, e) {
                var image = new Image();
                image.src = $(e).attr('src');
                image.id = 'cache' + i;
            });
        }
    },
    paging:{
        currentPage:Number,
        recPerPage:Number,
        totalRecords:Number,
        maxPage:Number,
        init:function (maxPage, recPerPage, totalRecords) {
            if (totalRecords == null) totalRecords = 0;
            if (recPerPage == null) recPerPage = 30;
            core.paging.recPerPage = recPerPage;
            core.paging.maxPage = maxPage;
            core.paging.totalRecords = totalRecords;
            core.paging.currentPage = 0;
        },
        setRecPerPage:function (i) {
            core.paging.recPerPage = i;
            ajax.ajax('global/setRecPerPage/recperpage:' + i + '/', { onComplete:function () {
                $("#page").trigger('change');
            }
            });
        },
        setPage:function (url, options) {
            core.paging.currentPage = document.getElementById('page').selectedIndex;
            var defaults = {
                target:'records',
                onComplete:function () {
                    refreshPaging(core.paging.currentPage);
                }
            }
            options = $.extend(defaults, options || {});

            ajax.ajax(url + 'getRow:true;pg:' + core.paging.currentPage + '/', options);
            core.tools.scrollTo("#records");
            setTimeout(function () {
                $("body tr").removeAttr('style');
            }, 1000);
        },
        prev:function () {
            console.log(core.paging.currentPage);
            if (document.getElementById('page').selectedIndex > 0) {
                document.getElementById('page').selectedIndex--;
                $("#page").trigger('change');
            }
        },
        next:function () {

            if (document.getElementById('page').selectedIndex < document.getElementById('page').length - 1) {
                document.getElementById('page').selectedIndex++;
                $("#page").trigger('change');
            }
        }
    },
    tools:{
        mouseX:Number,
        mouseY:Number,
        init:function () {
            $("body").bind('mousemove', function(e) {
                core.tools.mouseX = e.pageX;
                core.tools.mouseY = e.pageY;
            });
        },
        doRichEditor:function (instancename) {
            $(instancename).ckeditor({
                autoUpdateElement:true,
                height:'150px',
                width: '690px',
                filebrowserImageBrowseUrl : '/components/ckfinder/ckfinder.html?type=Images',
                filebrowserFlashBrowseUrl : '/components/ckfinder/ckfinder.html?type=Flash',
                filebrowserFilesBrowseUrl : '/components/ckfinder/ckfinder.html?type=Files',
                filebrowserWindowWidth : '550',
                filebrowserWindowHeight : '400',
                toolbar: [
                    ['Source'],
                    ['Cut','Copy','Paste','PasteText'],
                    ['Undo','Redo','-','SelectAll','RemoveFormat'],
                    ['NumberedList','BulletedList','-','Blockquote'],
                    ['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'],
                    ['Link','Unlink'],
                    ['Image','Table','HorizontalRule'],
                    '/',
                    ['Styles','Format','Font','FontSize'],
                    ['Bold','Italic','Underline','Strike'],
                    ['Superscript', 'Subscript'],
                    ['TextColor','BGColor'],
                    ['Maximize']
                ]
            });
        },
        charFilter: function (e, s) {
            if (s == null || s == '') s = 'abcdefghijklmnoprstuvyzwqxABCDEFGHIJKLMNOPRSTUVYZWQX0123456789_-@.';
            var str = new String();
            var numbers = new Array();
            numbers = s;
            var chars = e.value.split("");
            for (var i = 0; i < chars.length; i++) {
                if (numbers.indexOf(chars[i]) != -1) str += chars[i].toLowerCase();
            }
            if (e.value != str) e.value = str;
        },
        onlyNumber: function (e) {
            var s = '0123456789.';
            var str = new String();
            var numbers = new Array();
            numbers = s;
            var chars = e.value.split("");
            for (var i = 0; i < chars.length; i++) {
                if (numbers.indexOf(chars[i]) != -1) str += chars[i].toLowerCase();
            }
            if (e.value != str) e.value = str;
        },
        scrollTo: function (obj) {
            var target_offset = $(obj).offset();
            var target_top = target_offset.top;
            $('html, body').animate({ scrollTop:target_top }, 500);

        },
        formatTime: function(unixTimestamp) {
            var dt = new Date(unixTimestamp);

            var minutes = dt.getMinutes();
            var seconds = dt.getSeconds();

            if (minutes < 10)
                minutes = '0' + minutes;

            if (seconds < 10)
                seconds = '0' + seconds;

            return minutes + ":" + seconds;
        }
    },
    visualEffects:{
        alignObject:function(object, options) {
            var settings = {
                parentObj:window,
                align:'center',
                animate:true,
                top:null,
                left:null
            }
            settings = $.extend(settings, options);
            var oWidth = $(object).width();
            var oHeight = $(object).height();
            var xL = ($(settings.parentObj).width() / 2) - (oWidth / 2);
            var xT = ($(settings.parentObj).height() / 2) - (oHeight / 2);
            switch (settings.align) {
                case 'center':
                    if (settings.animate) {
                        $(object).animate({ left:xL, top:xT });
                    } else {
                        $(object).css({ left:xL, top:xT });
                    }
                    break;
                case 'vertical':
                    if (settings.animate) {
                        if (settings.left != null)
                            $(object).animate({ top:xT, left:settings.left });
                        else $(object).animate({ top:xT });
                    } else {
                        if (settings.left != null)
                            $(object).css({ top:xT, left:settings.left });
                        else $(object).css({ top:xT });
                    }
                    break;
                case 'horizontal':
                    if (settings.animate) {
                        if (settings.top != null)
                            $(object).animate({ top:settings.top, left:xL });
                        else $(object).animate({ left:xL });
                    } else {
                        if (settings.top != null)
                            $(object).css({ top:settings.top, left:xL });
                        else $(object).css({ left:xL });
                    }
                    break;
            }
        }
    },
    prototypes:{
        init:function () {
            /*
             * @object list: array
             * list[i] or list.item[1]
             */
            if (!Array.prototype.item || Array.prototype.item == undefined || Array.prototype.item == null) {
                Array.prototype.item = function (i) {
                    return this[i];
                }
            }
            if (typeof !Array.prototype.indexOf == undefined || !Array.prototype.indexOf || Array.prototype.indexOf == undefined || Array.prototype.indexOf == null) {
                Array.prototype.indexOf = function (s) {
                    if (this.length > 0) {
                        for (var i = 0; i <= this.length - 1; i++) {
                            if (this[i] == s) return i;
                        }
                        return -1;
                    }
                    return -1;
                }
            }
            if (!Number.prototype.inThis || Number.prototype.inThis == undefined || Number.prototype.inThis == null) {
                Number.prototype.inThis = function(s, e) {
                    if (this >= s && this <= e) return true; else return false;
                }
            }
            if (!Array.prototype.inArray || Array.prototype.inArray == undefined || Array.prototype.inArray == null) {
                Array.prototype.inArray = function (e) {
                    for (var i = 0; i <= this.length - 1; i++) {
                        if (this[i] == e) return true;
                    }
                    return false;
                }
            }
        }
    }
}

