
YAHOO.namespace("trenderz");

function show(id) {
	var elt = YAHOO.util.Dom.get(id);
	YAHOO.util.Dom.removeClass(elt, "hide");	
	YAHOO.util.Dom.addClass(elt, "show");	
}

function hide(id) {
	var elt = YAHOO.util.Dom.get(id);
	YAHOO.util.Dom.removeClass(elt, "show");	
	YAHOO.util.Dom.addClass(elt, "hide");	
}

function onShow(e, params) {
	show(params.id);	
}

function onHide(e, params) {
	hide(params.id);	
}


function getCoord(o) {
	var coord = {x: o.offsetLeft, y: o.offsetTop};
	while (o = o.offsetParent) {
		coord.x += o.offsetLeft;
		coord.y += o.offsetTop;
	}
	return coord;
}

function toggleElement(parentId, elementTag, elementClass, id) {
	var elements = YAHOO.util.Dom.getElementsByClassName(elementClass, elementTag, parentId);
	var e;
	for(var i = 0; i < elements.length; i++) {
		e = elements[i];
		hide(e);
	}
	e = document.getElementById(id);
	if (e) {
		show(e);
	}
}

function expand(o, id) {
	var e = YAHOO.util.Dom.get(id);
	if (YAHOO.util.Dom.hasClass(e, "show")) {
		hide(e);
		YAHOO.util.Dom.addClass(o, "collapsed");
		YAHOO.util.Dom.removeClass(o, "expanded");	
	} else {
		show(e);
		YAHOO.util.Dom.addClass(o, "expanded");
		YAHOO.util.Dom.removeClass(o, "collapsed");	
	}
}

function onExpand(e, params) {
	var o = YAHOO.util.Event.getTarget(e);	
	expand(o, params.id);	
}

function toggleElements(e, params) {
	var id1 = params.id1;
	var id2 = params.id2;
	var e1 = YAHOO.util.Dom.get(id1);
	var e2 = YAHOO.util.Dom.get(id2);
	if (YAHOO.util.Dom.hasClass(e1, "show") || !YAHOO.util.Dom.hasClass(e1, "hide")) {
		hide(e1);
		show(e2);
	} else if (YAHOO.util.Dom.hasClass(e2, "show") || !YAHOO.util.Dom.hasClass(e2, "hide")) {
		hide(e2);
		show(e1);
	}
}

function mainMenuMouseHandler(e) {	
	var elTarget = YAHOO.util.Event.getTarget(e);	
	while (elTarget.id != "menu-main") {
		if(elTarget.nodeName.toUpperCase() == "LI") {
			toggleElement("submenu-main", "ul", "menu-item", "submenu-" + elTarget.id);
			break;
		} else {
			elTarget = elTarget.parentNode;
		}
	}
}

function initializeMainMenu() {
	YAHOO.util.Event.on("menu-main", "mouseover", mainMenuMouseHandler);
}

function getPixelValue(value) {
	var v = value;
	if (v.substring(v.length - 2) == 'px') {
		v = v.substring(0, v.length - 2);
	}
	return v;
}

function addDetail(containerId, detailDescId, detailImageId, region){
	var detailDesc = YAHOO.util.Dom.get(detailDescId);
	detailDesc = detailDesc.cloneNode(true);
	var childs = detailDesc.getElementsByTagName('div');
	var image = childs[0].getElementsByTagName('img')[0];
	var detailImage = YAHOO.util.Dom.get(detailImageId);


	 Dom.setStyle(image, 'left', Dom.getStyle(detailImage, 'left'));
	 Dom.setStyle(image, 'top', Dom.getStyle(detailImage, 'top'));
	 Dom.setStyle(image, 'width', Dom.getStyle(detailImage, 'width'));
	 Dom.setStyle(image, 'height', Dom.getStyle(detailImage, 'height'));
	
	var details = YAHOO.util.Dom.get(containerId);
	details.appendChild(detailDesc);
	var area = document.createElement('input');
	area.type = 'hidden';
	area.name = 'detail_area[]';
	var x = region.left;
	var y = region.top;
	var w = region.width;
	var h = region.height;
	area.value = x + ',' + y + ',' + w + ',' + h; 
	 
	details.appendChild(detailDesc);
	detailDesc.appendChild(area);
	childs = YAHOO.util.Dom.getElementsByClassName('detail-desc', 'div', details);
	var di = 1;
	for (var i = 0; i < childs.length; i++) {
		if (childs[i].id.substring(0, 2) == 'd-') {
			di = Math.max(di, parseInt(childs[i].id.substring(2)));	
		}
		
	}
	di = di + 1;	
	detailDesc.id = "d-" + di;
	Dom.setStyle(detailDesc, 'display', 'block');
}

function getSelectedIndexByValue(id, value) {
	var s = YAHOO.util.Dom.get(id);
	var i = 0;
	if (s) {
		for(i = 0; i < s.options.length; i++) {
			if (s.options[i].value == value) {
				break;
			}
		}
	}
	return i;
}

function initSelect(id, value) {
	YAHOO.util.Dom.get(id).selectedIndex = getSelectedIndexByValue(id, value);	
}

function deleteInputs(o) {
	var inputs = o.getElementsByTagName('input');
	for(var i = 0; i < inputs.length; i++) {
		if (inputs[i].type == 'file') {
			inputs[i].value = null;
		} else if (inputs[i].name == 'deleted[]') {
			inputs[i].value = 1;
		}
	}
}

