
var formCheck;

window.addEvent('domready', function(){

	/**
	 * Limit input on textarea description
	 */
	if ($('textarea_limit')) {

		var textArea = $('textarea_limit');
	    var maxChars = textArea.get('maxchars');
	    var focused = false;


	    // create a custom focused property so that we only capture keystrokes when it is
	    textArea.addEvents({
	        focus: function() {
	            focused = true;
	        },
	        blur: function() {
	            focused = false;
	        },
	        keyup: function() {
			    if (focused) {
	
			        // current count is...
			        var chars = textArea.get("value").trim().length;
			
			        // allowed?
			        if (chars >= maxChars) {
			            // inform them its full!
			            //$("chars_left_response").set("html", "limit reached");
			            // remove surplus chars
			            textArea.set("value", textArea.get("value").substring(0,maxChars));
			        }
			        else {
			            // reset warning field
			            //$("chars_left_warning").set("html", "");
			        }
			        
			        var chars = textArea.get("value").trim().length;
			        // inform how much left
			        $("chars_left_response").set("text", maxChars - chars);
			    }
			}
		});
	};
	
	
	if ($('add_provider_form')) {
		formCheck = new FormCheck('add_provider_form', {
			display : {
				scrollToFirst : true
			},
			submitByAjax : true,
			onAjaxRequest: function() {
				//
				$('submit_button').disabled = true;
			},
			onAjaxSuccess: function(str) {
				doAjaxSuccess(str);
			}
		});
		/*
		 * Dispose fields under create new user
		 */
		formCheck.dispose($('create_name_first'));
		formCheck.dispose($('create_name_last'));
		formCheck.dispose($('create_sex_m'));
		formCheck.dispose($('create_sex_f'));
		formCheck.dispose($('create_birthyear'));
		formCheck.dispose($('create_zip'));
		formCheck.dispose($('create_checkemail'));
		formCheck.dispose($('create_checkemailconfirm'));
		formCheck.dispose($('create_checkemailconfirm'));
		formCheck.dispose($('create_password'));
		
		/*
		 * The form starts default as customer
		 * Dispose owner related fields
		 */
		formCheck.dispose($('owner_terms'));
		formCheck.dispose($('owner_name'));
		formCheck.dispose($('owner_email'));
		formCheck.dispose($('owner_phone'));
		formCheck.dispose($('owner_connection'));
	}
	
	
	if ($('overtake_provider_form')) {
		formCheck = new FormCheck('overtake_provider_form', {
			display : {
				keepFocusOnError: 1,
				scrollToFirst : false
			},
			submitByAjax : true,
			onAjaxRequest: function() {
				//
			},
			onAjaxSuccess: function(str) {
				doAjaxSuccess(str);
			}
		});
		/*
		 * Dispose fields under create new user
		 */
		formCheck.dispose($('create_name_first'));
		formCheck.dispose($('create_name_last'));
		formCheck.dispose($('create_sex_m'));
		formCheck.dispose($('create_sex_f'));
		formCheck.dispose($('create_birthyear'));
		formCheck.dispose($('create_zip'));
		formCheck.dispose($('create_checkemail'));
		formCheck.dispose($('create_checkemailconfirm'));
		formCheck.dispose($('create_checkemailconfirm'));
		formCheck.dispose($('create_password'));

	}
	

	// The stars in the judge box
		var stars = $$('.biz-judge-stars .image');
		stars.each(function(star, index) {
			star.addEvent('mouseover', function(e){
				// Reset stars
				stars.each(function(i, j) {
					if (j<=index) {
						i.addClass('on');	
					} else {
						i.removeClass('on');
					}
				});
			});
			star.addEvent('mouseout', function(e){
				set = $('add_provider_form').stars.value-1;
				stars.each(function(i, j) {
					if (j<=set) {
						i.addClass('on');	
					} else {
						i.removeClass('on');
					}
				});
			});
			star.addEvent('click', function(e){
				//$('judge-more').style.display = 'block';
				$('add_provider_form').stars.value = index+1;

			});
		});


	// The pricestars in the judge box
		var pricestars = $$('.biz-judge-pricestars .image');
		pricestars.each(function(pricestar, index) {
			pricestar.addEvent('mouseover', function(e){
				// Reset stars
				pricestars.each(function(i, j) {
					if (j<=index) {
						i.addClass('on');	
					} else {
						i.removeClass('on');
					}
				});
			});
			pricestar.addEvent('mouseout', function(e){
				set = $('add_provider_form').pricestars.value-1;
				pricestars.each(function(i, j) {
					if (j<=set) {
						i.addClass('on');	
					} else {
						i.removeClass('on');
					}
				});
			});
			pricestar.addEvent('click', function(e){
				$('add_provider_form').pricestars.value = index+1;
			});
		});

});




