var fn_email = function(){
	obj = $(this).next("span");
	if(emailCheck(document.getElementById($(this).attr('id')), true)){
		toggleClassJQueryObj(obj, "OK");
	}else{
		var undefined;
		if($(this).attr('value') != undefined && $(this).attr('value').trim() != ''){
			toggleClassJQueryObj(obj, "ERROR");
		}else{
			toggleClassJQueryObj(obj, "EMPTY");
		}
	}
};

var fn_empty = function(){
	var undefined;
	obj = $(this).next("span");
	if($(this).val() != undefined && $(this).val().trim() != ''){
		toggleClassJQueryObj(obj, "OK");
	}else{
		toggleClassJQueryObj(obj, "EMPTY");
	}
	if(($(this).attr('id') == 'passwordReg2' ||$(this).attr('id') == 'passwordReg') && $(this).val() != undefined && $(this).val().trim() != ''){
		checkPassword($(this));
	}
};

var fn_numeric = function (){
	var obj = $(this).next('span');
	var val = $(this).val();
	if(parseInt(val) > 0){
		toggleClassJQueryObj(obj, "OK");
	}else{
		toggleClassJQueryObj(obj, "EMPTY");
	}
};

var fn_date = function(){
	var param = getDate($(this));

	if(param[0].trim() != '//'){
		if(!/Invalid|NaN/.test(new Date(param[0]))){
			toggleClassJQueryObj(param[1], "OK");
		}else{
			toggleClassJQueryObj(param[1], "ERROR");
		}
	}else{
		toggleClassJQueryObj(param[1], "EMPTY");
	}
	if($(this).attr('id').indexOf('archive') != -1){
		var publishDate = getDate($("#publishdate-dd"));
		var archiveDate = param[0];
		if(new Date(publishDate[0]) > new Date(archiveDate)){
			toggleClassJQueryObj(publishDate[1], "ERROR");
			toggleClassJQueryObj(param[1], "ERROR");
		}else if(publishDate[0].trim() != '//'){
			toggleClassJQueryObj(publishDate[1], "OK");
		}
	}else{
		var archiveDate = getDate($("#archivedate-dd"));
		var publishDate = param[0];
		if(new Date(publishDate) > new Date(archiveDate[0])){
			toggleClassJQueryObj(archiveDate[1], "ERROR");
			toggleClassJQueryObj(param[1], "ERROR");
		}else if(archiveDate[0].trim() != '//'){
			toggleClassJQueryObj(archiveDate[1], "OK");
		}
	}
}

function getDate(inputField){
	var parent = inputField.parents('div');
	var objDate = parent.find('#' +parent.attr('id') + " span.state");
	var str = parent.find('#' +parent.attr('id')+ ' input').map(function () {
                                return $(this).val();
                              })
                          .get().reverse().join("/");
	var param = new Array(str, objDate);
	return param;
}

function toggleClassJQueryObj(obj, state){
	if(state == "OK"){
		if(obj.hasClass("stateError")){
			obj.removeClass("stateError");
		}
		obj.addClass("stateOk");
	}else if(state == "EMPTY"){
		if(obj.hasClass("stateOk")){
			obj.removeClass("stateOk");
		}
		if(obj.hasClass("stateError")){
			obj.removeClass("stateError");
		}
	}else{
		if(obj.hasClass("stateOk")){
			obj.removeClass("stateOk");
		}
		obj.addClass("stateError");
	}
}

function checkPassword(password2){
	if(password2.attr('id') == 'passwordReg2'){
		password1 = $("#passwordReg");
	}else{
		password1 = $("#passwordReg2");
	}
	if(password1.val().trim() != ''){
		if(password1.attr('value') == password2.attr('value')){
			toggleClassJQueryObj(password1.next("span"), "OK");
			toggleClassJQueryObj(password2.next("span"), "OK");
		}else{
			toggleClassJQueryObj(password1.next("span"), "ERROR");
			toggleClassJQueryObj(password2.next("span"), "ERROR");
		}
	}
}
