/**
 * @author Arturas Paleicikas <arturas.paleicikas@metasite.net>
 */

var Common ={
    init: function(params){
        this.params = params;
        var $Common = this;

        $Common.initCalendar();
        $Common.initPush();
        $Common.initNavigation();
        $Common.initPrint();
        $Common.initClearInput();
		$Common.initLoginBox();
        $Common.initAsPopup($('a.__callAsPopup'));
        $Common.initLinkImageAsPopup($('a.__callLinkImageAsPopup'));
    },

    // navigation
    initNavigation: function(){
        var $Common = this;
        var $obj = $Common.params.navigation;

        $('ul.navMain li[@id^=navItem]', $obj)
            .hover(function(){
                $(this).addClass('navHover');
                $('ul', this).show();
            }, function(){
                $(this).removeClass('navHover');
                $('ul', this).hide();
            });
    },

    // calendar
    initCalendar: function(){
        var $Common = this;
        var curdate = new Date();
        $('input.callCalendar').datepicker(
                $.extend(
                    {
                        dateFormat:'yy-mm-dd',
                        showOn:'both',
                        buttonImageOnly:true,
                        buttonImage:'img/common/calendar.gif',
                        minDate: new Date(curdate.getFullYear(), (curdate.getMonth()-1), 1),
                        maxDate: new Date()
                    },
                    $.datepicker.regional[$Common.params.lang]
                )
            );

            $('input.callCalendarToFuture').datepicker(
                $.extend(
                    {
                        dateFormat:'yy-mm-dd',
                        showOn:'both',
                        buttonImageOnly:true,
                        buttonImage:'img/common/calendar.gif',
                        minDate: new Date(),
                        maxDate: new Date((curdate.getFullYear()+1), curdate.getMonth(), curdate.getDate()-1)
                    },
                    $.datepicker.regional[$Common.params.lang]
                )
            );
    },

    // send sms push
    initPush: function(){
        var $Common = this;
        var $items = $('a.callSmsPush');

        $items
            .click(function(e){
                var groupName = $(this).attr('name') || null;
                var gsm_prefix = $Common.params.gsm_prefix;
                if(!groupName)
                    return;

                if(!this.$tooltip)
                {
                    var form = [];
                    form.push('<div id="tooltipPush">');
                    form.push('<form method="post">');
                        form.push('<input type="text" name="info[]" value="'+ gsm_prefix +'" maxlength="12" class="field" />');
                        form.push('<input type="image" src="img/common/go.jpg" class="submit" value="&raquo;" alt="&raquo;" />');
                        form.push('<a href="#" class="close"><img src="img/common/close_big.gif" alt="" /></a>');
                    form.push('</form>');
                    form.push('</div>');

                    var $tooltip = $(form.join(' '))
                        .find('a.close')
                        .unbind('click')
                        .click(function(){
                            $tooltip.hide();
                            return false;
                        })
                        .end()
                        .find('form')
                        .unbind('submit')
                        .submit(function(z){
                            var uri = $Common.params.lang +'/c/push/'+ groupName;
                            var $input = $tooltip.find('input[@type=text]');
                            var msisdn = $input.val();

                            if(/^(\d{11})+$/.test(msisdn)){
                                $.post(uri, {'data[msisdn]':msisdn}, function(data){
                                    switch(data){
                                        case true:
                                        $input.val(gsm_prefix);
                                        $tooltip.hide();
                                        break;

                                        default:
                                        $input.addClass('error');
                                        break;
                                    }
                                }, 'json');
                            } else {
                                $input.addClass('error');
                            }

                            return false;
                        })
                        .end()
                        .hide()
                        .appendTo('body');

                    this.$tooltip = $tooltip;
                }

                var x = (e.pageX || (e.clientX ? e.clientX + document.body.scrollLeft : 0)) + 10;
                var y = (e.pageY || (e.clientY ? e.clientY + document.body.scrollTop : 0)) + 10;

                this.$tooltip
                    .show()
                    .css({
                        left:x +'px',
                        top:y +'px',
                        position:'absolute'
                    })
                    .find('input[@type=text]')
                    .removeClass('error');

                return false;
            });
    },

    // print
    initPrint: function(){
        $('.callPrintView')
            .click(function(){
                if(window.Print)
                    window.Print.open();
                return false;
            });
    },

    initClearInput: function(){
        $('.callOnClickClear')
            .click(function(){
                $(this)
                    .val('')
                    .unbind('click');

                return false;
            });
    },

    initLoginBox: function(){
            function show_reload()
            {
                $('.tabs-mylabas').hide();
                $('#login').hide();
                $('.tabs-topup').show();
                $('#reload').show();
            }
            
            function show_login()
            {
                $('.tabs-mylabas').show();
                $('#login').show();            
                $('.tabs-topup').hide();
                $('#reload').hide();
            }

            $('a.topup').click(function(){
                show_reload();
            });
            
            $('a.mylabas').click(function(){
                show_login();
            });
    },

    initAsPopup: function($items){
        var self = this;

        $items
            .each(function(i,n){
                var $n = $(n);
                var width   = ($n.attr('width') || 300);
                var height  = ($n.attr('height') || 300);
                var obj     = ($n.attr('forId') || false);

                if(obj){
                    var $obj = $('#' + obj);
                    if($obj.length)
                    {
                        $obj.hide();
                        $n
                            .click(function(){
                                self._popup(width, height, $obj.html());
                                return false;
                            });
                    }
                }
            });
    },


    initLinkImageAsPopup: function($items){
        var self = this;

        $items
            .each(function(i,n){
                var $n = $(n);
                var width   = ($n.attr('width') || 300);
                var height  = ($n.attr('height') || 300);
                var src     = ($n.attr('href') || false);

                $n
                    .click(function(){
                        self._popup(width, height, '<img src="' + src  + '" alt="" />');
                        return false;
                    });
            });
    },


    _popupHtml: [
        '<div class="roundBoxWrapper">',
            '<div class="roundBoxTop"></div>',
            '<div class="roundBoxInner">',
                '<div class="roundBoxContent">',
                    '<a href="javascript:;" class="close" onclick="$.unblockUI();"></a>',
                    '<div class="popup-content"></div>',
                '</div>',
            '</div>',
        '</div>'
    ],

    
    // common usage
    _popup: function(width, height, $data){
        var self = this;
        var message = $(self._popupHtml.join(''))
            .find('div.popup-content')
            .html($data)
            .end();

        $.blockUI({
            width: width + 'px',
            height: height + 'px',
            message: message,
            centerX: false,
            centerY: false,
            css: {
                border: 0,
                top:  100,
                left: (($(window).width() - width) / 2) + 'px',
                width: width + 'px',
                position: 'fixed',
				zIndex:9999999
            },

            overlayCSS: {
                backgroundColor: '#999',
				zIndex:999999
            }
        });
    }
};

/* http://wiki.recaptcha.net/index.php/Overview#Custom_Theming */
var RecaptchaOptions = {
    theme : 'custom',
    custom_theme_widget: 'recaptcha'
};