/**
 */

DocumentReady.on(function() {
	var onEnter = function(id, func) {
		var el = $(id);
		if(!el) { return; }
		el.onkeypress = function(e) {
			var keycode;
			if (window.event) { keycode = window.event.keyCode; }
			else if (e) { keycode = e.which; }
			else { return true; }

			if (keycode == 13) {
				func();
				return false;
			}
			
			return true;
		};
		
	};

	var submitNewsletter = function() {
		var em = $('newsletterEmail').value;
		if(/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/.test(em)) {
			Ajax.request({
				url: 'rpc.php?_=Newsletter.Newsletter.Subscribe',
				args: { email: em },
				done: function(json) {
					if(json.page) {
						document.location = 'index.php?page=' + json.page;
					}
					if(json._alert) { alert(json._alert); }
				}
			});
		}
		return false;
	};
	
	var submitSearch = function() {
		document.location = 'index.php?page=search&query=' + encodeURIComponent($('searchQuery').value.toLowerCase());
		return false;
	};

	var button = $('newsletterSubmit');
	if(button) { button.onclick = submitNewsletter; }
	onEnter('newsletterEmail', submitNewsletter);
	button = $('searchSubmit');
	if(button) { button.onclick = submitSearch; }
	onEnter('searchQuery', submitSearch);
	
	button = $('unsubSubmit');
	if(button) { button.onclick = function() {
		var em = $('unsubEmail').value;
		if(/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/.test(em)) {
	
			$('divUnsubF').style.display = 'none';
			$('divUnsubL').style.display = 'block';
			Ajax.request({ url: 'rpc.php?_=Newsletter.Newsletter.Unsubscribe',
						args: { email: em },
						done: function(json) {
				if(json.success) {
					$('divUnsubForm').style.display = 'none';
					$('divUnsubDone').style.display = 'block';
				} else {
					$('divUnsubF').style.display = 'block';
					$('divUnsubL').style.display = 'none';
				}
			}});
		}
		return false;
	};}

	button = $('contactButton');
	if(button) { button.onclick = function() {
		$('contactButton').style.display = 'none';
		$('contactLoading').style.display = 'block';
		$('contactThanks').style.display = 'none';
		var cl = Tools.getElementsByClass('x-contact');
		for(var i = 0; i < cl.length; ++i) {
			cl[i].className = (' ' + cl[i].className + ' ').replace(' error ', '');
		}
		Ajax.request({url: 'rpc.php?_=Mailer.Mailer.Contact',
					args: {
						email: $('contact[email]').value,
						name: $('contact[name]').value,
						subject: $('contact[subject]').value,
						body: $('contact[body]').value
					},
					done: function(json) {
						$('contactLoading').style.display = 'none';
						if(json.errors) {
							for(var f in json.errors) {
								var el = $('contact['+f+']');
								if(el) { el.className += ' error'; }
							}
						}
						if(json.success) {
							$('contactForm').style.display = 'none';
							$('contactThanks').style.display = 'block';
						} else {
							$('contactButton').style.display = 'block';
						}
					}});
	}; }

	
				 
				 
	if(Tools.Query.hasOwnProperty('ns_activation_key')) {
		Ajax.request({ url: 'rpc.php?_=Newsletter.Newsletter.Confirm',
				args: { ns_activation_key: Tools.Query.ns_activation_key }
			});
	}
	
	
	
	var attachTarget = function(trigger, target) {
		var op  = target.getAttribute('x:vo');
		var val = target.getAttribute('x:vv').toLowerCase();
		var nval = parseInt(val, 10);
		var rval = new RegExp(val);
		
		var efunc = function(e) {
			var vis = false;
			var tval = Tools.getValue(this).toLowerCase();

			var ntval = parseInt(tval, 10);
			
			if(op == 'eq') { vis = (tval == val); }
			else if(op == 'noteq') { vis = (tval != val); }
			else if(op == 'gt') { vis = (ntval > nval); }
			else if(op == 'le') { vis = (ntval < nval); }
			else if(op == 'contains') { vis = tval.indexOf(val) >= 0; }
			else if(op == 're') { vis = rval.test(val); }
			
			target.style.display = vis ? 'block' : 'none';
		};
		
		if('type' in trigger) {
			trigger.addEventListener('change', efunc, false);
		} else {
			for(var i = 0; i < trigger.length; ++i) {
				trigger[i].addEventListener('change', efunc, false);
			}
		}
		
		return efunc;
	}
	
	var qform = $('qform');
	if(qform) {
		fdivRule = Tools.findCSSRule('._fdivRequired');

		var el = Tools.getElementsByClass('_vdiv');
		
		for(var i = 0; i < el.length; ++i) {
			var vx = el[i].getAttribute('x:vx');

			var trigger = qform['qform[xd' + vx + ']'] || qform['qform[xd' + vx + '][]'];

			if(trigger) {
				attachTarget(trigger, el[i]).call( ('type' in trigger) ? trigger : trigger[0] );
			}
		}
		
	
	}
	
});

var fdivReqInterval;
var fdivRule;
var fdivRed = 136;
var fdivAdd = 9;

function validateForm(formId)
{
	var qform = $(formId);
	var invalid = 0;
	
	if(!fdivReqInterval)
	{
		fdivReqInterval = window.setInterval(function() {
			fdivRed += fdivAdd;
			if(fdivRed > 255)
			{
				fdivRed = 255;
				fdivAdd = -9;
			}
			if(fdivRed < 0)
			{
				fdivRed = 0;
				fdivAdd = 9;
			}
			
			fdivRule.style.borderColor = 'rgb(255, '+fdivRed+', '+fdivRed+')';
			
		}, 25);
	}	
	var el = Tools.getElementsByClass('_fdiv');
	for(var i = 0; i < el.length; ++i)
	{
		var req = el[i].getAttribute('x:req');
		if(req)
		{
			req = qform['qform[' + req + ']'] || qform['qform[' + req + '][]'];
			var val = Tools.getValue( ('type' in req) ? req : req[0]);
			if(!val)
			{
				++invalid;
				Tools.addClass(el[i], '_fdivRequired');
			}
			else
			{
				Tools.removeClass(el[i], '_fdivRequired');
			}
		}
	}
	
	return invalid == 0;
}

function formPost(formId, action)
{
	var form = $(formId);
	if(form && validateForm(form))
	{
		for(var i = 0; i < form.elements.length; ++i)
		{
			var el = form.elements[i];
			var tval = Tools.getValue(el).toLowerCase();
		}
		form.action = action;
		form.submit();
	}
}