/**
*	DM_Validator.js (jQuery.js required)
*
*	@version	0.14
*	@author		Yosuke Hiyoshi
*	@require	jquery.js
*
*	[Update history]
*	# Oct. 19 2009 (Version 0.14)	-	Add "Grouped TEXT_ELEMENTS validation (Group has one more value)"[Method:textGroupHasOneValidation]
*	# Oct. 14 2009 (Version 0.13)	-	Add "Grouped SELECT validation"[Method:selectGroupValidation]
*	# Sep. 14 2009 (Version 0.12)	-	Add "Grouped INPUT->TYPE:CHECKBOX validation"[Method:chkboxGroupValidation]
*	# May. 26 2009 (Version 0.11)	-	Add "Grouped TEXT_ELEMENTS validation"[Method:textGroupValidation] & "SELECT_ELEMENTS validation"[Method:selectValidation]
*	# May. 12 2009 (Version 0.10)	-	Development started !
*
*/

/**
* Initialize - set actions
*
* @param	Void
* @return	Void
*/
/**/
jQuery(function(){
  var cookie = readCookie('checker')
  var visited = []
  if(cookie != null){
    visited = cookie.split(',')
  }
  for (var i in visited){
   $('#local_navi li a').eq(visited[i]).addClass('visited')
  }
  $('#local_navi li a').each(function(i){
    if(visited.indexOf(String(i)) == -1){
      $(this).click(function(){
        var num = $('#local_navi li a').index($(this))
        visited.push(num)
        createCookie('checker',visited,7)
      })
    }
  })
})

//cookieの生成
function createCookie(name,value,days) {
        if (days) {
                var date = new Date();
                date.setTime(date.getTime()+(days*24*60*60*1000));
                var expires = "; expires="+date.toGMTString();
        }
        else var expires = "";
        document.cookie = name+"="+value+expires+"; path=/";
}

//cookieの読み込み
function readCookie(name) {
        var nameEQ = name + "=";
        var ca = document.cookie.split(';');
        for(var i=0;i < ca.length;i++) {
                var c = ca[i];
                while (c.charAt(0)==' ') c = c.substring(1,c.length);
                if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
        }
        return null;
}


/**/
$(document).ready(function(){
	$(".requiredText").blur(function(){
		textValidation($(this));
	});
	$(".requiredGroups").find("input").blur(function(){
		textGroupValidation($(this).parents(".requiredGroups"));
	});
	$(".requiredHasOneGroups").find("input").blur(function(){
		textGroupHasOneValidation($(this).parents(".requiredHasOneGroups"));
	});
	$("*[type='submit'],input[type='image']").click(function(){
		return validateAll();
	});
});


/**
* [textValidation] Validation - input->type:text, input->type:password, textarea
*
* @param	tgtElem:Object
* @return	Boolean
*/
var textValidation = function(tgtElem){
	if($(tgtElem).val() == "" && $(tgtElem).html() == ""){
		if($(tgtElem).siblings(".warning").html() == null){
			$(tgtElem).parent().append('<p class="warning">' + $(tgtElem).attr("title") + '</p>');
			$(tgtElem).css("background", "#fee");
		}
		return false;
	}else{
		$(tgtElem).siblings(".warning").remove();
		$(tgtElem).css("background", "#fff");
		return true;
	}
}


/**
* [textGroupValidation] Validation - ELEMENT->[input->type:text], ELEMENT->[input->type:password], ELEMENT->[textarea]
*
* @param	tgtElem:Object
* @return	Boolean
*/
var textGroupValidation = function(tgtElem){
	var validFlg = true;
	$(tgtElem).find("input").each(function(){
		if($(this).val() == ""){ validFlg = false; }
	});
	if(validFlg != true){
		if($(tgtElem).siblings(".warning").html() == null){
			$(tgtElem).parent().append('<p class="warning">' + $(tgtElem).attr("title") + '</p>');
			$(tgtElem).find("input").css("background", "#fee");
		}
		return false;
	}else{
		$(tgtElem).siblings(".warning").remove();
		$(tgtElem).find("input").css("background", "#fff");
		return true;
	}
}


