var common = function() {
	var urllink = location.toString();
	var caseType = urllink.substring(urllink.lastIndexOf('\/') + 1, urllink.lastIndexOf('.'));
	if(urllink.lastIndexOf('\/') == urllink.length -1) caseType = '';
	var obj = Ext.urlDecode(urllink.substring(urllink.lastIndexOf('?') + 1, urllink.length));
	var word = [' is empty!!', '\'s format is wrong!!', 'SEARCH', 'Keyword is empty!!'];
	var tf = ['epaper', 'keyword'];
	var task = null; var task_fade = null;
	
	function getTemplate(xtpl){
		var word = (Ext.getDom(xtpl)) ? Ext.getDom(xtpl).innerHTML : xtpl;
		word = word.replace(/\%7B/g, '{').replace(/\%7D/g, '}');
		return word.replace(/TPL/g, 'tpl').replace(/ > /g, ' &gt; ').replace(/ < /g, ' &lt; ');
	}
	
	return {
		pdt: [], 
		index: 'zero', 
		inxScroll: 0,
		inxFade: 0, 
		isMove: false,
		
		init: function() {
			var target = 'banner_inx';
			switch(caseType){
				case 'product':
					target = 'banner_pdt';
					break;
				case 'request':
					var input = Ext.query('[alt^=@]', 'contactus');
					for(var i=0;i<input.length;i++){
						var f = new Ext.form.TextField({ 
							emptyText: input[i].alt.substr(1), emptyClass: '', fieldClass: '', focusClass: '', applyTo: input[i]
						});
						f.getEl().removeClass('x-form-text').removeClass('x-form-empty-field');
					}
				case 'navjack': case 'news':
					target = 'banner_req';
			}
			for (x in tf) {
				if (!Ext.get(tf[x])) continue;
				var f = new Ext.form.TextField({ emptyText: Ext.getDom(tf[x]).value,
					emptyClass: '', fieldClass: '', focusClass: '', applyTo: tf[x]
				});
				f.getEl().removeClass('x-form-text').removeClass('x-form-empty-field');
				if(Ext.get(tf[x]).parent('div[class*=enterkey]')){
					var btn = Ext.get(tf[x]).parent('div[class*=enterkey]').child('input[type=image]', true);
					if (btn) Ext.get(tf[x]).addKeyListener({ key: 13 }, btn.onclick);
				}
			}
			if(Ext.get('pdtList')) {
				Ext.query('input[src$=product_26.jpg]', 'hotMenu')[0].onclick();
				Ext.EventManager.onWindowResize(this.positionResize, this);
			}
			if(Ext.getBody().child('div[class=carousel_component]')) this.initScroll();
			if(Ext.get('fadeImage')) this.initImages(target);
		}, 
		
		initImages: function(target){
			if(obj.UID && target == 'banner_pdt') target = 'morePdt&UID='+obj.UID;
			var cb = function(rspn, option){
				this.data_2 = Ext.util.JSON.decode(rspn.responseText);
				for(var i=0;i<this.data_2.length;i++){
					var imgs = new Image();
					imgs.src = this.data_2[i].Img;
				}
				if(this.data_2.length < 2) return;
				var tpl = new Ext.XTemplate(getTemplate('fadePoint'));
				Ext.get('fadePoint').update(tpl.apply(this.data_2)).show(true);
				Ext.query('img', 'fadePoint')[this.inxFade].src = 'images/index_32_new.png';
				(function(){
					if(Ext.get('fadeImage').child('a')) Ext.get('fadeImage').child('a', true).href = this.data_2[this.inxFade].Url;
					Ext.get('fadeImage').child('img', true).src = this.data_2[this.inxFade].Img;
					Ext.get('fadeImage').fadeIn({duration: 1, useDisplay: true});
					task_fade = new Ext.util.DelayedTask(this.fadeImg, this, ['next']);
					task_fade.delay(this.data_2[this.inxFade].Delays);
				}).defer(2000, this);
			}
			var cn = new Ext.data.Connection({url:"getdata.php?Type="+target}).request({
				scope: this, method: "POST", success: cb
			});
		},
		
		fadeImg2: function(num){
			num = parseInt(num);
			if(num == this.inxFade) return;
			task_fade.cancel();
			this.changeBtnStyle(num, 'fadePoint');
			Ext.get('fadeImage').fadeOut({callback: function(el){
				if(el.child('a')) el.child('a', true).href = this.data_2[this.inxFade].Url;
				el.child('img', true).src = this.data_2[this.inxFade].Img;
				this.delayFade.defer(500, this, [el]);
			}, scope: this, easing: 'easeOutStrong', useDisplay: true});
			this.inxFade = parseInt(num);
		}, 
		
		delayFade: function(el){
			if(!el.child('img', true).complete){
				this.delayFade.defer(500, this, [el]);
				return;
			}
			el.fadeIn({duration: 1, useDisplay: true});
			task_fade.delay(this.data_2[this.inxFade].Delays);
		},
		
		fadeImg: function(aspect){
			var total = Ext.query('img', 'fadePoint').length;
			var inx = this.inxFade+(aspect == 'prev' ? -1 : 1);
			if(inx < 0) inx = total-1;
			if(inx >= total) inx = 0;
			this.fadeImg2(inx);
		},
		
		initScroll: function(){
			var cb = function(rspn, option){
				this.data_1 = Ext.util.JSON.decode(rspn.responseText);
				var box = Ext.getBody().child('div[class=carousel_list]');
				var tpl = new Ext.XTemplate(getTemplate(box.dom.innerHTML));
				box.update(tpl.apply(this.data_1)).show(true);
				if(this.data_1.length < 2) return;
				var tpl = new Ext.XTemplate(getTemplate('selectPoint'));
				Ext.get('selectPoint').update(tpl.apply(this.data_1)).show(true);
				Ext.query('img', 'selectPoint')[this.inxScroll].src = 'images/index_32_new.png';
				task = new Ext.util.DelayedTask(this.moveImg, this, ['next']);
				task.delay(this.data_1[this.inxScroll].Delays);
			}
			var cn = new Ext.data.Connection({url:"getdata.php?Type=newProduct"}).request({
				scope: this, method: "POST", success: cb
			});
		},
		
		moveImg2: function(num){
			num = parseInt(num);
			if(num == this.inxScroll || this.isMove) return;
			task.cancel();
			this.isMove = true;
			var bar = Ext.getBody().child('div[class=carousel_component]');
			var imgs = bar.child('div').first();
			this.changeBtnStyle(num, 'selectPoint');
			bar.scroll(num > this.inxScroll ? 'l' : 'r', imgs.getWidth() * Math.abs(num-this.inxScroll), {callback: function(el){
				this.isMove = false;
				task.delay(this.data_1[this.inxScroll].Delays);
			}, scope: this, easing: 'easeOutStrong'});
			this.inxScroll = parseInt(num);
		}, 
		
		moveImg: function(aspect){
			var total = Ext.query('img', 'selectPoint').length;
			var inx = this.inxScroll+(aspect == 'prev' ? -1 : 1);
			if(inx < 0) inx = total-1;
			if(inx >= total) inx = 0;
			this.moveImg2(inx);
		},
		
		changeBtnStyle: function(num, target){
			var btns = Ext.query('img', target);
			switch(caseType){
				case 'index': case '':
					if(target == 'selectPoint'){
						btns[num].src = 'images/index_32_new.png';
						btns[this.inxScroll].src = 'images/index_31_new23.png';
					}else{
						btns[num].src = 'images/index_32_new.png';
						btns[this.inxFade].src = 'images/index_31_new.png';
					}
					break;
					
				case 'navjack': case 'news': case 'request':
					btns[num].src = 'images/index_32_new.png';
					btns[this.inxScroll].src = 'images/index_31_new23.png';
					break;
					
				case 'product':
					btns[num].src = 'images/index_32_new.png';
					btns[this.inxFade].src = 'images/index_31_new.png';
					break;
			}
			
		},
		
		searchData: function(keyword){
			var kw = Ext.getDom(keyword).value.trim();
			if (kw == word[2] || kw == ''){ alert(word[3]); }else{
				kw = encodeURIComponent(kw);
				var strURL='product.php?Type=search&Keyword='+kw;
				location.href=strURL;
			}
		}, 
		
		moreNews: function(btn, target){
			var div = Ext.query('div[class=newslist]', target);
			var tpl = new Ext.XTemplate(getTemplate('tplNews'));
			var cb = function(rspn, option){
				var data = Ext.util.JSON.decode(rspn.responseText);
				Ext.getDom(target).innerHTML += tpl.apply(data);
				Ext.get(target).last().slideIn('t');
				if(parseInt(btn.alt) == div.length+1) Ext.get(btn).remove();
			}
			var cn = new Ext.data.Connection({url:"getdata.php?Type=callNews"}).request({
				scope: this, method: "POST", success: cb, params: {paramID: div.length}
			});
		},
		
		isEmptyField: function(form){
			var list = Ext.query('input[title]', form);
			var j = 0;
			for (var i = 0; i < list.length; i++) {
				if (list[i].value != "" && list[i].value != list[i].alt.substr(1)) continue; 
				if(j == 0) { alert(list[i].title+word[0]); list[i][list[i].select ? 'select' : 'focus'](); }
				j++;
			}
			return j;
		},
		
		checkContact: function(form){
			var j = this.isEmptyField(form);
			if(Ext.get('EMail')){
				var bool = Ext.form.VTypes.email(Ext.getDom('EMail').value);
				if(!bool && j==0) { alert(Ext.getDom('EMail').title+word[1]); Ext.getDom('EMail')[Ext.getDom('EMail').select ? 'select' : 'focus'](); j++; }
			}
			var d = Ext.get('Contents');
			if(d && j==0 && (d.dom.value == '' || d.dom.value == d.dom.alt.substr(1))) { alert(d.dom.title+word[0]); d.dom[d.dom.select ? 'select' : 'focus'](); j++; }
			var input = Ext.query('[alt^=@]', form);
			for(var i=0;i<input.length;i++){
				if(input[i].value == input[i].alt.substr(1)) input[i].value = '';
			}
			return j > 0 ? false : true;
		}, 
		
		resetValue: function(t){
			if(Ext.get('Contents') && Ext.getDom('Contents').value != '') Ext.getDom('Contents').value = '';
			var input = Ext.query('[value]', t);
			for(var i=0;i<input.length;i++){
				input[i].value = '';
			}
		}, 
		
		callCategory: function(inx, btn, t){
			if(inx == this.index || this.isMove) return;
			this.isMove = true;
			var menu = Ext.query('input', 'hotMenu');
			for(var i=0;i<menu.length;i++){
				menu[i].src = menu[i] == btn ? t : menu[i].alt;
			}
			if(this.pdt['pdt_'+inx]){ this.moveObj(inx); }else{
				var cb = function(rspn, option){
					this.pdt['pdt_'+inx] = Ext.util.JSON.decode(rspn.responseText);
					this.moveObj(inx);
				}
				var cn = new Ext.data.Connection({url:"getdata.php?Type=hotpdt"}).request({
					scope: this, method: "POST", success: cb, params: {paramID: inx}
				});
			}
		}, 
		
		moveObj: function(inx){
			var arr = [];
			var base = this.pdt['pdt_'+this.index] ? this.pdt['pdt_'+this.index] : {uid: [], pdt: []};
			var next = null;
			var jump = 0;
			for(var i=0;i<base.uid.length;i++){
				if(this.pdt['pdt_'+inx].uid.indexOf(base.uid[i]) == -1) arr.push(base.uid[i]);
			}
			for(var i=0;i<arr.length;i++){
				if(Ext.get('pdt_'+arr[i])) Ext.get('pdt_'+arr[i]).hide({duration: .2, callback: function(el){ jump++; el.remove(); }});
			}
			jump ? this.slideMove.defer(250, this, [inx]) : this.slideMove(inx);
		}, 
		
		slideMove: function(inx){
			var base = this.pdt['pdt_'+this.index] ? this.pdt['pdt_'+this.index] : {uid: [], pdt: []};
			this.index = inx;
			var jump = 0;
			var next = Ext.get('pdtList').first('div[class^=product_div_]');
			for(var j=0;j<this.pdt['pdt_'+inx]['uid'].length;j++){
				next = j == 0 ? next : next.next();
				if(!next) next = Ext.DomHelper.append('pdtList', {tag: 'div', cls: 'product_div_'+((Ext.query('div[class^=product_div_]', 'pdtList').length+1)%4 ? '2' : '3')}, true)
				var pdt = Ext.get('pdt_'+this.pdt['pdt_'+inx]['uid'][j]);
				if(!pdt) continue;
				pdt.alignTo(next, 'tl-tl', [0, 0], {duration: .5, easing: 'easeOut'});
				jump++;
			}
			jump ? this.showObj.defer(550, this, [base.uid.length]) : this.showObj(base.uid.length);
		}, 
		
		showObj: function(len){
			var jump = 0;
			var tpl = new Ext.XTemplate(getTemplate('tplPdt'));
			var next = Ext.get('pdtList').first('div[class^=product_div_]');
			for(var j=0;j<this.pdt['pdt_'+this.index]['uid'].length;j++){
				next = j == 0 ? next : next.next();
				var pdt = Ext.get('pdt_'+this.pdt['pdt_'+this.index]['uid'][j]);
				if(pdt) continue;
				pdt = Ext.DomHelper.append('objList', {tag: 'div', html: tpl.apply(this.pdt['pdt_'+this.index]['pdt'][j]), cls: 'product_div_2'}, true).child('div');
				pdt.alignTo(next, 'tl-tl').show({duration: .2});
				jump++;
			}
			jump ? this.cancelOutBox.defer(250, this, [len]) : this.cancelOutBox(len);
		},
		
		cancelOutBox: function(len){
			if(len > this.pdt['pdt_'+this.index].uid.length){
				for(var i=this.pdt['pdt_'+this.index].uid.length;i<len;i++) Ext.get('pdtList').last().remove();
			}
			this.isMove = false;
		},
		
		positionResize: function(){
			var base = this.pdt['pdt_'+this.index] ? this.pdt['pdt_'+this.index] : {uid: [], pdt: []};
			var next = Ext.get('pdtList').first('div[class^=product_div_]');
			for(var j=0;j<base.uid.length;j++){
				next = j == 0 ? next : next.next();
				var pdt = Ext.get('pdt_'+base.uid[j]);
				if(!pdt) continue;
				pdt.alignTo(next, 'tl-tl');
			}
		}, 
		
		callLangauge: function(btn, div){
			Ext.get(div).alignTo(btn, 't-b').slideIn('t');
			Ext.getDoc().on('mousedown', this.closeIf, this);
		}, 
		
		closeIf: function(e){
			if(!e.within(Ext.get('languageDiv1'))){
				Ext.get('languageDiv1').slideOut('t', {callback: function(el){
					el.dom.style.top = '-1000px';
					el.dom.style.left = '-1000px';
				}});
				Ext.getDoc().un('mousedown', this.closeIf, this);
			}
		}
	}
} ();

Ext.onReady(common.init, common);
