var baseDir = "";
var commonResourcesPath = "resources/";
var borderTabWidth = 16;
var paddingTabsContainer = 53;
var tabLeftScroll = 204;
var activeTab = "";

window.addEvent('domready', function() {
	//Inicia proceso
	initProcess();

	//XHR action
	var ajActionInputs = $$('.ajAction');	
	ajActionInputs.each(function(oInput, i){
		var oInputForm = oInput.form;
		$(oInputForm).addEvent('submit', function(e) {
			new Event(e).stop();
			document.body.focus();
			axAction(oInputForm, "XHR", "amt=xhr");
		});
	});
	
});

function printFlashMv(file, rPath, team, cId, eH, w, h, id){
	var filmMv = new SWFObject(file, "flashMv" + id, w, h, "6", "#FFFFFF", true);
	filmMv.addParam("AllowScriptAccess", "always");
	filmMv.addParam("allowFullScreen", "false");
	filmMv.addParam("quality", "high");
	filmMv.addParam("menu", "false");
	filmMv.addParam("scaleMode", "showAll");
	filmMv.addParam("wmode", "transparent");
	filmMv.addVariable("width", w);
	filmMv.addVariable("height", h);
	filmMv.addVariable("rootPath", rPath);
	filmMv.addVariable("team", team);
	filmMv.addVariable("cId", cId);
	filmMv.addVariable("eH", eH);	
	filmMv.write("fl_" + team + "_" + id);
}

function initProcess(){
	
	//Pre-carga imágenes	
	var divPreload = new Element('div', {'id': 'divPreload', 'style': 'width:100%; text-align: center; height: 28px; padding-top: 80px; position: absolute;'}).injectInside(document.body);	
	var imgPreload = new Element('img', {'id': 'imgPreload', 'src': commonResourcesPath + 'pics/preload.gif', 'style': 'margin-bottom: 8px;'}).injectInside(divPreload);
	var divPreloadBarContainer = new Element('div', {'id': 'divPreloadBarContainer', 'style': 'width: 100px; font-size: 0; line-height: 0; height: 5px; margin: auto; border: 1px solid #00b2bd;'}).injectInside(divPreload);
	var divPreloadBar = new Element('div', {'id': 'divPreloadBar', 'style': 'width: 1px; font-size: 0; line-height: 0; height: 5px; background: url(' + commonResourcesPath + 'pics/preload_bar.gif) no-repeat 0 0; margin: auto;'}).injectInside(divPreloadBarContainer);

	var preloadImages = new Array();
	preloadImages.push(commonResourcesPath + "pics/logotipo_idetia.gif");
	preloadImages.push(commonResourcesPath + "pics/bg_bottom.gif");
	preloadImages.push(commonResourcesPath + "pics/tab_a_02_on.png");
	preloadImages.push(commonResourcesPath + "pics/tab_b_02_on.png");
	preloadImages.push(commonResourcesPath + "pics/tab_c_02_on.png");	
	preloadImages.push(commonResourcesPath + "pics/tab_a_01_on.png");
	preloadImages.push(commonResourcesPath + "pics/tab_b_01_on.png");
	preloadImages.push(commonResourcesPath + "pics/tab_c_01_on.png");
	preloadImages.push(commonResourcesPath + "pics/tab_a_01_off.png");
	preloadImages.push(commonResourcesPath + "pics/tab_b_01_off.png");
	preloadImages.push(commonResourcesPath + "pics/tab_c_01_off.png");
	preloadImages.push(commonResourcesPath + "pics/tab_d_01_off.png");
	preloadImages.push(commonResourcesPath + "pics/tab_a_bg_img_b.png");
	preloadImages.push(commonResourcesPath + "pics/tab_a_bg_img_c.png");
	preloadImages.push(commonResourcesPath + "pics/tab_b_bg_img_a.png");
	preloadImages.push(commonResourcesPath + "pics/tab_b_bg_img_c.png");
	preloadImages.push(commonResourcesPath + "pics/tab_c_bg_img_a.png");
	preloadImages.push(commonResourcesPath + "pics/tab_c_bg_img_b.png");	
	
	var loadImages = new Asset.images(preloadImages, {
		onProgress: function(c, i){
			var progress = Math.round((100*c)/preloadImages.length);
			$('divPreloadBar').style.width = progress + "px";
		},
		onComplete: function(){
			$('divPreloadBar').style.width = "100px";
			startPoint();
		}	
	});	
	
}

