$.fn.validate_field = function(options){
	settings = jQuery.extend({
		req : "required",
		val_type : "alpha_num",
		match : "null", 
    	msg_div : "form_msg",
    	val_page : root_path + "errchk_common.php",
    	add_qstr : "null",
    	graphic : true,
    	append_graphic : true,
    	valid_img : root_path + "images/forms/valid_plus.gif",
    	invalid_img : root_path + "images/forms/valid_minus.gif",
    	chk_inputs : true,
    	callback : "null"
  	},options);
  	
  	//ALLOW ATTACHED CLASSES TO OVERRIDE SETTINGS
  	
  	if($(this).hasClass('req') || $(this).hasClass('required')){
  		var set_req = 'required';
  	} else if($(this).hasClass('noreq') || $(this).hasClass('no_req') || $(this).hasClass('not_required')/* || !$(this).hasClass('req') || !$(this).hasClass('required') */){
  		var set_req  = 'not_required';
  	} else {
  		set_req = settings.req;
  	}
  	
  	//val_type
  	if($(this).hasClass('select-one')){
  		var set_val_type = 'select-one';
  	} else if($(this).hasClass('hidden')){
  		var set_val_type = 'hidden';
  	} else if($(this).hasClass('email')){
  		var set_val_type = 'email';
  	} else if($(this).hasClass('vin')){
  		var set_val_type = 'vin';
  	} else if($(this).hasClass('password')){
  		var set_val_type = 'password';
  	} else if($(this).hasClass('phone')){
  		var set_val_type = 'phone';
  	} else if($(this).hasClass('birthdate')){
  		var set_val_type = 'birthdate';
  	} else if($(this).hasClass('expiration')){
  		var set_val_type = 'expiration';
  	} else {
		var set_val_type = settings.val_type;
  	}
	
	var fid = $(this).attr("id");
	var fname = $(this).attr("name");
	var fvalue = $(this).val();
	
	if($(this).is("select") && $(this).attr("multiple") != "multiple"){
		var ftype = "select-one";
	} else if($(this).is("select") && $(this).attr("multiple") == "multiple"){
		var ftype = "select-multiple";
	} else {
		var ftype = $(this).attr('type');
	}
	
	if($(this).hasClass("phone_input")){
		var phone_input = "true";
	}else{
		var phone_input = "false";
	}
	
	var val_str = "fname=" + fname + "&fvalue=" + fvalue + "&req=" + set_req + "&val_type=" + set_val_type + "&field_type=" + ftype + "&phone_input=" + phone_input;
	
	if(settings.add_qstr != "null"){
		val_str = val_str + "&" + add_qstr
	}

	if(settings.match != "null"){
		var mfvalue = $("#" + settings.match).val();
		if(fvalue == mfvalue){
			var mvalid = "yes";
		} else {
			var mvalid = "no";
		}
	} else {
		var mvalid = "yes";
	}
	
	//alert(fid + " --- " + ftype);
	
	if(settings.graphic && settings.append_graphic && $("#" + fid + "_img").length == 0 && set_req == "required" && ftype != "hidden"){
		$("#" + fid).after("<img id='" + fid + "_img' src='" + settings.invalid_img + "' />");
	}

	$.ajax({
    	type: "POST",
    	url: settings.val_page,
    	data: val_str,
    	dataType: "json",
    	success: function(data){
    		
    		var qno = data['fname'];
    		var valid = data['valid'];
    		
    		//alert(qno + ": " + valid + " - set_req: " + set_req);
			
			if(settings.match != "null" && mvalid == "no"){
			
				$("#" + fid).addClass("invalid");
    			
    			if(settings.chk_inputs){
    				$("#" + fid + "_check").val('false');
    			}
    			
    			if(settings.graphic){
    				$("#" + fid + "_img").attr({src : settings.invalid_img, alt : "minus" });
    			}
			
			}else if(valid == "yes"){
    		
    			$("#" + fid).removeClass("invalid");
    			
    			if(settings.chk_inputs){
    				$("#" + fid + "_check").val('true');
    			}
    			
    			if(settings.graphic && settings.append_graphic && $("#" + fid + "_img").length != 0 && set_req === "not_required" && ftype != "hidden"){
					$("#" + fid + "_img").remove();
				}else if(settings.graphic){
    				$("#" + fid + "_img").attr({src : settings.valid_img, alt : "plus" });
    			}
    			
    		} else {
    		
    			$("#" + fid).addClass("invalid");
    			
    			if(settings.chk_inputs){
    				$("#" + fid + "_check").val('false');
    			}
    			
    			if(settings.graphic && settings.append_graphic && $("#" + fid + "_img").length == 0 && set_req == "not_required" && ftype != "hidden"){
					$("#" + fid).after("<img id='" + fid + "_img' src='" + settings.invalid_img + "' />");
				}else if(settings.graphic){
    				$("#" + fid + "_img").attr({src : settings.invalid_img, alt : "minus" });
    			}
    			
    		}
 	
    	},
    	error: function(XMLHttpRequest, textStatus, errorThrown){
    		alert("THERE HAS BEEN AN ERROR - validate_field: " + textStatus + " - " + errorThrown);
    	}
    });

}

