﻿String.format = function(){
    if(!arguments.length) return '';
    var str = arguments[0];
    for(var i=1;i<arguments.length;i++){
        var re = new RegExp('\\{' + (i-1) + '\\}','gm');
        str = str.replace(re, arguments[i]);
    }
    return str;
}

var common = function(){
    var tf = ['Keyword'];
    var isInit = true;
    
	function changeToExtField(fields, option){
		var text = (Ext.isIE) ? fields.bvalue : getAbrite(fields, 'bvalue');
		var type = (fields.type == 'text') ? 'TextField' : 'TextArea';
		var setup = {emptyClass: '', emptyText: text, fieldClass: '', focusClass: '', applyTo: fields.id};
		var option = option ? option : {};
		for(x in option){ setup[x] = option[x]; }
		var indexField = new Ext.form[type](setup);
		if(!indexField.getEl()) return;
		indexField.getEl().removeClass('x-form-text').removeClass('x-form-empty-field');
	}
    return {
        cateData: [],
        tableData: [], 
        upperData: [],
        templateNews: '', 
        templatePdt: '', 
        templateLog: '',
        baseRange: 9, 
        backup: null, 
        backupText: '', 
        indexPoint: 0, 
    
        init: function(){
			for(var i=0;i<tf.length;i++){
				var f = Ext.getDom(tf[i]);
				if(!f) continue;
			    f.title = f.value;
			    f.onfocus = function(){
			        if(f.title != f.value) return;
			        f.value = '';
			    }
			    f.onblur = function(){
			        if(f.value != '') return;
			        f.value = f.title;
			    }
//				var btn = Ext.get('Image10');
//				if(btn) Ext.get(tf[x]).addKeyListener({key:13}, btn.onclick);
			}
            this.createNewsCate();
        },
        
        createNewsCate: function(){
            var cb = function(a, success, rspn){
                if(!success) return;
                this.cateData = Ext.util.JSON.decode(rspn.responseText).item;
                this.createNewsList(this.cateData[0].ID);
                this.createPdtMenu();
            }
            var prs = {TableName: CateName, idString: 'ID', sort: "SortNum ASC, ID DESC", limit: 50, start: 0, Condistion: ''};
            var cn = new Ext.data.Connection({url: '../WMS/getResult.ashx'}).request({params: prs, scope: this, callback: cb});
        }, 
        
        createNewsList: function(CID){
            if(!CID) return; var arr = [];
            for(var i=0;i<this.cateData.length;i++){
                arr.push(this.cateData[i].ID == CID ? this.cateData[i].Name : '<a href="javascript:common.createNewsList('+this.cateData[i].ID+')" title="'+this.cateData[i].Name+'">'+this.cateData[i].Name+'</a>');
            }
            Ext.get('newsMenu').update(arr.join('&nbsp; | &nbsp;')).show();
            if(this.tableData[CID]){
                this.showList(this.tableData[CID]);
            }else{
                var cb = function(a, success, rspn){
                    if(!success) return;
                    this.tableData[CID] = Ext.util.JSON.decode(rspn.responseText).item;
                    this.showList(this.tableData[CID]);
                }
                var prs = {TableName: TableName, idString: 'ID', sort: "SortNum ASC, StartTime DESC", limit: 5, start: 0, 
                    Condistion: "CategoryID="+CID+" AND inHomepage='true' AND (isStartDisp = 'true' OR (({ fn NOW() } BETWEEN StartTime AND EndTime) AND isDisplay='true'))"};
                var cn = new Ext.data.Connection({url: '../WMS/getResult.ashx'}).request({params: prs, scope: this, callback: cb});
            }
        },
        
        showList: function(data){
            var text = '';
            if(this.templateNews == '') this.templateNews = Ext.getDom('newsList').innerHTML.replace(/\%7B/g, '{').replace(/\%7D/g, '}');
            for(var i=0;i<data.length;i++){
                text += String.format(this.templateNews, data[i].StartTime.substring(0,10), data[i].CategoryID, data[i].ID, data[i].Title, data[i].Title.substring(0,35));
            }
            Ext.get('newsList').update(text).show(true);
        },
        
        createPdtMenu: function(){
            var cb = function(a, success, rspn){
                if(!success) return;
                this.upperData = Ext.util.JSON.decode(rspn.responseText).item;
                var tempImage = [];
                for(var i=0;i<this.upperData.length;i++){
                	tempImage[i] = new Image();
                	tempImage[i].src = '../Uploads'+this.upperData[i].imgOrig;
                }
                if(!this.cateData.length) return;
                this.showPdtMenu();
            }
            var prs = {TableName: sTableName, idString: 'ID', sort: "SortNum ASC, ID DESC", limit: 50, start: 0, Condistion: ''};
            var cn = new Ext.data.Connection({url: '../WMS/getResult.ashx'}).request({params: prs, scope: this, callback: cb});
        },
        
        showPdtMenu: function(){
            var text = '';
            if(this.templatePdt == '') this.templatePdt = Ext.getDom('productSeries').innerHTML;
            if(this.upperData.length > 12){
                for(var i=0;i<this.uppderData.length;i++){
                    var inx = i%2 ? Math.ceil(uppderData.length/2)-1+Math.ceil(i/2) : i/2;
                    var data = this.upperData[inx] ? this.upperData[inx] : {ID: 0, Name: ''}
                    text += String.format(this.templatePdt, data.ID, data.Name, data.cls);
                }
            }else{
                for(var i=0;i<12;i++){
                    var inx = i%2 ? 5+Math.ceil(i/2) : i/2;
                    var data = this.upperData[inx] ? this.upperData[inx] : {ID: 0, CategoryID: 0, Name: ''}
                    data.cls = data.Name == '' ? '-2' : '';
                    text += String.format(this.templatePdt, data.ID, data.Name, data.cls);
                }
            }
            Ext.get('productSeries').update(text).show(true);
            this.createLogMenu.defer(1000, this);
        },
        
        createChild: function(data, tpl, el){
            var endInit = function(){
                isInit = false; 
                var td = Ext.get('imageList').findParent('td', null, true);
                td.setHeight(td.getHeight());
                td.setStyle({'float': 'right', 'display': 'block', 'overflow': 'hidden'});
                
                this.showImage(this.upperData[0].ID);
            }
            var box = Ext.DomHelper.append(el, {tag: 'div', cls: 'PNG_bt_icon', id: 'ite_'+data[0].ID, html: String.format(tpl, data[0].ID, data[0].Name)}, true).slideIn('t', {
                duration: .3, easing: 'bounceOut', block: true, useDisplay: true, 
                callback: function(){
                    data.shift();
                    (data.length) ? this.createChild(data, tpl, el) : endInit.createDelegate(this)();
                }, scope: this
            });
        },
        
        createLogMenu: function(){
            if(this.upperData.length <= this.baseRange) Ext.get('nextImg').hide();
            Ext.get('prevImg').hide();
            this.templateLog = Ext.getDom('imageList').innerHTML;
            Ext.getDom('imageList').innerHTML = '';
            Ext.get('imageList').findParent('table', null, true).show();
            var data = [];
            for(var i=0;i<this.upperData.length;i++){
                if(i == this.baseRange) break;
                data.push(this.upperData[i]);
            }
            this.createChild(data, this.templateLog, 'imageList');
        }, 
        
        showImage: function(uid){
            if(isInit) return;
            if(this.backup) this.backup.innerHTML = this.backupText;
            this.backup = Ext.getDom('ite_'+uid);
            for(var i=0;i<this.upperData.length;i++){
                if(this.upperData[i].ID != uid) continue;
                this.backupText = this.backup.innerHTML;
                this.backup.innerHTML = this.upperData[i].Name;
                break;
            }
            Ext.getDom('mainImg').src = '../Uploads'+this.upperData[i].imgOrig;
            Ext.getDom('mainImg').alt = this.upperData[i].Name;
            Ext.get('mainImg').findParent('a').href = String.format('products_kind.aspx?CategoryID={0}', this.upperData[i].ID);
            Ext.get('mainImg').show(true);
            Ext.get('mainImg')[this.upperData[i].imgOrig == '' ? 'hide' : 'show'](this.upperData[i].imgOrig == '' ? false : true);
        }, 
        
        moveMenu: function(num){
            if(this.indexPoint+num < 0 || this.indexPoint+num >= this.upperData.length || isInit) return;
            isInit = true;
            var m_in = num > 0 ? this.indexPoint+this.baseRange : this.indexPoint-1;
            var m_out = num > 0 ? this.indexPoint : this.indexPoint+this.baseRange-1;
            Ext.DomHelper[num > 0 ? 'append' : 'insertFirst']('imageList', {
                tag: 'div', cls: 'PNG_bt_icon', id: 'ite_'+this.upperData[m_in].ID, html: String.format(this.templateLog, this.upperData[m_in].ID, this.upperData[m_in].Name)
            }, true).slideIn(num > 0 ? 'b' : 't');
            Ext.get('ite_'+this.upperData[m_out].ID).slideOut(num > 0 ? 't' : 'b', {
                callback: function(){
                    isInit = false;
                }, scope: this, remove: true
            });
            this.indexPoint += num;
            Ext.get('prevImg')[this.indexPoint ? 'show' : 'hide']();
            Ext.get('nextImg')[(this.indexPoint+this.baseRange == this.upperData.length) ? 'hide' : 'show']();
        },
		
		callImage: function(){
		
		}, 
		
		submitSearch: function(){
		    if(Ext.getDom('Keyword').value == '' || Ext.getDom('Keyword').value == Ext.getDom('Keyword').title){
		        alert('Please '+Ext.getDom('Keyword').title);
		        return false;
		    }else{
		        return true;
		    }
		}
    }
}();
Ext.onReady(common.init, common);
