// El date picker necessita el $
// jQuery.noConflict()

/********************************************************************************
 * PCT Framework
 ********************************************************************************/
 
var Pct = {}

Pct.Dom = {}

Pct.Dom.getId = function (element)
{
    if (element.id == '') element.id = 'id-' + parseInt(Math.random() * 10000000000)
    return element.id
}

Pct.Css = {}

Pct.Css.loadFile = function (url)
{
    jQuery('head').append(
        jQuery('<link rel="stylesheet" type="text/css" href="' + url + '" />')
    )
}
 
/********************************************************************************
 * jQuery
 ********************************************************************************/
 
/**
 * Com el jQuery.getScript() per� nom�s fa la petici� la primer vegada
 */
jQuery.getScriptOnce = function (url, callback) {
    if (! this.loadedScripts) this.loadedScripts = {}
    if (this.loadedScripts[url] === undefined) {
        this.loadedScripts[url] = null
        this.getScript(url, callback)
    } else {
        callback()
    }
}

/**
 * Com el jQuery('...').bind() per� s'assegura que la funci� nom�s es lliga un cop
 */
jQuery.fn.bindOnce = function (type, callback) {
    return this.unbind(type, callback).bind(type, callback)
}

// Cridem tots els listeners que escolten el onchange del document. La idea �s
// que quan afegim o modifiquem el document poguem carregar de nou els elements
// que es carreguen din�micament (date pickers, tooltips, ...)

jQuery(function () {
    jQuery(document).change()
})
 
/********************************************************************************
 * Date picker
 ********************************************************************************/
 
jQuery(document).change(function () {

    var inputs = jQuery('input.date')
    if (! inputs.length) return
    var datePickerBaseUrl = site.baseUrl + '/resources/javascript/jquery-datepicker'
    jQuery.getScriptOnce(datePickerBaseUrl + '/ui.datepicker.js', function () {    
        var init = function ()
        {
            inputs.attachDatepicker({
                dateFormat: 'dd/mm/yy',
                speed: 0,
                firstDay: 1,
                closeAtTop: false
            })
    
            // Bot� per obrir el calendari (el del jquery Calendar no queda sempre b�)
            
            inputs.each(function () {
                var input = this
                
                if (! jQuery(this).hasClass("datepickejat") ) 
                {
                    jQuery(this).addClass("datepickejat").after(jQuery('<img />')
                        .attr({
                            id: Pct.Dom.getId(this) + '-button',
                            src: site.baseUrl + '/resources/images/common/icon-calendar.gif',
                            alt: "Calendari",
                            title: "Seleccionar la data del calendari"
                        })
                        .css({
                            cursor: 'pointer',
                            margin: "0",
                            padding: '0 3px',
                            verticalAlign: 'top'
                        })
                        .click(function () {
                            input.focus()
                        })
                    )
                }
            })
        }
    
        if (site.language != 'en') {
            jQuery.getScriptOnce(
                datePickerBaseUrl + '/ui.datepicker-' + site.language + '.js',
                init)
        } else {
            init()
        }
    })
    Pct.Css.loadFile(site.baseUrl + '/resources/javascript/jquery-datepicker/ui.datepicker.css')
})

/********************************************************************************
 * Tooltips
 *******************************************************************************/
 
jQuery(document).change(function () {
    jQuery('*[@title]').tooltip()
})
