﻿window.addEvent('load', function() {
	initLeftMenu();
	
	truncateLink();
	initSearch();
	initMenu();
	initForm();	
	initFrmBanner();
	initDocumentation();
	fixPNG();
	
	try {
		initTinyMCE();
	} catch (e) {}
	
	var textarea = $$('textarea');
	var container = $('container');
	var system_info = $ES('div.system_header');
	
	if (system_info.length == 0 && textarea.length == 0 && container && container.getCoordinates().height < 250) {
		container.setStyle('height', 250);
	}
});

function fixPNG() {
	var blankSrc = ROOT_URL + "img/blank.gif";
	
	if (navigator.appVersion.indexOf("MSIE") != -1) {
		var images = $$('img');
		for (var i = 0; i < images.length; i++) {
			if (images[i].src.indexOf('.png') != -1) {
				images[i].style.width = images[i].getSize().size.x;
				images[i].style.height = images[i].getSize().size.y;
				images[i].style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' + images[i].src + '", sizingMethod="scale");'
				images[i].src = blankSrc;
			}
		}
	}
}

function logout(link) {
	try {
		new Event().stop();
	} catch (e) {} 
	
	if (!logout.confirmClass) {
		logout.confirmClass =new ConfirmClass("Thông báo", "Bạn muốn kết thúc phiên làm việc?", [{
			text: "Đồng ý",
			id: 1
		}, {
			text: "Không đồng ý",
			id: 2
		}], buttonHandler);
	}	
	
	function buttonHandler(id) {
		if (id == 1) {
			window.location.href = link;
		} else {
			
		}		
	}
	
	logout.confirmClass.show();
}

function initBanner(time) {
	var banner = $('bannerContainerMask');
	if (banner) {
		var imgs = $ES('img', banner);
		if (imgs.length < 2) {
			return;
		}
		
		for (var i = 0; i < imgs.length; i++) {
			imgs[i].fx = new Fx.Styles(imgs[i], {duration: 500});
			imgs[i].setOpacity(0);
		}
		
		var curIndex = 0;
		setInterval(function() {
			imgs[curIndex].fx.start({
				left: [0, -200],
				opacity: [1, 0]
			});
			
			curIndex = (curIndex + 1) % imgs.length;
			
			imgs[curIndex].fx.start({
				left: [200, 0],
				opacity: [0, 1]
			});
		}, time * 1000);
		
		imgs[curIndex].fx.start({
				left: [200, 0],
				opacity: [0, 1]
			});
	}
}

function truncateLink() {
	var search = $ES('div.search');
	if (search.length > 0) { // front-end
		var arrLinks = $$('a');
		var str, s;
		var re= /<\S[^><]*>/g
		for (var i = 0; i < arrLinks.length; i++) {
			str = arrLinks[i].innerHTML;
			s = str.replace(re, "");			

			if (s.indexOf(' ') == -1 && s.length > 70) {
				arrLinks[i].innerHTML = str.replace(s, s.substring(0, 50)) + "...";
			}
		}
	}
}

function initDocumentation() {
	var iframe = $('mediaplayer');
	if (iframe) {
		var container = $('listContainer');
		$ES('.medias', container).each(function(el, index) {
			el.addEvent('click', function() {
				iframe.src = iframe.src.substr(0, iframe.src.lastIndexOf('/') + 1) + el.getProperty('mid');
			});
		});
				
		var fx = new Fx.Style(container, 'top');
		
		$('downButton').addEvent('click', function() {
			var y = container.offsetTop;
			var h = container.offsetHeight;
			var hp = container.getParent().offsetHeight;

			if (h - 128 + y >= hp) {
				fx.start(y - 128);
			} else {
				fx.start(hp - h);
			}
		});
		
		$('upButton').addEvent('click', function() {
			var y = container.offsetTop;
			if (y + 128 <= 0) {
				fx.start(y + 128);
			} else {
				fx.start(0);
			}
		});
	}
}

