Clientcide.setAssetLocation('/assets/Clientcide');
var myAjax = "";
var relPagination = new Class({
    Extends: Pagination,

	_getContent: function(i) {
		return false;
	}

});

var printPage = function(){
	
	document.getElements("#print").each(function(el){

		el.removeEvents();
		el.addEvent("click",function(e){
			window.print();
		});
	});
};

var checkPrevious = function(wrapper,checkboxItem){
	
	var checkBoxesCollection = [];
	
	document.getElements("."+wrapper).each(function(el){
		
		checkBoxesCollection[el.getProperty("id")] = [];
		
		el.getElements("."+checkboxItem).each(function(item){
			checkBoxesCollection[el.getProperty("id")].push(item);
		});
		
		checkBoxesCollection[el.getProperty("id")].each(function(checkbox){
			
			checkbox.addEvent("click",function(e){
				
				if (checkbox.hasClass("checkedItem")){
					
					checkPosition = checkBoxesCollection[el.getProperty("id")].indexOf(checkbox);
					checkbox.removeClass("checkedItem");
					
					aux = checkBoxesCollection[el.getProperty("id")].slice(checkPosition+1); //debo hacer shift hasta la posición actual del checkbox
					aux.each(function(checkboxItem){
						checkboxItem.addClass("checkboxDisabled");
						checkboxItem.removeClass("checkboxEnabled");
						checkboxItem.removeClass("checkedItem");
						checkboxItem.setProperty("disabled","disabled");
						checkboxItem.removeProperty("checked");
					});
				}
				else {
					checkbox.addClass("checkedItem");
					checkPosition = checkBoxesCollection[el.getProperty("id")].indexOf(checkbox);
					
					if (checkBoxesCollection[el.getProperty("id")][checkPosition+1]){
						
						checkBoxesCollection[el.getProperty("id")][checkPosition+1].removeClass("checkboxDisabled");
						checkBoxesCollection[el.getProperty("id")][checkPosition+1].addClass("checkboxEnabled");
						checkBoxesCollection[el.getProperty("id")][checkPosition+1].removeProperty("disabled");
					}
				}
			});
		});

		aux = checkBoxesCollection[el.getProperty("id")].shift();
		
		checkBoxesCollection[el.getProperty("id")].each(function(checkbox){
			checkbox.addClass("checkboxDisabled");
			checkbox.setProperty("disabled","disabled");
		});
		checkBoxesCollection[el.getProperty("id")].unshift(aux);
	});
};

var uploadImages = function(clase,numeroImagenes){
	
	var j=1;

	if (document.id(clase))
	{
		var options = {
			container: clase,
			base: '/scripts/php/upload.php',
			filetype: 'jpg,jpeg,png,gif',
			name: 'alias',
			limit: numeroImagenes,
			multiple: false,
			onAbort: function (object) {
				alert(object.message)
			},
			onCancel: function () {
				document.id(clase).getPrevious('a').getNext('img').setProperties({src : ''});
			},
			onSuccess: function (infos) {
				var newImage  = new Element('img', {src:'/scripts/php/tmp/'+infos.file,style:"display: block;"});
				var newInput  = new Element('input', {type:'text', name:clase+'[]',value:infos.file});
				document.id(clase).getPrevious('a').adopt(newImage).adopt(newInput);
			},
			onAllComplete: function (container) {
			}
		};

		uploadManager.uploads = {};
		uploadManager.attachDragEvents(clase, options);

		if (document.id(clase).getPrevious('a') != null)
		{
			document.id(clase).getPrevious('a').removeEvents('click');
			document.id(clase).getPrevious('a').addEvent('click', function(e) {
				e.stop();
				uploadManager.upload(options);
			});
		}
	}
}