function getRadioValue(obj) {
	radioObj = obj;
	radioLength = radioObj.length;
	for(var i = 0; i < radioLength; i++) if(radioObj[i].checked) return radioObj[i].value;
}


function customLoginUsername(el){
	if (getRadioValue(el.form.user_state)=='login') {
		if (!el.value.test(/^[A-Z]/)) {
			el.errors.push("Username should begin with an uppercase letter");
			return false;
    } else {
			return true;
    }
	} else {
		return true;
	}
}


function customLoginPassword(el){
	if (getRadioValue(el.form.user_state)=='login') {
    if (!el.value.test(/^[A-Z]/)) {
			el.errors.push("Username should begin with an uppercase letter");
			return false;
    } else {
			return true;
    }
	} else {
		return true;
	}
}


/*
 * Check if the company name entered exists in the DB
 */
var checkResponseContainer;
var checkRequest = new Request({
	method: 'post',
	url: 'check_companyname',
	onComplete: function(json){
		if (json) {
			$(checkResponseContainer).set('html',json);
			$(checkResponseContainer).style.display = 'block';
	    } else {
		    $(checkResponseContainer).style.display = 'none';
		}
	}
});


function checkCompanyName(obj, responseContainer) {
	if (obj.value.length > 1) {
		checkResponseContainer = responseContainer;
		checkRequest.send('name=' + obj.value);
	}
}


function selectUserType(obj) {

	var type = obj.value;


	/*
	 * Show the right form modules
	 */
	$$('.module').each(function(module, index) {
		if(module.hasClass(type)) {
			module.removeClass('hidden');
		} else {
			module.addClass('hidden');
		}
	});


	/*
	 * Set / Unset the various fields for each type
	 */
	if(type == 'owner') {
	
		formCheck.dispose($('rating_comment'));

		formCheck.register($('owner_terms'));
		formCheck.register($('owner_name'));
		formCheck.register($('owner_email'));
		formCheck.register($('owner_phone'));
		formCheck.register($('owner_connection'));

	} else {

		formCheck.register($('rating_comment'));
		
		formCheck.dispose($('owner_terms'));
		formCheck.dispose($('owner_name'));
		formCheck.dispose($('owner_email'));
		formCheck.dispose($('owner_phone'));
		formCheck.dispose($('owner_connection'));

	}
	
}


var categoriesLeft;
function showCategoryChildren(obj) {

	categoriesLeft = $('categories_left').get('html');

	var parent;
	var flag;
	var el;

	flag = obj.checked;
	parent = $(obj).getParent('li');
	el = parent.getFirst('ul');

	if (flag) {
		if(categoriesLeft>0) {
			categoriesLeft--;
			if (el) el.style.display = 'block';
			if (parent.hasClass('has_children')) parent.addClass('on');
		} else {
			obj.checked = false;
		}
	} else {
		categoriesLeft++;
		
		if (el) {
			siblings = el.getElements('input');
			siblings.each(function(item, index){
				if (item.checked) {
					item.checked = false;
					categoriesLeft++;
				}
			});
		}
		if (el) {
			el.style.display = 'none';
			el.removeClass('show');
		}

		if (parent.hasClass('on')) parent.removeClass('on');
		
	}

	$('categories_left').set('html',categoriesLeft);
}