function initSearch() {
	if ($('search_img')) {
		$('search_img').addEvent('click', function() {
			window.location.href = ROOT_URL + LANGUAGE + "/" + SEARCH + "/" + $('search_img').getPrevious().value;
		});
		
		$('search_img').getPrevious().addEvent('keydown', function(event) {
			event = new Event(event);
			//event.stop();
			
			if (event.key == 'enter') {
				window.location.href = ROOT_URL + LANGUAGE + "/" + SEARCH + "/" + $('search_img').getPrevious().value;
			}
		});
	}
}
function gotoWebPage() {
	window.open($('weblinks').value, "_blank");
}

function initLeftMenu() {
	var table = $('left_menu');
	if (!table) {
		return;
	}

	var trs = $ES('tr', table);
	trs.each(function(el, index) {
		el.fx1 = new Fx.Styles($E('a', el), {duration: 100});
		if ($E('img', el)) {
			el.fx2 = new Fx.Style($E('img', el), 'padding-left', {duration: 100});
		}
		
		el.addEvents({
			mouseover: function() {
				this.fx1.stop();
				this.fx1.start({
					"padding-right": 10,
					"color": "#00B7FF"
				});
				
				if (this.fx2) {
					this.fx2.stop();
					this.fx2.start(2);
				}
			},
			
			mouseout: function() {
				this.fx1.stop();
				this.fx1.start({
					"padding-right": 0,
					"color": "#266D9B"
				});
				
				if (this.fx2) {
					this.fx2.stop();
					this.fx2.start(0);
				}
			},
			
			click : function(event) {
				new Event(event).stop();
				
				if ($E('a', this).href.indexOf('javascript:void(0)') != -1) {
					var e = this.getNext();
					while (e && e.hasClass('sub_menu')) {
						if (e.getStyle('display') == 'none') {
							e.setStyle('display', '');
						} else {
							e.setStyle('display', 'none');
						}
						
						e = e.getNext();
					}
				} else {
					window.location.href = $E('a', this).href;
				}
			}
		});
		
		if (el.hasClass('sub_menu')) {
			el.setStyle('display', 'none');
		}
	});	
}

function initFrmBanner() {
	var frm = $('frmBanner');
	if (!frm) {
		return;
	}
	
	$ES('div.uparrow', frm).each(function(el, i) {
		el.setStyle('cursor', 'pointer');
		el.addEvent('click', function(evt) {
			new Event(evt).stop();
			
			changeOrder(this, true);
		});
	});
	
	$ES('div.downarrow', frm).each(function(el, i) {
		el.setStyle('cursor', 'pointer');
		el.addEvent('click', function(evt) {
			new Event(evt).stop();
			
			changeOrder(this, false);
		});
	});
	
	hideUpDownArrow();
}

function changeOrder(obj, isUp) {
	var tr = obj.getParent().getParent();
	var link = $E('a', tr).href;
	var id = link.substring(link.lastIndexOf('/'));
	var up = isUp ? 1 : 0;

	new Ajax(ROOT_URL + 'admin/banners/changeOrder' + id + '/' + up, {method: 'post'}).request();

	if (isUp) {
		tr.getChildren()[0].injectBefore(tr.getPrevious().getChildren()[0]);
		tr.getPrevious().getChildren()[1].injectBefore(tr.getChildren()[0]);
				
		tr.injectBefore(tr.getPrevious());		
	} else {
		tr.getChildren()[0].injectBefore(tr.getNext().getChildren()[0]);
		tr.getNext().getChildren()[1].injectBefore(tr.getChildren()[0]);
		
		tr.injectAfter(tr.getNext());
	}
	
	hideUpDownArrow();
}