var init = function(){

	printPage();
	
	document.getElements("form").each(function(el)
	{
		var a = new Form.Validator.Tips(el, {
		    pointyTipOptions: {
		        point: 9
		    }
		});
		
		a.addAllThese([
         ['validate-time', 
          {
        	 errorMsg: function(f,p){
        		 return "El formato debe ser hh:mm:ss";
	          },
	          test:function(f,p){
	        	  return ((f.value.length == 0) || f.get("value").test(/^\d{1,2}:\d{1,2}:\d{1,2}$/,'i'));
	          }
          }],
          ['validate-dni', 
           {
         	 errorMsg: function(f,p){
         		 return "El formato debe ser 12345678-L";
 	          },
 	          test:function(f,p){
 	        	  return ((f.value.length == 0) || f.get("value").test(/^\d{7,8}-?[a-zA-Z]$/,'i'));
 	          }
           }]         
         ]);
		
	});
			
	formChecks();
	uploadImages('uploadLogo',1);
	uploadImages('uploadMapa',1);
	uploadImages('uploadTravelImage',4);
	uploadImages('uploadShopImage',4);
	uploadImages('uploadNewsImage',1);
	uploadImages('uploadAlbum',0);

	var defs = new dwDefaults({
		collection: document.getElements('.defs')
	});

	document.getElements(".ckeditor").each(function(e)
	{
		CKEDITOR.replace(e.name,
		{
        	toolbar :[  ['Cut','Copy','Paste','Undo','Redo'],
					    ['NumberedList','BulletedList','-','Outdent','Indent'],
					    ['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'],
					    '/',
					    ['Styles','Format','Font','FontSize'],
					    ['TextColor','BGColor'],
						['Bold','Italic','Underline','Strike','-','Subscript','Superscript'],
						['Link','Unlink'],['Table','HorizontalRule','SpecialChar','Image'],
					],
			width: 750,
			height: 100
        });
	});

	document.getElements(".ckeditor2").each(function(e)
	{
		CKEDITOR.replace(e.name,
		{
        	toolbar :[  ['Cut','Copy','Paste','Undo','Redo'],
					    ['NumberedList','BulletedList','-','Outdent','Indent'],
					    ['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'],
					    ['Table','HorizontalRule','SpecialChar'],
					    '/',
					    ['Styles','Format','Font','FontSize'],
					    ['TextColor','BGColor'],
						['Bold','Italic','Underline','Strike','-','Subscript','Superscript'],
						['Link','Unlink'],
					],
			width:      400,
			height: 600
        });
	});

}