function startPoint(){
	var divPreloadEffect = new Fx.Tween('divPreload', {
		property: 'opacity',
		duration: 'long',			
		onComplete: function(){
			
			$('divPreload').destroy();

			//Muestra la capa contenedor
			$('container').setOpacity(0);
			$('container').style.display = "block";
			var containerEffect = new Fx.Tween('container', {
				property: 'opacity',
				duration: 'long'
			}).start(1);
			
			//Resposiciona tabs
			setInterval("repositionTabs()",1);

			//Establece la posición inicial de las pestañas
			setInitTabs();
		}
	}).start(0);
}

function repositionTabs(){
	var docSize = document.getSize();
	var containerSize = $('container').getSize();
	var docScrollSize = document.getScroll();
	var dLeft = ((docSize.x/2) + docScrollSize.x) - (containerSize.x/2);
	$('container').setStyles({'left': dLeft + 'px'});

	//Reajusta el ancho de la capa que contiene los tabs
	$('tabs').setStyles({'width': ($('tab-d').getLeft() - $('tab-a').getLeft() + $('tab-a').getWidth()) + 'px'});
}

function setInitTabs(){
	//Posiciona los tabs
	var initPos = $('tab-d').getLeft();
	$('tab-a').setStyles({'display': 'block'});
	$('tab-b').setStyles({'left': (initPos) + 'px', 'display': 'block'});
	$('tab-c').setStyles({'left': (initPos + borderTabWidth) + 'px', 'display': 'block'});
	$('tab-d').setStyles({'left': (initPos + (borderTabWidth*2)) + 'px', 'display': 'block'});
	
	//Genera las capas activas para cada tab
	setInitialOverlay();
	
	//Recoge la posición x inicial de cada tab
	dTabNewPos = $('tab-d').getLeft() + tabLeftScroll*3;
	cTabNewPos = $('tab-c').getLeft() + tabLeftScroll*2;
	bTabNewPos = $('tab-b').getLeft() + tabLeftScroll;	
}

function setInitialOverlay(){
	var overlayDiv = new Element('div', {'id': 'overlayDiv'}).injectInside($('tabs'));
	overlayDiv.setStyles({'position': 'absolute', 'height': $('tabs').getHeight() + 'px', 'width': (borderTabWidth*4) + 'px'});
	
	var activeTab_a = new Element('div', {'id': 'activeTab_a'}).injectInside(overlayDiv);
	activeTab_a.setStyles({'float': 'left', 'height': overlayDiv.getHeight() + 'px', 'width': borderTabWidth + 'px'});
	activeTab_a.addEvents({
		'mouseover': function(){activeInitialTabs('a', 'on');},
		'mouseout': function(){activeInitialTabs('a', 'off');},
		'mouseup': function(){scrollTabs('a');}
	});

	var activeTab_b = new Element('div', {'id': 'activeTab_b'}).injectInside(overlayDiv);
	activeTab_b.setStyles({'float': 'left', 'height': overlayDiv.getHeight() + 'px', 'width': borderTabWidth + 'px'});
	activeTab_b.addEvents({
		'mouseover': function(){activeInitialTabs('b', 'on');},
		'mouseout': function(){activeInitialTabs('b', 'off');},
		'mouseup': function(){scrollTabs('b');}
	});

	var activeTab_c = new Element('div', {'id': 'activeTab_c'}).injectInside(overlayDiv);
	activeTab_c.setStyles({'float': 'left', 'height': overlayDiv.getHeight() + 'px', 'width': borderTabWidth + 'px'});
	activeTab_c.addEvents({
		'mouseover': function(){activeInitialTabs('c', 'on');},
		'mouseout': function(){activeInitialTabs('c', 'off');},
		'mouseup': function(){scrollTabs('c');}
	});	
}

function activeInitialTabs(e, type){
	var tabToProc = $('activeTab_' + e);
	var tabScroll = 0;
	
	if(e=="b") tabScroll = borderTabWidth;
	else if(e=="c") tabScroll = borderTabWidth*2;
		
	if(type=="on"){
		tabToProc.setStyles({'cursor': 'pointer'});
		$('overlayDiv').setStyles({'background': 'url(' + commonResourcesPath + 'pics/tab_' + e + '_02_on.png) no-repeat ' + tabScroll + 'px 0'});
	}else if(type=="off"){
		tabToProc.setStyles({'cursor': 'default'});
		$('overlayDiv').setStyles({'background': 'transparent'});
	}	
}