function hideUpDownArrow() {
	var frm = $('frmBanner');
	var trs = $ES('tr', frm);
	
	if (trs.length <= 1) {
		return;
	}
	
	$E('div.downarrow', trs[1]).setStyle('background-image', $E('div.downarrow', trs[trs.length - 1]).getStyle('background-image'));
	$E('div.uparrow', trs[trs.length - 1]).setStyle('background-image', $E('div.uparrow', trs[1]).getStyle('background-image'));
	
	$E('div.uparrow', trs[1]).setStyle('background-image', 'url("")');	
	$E('div.downarrow', trs[trs.length - 1]).setStyle('background-image', 'url("")');
}

function confirmOnDelete() {
	var result = confirm('Bạn đã kiểm tra kỹ trước khi xóa?');
	if ($('frmBanner')) {
		hideUpDownArrow();
	}
	
	return result;
}

function initMenu() {
	var arrSubMenu = $$(".submenu");
	var item, a;
	
	var _seft = new Object();
	_seft.submenus = new Array();
	_seft.fxs = new Array();
	_seft.isMouseIn = false;
	_seft.curIndex = -1;
	_seft.timeoutid = 0;
	
	arrSubMenu.each(function(el, index) {
		item = new Element('div');
		item.addClass('menuItem');
		
		a = new Element('a');
		a.setProperty('href', 'javascript:void(0)');
		a.addEvent('click', function(e){new Event(e).stop();});		
		a.setText(el.getProperty('title'));
		a.injectInside(item);

		item.injectInside($('menu'));
		item.addEvent('mouseover', function() {
			handleMouseIn(this, index);
		});
		
		item.addEvent('mouseout', function() {
			handleMouseOut(this, index);
		});
		
		el.addEvent('mouseover', function() {
			handleMouseIn();
		});
		
		el.addEvent('mouseout', function() {
			handleMouseOut();
		});
		
		$ES('div', el).each(function(e) {
			e.href = $E('a', e).href;
			e.setHTML($E('a', e).innerHTML);
			
			e.addEvents({
				mouseover: function(event) {
					e.addClass('over');					
				},
				mouseout: function(event) {
					e.removeClass('over');
				},
				click: function(event) {
					window.location.href = e.href;
				}
			});
		});
				
		el.setStyles({
			height: 0,
			overflow: 'hidden'
		});
		el.remove();
		
		_seft.submenus[index] = el;
		_seft.fxs[index] = new Fx.Style(el, 'height', {duration: 200, onComplete: handleComplete});
	});
	
	function handleComplete(el) {
		if (parseInt(el.getStyle('height')) == 0) {
			try {
				el.remove();
			} catch (e) {}
		} else {
			var coords = el.getChildren()[0].getCoordinates();
			el.setStyle('height', coords.height * el.getChildren().length);
		}
	}
	
	function handleMouseIn(el, index) {
		_seft.isMouseIn = true;
		if (!el || el == null || index == _seft.curIndex) {
			return;
		}
		
		try {
			clearTimeout(_seft.timeoutid);
		} catch (e) {}
				
		if (_seft.curIndex != -1) {
			_seft.fxs[_seft.curIndex].stop();
			_seft.fxs[_seft.curIndex].start(0);
		}
		_seft.curIndex = index;
		
		var coord = el.getCoordinates();		
		_seft.submenus[index].injectInside($$('body')[0]);
		_seft.submenus[index].setStyles({
			left: coord.left - 1,
			top: coord.top + coord.height
			//width: coord.width - 1
		});
		
		_seft.fxs[index].stop();
		_seft.fxs[index].start(coord.height * _seft.submenus[index].getChildren().length + 5);
	}
	
	function handleMouseOut(el, index) {
		_seft.isMouseIn = false;

		try {
			clearTimeout(_seft.timeoutid);
		} catch (e) {}
		
		_seft.timeoutid = setTimeout(handleTimeout, 300);
	}
	
	function handleTimeout() {
		if (!_seft.isMouseIn && _seft.curIndex != -1) {
			_seft.fxs[_seft.curIndex].start(0);
			_seft.curIndex = -1;
		}
	}
}