/**
* [textGroupHasOneValidation] Validation - ELEMENT->[input->type:text], ELEMENT->[input->type:password], ELEMENT->[textarea]
*
* @param	tgtElem:Object
* @return	Boolean
*/
var textGroupHasOneValidation = function(tgtElem){
	var validFlg = false;
	$(tgtElem).find("input").each(function(){
		if($(this).val() != ""){ validFlg = true; }
	});
	if(validFlg != true){
		if($(tgtElem).siblings(".warning").html() == null){
			$(tgtElem).parent().append('<p class="warning">' + $(tgtElem).attr("title") + '</p>');
			$(tgtElem).find("input").css("background", "#fee");
		}
		return false;
	}else{
		$(tgtElem).siblings(".warning").remove();
		$(tgtElem).find("input").css("background", "#fff");
		return true;
	}
}


/**
* [chkboxValidation] Validation - ELEMENT->[input->type:checkbox]
*
* @param	tgtElem:Object
* @return	Boolean
*/
var chkboxValidation = function(tgtElem){
	if($(tgtElem).attr("checked") != true){
		if($(tgtElem).siblings(".warning").html() == null){
			$(tgtElem).parent().append('<p class="warning">' + $(tgtElem).attr("title") + '</p>');
		}
		return false;
	}else{
		$(tgtElem).siblings(".warning").remove();
		return true;
	}
}


/**
* [chkboxGroupValidation] Validation - input->type:checkbox
*
* @param	tgtElem:Object
* @return	Boolean
*/
var chkboxGroupValidation = function(tgtElem){
	var validFlg = true;
	if($(tgtElem).find("input[@type='checkbox']:checked").attr("checked") != true){
		validFlg = false;
	}
	if(validFlg != true){
		if($(tgtElem).siblings(".warning").html() == null){
			$(tgtElem).parent().append('<p class="warning">' + $(tgtElem).attr("title") + '</p>');
		}
		return false;
	}else{
		$(tgtElem).siblings(".warning").remove();
		return true;
	}
}


/**
* [radioValidation] Validation - input->type:radio
*
* @param	tgtElem:Object
* @return	Boolean
*/
var radioValidation = function(tgtElem){
	if($(tgtElem).find("input[@type='radio']:checked").attr("checked") != true){
		if($(tgtElem).siblings(".warning").html() == null){
			$(tgtElem).parent().append('<p class="warning">' + $(tgtElem).attr("title") + '</p>');
		}
		return false;
	}else{
		$(tgtElem).siblings(".warning").remove();
		return true;
	}
}


/**
* [selectValidation] Validation - select->option
*
* @param	tgtElem:Object
* @return	Boolean
*/
var selectValidation = function(tgtElem){
	if($(tgtElem).val() == ""){
		if($(tgtElem).siblings(".warning").html() == null){
			$(tgtElem).parent().append('<p class="warning">' + $(tgtElem).attr("title") + '</p>');
		}
		return false;
	}else{
		$(tgtElem).siblings(".warning").remove();
		return true;
	}
}


/**
* [selectGroupValidation] Validation - ELEMENT->select
*
* @param	tgtElem:Object
* @return	Boolean
*/
var selectGroupValidation = function(tgtElem){
	var validFlg = true;
	$(tgtElem).find("select").each(function(){
		if($(this).val() == ""){
			validFlg = false;
		}
	});
	if(validFlg != true){
		if($(tgtElem).siblings(".warning").html() == null){
			$(tgtElem).parent().append('<p class="warning">' + $(tgtElem).attr("title") + '</p>');
		}
		return false;
	}else{
		$(tgtElem).siblings(".warning").remove();
		return true;
	}
}


/**
* [validateAll] Validation - all input elements and textarea elements
*
* @param	Void
* @return	Boolean
*/
var validateAll = function(){
	var validFlg = true;
	var expFlg;
	$(".requiredText").each(function(){
		if(textValidation($(this)) != true){ validFlg = false; }
	});
	$(".requiredGroups").each(function(){
		if(textGroupValidation($(this)) != true){ validFlg = false; }
	});
	$(".requiredHasOneGroups").each(function(){
		if(textGroupHasOneValidation($(this)) != true){ validFlg = false; }
	});
	$(".requiredChkbox").each(function(){
		if(chkboxValidation($(this)) != true){ validFlg = false; }
	});
	$(".requiredChkboxGroups").each(function(){
		if(chkboxGroupValidation($(this)) != true){ validFlg = false; }
	});
	$(".requiredRadio").each(function(){
		if(radioValidation($(this)) != true){ validFlg = false; }
	});
	$(".requiredSelect").each(function(){
		if(selectValidation($(this)) != true){ validFlg = false; }
	});
	$(".requiredSelectGroup").each(function(){
		if(selectGroupValidation($(this)) != true){ validFlg = false; }
	});
	if(validFlg != true){
		return false;
	}else{
		return true;
	}
}
