/**

 * AjaxWhois - mootools 1.1 whois

 * @version		1.0.0

 * @MooTools version 1.1

 * @author		Constantin Boiangiu <info [at] constantinb.com>

 */



var AjaxWhois = new Class({

	initialize: function(options) {

		this.options = Object.extend({

			formId: null,

			domain: 'domain',

			defaultMessage: 'Busqueda de Domino: Ingresa tu dominio y pulsa enter',

			labels: '.option',

			checkboxes: '.check',

			errors: 'responses',

			colors: {'error':'#FF0000','response':'#1e7f00'}

		}, options || {});

		

		this.checkAny = 0;

		this.start();		

	},

	

	start: function(){

		this.makeCheckBoxes();

		

		if ( !$(this.options.domain).value )

			$(this.options.domain).value = this.options.defaultMessage;

		$(this.options.domain).addEvent('click', function(){

			if( $(this.options.domain).value == this.options.defaultMessage )

				$(this.options.domain).value = '';

		}.bind(this));

		$(this.options.domain).addEvent('blur', function(){

			if( $(this.options.domain).value == '' )

				$(this.options.domain).value = this.options.defaultMessage;

		}.bind(this));

			

		this.errEffect = new Fx.Styles(this.options.errors, {duration: 1000, transition: Fx.Transitions.linear});

		$(this.options.formId).addEvent('submit', this.checkForm.bind(this));

		

		

	},	

	

	checkForm: function(event){

		new Event(event).stop();

		

		if( this.checkAny < 1 ){

			this.showErr('Please select at least one extension.', 'error');

			return false;

		}

		

		if( $(this.options.domain).value == this.options.defaultMessage || !$(this.options.domain).value ){

			this.showErr('Ingresa un dominio ejm:(For <strong>tupaginaweb.com</strong>,usar <strong>"tupaginaweb"</strong>)', 'error');

			return false;			

		}

		

		if ( $(this.options.domain).value.length <3 ){

			this.showErr('Por favor, aņada un nombre de dominio de al menos 3 .', 'error');

			return false;	

		}

		

		this.showErr('Comprobando la disponibilidad del dominio. Por favor, espere...', 'response');

		this.makeRequest();

	},

	

	makeRequest: function(){

		var formAction = $(this.options.formId).action;

		if( !$(this.options.formId).action.contains('ajax_submit') )

			$(this.options.formId).action += formAction.contains('?') ? '&ajax_submit=1' : '?ajax_submit=1';

		

		$(this.options.formId).send({

			onComplete: function(response){

				$(this.options.errors).setStyle('display','none').empty();

				

				var MySqueezeBox = {

   

				    loadModal: function(modalUrl,handler,x,y) {     

				       var options = $merge(options || {}, Json.evaluate("{handler: '" + handler + "', size: {x: " + x +", y: " + y + "}}"));     

				       this.setOptions(this.presets, options);

				       this.assignOptions();

				       this.setContent(handler,modalUrl);

				   },

				

				   extend: $extend

				   

				}

				

				MySqueezeBox.extend(SqueezeBox);

    			MySqueezeBox.initialize({});

    			MySqueezeBox.loadModal(response,'string', 600, 400);

				MySqueezeBox.btnClose.addEvent('click', function(event){

					new Event(event).stop();

					MySqueezeBox.close();

				})

    			

			}.bind(this)

		});

	},

	

	showErr: function(message, type){

		if(message) {

			$(this.options.errors).setStyle('display','block').setHTML(message);

		}

		

	//	var color = type=='error' ? this.options.colors.error : this.options.colors.response;

//		this.errEffect.start({

//			'background-color':[color,'#FFFFFF'],

//			'color':['#000000','#000000']

//		});

		

		

		

	},

	

	makeCheckBoxes: function(){

		

		this.lbls = $(this.options.formId).getElements(this.options.labels);

		this.lbls.fx = [];

		this.parseChecks();

		

		var allinputs = $( this.options.formId ).getElements( this.options.labels+' '+this.options.checkboxes );

		

		allinputs.each(function(chk){

			chk.inputElement = chk.getElement('input');

			chk.inputElement.setStyle('display', 'none');

		}.bind(this));

		

		allinputs.each(function(chk,i){

			if (chk.inputElement.checked==1){ 

				chk.index = i;

				this.selectBox(chk);

			}

		}.bind(this));	

		

	},

	

	parseChecks: function(){

		this.lbls.each(function(lbl, i){

			this.lbls.fx[i] = new Fx.Styles(lbl, {wait: false, duration: 300});



			var chk = lbl.getElement(this.options.checkboxes);

			chk.index = i;

			

			lbl.addEvent('click', function(){

				if (!chk.hasClass('selected')){

					this.selectBox(chk);

				}

				else if (lbl.hasClass('check')){ 

					this.deselectBox(chk);

				}

			}.bind(this));	

			

			lbl.addEvent('mouseover',function(el){

				lbl.setStyle('cursor','pointer');

			}.bind(this))

		}.bind(this));

	},

	

	selectBox: function(chk){		

		chk.inputElement.checked = 'checked';		

		this.lbls.fx[chk.index].start({ 'color': '#59AC00' });		

		chk.addClass('selected');

		this.checkAny+=1;

	},



	deselectBox: function(chk){

		chk.inputElement.checked = false;

		this.lbls.fx[chk.index].start({ 'color': '#000000' });

		chk.removeClass('selected');

		this.checkAny-=1;

	}

	

});