function scrollTabs(e){
	$('overlayDiv').destroy();

	var bTabsOpenEffect = new Fx.Tween('tab-b', {property: 'left', duration: 1000, transition: Fx.Transitions.Expo.easeOut}).start(bTabNewPos);
	var cTabsOpenEffect = new Fx.Tween('tab-c', {property: 'left', duration: 1500, transition: Fx.Transitions.Expo.easeOut}).start(cTabNewPos);	
	var dTabsOpenEffect = new Fx.Tween('tab-d', {property: 'left', duration: 2000, transition: Fx.Transitions.Expo.easeOut,
		onComplete: function(){
			showData(e);
		}	
	}).start(dTabNewPos);
}

function setOverlay(e){
	
	var overlayTabsWidth = tabLeftScroll + borderTabWidth;
	
	if(!$('overlayDiv')){
		var overlayDiv = new Element('div', {'id': 'overlayDiv'}).injectInside($('tabs'));
		overlayDiv.setStyles({'position': 'absolute', 'height': $('tabs').getHeight() + 'px', 'width': (overlayTabsWidth*3 + borderTabWidth)  + 'px'});
	}
	
	if(!$('activeTab_a')){
		var activeTab_a = new Element('div', {'id': 'activeTab_a'}).injectInside($('overlayDiv'));
		activeTab_a.setStyles({'float': 'left', 'height': $('overlayDiv').getHeight() + 'px', 'width': overlayTabsWidth + 'px', 'overflow': 'hidden', 'position': 'relative'});
		activeTab_a.appendChild($('tab-a-content'));
	}
	
	if(!$('activeTab_b')){
		var activeTab_b = new Element('div', {'id': 'activeTab_b'}).injectInside($('overlayDiv'));
		activeTab_b.setStyles({'float': 'left', 'height': $('overlayDiv').getHeight() + 'px', 'width': overlayTabsWidth + 'px', 'overflow': 'hidden', 'position': 'relative'});
		activeTab_b.appendChild($('tab-b-content'));
	}	
	
	if(!$('activeTab_c')){
		var activeTab_c = new Element('div', {'id': 'activeTab_c'}).injectInside($('overlayDiv'));
		activeTab_c.setStyles({'float': 'left', 'height': $('overlayDiv').getHeight() + 'px', 'width': overlayTabsWidth + 'px', 'overflow': 'hidden', 'position': 'relative'});
		activeTab_c.appendChild($('tab-c-content'));
	}
	
}

function setOverlayEvents(){
	$('activeTab_a').addEvents({
		'mouseover': function(){activeTabs('a', 'on');},
		'mouseout': function(){activeTabs('a', 'off');},
		'mouseup': function(){showData('a');}
		});
		
	$('activeTab_b').addEvents({
		'mouseover': function(){activeTabs('b', 'on');},
		'mouseout': function(){activeTabs('b', 'off');},
		'mouseup': function(){showData('b');}
		});		
		
	$('activeTab_c').addEvents({
		'mouseover': function(){activeTabs('c', 'on');},
		'mouseout': function(){activeTabs('c', 'off');},
		'mouseup': function(){showData('c');}
		});
		
	removeOverlayEvents(activeTab);
}

function removeOverlayEvents(e){
	if(e!="" && $('activeTab_' + e)) $('activeTab_' + e).removeEvents();
}

function activeTabs(e, type){
	var tabToProc = $('tab-' + e + '-wrapper');
	var borderTabToProc = $('activeTab_' + e);
	var tabScroll = 0;

	if(e=="a") tabScroll = tabLeftScroll;
	else if(e=="b") tabScroll = tabLeftScroll*2 + borderTabWidth;
	else if(e=="c") tabScroll = tabLeftScroll*3 + borderTabWidth*2;
		
	if(type=="on"){
		borderTabToProc.setStyles({'cursor': 'pointer'});
		$('overlayDiv').setStyles({'background': 'url(' + commonResourcesPath + 'pics/tab_' + e + '_02_on.png) no-repeat ' + tabScroll + 'px 0'});
		if(checkNav("gecko")) tabToProc.setOpacity(0);
		tabToProc.setStyles({'background': 'url(' + commonResourcesPath + 'pics/tab_' + e + '_01_on.png) no-repeat 0 0'});
		if(checkNav("gecko")) tabToProc.fade(1);
	}else if(type=="off"){
		borderTabToProc.setStyles({'cursor': 'default'});
		$('overlayDiv').setStyles({'background': 'transparent'});
		if(checkNav("gecko")) tabToProc.fade(0);
		else tabToProc.setStyles({'background': 'transparent'});
	}	
}

function showData(e){
	var currentActiveTab = activeTab;
	activeTab = e;
	
	if(currentActiveTab!="") resetShowData(e, currentActiveTab);
	else initShowData(e);
}

