﻿// Create user extensions namespace (Ext.ux)
Ext.namespace('Ext.ux');
 
/**
  * Ext.ux.IconCombo Extension Class
  *
  * @author Jozef Sakalos, aka Saki
  * @version 1.0
  *
  * @class Ext.ux.IconCombo
  * @extends Ext.form.ComboBox
  * @constructor
  * @param {Object} config Configuration options
  */
Ext.ux.IconCombo = function(config) {
 
	// call parent constructor
	Ext.ux.IconCombo.superclass.constructor.call(this, config);
	// ReConstruct QueryString
	var queryString="";
	var thisUrl="";
	urls=location.href.split("?");
	if (urls.length==2)
	{
		var queryStrings=urls[1];
		for (var i=0; i<queryStrings.split("&").length; i++)
		{
			if (queryStrings.split("&")[i].split("=")[0].toLowerCase()!="uiculture")
			{
				if (i<queryStrings.split("&").length-1)
				{	
					queryString+=queryStrings.split("&")[i]+"&";
				}
				else
				{
					queryString+=queryStrings.split("&")[i];
				}
			}
		}
		if (queryString!="")
		{
			thisUrl="?"+queryString+"&";
		}
		else
		{
			thisUrl="?";
		}
	}
	else
	{
		thisUrl="?";
	}
	this.tpl = config.tpl ||
	'<tpl for="."><div class="x-combo-list-item" onclick="location.href=\'{' + this.urlField + '}'+thisUrl+'uiCulture={' + this.valueField + '}\'">'
	+ '<table><tbody><tr>'
	+ '<td>'
	+ '<div class="{' + this.iconClsField + '} x-icon-combo-icon"></div></td>'
	+ '<td>{' + this.displayField + '}</td>'
	+ '</tr></tbody></table>'
	+ '</div></tpl>'
	;
	this.on({
		render:{
		scope:this, 
		fn:function() {
			var wrap = this.el.up('div.x-form-field-wrap');
			this.wrap.applyStyles({position:'relative'});
			this.el.addClass('x-icon-combo-input');
			this.flag = Ext.DomHelper.append(wrap, {
            			tag: 'div', style:'position:absolute'
        		});
    		}}
	});
 
}; // end of Ext.ux.IconCombo constructor
 
// extend
Ext.extend(Ext.ux.IconCombo, Ext.form.ComboBox, {
	setIconCls: function() {
        	var rec = this.store.query(this.valueField, this.getValue()).itemAt(0);
		
        	if(rec) {
			this.flag.className = 'x-icon-combo-icon ' + rec.get(this.iconClsField);
		}
	},
 
	setValue: function(value) {
		Ext.ux.IconCombo.superclass.setValue.call(this, value);
		this.setIconCls();
	}


}); // end of extend
 
// end of file
