/**
 * Graceful set of utils for crossbrowser event handling
 * v. 2.0
 * @author Alexey Churkin
 */
Events = new function(){
	
	/**
	 * Assigns a new event handled by handler to the specified element
	 * @param {Object} element element the event to be assigned to
	 * @param {String} event event identifier
	 * @param {Function} handler event handler 
	 */
	this.Attach = function(element,event,handler)
	{
		event = Events.sanitizeEvent(event);
		if(element.addEventListener)
		{
			element.addEventListener(event,handler,false);
		}
		else if(element.attachEvent)
		{
			element.attachEvent('on'+event,handler);
		}
		else
		{
			var prev_handler = false;
			if( element[event] ){
				prev_handler = element[event];
			}
			element[event] = function(e)
			{
				if( !e )
				{
					e = window.event;
				}
				var result = false;
	
				if( prev_handler ){
					elt.___handler = prev_handler;
					result = elt.___handler(e);
					elt.___handler = null;
					if( result === false )
					{
						return;
					}
				}
				
				elt.___handler = handler;
				result = elt.___handler(e);
				elt.___handler = null;
	
				return result;
			}
		}
	}
	
	/**
	 * Sanitizes string event identifier
	 * @access private
	 * @param {String} event
	 */
	this.sanitizeEvent = function(event)
	{
		return event.toLowerCase().replace(/^(on)?/,"");
	}
	
	/**
	 * Detaches the event from the element that is handled by the specified handler
	 * @param {Object} element element the event was assigned to
	 * @param {String} event event identifier
	 * @param {Function} handler event handler 
	 */
	this.Detach = function(element,event,handler)
	{
		event = Events.sanitizeEvent(event);
		if(element.removeEventListener)
		{
			element.removeEventListener(event,handler,true);
		}
		else if(element.attachEvent)
		{
			element.detachEvent('on'+event,handler);
		}
		else
		{
			//TODO: think about more graceful detacher =)
			//Maybe, we should store the pointers to the prev_handlers (see in Events.Attach())
			//omg, JS does not have pointers
			element[event] = false;
		}
	}
	
	/**
	 * Performs the cancelation of the raised event
	 * @param {Object} e raised event
	 */
	this.Cancel = function(e)
	{
		e = e || window.event || {};		
		
		if( e.preventDefault )
		{
			e.preventDefault();
		}
		
		if(e.stopPropagation)
		{
			e.stopPropagation();
		}
		else
		{
			e.cancelBubble = true;       
		}

		return e.returnValue = false;
	}
}

function CountriesHandler(e)
{
	var target = document.getElementById('countries');
	var pos = window.selectors[target.selectedIndex]
	document.getElementById('sms_text').innerHTML = pos['text']
	document.getElementById('sms_tel').innerHTML = pos['tel']
	document.getElementById('sms_tel_2').innerHTML = pos['tel']
	document.getElementById('sms_money').innerHTML =pos['money']

}

window.onload = function()
{		
	elt = document.getElementById('countries');
	Events.Attach(elt,'onchange',CountriesHandler);
	elt.selectedIndex = 0;
	CountriesHandler();
}