$.fn.dlr_assign = function(options){

	settings = jQuery.extend({
		mfr_program : "EPG",
		pgrm : "gap",
		select_lbl : "SELECT"
  	},options);
  	

	function build_select (parentID, selectID, field_label, optionsArray, defaultOption) {

		if($('#' + selectID).val() === undefined) {
		
			var select_html = "";
			select_html += "<div class=\"field_container\" id=\"" + selectID + "_container\">";
			select_html += "<div class=\"form_fieldname_short\">" + field_label + ":</div>";
			select_html += "<div class=\"form_formfield_long\"><select class=\"inputbox\" name=\"" + selectID + "\" id=\"" + selectID + "\">";
			
			var opt_html = "";
			
			opt_html += "<option value=\"\">-- " + settings.select_lbl + " --</option>";
			for(var key in optionsArray) {
				var selectVal = "";
				if(defaultOption === key) { 
					selectVal = "selected";
				}
				opt_html += "<option value='" + key + "' " + selectVal + " >" + optionsArray[key] + "</option>";
			}
			
			select_html += opt_html;
			
			select_html +="</select>";
			select_html += "</div>";
			
		    $('#'+parentID).append(select_html);
		} else {
		
			$('#'+selectID + "_container").show();
			$('#'+selectID).val('');
		}
		
	}
	    

	this.click(function(){

		var thid = $(this).attr('id');
		var wkid = thid.split("_");
		var qno = wkid[1];
		
		var adminpage = root_path + "gen_tools/truck/form_ajax-dlr-assign.php";
	    var adminstr = "pgrm=" + settings.pgrm + "&qno=" + qno;
	    
	    if(settings.mfr_program == "DAIMLER"){
	    	adminstr += "&daimler_reg=true";
	    	var utable = "DAIMLER" 
	    }else if(settings.mfr_program == "ISUZU"){
	    	adminstr += "&isuzu_reg=true";
	    	var utable = "EPG";
	    }else{
	    	var utable = "EPG";
	    }

	    function get_d_users(did, utable, duser){
	    	var userpage = root_path + "gen_tools/truck/bot_ajax-get_users_by_did.php";
			var userstr = "did=" + did + "&utable=" + utable;
			
			$.ajax({
	        	type: "POST",
	        	url: userpage,
	        	data: userstr,
	        	dataType: "json",
				success: function(data){
					
					build_select("dlr_assign_container", "user_assign", "Select User", data, duser);
					
					if(duser != ""){
						$(".form_button").show();
					}
					
					$("#user_assign").change(function(){
						
						if($(this).val() != ""){
							$(".form_button").show();
						}else{
							$(".form_button").hide();
						}
						
					});
				}
			});
	    }
	
		$.ajax({
        	type: "POST",
        	url: adminpage,
        	data: adminstr,
        	dataType: "html",
			success: function(data){
				$("#modalbody").html(data);
		    },
		    complete: function(){
		    	
		    	if(settings.pgrm == "pdtr"){
		    		var mtitle = 'ASSIGN QUOTE TO DEALER / USER';
		    	} else {
		    		var mtitle = 'ASSIGN APP TO DEALER / USER';
		    	}
		    	
		    	$('#modal_title').html(mtitle);
		    	$('#modal').addClass('modal');
				$.blockUI({message: $("#modal")});
				
				
				if($("#dlr_assign").val() != ""){
					get_d_users($("#dlr_assign").val(), utable, $("#use_sp").val());
				} 
				
				$("#dlr_assign").change(function(){
					$("#user_assign_container").remove();
					$(".form_button").hide();
					
					if($(this).val() != ""){
						get_d_users($(this).val(), utable, "");
					}
	    			
				});
		    
		    	$("#assign_butt").click(function(){
		    		var apage = root_path + "gen_tools/truck/bot_ajax-dlr-assign.php";
	    			var astr = "pgrm=" + settings.pgrm + "&qno=" + qno + "&did=" + $("#dlr_assign").val() + "&uid=" + $("#user_assign").val();
	    			
				    if(settings.mfr_program == "DAIMLER"){
				    	astr += "&daimler_reg=true";
				    }
				    
				    //alert(apage + "?" + astr);
					$.ajax({
			        	type: "POST",
			        	url: apage,
			        	data: astr,
			        	dataType: "json",
						success: function(data){
							
							if(data['success'] == "no"){
								$("#form_msg").addClass('text_red');
							}
							$("#form_msg").html(data['msg']);
						},
                        error: function(XMLHttpRequest, textStatus, errorThrown){
				            alert("THERE HAS BEEN AN ERROR - dlr_assign 1: " + textStatus + " - " + errorThrown);
				        }						
					});
		    	});
		    },
        	error: function(XMLHttpRequest, textStatus, errorThrown){
				alert("THERE HAS BEEN AN ERROR - dlr_assign 2: " + textStatus + " - " + errorThrown);
			}
        });
        
	});

}

