dojo.provide("vodori.amd.jquery_main");

$(document).ready(function(){
	initValidation();
	initPopupFunction();
});

function initPopupFunction(){
	var change_speed = 1000;
	var _fader = $('<div id="jquery-overlay"></div>');
	$('body').find('#wrapper').append(_fader);
	var _height = 0;
	var _width = 0;
	var _page = $('body > div:eq(0)');
	var _minWidth = _page.outerWidth();
	if (window.innerHeight) {
		_height = window.innerHeight;
		_width = window.innerWidth;
	}
	else {
		_height = document.documentElement.clientHeight;
		_width = document.documentElement.clientWidth;
	}
	if (_width < _minWidth) {_fader.css('width',_minWidth);} else {_fader.css('width','100%');}
	if (_height > _page.innerHeight()) _fader.css('height',_height); else _fader.css('height',_page.innerHeight());
	_fader.css({
		'position':'absolute',
		'top':0,
		'left':0,
		'backgroundColor':'#000',
		'zIndex':'100',
		'opacity':'0'
	 });
	_fader.hide();


	$('a.popup-opener').each(function(){
		$(this).click(function(){
			var _href = $(this).attr('href');
			$('div.pop-up').hide();
			var _box = $(_href);
			var _scroll = $(window).scrollTop();
			if (window.innerHeight){
				var _width = window.innerWidth;
				var _height = window.innerHeight;
			}
			else{
				var _width = document.documentElement.clientWidth;
				var _height = document.documentElement.clientHeight;
			}
			_fader.css('opacity', 0).show().animate({opacity: 0.6}, {queue:false, duration:change_speed});
	 		if($.browser.msie && $.browser.version < 7) _box.show();
			$(_href).css('top', _height/2 + _scroll - $(_href).outerHeight()/2);
			$(_href).show();
			var _closer = $(_href).find('a.close');
			_closer.click(function(){
				$(_href).hide();
				_fader.fadeOut();
				return false;
			});

			$('div.pop-up').mouseover(function(){
				$(this).addClass('over');
			}).mouseout(function(){
				$(this).removeClass('over');
			});
			$('body').click(function(){
				if (!$('div.pop-up').hasClass('over')) {
					_fader.fadeOut();
					$('div.pop-up').fadeOut();
				}
			});

			return false;
		});
	});
}

function initPopup1(){
	var change_speed = 1000;
	var _fader = $('<div id="jquery-overlay"></div>');
	var _box = $('<div class="lightbox"><a href="http://www.elwoodjeans.com/backstager.htm"><img src="images/lightbox_aussiebbq.gif" alt="image" /></a><a class="btn-close" href="#">close</a></div>');
	$('body').append(_fader);
	$('body').append(_box);
	if($.browser.msie && $.browser.version < 7) _box.hide();
	else _box.css('opacity','0');
	var _height = 0;
	var _width = 0;
	var _page = $('body > div:eq(0)');
	var _minWidth = _page.outerWidth();
	if (window.innerHeight) {
		_height = window.innerHeight;
		_width = window.innerWidth;
	}
	else {
		_height = document.documentElement.clientHeight;
		_width = document.documentElement.clientWidth;
	}
	if (_width < _minWidth) {_fader.css('width',_minWidth);} else {_fader.css('width','100%');}
	if (_height > _page.innerHeight()) _fader.css('height',_height); else _fader.css('height',_page.innerHeight());
	_fader.css({
		'position':'absolute',
		'top':0,
		'left':0,
		'backgroundColor':'#000',
		'zIndex':'100',
		'opacity':'0'
	 });
	 _fader.animate({opacity: 0.6}, {queue:false, duration:change_speed});
	 if($.browser.msie && $.browser.version < 7) _box.show();
	 else _box.animate({opacity: 1}, {queue:false, duration:change_speed});
	 $(window).resize(function(){
	 	if (window.innerHeight) {
			_height = window.innerHeight;
			_width = window.innerWidth;
		}
		else {
			_height = document.documentElement.clientHeight;
			_width = document.documentElement.clientWidth;
		}
		if (_width < _minWidth) {_fader.css('width',_minWidth);} else {_fader.css('width','100%');}
		if (_height > _page.innerHeight()) _fader.css('height',_height); else _fader.css('height',_page.innerHeight());
	 });
	var _closer = $('a.btn-close');
	_closer.click(function(){
		_fader.fadeOut();
		_box.fadeOut();
		return false;
	});
	_box.mouseover(function(){
		$(this).addClass('over');
	}).mouseout(function(){
		$(this).removeClass('over');
	});
	$('body').click(function(){
		if (!_box.hasClass('over')) {
			_fader.fadeOut();
			_box.fadeOut();
		}
	});
}