var watcherOnSuccess = function()
{
	// create an instance for simple examples

	checkPrevious('travelPayment','travelToPay');
	
	/* purr */
	if (document.getElements(".notices UL").length > 0)
	{
		var example = new Purr({
			'mode': 	'top',
			'position': 'center'
		});
		var ha = 3000;
		document.getElements(".notices.notice UL LI").each(function(el)
		{
			example.alert(el.get("html"), {
				'className': 'success',
				'hideAfter': ha
			});
		});
		
		document.getElements(".notices.warning UL LI").each(function(el)
		{
			example.alert(el.get("html"), {
				'className': 'notice',
				'hideAfter': ha
			});
		});
		
		document.getElements(".notices.error UL LI").each(function(el)
		{
			example.alert(el.get("html"), {
				'className': 'error',
				'hideAfter': ha
			});
		});
	}
	/* purr */
	
	
	//ajax
	var ajaxOptions =
	{
		watcher :
		{
			start : false
		},
		request :
		{
			waiter :
			{
				use : false
			},
			noCache : false
		}
	};
	myAjax = new ajaxizable(ajaxOptions);

	
	document.getElements(".delete").each(function(el){
		el.addEvent("click", function(ev){
			if (!confirm("Realmente quiere eliminar el elemento " + el.id))
				ev.stop();
		});
	});

	new DatePicker('.dateAndTime', { allowEmpty: true, pickerClass: 'datepicker_vista', timePicker: true, format: 'd/m/Y a las H:i',inputOutputFormat: 'd/m/Y H:i:s'});
	new DatePicker('.date', { allowEmpty: true, pickerClass: 'datepicker_vista', timePicker: false, format: 'd/m/Y',inputOutputFormat: 'd/m/Y',startView: 'decades' });

	document.getElements(".breadNav").each(function(el){
		el.MooDropMenu({
			onOpen: function(el){
				el.fade('in');
			},
			onClose: function(el){
				el.fade('out');
			},
			onInitialize: function(el){
				el.fade('hide').set('tween', {duration:500});
			}
		});
	});

	document.getElements(".hideSon").each(function (el)
	{
		var button = el.getElement(".hideButton") ? el.getElement(".hideButton") : el;
		var bloque = el.getElement(".hideInfo");
		var myVerticalSlide = new Fx.Slide(bloque);
		myVerticalSlide.hide();
		el.removeClass("open");

		button.addEvent('click', function(e){
			
			$$('.hideSon').each(function(blockToHide) {
				var myVerticalSlideAux = new Fx.Slide(blockToHide.getElement(".hideInfo"));
				
				if (blockToHide.hasClass("open") && (blockToHide != el)){
					myVerticalSlideAux.toggle();
					blockToHide.removeClass("open");
				}
			});
			myVerticalSlide.toggle().chain(function() { el.toggleClass("open") });
		});
	});

	$$('.ImageCarousel.auto').each(function(e) {
		// detect speed
		var speed = ImageCarousel.speed.normal;
		if (e.hasClass('fast')) speed = ImageCarousel.speed.fast;
		if (e.hasClass('slow')) speed = ImageCarousel.speed.slow;

		// auto create carousel
		new myImageCarousel($merge({
			element: e,
			source: $defined(e.get('rel')) ? e.get('rel') : null
		}, speed));
	});

	document.getElements(".dataOnWindow").each(function (el)
	{
		el.removeEvents('click');
		el.addEvent('click', function(e) {
			e.stop();

//			document.getElements("#ventanita").each(function(el){
//				el.destroy();
//			});
			
			document.getElements(".mask").each(function(el){
				el.destroy();
			});
			
			new StickyWin.Modal.Ajax({
				url: el.href,
				wrapWithUi: true,
				caption: "",
				id: "ventanita",
				draggable : false,
				position : 'centerBottom',
				edge : 'centerTop',
				relativeTo : $('navZone'),
				onClose : function()
				{
					watcherOnSuccess();
				},
				onComplete : function()
				{
				},
				closeOnEsc : true,
				destroyOnClose : true,
				uiOptions : { width: '917px'},
				requestOptions: {method:"post"},
				handleResponse: function(response){
					
					response = StickyWin.ui(this.options.caption, response, this.options.uiOptions);
					this.setContent(response);
					this.show();

					var parent = document.getElement("#pagination");
					if (parent)
					{
						var width = $('modalBoxPhoto') ? "805" : "505";
							
						var children = parent.getChildren("li");
						
						var opts = {tPages:children.length, fxOptions: {width:width}, auto: {delay:5, start:true}};
						var pagination = new relPagination(opts);
						
						document.getElements("#"+parent.id+"c A" ).each(function(el){
							pagination.addControl(el);
						});
					}
					
					if (el = document.getElement(".payTransferBank")){
						var options =
						{
							waiter : {
								use : false
							},
							toSend :{method : ""},
							onRequest : function()
							{
							},
							onSuccess : function()
							{
								el.setProperty("value","correo-enviado");
								el.setProperty("disabled","disabled");
							}
						}
						myAjax.formUpdate(el.getParent(),"", options);  //formUpdate(el.href,"generalContent", opts);
					};
					
					if (el = document.getElement(".addToMyTravels")){
						var options =
						{
							waiter : {
								use : false
							},
							toSend :{method : ""},
							onRequest : function()
							{
							},
							onSuccess : function()
							{
								location.href="/admin/viajes";
							}
						}
						myAjax.formUpdate(el.getParent(),"", options);  //formUpdate(el.href,"generalContent", opts);
					};
					
					if (document.getElement(".payCreditCard")){
						
						document.getElements(".payCreditCard").each(function(el){
							var options =
							{
									waiter : {
										use : false
									},
									toSend :{method : ""},
									onRequest : function()
									{
									},
									onSuccess : function()
									{
									}
							}
							myAjax.formUpdate(el.getParent(),"payCreditCardBlock", options);  //formUpdate(el.href,"generalContent", opts);
						});
					};
					
					watcherOnSuccess();
					
				}
			}).update();			
		});
	});

	document.getElements(".submitOnWindow").each(function (el)
    {
		var options = {
	        	validate: false,
	            resetForm: true,
	            onSuccess : function(responseTree, responseElements, responseHTML, responseJavaScript)
	            {
					var stickyModal = new StickyWin.Modal.Ajax({
						wrapWithUi: true,
						caption: "",
						id: 'ventanita',
						uiOptions : { width: '917px'},
						draggable : false,
						position: 'center',
						closeOnEsc : true,
						destroyOnClose : true,
						requestOptions: {method:"post"},
						handleResponse: function(response){
							response = StickyWin.ui(this.options.caption, responseJavascript, this.options.uiOptions);
							this.setContent(response);
							this.show();
						}
					}).update();
	            }
		};
		myAjax.formUpdate(el, "", options);
	});

	document.getElements(".fupdateCompras").each(function(el) {
		var op = {width : '300px'};
		
		var options = {
			resetForm : true,
			onSuccess : function(responseTree, responseElements,
					responseHTML, responseJavaScript) {
	
				var sticky = new StickyWin.Modal({
					id : 'ventanita2',
					draggable : false,
					relativeTo : $('navZone'),
					position : 'centerBottom',
					edge : 'centerTop',
					offset : {
						y : 50
					},
					closeOnEsc : true,
					destroyOnClose : true,
					onClose : function() {
						var opts =  {
							onRequest : function(){ watcherOnRequest();},
							onSuccess : function(){ watcherOnSuccess();}
						};
						myAjax.gotoUpdate(null, 'generalContent', opts);
					},
					content : StickyWin.ui("Carrito de la compra",
							responseJavaScript, {
								width : '860px'
							})
				});
			}
		};
		myAjax.formUpdate(el, "", options);
	});
	
	init();
};