jQuery.msg_board = function(options){

	settings = jQuery.extend({
		msg_div : 'message_board',
		program : 'TR',
		control : '',
		mfr_program : 'EPG',
		userid : '',
		log_id : '',
		dealer_id : '',
		country : 'US'
  	},options);

  	var msgpage = root_path + "gen_tools/bot_json_message_board.php";
	var msgstr = "program=" + settings.program + "&mfr_program=" + settings.mfr_program + "&page_control=" + settings.control + "&dealerid=" + settings.dealer_id + "&userid=" + settings.userid + "&log_id=" + settings.log_id + "&country=" + settings.country;
  	
  	$.ajax({
    	type: "POST",
    	url: msgpage,
    	data: msgstr,
    	dataType: "json",
		success: function(data){

			if(data['display'] == "yes"){
			
				if(data['display_mode'] == "div"){
				
					var more_css = "";
					if(data['bold'] > 0){ 
						more_css += "font-weight:bold;";
					}
					
					if(data['italic'] > 0){ 
						more_css += "font-style:italic;";
					}
					
					var mhtml = "<div align=\"right\" class=\"close_butt close_msg\"><img alt=\"Close This Message\" title=\"Close This Message\" id=\"close_msg\" class=\"point\" src=\"" + root_path + "images/website/msg_close_x.gif\" border=\"0\"/></div>";
					mhtml += "<div class=\"msg_text\">";
					mhtml += "<span class=\"text1\" style=\"color:#" + data['color'] + ";" + more_css + "\">" + data['msg'] +"</span>";
					mhtml += "</div>";
					
					$("#" + settings.msg_div).css("background-color","#" + data['bg_color']).html(mhtml).show();
									
				}else if(data['display_mode'] == "modal"){
					
					$("#modalbody").html(data['msg']);
					$('#modal').addClass('modal'); 
					$("#modal_close").addClass('close_msg');   
		    		$("#modal_title").html(data['msg_title']);
		    		$.blockUI({message: $("#modal")});
					
				}
			
			}
			
			var msg_id = data['msg_id'];
			var display_mode = data['display_mode'];
			
			$(".close_msg").click(function(e){
	    		e.preventDefault();
				var clpage = root_path + "ew/bot_ajax_message_board.php";
				var clstr = "action=sess_close&msg_id=" + msg_id + "&log_id=" + data['log_id'];
				
				$.ajax({
		        	type: "POST",
		        	url: clpage,
		        	data: clstr,
		        	dataType: "html",
		        	success: function(){
		        	
		        		if(display_mode == "modal"){
		        			 $.unblockUI();
		        		}else{
		        			$("#message_board").hide();
		        		}
		       
		        	},
		        	error: function(XMLHttpRequest, textStatus, errorThrown){
		        		//alert("THERE HAS BEEN AN ERROR: " + textStatus + " - " + errorThrown);
		        	}
		        });
			});
			
	    },
	    complete: function(){
	    
	    	
	    },
    	error: function(XMLHttpRequest, textStatus, errorThrown){
			//alert("THERE HAS BEEN AN ERROR: " + textStatus + " - " + errorThrown);
		}
	});
  	
}

$.fn.validate_submit = function(options){

       settings = jQuery.extend({
             the_msg_div : 'form_msg',
             validate_class : 'validate_this',
             the_form : 'null'
       },options);
       
       //alert(settings.the_msg_div + " - " + settings.the_form + " - " + settings.validate_class);
       
       if(settings.the_form === "null"){
           var fname_wk = this.attr('id').split('_');
           var pct = parseInt(fname_wk.length)-2;
           var submit_form = "";
           for(i=0; i<=pct; i++){
              submit_form += fname_wk[i] + "_";
           }
           submit_form += "form";
       }else{
           var submit_form = settings.the_form;
       }

       var mdiv = settings.the_msg_div;
       
       $("." + settings.validate_class).each(function(){
             $(this).validate_field({chk_inputs : false, append_graphic: false});
       });
       
       setTimeout(function(){

             if($("input,select").hasClass('invalid')){
              
                  var errors = "Please review and correct the following fields: ";
                  var ict = 0;
                  $("input.invalid,select.invalid").each(function(){
                      var the_lbl = $("#" + $(this).attr('name') + "_label").html().split(':');
                      
                      if(ict > 0){
                         errors += ", ";
                      }
                      
                      errors += the_lbl[0];
                      ict++;
                  });

                  $("#" + mdiv).html(errors);
                  
             }else{
                  setTimeout(function(){
                      $("#" + submit_form).submit();
                  }, 100);
             }
       }, 500);
       
}


