if(LANG == undefined) var LANG='tr';

var VirtualNumpadLang = new Object();
VirtualNumpadLang['tr'] = { 'close':'Kapat',
							'backspace':'Sil',
							'mix':'Karıştır'};


var __targetBox__;
var __container__ = null;
var __numKeys__;

var VirtualNumpad = function(){
	
	this.show = function(containerID, targetBox){
		__targetBox__ = targetBox;
		
		
		
		if(__container__ != null){//if container is defined before, hide it
			__hide_virtualNumPad();
		}
		
		__container__ = document.getElementById(containerID);
		
		//remove all children in the container.
		while(__container__.firstChild){
			__container__.removeChild(__container__.firstChild);
		}
		
		__container__.appendChild(this.closer_div);//append closer
		
		//append num keys
		for(i=0; i<=9; i++){
			__numKeys__[i].append(__container__);
		}
		
		
		
		//append buttomDiv (backspace and mixer container)
		__container__.appendChild(this.buttomDiv);
		
		
		//show the containter
		$(__container__).fadeIn('slow');
	}//end method show()
	
	/** BEGIN: Create Closer **/
	
	this.closer_div = document.createElement('div');
	this.closer_div.style.textAlign = 'right';
	
	this.closer_but = new VirtualKey(VirtualNumpadLang[LANG]['close'], 'close_button', function(){__hide_virtualNumPad();});
	this.closer_but.append(this.closer_div);
	
	/** END: Create Closer **/
	
	/** BEGIN: Create Num Keys **/
	var order_arr = new Array(0,1,2,3,4,5,6,7,8,9);
	
	order_arr.sort(function(){return Math.round(Math.random())-0.5;});
	
	__numKeys__ = new Array();
	
	for(i in order_arr){
		__numKeys__[i] = new VirtualKey(order_arr[i],'numkey');
		
		__numKeys__[i].setOnClick(function(){
			var val = new String(__targetBox__.value);
			var maxLength = __targetBox__.getAttribute('maxLength');
			
			if( maxLength != undefined && val.length >= parseInt(maxLength)){
				return false;
			}
			
			val += new String(this.value);
			
			__targetBox__.value = val;
		});
	}
	/** END: Create Num Keys **/
	
	/** BEGIN: BackSpace and Mix Buttons **/
	
	this.buttomDiv = document.createElement('div');
	
	this.backSpace_but = new VirtualKey(VirtualNumpadLang[LANG]['backspace'],'backspace_button');
		
	this.backSpace_but.setOnClick(function(){
		var val = new String(__targetBox__.value);
		
		if(val == ''){
			return false;
		}
		
		__targetBox__.value = val.substring(0, val.length - 1);
	});
	
	this.backSpace_but.append(this.buttomDiv);
	
	
	this.mixer_but = new VirtualKey(VirtualNumpadLang[LANG]['mix'],'mixer_button');
	
	this.mixer_but.setOnClick(function(){
		var order_arr = new Array(0,1,2,3,4,5,6,7,8,9);
	
		order_arr.sort(function(){return Math.round(Math.random())-0.5;});
		
		for(i in order_arr){
			__numKeys__[i].setAttribute('value',order_arr[i]);
		}
	});
	
	this.mixer_but.append(this.buttomDiv);
	/** END: BackSpace and Mix Buttons **/
}//end class VirtualNumpad

var VirtualKey = function(text, className, onclick){
	this.button = document.createElement('input');
	this.button.type = 'button';
	this.button.value = text;
	
	if(onclick != undefined){
		
		this.button.onclick = onclick;
	}
	
	if(className != undefined){
		this.button.className = className;
	}
	
	/**
	* method append() :
	* this function appends the key to defined container
	*/
	this.append = function(container){
		container.appendChild(this.button);
	}
	
	/**
	* method setOnClick() :
	* this function sets onClick property
	*/
	this.setOnClick = function(onclick){
		if(onclick != undefined){
			this.button.onclick = onclick;
		}
	}
	
	/**
	* method setAttribute() :
	* this function sets an attribute of the button
	*/
	
	this.setAttribute = function(attribute, value){
		this.button.setAttribute(attribute, value);
	}
}//end class VirtualKey

function __hide_virtualNumPad(){
	$(__container__).fadeOut('fast');
}