window.addEvent('domready', function(){
	watcherOnSuccess();
});

var formChecks = function()
{
	var myVerticalSlide = [];
	var select = "";
	if (document.id("numcompy"))
	{
		for ( var int = 1; int <= 4; int++) {
			var a = new Fx.Slide(document.id("aco"+int));
			a.hide();
			myVerticalSlide.push (a);
		}
		
		select = document.id("numcompy");
		select.addEvent("change", function(e){
			for ( var int = 0; int < 4; int++) {
				if (int < select.value)
				{
					myVerticalSlide[int].show();
				}
				else
					myVerticalSlide[int].hide();
				
			}
		});
		select.fireEvent("change");
	}
	
	// Script para sumar.
	var form = document.id("travel");
	if (form)
	{
		var pag1 = document.id("pag1");
		var pag2 = document.id("pag2");
		var pag3 = document.id("pag3");
		var pag4 = document.id("pag4");
		var total = document.id("total");
		var hotel = document.id("hotel");
		var nocheExtra = document.id("nocheExtra");
		form.addEvent("change", function(e){
		
			//Cambiamos el total y los parciales en función de lo que haya ido poniendo.
			if (pag1 && originales["pag1"])
			{
				var t1 = originales["pag1"].toFloat() * (select.value.toFloat() + 1); 
				pag1.set('html', t1 + " &euro;" );	
			}
			if (pag2 && originales["pag2"])
			{
				var t2 = originales["pag2"].toFloat() * (select.value.toFloat() + 1); 
				pag2.set('html', t2 + " &euro;" );	
			}
			if (pag3 && originales["pag3"])
			{
				var t3 = originales["pag3"].toFloat() * (select.value.toFloat() + 1); 
				pag3.set('html', t3 + " &euro;" );	
			}
			if (pag4 && originales["pag4"])
			{
				var t4 = originales["pag4"].toFloat() * (select.value.toFloat() + 1); 
				pag4.set('html', t4 + " &euro;" );	
			}
			
			//Total
			var t = originales["total"] * (select.value.toFloat() + 1);
			
			if (hotel && hotel.value.toInt() > 0 && hoteles[hotel.value.toInt()] && nocheExtra.value.toInt() > 0)
				t = t + ( hoteles[hotel.value.toInt()]["coste"] * nocheExtra.value.toInt() * (select.value.toFloat() + 1) ); 
			
			total.set('html', t + " &euro;" );	
			
		});
		form.fireEvent("change");
	}
	
	var form = document.id("travelMadrid");
	if (form)
	{
		var total = document.id("total");
		var country = document.id("country");
		var hotel = document.id("hotel");
		var hab = document.id("habitacion");
		var nocheExtra = document.id("nocheExtra");
		var r = document.id("revista");
		var c = document.id("carrera");
		
		
		form.addEvent("change", function(e){
		
			//Cambiamos el total y los parciales en función de lo que haya ido poniendo.
			if (c.value == 2)
				var t = originales["total10k"].toFloat();
			else
				var t = originales["total"].toFloat();
			
			if (r.value == 1)
			{
				var k = country.value == 32 ? "esp" : "ext";
				t = t + revista[k].toInt();
			}
				
			// Setear el nombre de los campos del hotel
			if (hotel.value.toInt() > 0 && hoteles[hotel.value.toInt()])
			{
				for ( var int2 = 1; int2 <= 5; int2++) {
					hab.options[int2].text = hab.options[int2].text.replace(/- ([\d]*)/i, "-" + " " + hoteles[hotel.value.toInt()][int2] );
				}
				
			}else{
				for ( var int2 = 1; int2 <= 5; int2++) {
					hab.options[int2].text = hab.options[int2].text.replace(/- ([\d]*)/i, "-" + " " );
				}
			}

			// Setear el precio final con respecto al hotel
						
			if (hotel.value.toInt() > 0 && hoteles[hotel.value.toInt()] && hab.value.toInt() > 0 && nocheExtra.value.toInt() >0)
			{
				t = t + ( hoteles[hotel.value.toInt()][hab.value.toInt()] * nocheExtra.value.toInt() * (select.value.toFloat() + 1) ); 
			}
			
			total.set('html', t + " &euro;" );	
			
		});
		form.fireEvent("change");
	}	
}
