var common = function() {
	var urllink = location.toString();
	var caseType = urllink.substr(urllink.lastIndexOf('\/') + 1).split('#')[0].split('.')[0].toLowerCase();
	if(urllink.lastIndexOf('\/') == urllink.length -1) caseType = '';
	var obj = Ext.urlDecode(urllink.substring(urllink.lastIndexOf('?') + 1, urllink.length));
	var tf = [];
	var unit_num = 4;

	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 {
		backup: [],
		isMove: false,
		inxScroll: 0, 
		inxBtn: null,
	
		init: function(){
			var rels = Ext.query('[rel]');
			for(var i=0;i<rels.length;i++){
				tf.push(rels[i].id);
			}
			for (x in tf) {
				if (!Ext.get(tf[x])) continue;
				var f = new Ext.form.TextField({ emptyText: Ext.getDom(tf[x]).value, focusClass: '',
					emptyClass: '', fieldClass: '', applyTo: tf[x], id: 'ext_'+Ext.getDom(tf[x]).id
				});
				f.getEl().removeClass('x-form-text').removeClass('x-form-empty-field');
			}
			var inputs = Ext.query('input', 'tabMenu');
			if(inputs.length && Ext.get('tabMenu')) inputs[0].onclick();
			if(Ext.get('stockInfo')) this.initStock();
			var sc = Ext.query('div[class=carousel_component]');
			for(var i=0;i<sc.length;i++){
				this.createNews(sc[i]);
			}
			if(caseType == 'investor_se' && obj.ID) this.slideEvents(Ext.getDom('btn_'+obj.ID));
		},
		
		createNews: function(box){
			var h = 0;
			var cs = Ext.query('tr', box);
			var num = Math.ceil(cs.length/unit_num);
			var pageBox = Ext.get(box).parent('table').child('td[class=pointArea]');
			if(num > 1){
				var str = pageBox.dom.innerHTML;
				var con = '';
				for(var i=0;i<num;i++) con += str.replace('{num}', i);
				pageBox.update(con);
				this.changeStyle(pageBox, 0)
			}else{ pageBox.hide(); }
			if(cs.length){
				for(var i=0;i<unit_num;i++){
					if(!cs[i]) break;
					h += Ext.get(cs[i]).getHeight();
				}
			}else{ box.update('NO DATA'); }
			Ext.get(box).scrollTo('top', 0);
			Ext.get(box).setHeight(h > 0 ? h : box.getHeight());
		},
		
		moveImg2: function(btn, num){
			var num = parseInt(num); var h = 0; var bh = 0;
			if(num == this.inxScroll || this.isMove) return;
			this.isMove = true;
			this.changeStyle(Ext.get(btn).parent('td[class=pointArea]'), num);
			var bar = Ext.get(btn).parent('table[class=scroll]').child('div[class=carousel_component]');
			var cs = Ext.query('tr', bar.dom);
			var start = num > this.inxScroll ? this.inxScroll*unit_num : num*unit_num;
			var last = num > this.inxScroll ? num*unit_num : this.inxScroll*unit_num;
			if(last+unit_num > cs.length-1) last = cs.length-unit_num;
			for(i=start;i<last;i++) h += Ext.get(cs[i]).getHeight();
			var n = num > this.inxScroll ? last : start;
			for(i=0;i<unit_num;i++){
				if(!Ext.get(cs[n+i])) break;
				bh += Ext.get(cs[n+i]).getHeight();
			}
			bar.scroll(num > this.inxScroll ? 'b' : 't', h, {callback: function(el){
				this.isMove = false; this.inxScroll = num;
			bar.setHeight(bh, true);
			}, scope: this});
		},
		
		changeStyle: function(pageBox, num){
			var pages = Ext.query('div', pageBox.dom);
			for(var i=0;i<pages.length;i++){
				if(num == i){
					pages[i].className = 'investor_overview_btn_01';
					pages[i].onmouseout = null;
					pages[i].onmouseover = null;
					pages[i].style.cursor = 'default';
				}else{
					pages[i].className = 'investor_overview_btn_01a';
					pages[i].onmouseout = function(){this.className='investor_overview_btn_01a';}
					pages[i].onmouseover = function(){this.className='investor_overview_btn_01';}
					pages[i].style.cursor = 'pointer';
				}
			}
		},
		
		initStock: function(){
			this.stockTpl = new Ext.XTemplate(getTemplate('stockInfo'));
			this.readStock();
		},
		
		readStock: function(){
			if(this.isMove) return;
			this.isMove = true;
			var cb = function(rspn, option){
				var data = Ext.util.JSON.decode(rspn.responseText);
				Ext.get('stockInfo').update(this.stockTpl.apply(data)).show(true);
				this.isMove = false;
			}
			var cn = new Ext.data.Connection({url:'getdata.ashx?Type=stock'}).request({scope: this, success: cb});
		},
		
		isEmptyField: function(request){
			var list = Ext.query('[rel=must]', request);
			for (var i=0;i<list.length;i++) {
				if(Ext.getCmp('ext_'+list[i].id)){
					if(Ext.getCmp('ext_'+list[i].id).getRawValue() == '') { alert(list[i].title + '不得為空!!'); list[i][list[i].select ? 'select' : 'focus'](); return true; }
				}else{
					if (list[i].value == "") { alert(list[i].title + '不得為空!!'); list[i][list[i].select ? 'select' : 'focus'](); return true; }
				}
			}
			return false;
		},
		
		isNonEmpty: function(request){
			if(this.isEmptyField(request)) return false;
			if (Ext.getDom('EMail').value == '' || !Ext.form.VTypes.email(Ext.getDom('EMail').value)) {
                alert('E-Mail 格式有誤!!'); Ext.getDom('EMail').select(); return false;
            }
			return true;
		}, 
		
		showContents: function(btn){
			if(btn == this.inxBtn) return;
			this.inxBtn = btn;
			if(!this.backup[btn.id]){
				var cb = function(rspn, option){
					this.backup[btn.id] = Ext.util.JSON.decode(rspn.responseText);
					this.createBox(this.backup[btn.id]);
				}
				var cn = new Ext.data.Connection({url:'getdata.ashx?Type='+btn.id}).request({scope: this, success: cb});
			}else{
				this.createBox(this.backup[btn.id]);
			}
			this.changeBtnStyle(btn, 'tabMenu');
		},  
		
		changeBtnStyle: function(btn, area){
			var inputs = Ext.query('input', area)
			for(var i=0;i<inputs.length;i++){
				if(btn == inputs[i]){
					inputs[i].style.cursor = 'default';
					inputs[i].src = 'images/'+area+'_'+i+'.jpg';
				}else{
					inputs[i].style.cursor = 'pointer';
					inputs[i].src = 'images/'+area+'_gray'+i+'.jpg';
				}
			}
		},
		
		createBox: function(data){
			var tpl = new Ext.XTemplate(getTemplate('displayList'));
			Ext.get('newsContents').update(tpl.apply(data)).show(true);
		}, 
		
		fadeFaq: function(btn){
			var select = 'div[class=investor_faq_content_02]';
			var owen = Ext.get(btn).parent(select);
			var target = owen[owen.next(select) ? 'next' : 'prev'](select);
			owen.hide().dom.style.display = 'none';
			target.dom.style.display = 'block';
			target.show(true);
		}, 
		
		slideEvents: function(btn){
			var select = 'div[class=investor_se_content_01]';
			var owen = Ext.get(btn).parent(select);
			var target = owen.next('div');
			btn.style.display = 'none';
			if(target.dom.style.display == 'none'){
				target.dom.style.display = 'block';
				target.slideIn('t');
				Ext.get(btn).next().dom.style.display = 'block';
			}else{
				target.slideOut('t', {callback: function(el){
					target.dom.style.display = 'none';
				}, scope: this});
				Ext.get(btn).prev().dom.style.display = 'block';
			}
		}, 
		
		changeLink: function(){
			var f = Ext.getDom('FileType').value;
			var y = Ext.getDom('FinYear').value;
			location.href = 'investor_fd.aspx?KindID='+f+'&Year='+y
		}
	}
} ();

Ext.onReady(common.init, common);