function getTabId(e, pos){
	var tabs = new Array();
	tabs[0] = "b";
	tabs[1] = "c";
	
	if(e=="b"){
		tabs[0] = "a";
		tabs[1] = "c";	
	}else if(e=="c"){
		tabs[0] = "a";
		tabs[1] = "b";		
	}
	
	return tabs[(pos-1)];
}

function initShowData(e){

	setOverlay(e);

	var tab1 = getTabId(e, 1);
	var tab2 = getTabId(e, 2);
	
	$('tab-' + e + '-content').setStyles({'display': 'block', 'position': 'absolute', 'visibility': 'hidden'});
	
	var textDataSlide = new Fx.Morph('tab-' + e + '-content', {
			duration: 1000,
			transition: Fx.Transitions.Expo.easeOut
		}).start({
			'opacity': [0, 1]
		});
	
	var imgTab1 = new Element('img', {'id': 'imgTab_' + tab1, 'src': commonResourcesPath + 'pics/tab_' + e + '_bg_img_' + tab1 + '.png', 'style' : 'position:absolute; visibility:hidden;'}).injectInside($('activeTab_' + tab1));
	var img1DataSlide = new Fx.Morph('imgTab_' + tab1, {
			duration: 1000,
			transition: Fx.Transitions.Expo.easeOut
		}).start({
			'opacity': [1, 1],
			'left': [(tabLeftScroll+borderTabWidth), -1]
		});

	var imgTab2 = new Element('img', {'id': 'imgTab_' + tab2, 'src': commonResourcesPath + 'pics/tab_' + e + '_bg_img_' + tab2 + '.png', 'style' : 'position:absolute; visibility:hidden;'}).injectInside($('activeTab_' + tab2));
	var img2DataSlide = new Fx.Morph('imgTab_' + tab2, {
			duration: 1500,
			transition: Fx.Transitions.Expo.easeOut,
			onComplete: function(){
				setOverlayEvents();
			}
		}).start({
			'opacity': [1, 1],
			'left': [-(tabLeftScroll+borderTabWidth), 0]
		});
}

function resetShowData(a, e){

	activeTabs("a", "off");
	activeTabs("b", "off");
	activeTabs("c", "off");
	removeOverlayEvents("a");
	removeOverlayEvents("b");
	removeOverlayEvents("c");

	var tab1 = getTabId(e, 1);
	var tab2 = getTabId(e, 2);
	
	var textDataSlide = new Fx.Morph('tab-' + e + '-content', {
			duration: 1000,
			transition: Fx.Transitions.Expo.easeOut,
			onComplete: function(){
				$('tab-' + e + '-content').setStyles({'display': 'none'});
			}
		}).start({
			'opacity': [1, 0]
		});
	
	var img1DataSlide = new Fx.Morph('imgTab_' + tab1, {
			duration: 1000,
			transition: Fx.Transitions.Expo.easeOut,
			onComplete: function(){
				$('imgTab_' + tab1).destroy();
			}
		}).start({
			'opacity': [1, 1],
			'left': [-1, (tabLeftScroll+borderTabWidth)]
		});

	var img2DataSlide = new Fx.Morph('imgTab_' + tab2, {
			duration: 1500,
			transition: Fx.Transitions.Expo.easeOut,
			onComplete: function(){
				$('imgTab_' + tab2).destroy();
				initShowData(a);
			}
		}).start({
			'opacity': [1, 1],
			'left': [0,-(tabLeftScroll+borderTabWidth)]
		});
	
}

function axAction(oForm, axMethodType, addAction, chainFunctionSuccess, chainFunctionFail){
	$(oForm).addEvent('submit', function(e) {
		new Event(e).stop();
	});
	
	if(axMethodType=="XHR"){
		var oAjax = new Request.HTML({
			url: $(oForm).action + "?" + addAction,
			method: 'post',
			data: $(oForm),
			evalScripts: true,
			onRequest: function(){
				iniLoadAction();
			},
			onSuccess: function(responseTree, responseElements, responseHTML, responseJavaScript) {
				endLoadAction();
				showActionDialog(responseHTML, "success");
				if(chainFunctionSuccess!=null) eval(chainFunctionSuccess + "()");
			},
			onFailure: function(err) {
				endLoadAction();
				showActionDialog("<strong>ERROR " + err.status + "</strong><br/>Se ha producido un error al realizar la petición.<br/>Inténtalo nuevamente o <a href=\"" + baseDir + "contacto/\">contacta con nosotros</a> para intentar solucionar el problema.<br/>Disculpa las molestias causadas.", "failure");
				if(chainFunctionFail!=null) eval(chainFunctionFail + "()");
			},
			onException: function(headerName, value) {
				endLoadAction();
				showActionDialog("<strong>" + headerName + "</strong>: " + value + "<br/>Se ha producido una excepción al realizar la petición.<br/>Inténtalo nuevamente o <a href=\"" + baseDir + "contacto/\">contacta con nosotros</a> para intentar solucionar el problema.<br/>Disculpa las molestias causadas.", "exception");		
				if(chainFunctionFail!=null) eval(chainFunctionFail + "()");
			}		
		}).send();
	}
	
}
	