function initForm() {
	//var form = $$('form')[0];
	var inputs = $$('input');

	for (var i = 0; i < inputs.length; i++) {
		if (inputs[i].getProperty('readonly')) {
			inputs[i].setStyle('background-color', '#FFFFDD');
		} else if ((inputs[i].type == 'text' || inputs[i].type == 'password')) {
			inputs[i].addEvents({
				focus : function(event) {
					event = new Event(event);
					event.target.setStyle('background-color', '#FFFFDD');
				},
				
				blur: function(event) {
					event = new Event(event);
					event.target.setStyle('background-color', '');
				}
			});
		}

		if (inputs[i].getProperty('isPreview') == 'true' && trim(inputs[i].value) != '') {
			inputs[i].setStyle('display', 'none');
			var img = new Element('img');
			img.src = inputs[i].value;
			img.addEvent('load', function() {
				if (this.getCoordinates().width > 500) {
					this.setStyle('width', 500);
				}
			});
			
			img.injectInside(inputs[i].getParent());
		}
	}

	i = 0;
	while (i < inputs.length && (inputs[i].type != 'submit' && inputs[i].type != 'image')) {
		i++;
	}

	if (i < inputs.length) {
		inputs[i].addEvent('click', handleSubmit);
	}
}

function handleSubmit(event){
	event = new Event(event).stop();

	// remove all error_message
	var target = event.target;

	$ES('.error_message', target.form).each(function(el) {
		el.remove();
	});

	var flag = true;
	$ES('.error_msg', target.form).each(function(el) {
		var input = $E('input', el.getParent().getParent());
		
		if (input != null && (input.getProperty('required') != 'no' || trim(input.value) != '')) {
			if (input.value.trim() != '') {			
				el.setStyle('display', '');
			} else {
				flag = false;
				el.setStyle('display', 'block');
			}
			
			if (input.type == 'password') {
				if ($(input.id.substring(2)) && $(input.id.substring(2)).value != input.value) {
					flag = false;
					el.setStyle('display', 'block');
				}
				else {
					$ES('input', input.getParent())[1].value = hex_md5(input.value);
				}
			}
			
			if (input.id.indexOf('email') == 0 && /^[\w|\.]+@([a-z]+\.)+[a-z]+$/.test(input.value) == false) {
				flag = false;
				el.setStyle('display', 'block');
			}
			
			if (input.getProperty('isnumber') && /^[0-9]+$/.test(input.value.trim()) == false) {
				flag = false;
				el.setStyle('display', 'block');
			}
		} else {
			var textarea = $E('textarea', el.getParent().getParent());
			if (textarea && textarea.getProperty('required') != 'no' && tinyMCE.get(textarea.id).getContent().trim() == '') {
				flag = false;
				el.setStyle('display', 'block');
			} else {
				el.setStyle('display', '');
			}
		}
	});
	
	if (flag) {
		target.form.submit();
	}
}

function initTinyMCE() {
	if ($$('textarea').length > 0) {
		tinyMCE.init({
			// General options
			mode: "textareas",
			elements: "ajaxfilemanager",
			theme: "advanced",
			plugins: "safari,layer,table,iespell,inlinepopups,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,selectfile",
			fontsize: 3,
			
			// Theme options
			theme_advanced_buttons1: "bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,fontselect,fontsizeselect,|,forecolor,backcolor",
			theme_advanced_buttons2: "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,|,undo,redo,|,link,unlink,image,help,code,|,preview",
			theme_advanced_buttons3: "tablecontrols,|,media,|,print,|,fullscreen",
			theme_advanced_fonts : "Arial=arial,helvetica,sans-serif;Tahoma=tahoma,arial,helvetica,sans-serif;Times New Roman=times new roman,times;Verdana=verdana,geneva",
			theme_advanced_font_sizes : "1,2,3,4,5,6,7",
			theme_advanced_font_size: 3,
			theme_advanced_toolbar_location: "top",
			theme_advanced_toolbar_align: "left",
			theme_advanced_statusbar_location: "bottom",
			theme_advanced_resizing: false,
			file_browser_callback: "ajaxfilemanager"
		});
	}
}