function displayAllArea(id, showAll, focusedDetail) {
	var container = YAHOO.util.Dom.get('detail' + id + '-container');
	var allArea = YAHOO.util.Dom.getElementsByClassName('detail-body', 'div', container);
	for (var a = 0; a < allArea.length; a++) {
		var area = allArea[a];
		var detail = area.parentNode; 
		if (showAll && YAHOO.util.Dom.hasClass(area, 'show')) {
			return;
		}
		if (focusedDetail) {
			if (showAll) {
				YAHOO.util.Dom.addClass(focusedDetail, "focused");
			} else {
				YAHOO.util.Dom.removeClass(focusedDetail, "focused");
			}
		}
		if (showAll) {
			YAHOO.util.Dom.addClass(detail, "active");
			show(area);
		} else {
			YAHOO.util.Dom.removeClass(detail, "active");
			hide(area);
		}
	}
}

function displayArea(e, params) {
	var o = YAHOO.util.Event.getTarget(e);
	reinitMap(params.id);
	displayAllArea(params.id, params.show, null);
	YAHOO.util.Event.preventDefault(e);
}

function displayDetail(e, params) {
	var o = YAHOO.util.Event.getTarget(e);
	var o = o.parentNode;
	var detail = YAHOO.util.Dom.get(o.id + '-zoom');
	if (detail && params.show && YAHOO.util.Dom.hasClass(detail, 'show')) {
		return;
	}
	displayAllArea(params.id, params.show, o);
	var container = YAHOO.util.Dom.get('detailzoom' + params.id + '-container');
	var allZoom = YAHOO.util.Dom.getElementsByClassName('detail-zoom', 'div', container);
	for (var z = 0; z < allZoom.length; z++) {
		hide(allZoom[z]);
	}
	if (detail && params.show) {
		show(detail);
		var top = (document.documentElement.scrollTop < 120 ? 120 : document.documentElement.scrollTop);
		YAHOO.util.Dom.setStyle(detail, 'top', top + 'px');
		var deltaH = detail.clientHeight - document.documentElement.clientHeight;
		if (deltaH > 0) {
			top = document.documentElement.scrollTop - deltaH;
			top = Math.max(top, 0);
		}
		YAHOO.util.Dom.setStyle(detail, 'top', top + 'px');
	}
	YAHOO.util.Event.preventDefault(e);
}

function reinitMap(id) {
	var img = YAHOO.util.Dom.get('img' + id);
	var map = YAHOO.util.Dom.get('details' + id);
	var areas = map.getElementsByTagName('area');
	for (var i = 0; i < areas.length; i++) {
		var e = YAHOO.util.Dom.get('detail' + id + '-' + i);
		var area = areas[i];
		var coord = getCoord(img);
		var x = coord.x;
		var y = coord.y;
		coords = area.coords.split(',');
		x += parseInt(coords[0]);
		y += parseInt(coords[1]);
		var width = (coords[2] - coords[0]);
		var height = (coords[3] - coords[1]);
		YAHOO.util.Dom.setStyle(e, 'left', x + 'px'); YAHOO.util.Dom.setStyle(e, 'top', y + 'px');
		YAHOO.util.Dom.setStyle(e, 'width', width + 'px'); YAHOO.util.Dom.setStyle(e, 'height', height + 'px');
	}
}

function initImageMap(id) {
	var img = YAHOO.util.Dom.get('img' + id);
	var map = YAHOO.util.Dom.get('details' + id);
	var areas = map.getElementsByTagName('area');
	for (var i = 0; i < areas.length; i++) {
		var e = YAHOO.util.Dom.get('detail' + id + '-' + i);
		var area = areas[i];
		var coord = getCoord(img);
		var x = coord.x;
		var y = coord.y;
		coords = area.coords.split(',');
		YAHOO.util.Dom.setStyle(e, 'position', 'absolute');
		x += parseInt(coords[0]);
		y += parseInt(coords[1]);
		var width = (coords[2] - coords[0]);
		var height = (coords[3] - coords[1]);
		YAHOO.util.Dom.setStyle(e, 'left', x + 'px'); YAHOO.util.Dom.setStyle(e, 'top', y + 'px');
		YAHOO.util.Dom.setStyle(e, 'width', width + 'px'); YAHOO.util.Dom.setStyle(e, 'height', height + 'px');
		var area = YAHOO.util.Dom.getElementsByClassName('detail-body', 'div', e)[0];
		YAHOO.util.Dom.setStyle(area, 'width', width + 'px'); YAHOO.util.Dom.setStyle(area, 'height', height + 'px');
		YAHOO.util.Dom.setStyle(area, 'opacity', '0.20');
		 
		YAHOO.util.Event.on(e, "mouseover", displayDetail, {show: true, id: id});
		YAHOO.util.Event.on(e, "mouseout", displayDetail, {show: false, id: id});
	}
	
	YAHOO.util.Event.on('img' + id, "mouseover", displayArea, {show: true, id: id});
	YAHOO.util.Event.on('img' + id, "mouseout", displayArea, {show: false, id: id});
	hide(map);
	//map.parentNode.removeChild(map);
}

function fade(id, delay) {
	setTimeout("new YAHOO.widget.Effects.Fade(YAHOO.util.Dom.get('" + id + "'))", delay * 1000);	
}

function submitForm(f) {
	YAHOO.util.Dom.get(f).submit();
}

function setImageSrc(id, url) {
	YAHOO.util.Dom.get(id).src = url;	
}

function setImage(id, url) {
	setTimeout(function(){setImageSrc(id, url)}, 100);	
}