function initValidation(){
	var _errorClass = 'with-error';
    var _validClass = 'valid'; // for checkbox validation
	var _regEmail = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	var _regEmails = /^([_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,4})+([, ]+[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,4})*$/;
	var _regPhone = /^[0-9\-\ \()]+$/;
	var _regNum = /^[0-9]+$/;
	var _regDay = /^(([0]{1}[1-9]{1})|([1-9]{1})|([1-2]{1}[0-9]{1})|([3]{1}[0-1]{1}))$/;
	var _regMon = /^(([0]{1}[1-9]{1})|([1-9]{1})|([1]{1}[0-2]{1}))$/;
	var _regYear = /^[19]{2}[0-9]{2}$/;

	$('form.validate').each(function(){
        console.log("validating forms");
		var _form = $(this);
		var _default = _form.find('select.required-select').find('option').eq(0).val();
		function checkFields() {

			var _flag = false;
			_form.find('.'+_errorClass).removeClass(_errorClass);
            _form.find('.'+_validClass).removeClass(_validClass);

			// fields validation

            /* input.required-chek must be validated first, because it contains a race condition with other invalid elements */
            _form.find('input.required-chek').each(function(){
				if (!$(this).is(':checked')) {
					/*$(this).parent('span').addClass('error-chk');*/ // This is the original statement.
                    /* Check to see if the checkbox set is already valid*/
                    if (!$(this).parent('div').hasClass(_validClass)) {
                        $(this).parent('div').addClass(_errorClass);
                        _flag=true;
                    }
				}
                if ($(this).is(':checked')) {
				    $(this).parent('div').addClass(_validClass);
                    $(this).parent('div').removeClass(_errorClass);                    
                    _flag=false;
                }
			});
			_form.find('input.required-email').each(function(){
				if(!_regEmail.test($(this).val())) addError($(this));
			});
			_form.find('input.required-day').each(function(){
				if(!_regDay.test($(this).val())) addError($(this));
			});
			_form.find('input.required-mon').each(function(){
				if(!_regMon.test($(this).val())) addError($(this));
			});
			_form.find('input.required-year').each(function(){
				if(!_regYear.test($(this).val())) addError($(this));
			});
			_form.find('textarea.required-many-emails').each(function(){
				if(!_regEmails.test($(this).val())) addError($(this));
			});
			_form.find('input.required-phone').each(function(){
				if(!_regPhone.test($(this).val())) addError($(this));
			});
			_form.find('input.required-num').each(function(){
				if(!_regNum.test($(this).val())) addError($(this));
			});
			_form.find('input.required, textarea.required').each(function(){
                console.log($(this).val());
				if(!$(this).val().length || $(this).val() == $(this).attr('alt')) addError($(this));
			});
			_form.find('div.required-radio').each(function(){
				var _test = false;
				$(this).find('input[type=radio]').each(function(){
					if ($(this).is(':checked')) _test = true;
				});
				if (!_test) {
                    addError($(this));
					_flag=true;
				}
			});


			_form.find('select.required-select').each(function(){
				var _act = $(this).val();
                console.log("Default: "+_default + " Current: " + _act);
				if(_act == _default)
				{
					addError($(this));
				}
			});

			// error class adding
			function addError(_obj) {
				_obj.parents('div.row').addClass(_errorClass);
				_flag=true;
			}
			return _flag;
		}

		// catch form submit event
		_form.submit(function(){
			if(checkFields()) {
				return false;
			}
		});
	});
}