function ajaxfilemanager(field_name, url, type, win) {
	var ajaxfilemanagerurl = "tiny_mce/plugins/ajaxfilemanager/ajaxfilemanager.php";
	switch (type) {
		case "image":
			break;
		case "media":
			break;
		case "flash": 
			break;
		case "file":
			break;
		default:
			return false;
	}
    tinyMCE.activeEditor.windowManager.open({
        url: ROOT_URL + "js/tiny_mce/plugins/ajaxfilemanager/ajaxfilemanager.php",
        width: 700,
        height: 515
    },
	{
        window : win,
        input : field_name
    });
}

function selectFile(id) {
	tinyMCE.get('mceSelectFile').focus();
	tinyMCE.get('mceSelectFile').setContent("");
	
	selectFile.id = id;
	if (!selectFile.inited) {
		var f = function(ed, url) {
			if ($(selectFile.id).getProperty('isPreview')) {
				var parent = $(selectFile.id).getParent();
				
				if (!$E('img', parent)) {
					var img = new Element('img');
					img.className = "previewImage";
					img.injectInside(parent);
					$(selectFile.id).style.display = 'none';
				}
				
				$E('img', parent).src = url;
			}
			$(selectFile.id).value = url;
		}
		tinyMCE.get('mceSelectFile').onChange.add(f);
		selectFile.inited = true;
	}
	
	tinyMCE.execCommand('mceSelectFile');
	
	return false;
}

function initPaging(recordsPerPage, currPage, totalPage) {
	var div = $('paging');

	if (!div) {
		return;
	}

	
	
	var td = div.getParent().getParent();
	td.setProperty('colspan', td.getParent().getPrevious().getChildren().length);
	
	if (window.ie) {
		$E('div.buttonRightCap', div).setStyle("width", "25px");
	}
	var pageDiv = $E('div.buttonRightCap', div).getFirst();
	var span;
	
	// records per page
	$E('select', div).setProperty('value', recordsPerPage);
	$E('select', div).addEvent('change', function() {
		div.getParent().submit();
	});
	
	// first & previous
	if (currPage > 1) {
		$ES('div.buttonLeft', div)[0].addEvent('click', function() {
			showPage(1);
		});
		
		$ES('div.buttonLeft', div)[1].addEvent('click', function() {
			showPage(currPage - 1);
		});
		
		if (currPage > 2 && currPage == totalPage) {
			span = new Element('span');
			span.addClass('page');
			span.setText(currPage - 2);
			span.injectInside(pageDiv);
			
			span.addEvent('click', function() {
				showPage(currPage - 2);
			});
		}
		
		span = new Element('span');
		span.addClass('page');
		span.setText(currPage - 1);
		span.injectInside(pageDiv);
		
		span.addEvent('click', function() {
			showPage(currPage - 1);
		});
	} else {
		$ES('div.buttonLeft', div)[0].className = 'buttonLeftOff';
		$ES('div.buttonLeft', div)[0].className = 'buttonLeftOff';
	}
	
	// current page
	span = new Element('span');
	span.addClass('currPage');
	span.setText(currPage);
	span.injectInside(pageDiv);

	// next & last
	if (currPage < totalPage) {
		$ES('div.buttonRight', div)[0].addEvent('click', function() {
			showPage(currPage + 1);
		});
		
		$ES('div.buttonRight', div)[1].addEvent('click', function() {
			showPage(totalPage);
		});
		
		span = new Element('span');
		span.addClass('page');
		span.setText(currPage + 1);
		span.injectInside(pageDiv);
		
		span.addEvent('click', function() {
			showPage(currPage + 1);
		});
		
		if (currPage == 1 && currPage + 1 < totalPage) {
			span = new Element('span');
			span.addClass('page');
			span.setText(currPage + 2);
			span.injectInside(pageDiv);
			
			span.addEvent('click', function() {
				showPage(currPage + 2);
			});
		}
	} else {
		$ES('div.buttonRight', div)[0].className = 'buttonRightOff';
		$ES('div.buttonRight', div)[0].className = 'buttonRightOff';
	}
	
	$E('div.showPage', div).setText('Trang ' + currPage + ' / ' + totalPage);
	
	var child = div.getFirst();
	child.setStyle('width', child.getCoordinates().width);
	child.setStyle('float', "none");
	child.setStyle('margin-left', (div.getCoordinates().width - child.getCoordinates().width) / 2);
	
	function showPage(page) {
		$E('input', div.getParent()).setProperty('value', page);
		div.getParent().submit();
	}
}