function iniLoadAction(){
	var overlayAXDiv = setAXOverlay(0);
	overlayAXDiv.style.cursor = "wait";
}

function endLoadAction(){
	removeAXOverlay();
}

function showActionDialog(responseHTML, responseType){

	if(responseHTML!=null && trim(responseHTML)!=""){
		if(!($('dialogPositionDiv'))){
			var dialogPositionDiv = new Element('div', {'id': 'dialogPositionDiv'}).injectInside(document.body);
			var dialogDiv = new Element('div', {'id': 'dialogDiv'}).injectInside(dialogPositionDiv);
			dialogDiv.className = "dialog-" + responseType;
			dialogDiv.set("html", "<div class=\"icon-dialog\"></div><div class=\"content-dialog\">" + responseHTML + "</div>");
			
			document.addEvents({
				'click': removeActionDialog,
				'keydown': removeActionDialog
			});
			
			dialogPositionDiv.setStyles({'position': 'absolute', 'z-index' : '1001'});
			setDialogPosition(dialogPositionDiv);
			
		    var myBorder = RUZEE.ShadedBorder.create({ corner:10, border:2, borderOpacity: 1});
		    myBorder.render('dialogDiv');
			
			dialogPositionDiv.setOpacity(0);
			var dialogDivEffect = new Fx.Tween('dialogPositionDiv', {
				property: 'opacity',
				duration: 'short',			
				onComplete: function(){
					dialogTimeout = window.setTimeout("removeActionDialog()", 6000);
				}
			}).start(1);
		}
	}
}

function setDialogPosition(dialogElement){
	var docSize = document.getSize();
	var docScrollSize = document.getScroll();
	var dTop = ((docSize.y/2) + docScrollSize.y) - 150;
	//var dLeft = ((docSize.x/2) + docScrollSize.x) - dialogElement.getWidth()/2;
	var dLeft = $('tab-d').getLeft() + ($('tab-d').getWidth()/2) - (dialogElement.getWidth()/2) + 8;
	dialogElement.setStyles({'top': dTop + 'px', 'left': dLeft + 'px'});
}

var removeActionDialog = function(){
	if(dialogTimeout) clearTimeout(dialogTimeout);
	if($('dialogPositionDiv')){
		document.removeEvent('click', removeActionDialog);
		document.removeEvent('keydown', removeActionDialog);
		var dialogDivEffect = new Fx.Tween('dialogPositionDiv', {
			property: 'opacity',
			duration: 'short',			
			onComplete: function(){
				$('dialogPositionDiv').destroy();
			}
		}).start(0);
	}
}


function setAXOverlay(trans){
	var docSize = document.getScrollSize();
	if(!($('overlayAXDiv'))){
		var overlayAXDiv = new Element('div', {'id': 'overlayAXDiv'}).injectInside(document.body);
		overlayAXDiv.setStyles({'position': 'absolute', 'z-index' : '1000', 'background': '#000000', 'top': '0', 'left': '0', 'height': docSize.y + 'px', 'width': '100%'});
		overlayAXDiv.setOpacity(trans);
	}
	return overlayAXDiv;
}

function removeAXOverlay(){
	if($('overlayAXDiv')) $('overlayAXDiv').destroy();
}


function getElementsByAttribute(searchClass,node,tag,attr) {
	var attrElements = new Array();
	if ( node == null )
		node = document;
	if ( tag == null )
		tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp("(^|\s)"+searchClass+"(\s|$)");
	for (i = 0, j = 0; i < elsLen; i++) {
		if(pattern.test(els[i].getAttribute(attr))){
			attrElements[j] = els[i];
			j++;
		}
	}
	return attrElements;
}

function trim(str){
	var newStr = "";
	if(str && str!=null) newStr = str.replace(/^\s*|\s*$/g,"");
	return newStr;
}

function checkNav(e){
	var res = false;
	if(Browser.Engine.gecko) res = true;
	return res;
}