

if(window.console) window.debug = console.debug;
else window.debug = function() {};

var yp_user_alive_updater = null;

// gateway addr for update user is online
var YP_USER_ALIVE_URL = '/iamalive';
var YP_PARTNER_ALIVE_URL = '/partner.php/iamalive';


var Yp={};

Yp.Logger = Class.create({
    initialize: function(name) {
        this.name = name;
    },
    
    info: function() { this._log($A(arguments),'info'); },
    debug: function() { this._log($A(arguments),'debug'); },
    warn: function() { this._log($A(arguments),'warn'); },
    
    _log: function(args,type) {
        var logItem = {
            source:this.name,
            ts: new Date(),
            type: type,
            msg: args.join(" ")
        };
        Yp.Logger.data.push(logItem);
        
        if(window.console) {
            args = ['(('+this.name+'))'].concat(args);
            var con_log_types=['info','debug','warn','error'];
            if(!con_log_types.include(type)) {
                type="info";
                args = [type,':'].concat(args);
            }
            console[type].apply(window,args);
        }
    }
});

Yp.Logger.data = [];



function ypUserAliveUpdater(interval) {
    yp_user_alive_updater = new PeriodicalExecuter(function() {
        new Ajax.Request(YP_USER_ALIVE_URL);
    },interval);
}

function ypPartnerAliveUpdater(interval) {
    yp_user_alive_updater = new PeriodicalExecuter(function() {
        new Ajax.Request(YP_PARTNER_ALIVE_URL);
    },interval);
}

function ypWebsiteInit() {
    /* 
        transform all 'select' HTML elements to ExtJS form.
        adds 'transformedSelect' classname for new input
        and sets an 'id' to [old_id]+'-transformed'
    */
    Ext.select('select').each(function(self) {
        window.ss = self;
        if(! self.hasClass('raw')) {
            var combo = new Ext.form.ComboBox({
            	  id: self.dom.getAttribute('id')+'-trans',
                triggerAction: 'all',
                triggerConfig: {tag:'div', cls:'x-trig'},
                transform:self.dom,
                editable: ((!self.hasClass('editable')) ? false : true),
                forceSelection:true
            });
            combo.addClass('transformedSelect');
            window.combo = combo;
            
            if(self.dom.getAttribute('id')) {
                combo.el.dom.setAttribute('id', self.dom.getAttribute('id')+'-transformed' );
            }
        
            if(self.dom.onchange && combo.on) {
                combo.on('change', self.dom.onchange, combo);
            }
        }
        
    });


    $$('.popUp').invoke('hide');
    
    Ext.select('a').each(function(self) {
    	if(self.dom.rel.indexOf("_blank")!=-1) {
    	 self.dom.setAttribute('target','_blank');
    	}
    })
}

function openBlank(url)
{
  newWindow = window.open(url);
  newWindow.focus();
}
function ypWebsiteInitCountry() {
    /* 
        transform all 'select' HTML elements to ExtJS form.
        adds 'transformedSelect' classname for new input
        and sets an 'id' to [old_id]+'-transformed'
    */
    Ext.select('select').each(function(self) {
        window.ss = self;
            var combo = new Ext.form.ComboBox({
                  id: self.dom.getAttribute('id')+'-trans',
                triggerAction: 'all',
                triggerConfig: {tag:'div', cls:'x-trig'},
                transform:self.dom,
                editable: ((!self.hasClass('editable')) ? false : true),
                forceSelection:true
            });
            combo.addClass('transformedSelect');
            window.combo = combo;
            
            if(self.dom.getAttribute('id')) {
                combo.el.dom.setAttribute('id', self.dom.getAttribute('id')+'-transformed' );
            }
        
            if(self.dom.onchange && combo.on) {
                combo.on('change', self.dom.onchange, combo);
            }
    });


    $$('.popUp').invoke('hide');
}

function ypExpandGuideEdits() {
    /* concept func to expand all editable fields in current guide */
    $$('a').findAll(function(e) {return e.innerHTML=='edit';}).invoke('onclick');
}

function pleaseLogin()
{
    var height = (document.viewport.getHeight() > $$('body').first().getHeight()) ? document.viewport.getHeight() : $$('body').first().getHeight();
    var height = (document.viewport.getHeight() == $$('body').first().getHeight()) ? 4000 : height;
    var dOffset = document.viewport.getScrollOffsets();
    Element.setStyle('promptMask', {'height' : height + 'px'});
    Element.setStyle('promptLogin', {'top' : ((0.2 * document.viewport.getHeight()) + dOffset.top) + 'px'});
    new Effect.Appear('promptMask', {duration : 0.1 });
    new Effect.Appear('promptLogin', {duration : 0.5 });
    
    Event.observe('promptClose','click', function() { promptClose() } );
    Event.observe('promptMask','click', function() { promptClose() } );
    Event.observe(document,'keydown', function(e) {
      if (Event.KEY_ESC != e.keyCode) return;
        promptClose();
    }); 
    
    function promptClose()
    {
    	new Effect.Fade('promptLogin', { duration: 0.5 });
    	new Effect.Fade('promptMask', { duration: 0.1 });
    	Event.stopObserving('promptClose','click');
    	Event.stopObserving('promptMask','click');
    	Event.stopObserving(document,'keydown');
    }
}



Event.observe(document,'dom:loaded',ypWebsiteInit);