function addMore(aLink) {
	var tr = $(aLink).getParent().getParent();
	
	var newTr = new Element('tr');
	var tds = tr.getChildren();
	
	var td = tds[0].clone();
	td.injectInside(newTr);
	
	td = tds[1].clone();
	td.injectInside(newTr);
	
	var node = $E('input', td);
	node.addEvents({
		focus : function(event) {
			event = new Event(event);
			event.target.setStyle('background-color', '#FFFFDD');
		},
		
		blur: function(event) {
			event = new Event(event);
			event.target.setStyle('background-color', '');
		}
	});
			
	var i = 0;
	while ($(node.id + i)) {
		i++;
	}
	
	//input
	node.id += i 
	node.value = "";
	
	// a -> select file
	$E('a', td).setProperty('onmousedown', "return selectFile('" + node.id + "');");
	
	
	// a -> delete
	node = $ES('a', td)[1];
	node.setProperty('onclick', 'removeThis(this)');
	node.setText('Xóa');
	
	tds[2].clone().injectInside(newTr);
	
	newTr.injectAfter(tr);
}

function removeThis(obj) {
	try {
		$(obj).getParent().getParent().remove();
	} catch (e) {};
}

function changeLanguage(lang) {		
	try {
		new Event().stop();
	} catch (e) {}   
	   
	var href = window.location.href;
	href = href.replace(/\/vn$/, "/" + lang);
	href = href.replace(/\/en$/, "/" + lang);
	href = href.replace(/\/jp$/, "/" + lang);

	href = href.replace(/\/vn\//, "/" + lang + "/");
	href = href.replace(/\/en\//, "/" + lang + "/");
	href = href.replace(/\/jp\//, "/" + lang + "/");
	
	if (href.indexOf("/" + lang) == -1) {
		href += "/" + lang;
	}
	
	window.location.href = href;
}

function checkOnSubmit(obj) {
	try {
		new Event().stop();
	} catch (e) {} 
	
	var target = document;
	if (obj && obj.form) {
		target = obj.form;
	}
	
	var flag = true;
	var inputs = target.getElementsByTagName('input');
	
	for (var i = 0; i < inputs.length; i++) {
		if (inputs[i].parentNode.className != 'search' && trim(inputs[i].value) == '') {
			flag = false;
			inputs[i].style.backgroundColor = "#FF0000";
		} else {
			inputs[i].style.backgroundColor = "";
		}
	}
	
	var content = target.getElementsByTagName('textarea');
	if (content.length > 0) {
		content = content[0];
		if (trim(content.value) == '') {
			flag = false;
			content.style.backgroundColor = "#FF0000";
		} else {
			content.style.backgroundColor = "";
		}
	}
	
	if (flag) {
		obj.form.submit();
	}
}

function trim(str) {
	var s = str.replace(/^(\s)+/, '');
	return s.replace(/(\s)+$/, '');
}

function clearBackground(obj) {
	var target = document;
	if (obj && obj.form) {
		target = obj.form;
	}
	
	var inputs = target.getElementsByTagName('input');	
	for (var i = 0; i < inputs.length; i++) {
		inputs[i].style.backgroundColor = "";
	}
	
	var content = target.getElementsByTagName('textarea')[0];
	content.style.backgroundColor = "";
}