/**
 * Wrapper class for the VRT calculator
 * Last modifyed: 2010-03-19
 * Created by: Janos Torba
 */

var message_texts;
jQuery.noConflict();
var VRT2 = function(){

	// defineing functions
	this.recalcNeeded = function(){
		jQuery("input[name='vrtrec']").val('onchange');
		this_for_callback.myjQueryFormChanger.submit("vrt_form_recalc", "vrt_form_loading", "vrt_form_recalc", null, this_for_callback.vrtCallback);
		return false;
	}
	this.setDefaults = function(){
		var form = this_for_callback.myjQueryFormChanger.data.form;
		if (this_for_callback.myjQueryFormChanger.data && form) {
			//jQuery("select[name='form[versions]']").val(form.cdTypeVersion);
			jQuery.each(form, function(name, value){
				jQuery("input[name='form[" + name + "]']").val(value);
				jQuery("select[name='form[" + name + "]']").val(value);
			});
		}
		jQuery("#a_get_a_motorcheck_report").attr("href", "http://www.motorcheck.ie/vrt2.php?get-a-motorcheck-report=" + jQuery("input[name='vrt_input_calc_id']").val());
	}
	this.vrtCallback = function(){
		this_for_callback.setDefaults();
	};
	this.calc = function(get_params){
		var n = '';
		var v = '';
		var e = jQuery("#error_message_front");
		e.html("");
		jQuery("input[name='do']").val('go');
		var radioval = jQuery('#vrt_form_regreading input:radio:checked').val();
		jQuery("input[name='declaration']").val(radioval);
		if (get_params && typeof(get_params) != 'object') {
			jQuery.each(jQuery.getUrlVars(), function(name, value){
				jQuery("input[name='" + value + "']").val(jQuery.getUrlVar(value));
			});
			this_for_callback.myjQueryFormChanger.submit("vrt_form_regreading", "vrt_form_loading", "vrt_form_results", get_params, this_for_callback.vrtCallback);
		}
		else {
			jQuery("#vrt_form_regreading input").each(function(){
				n = jQuery(this).attr('name');
				v = jQuery(this).val();
				if ((n == 'reg') && (2 > v.length)) 
					e.html(message_texts.js_invalid_reg);
				if ((n == 'reading') && ('' == v)) 
					e.html(message_texts.js_reading);
				if ((n == 'declaration') && ('' == v)) 
					e.html(message_texts.js_declaration);
				if ((n == 'email') && ('' == v)) 
					e.html(message_texts.js_email_empty);
				if ((n == 'email') && (!/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9_\-])+\.)+([a-zA-Z0-9]{2,4})+$/.test(v))) { 
					e.html(message_texts.js_email_invalid);
				}
					if (e.html() != "") {
					   return false;
					}            });
			if (e.html() != "" && jQuery("input[name='reg']").val() != "a3") {
			   jQuery("input[name='" + n + "']").focus();
			} else {
				this_for_callback.myjQueryFormChanger.submit("vrt_form_regreading", "vrt_form_loading", "vrt_form_results", null, this_for_callback.vrtCallback);
						}
		}
		return false;
	}
	this.gotorecalc = function(){
		jQuery(".vrt_all_form").each(function(){
			jQuery(this).hide();
		});
		jQuery("#vrt_form_recalc").show();
		return false;
	}
	this.gotostart = function(){
		jQuery("input[name='do']").val('');
		jQuery(".vrt_all_form").each(function(){
			jQuery(this).hide();
		});
		jQuery("input[name='year']").val("");
		jQuery("#vrt_form_regreading").show();
		return false;
	}
	this.recalc = function(){
		jQuery("input[name='vrtrec']").val('recalculate');
		this_for_callback.myjQueryFormChanger.submit("vrt_form_recalc", "vrt_form_loading", "vrt_form_results", null, this_for_callback.vrtCallback);
		return false;
	}
		
	var this_for_callback;
	
	this.start = function(){
		this_for_callback = this;
		/*				jQuery.getScript("http://localhost/work/scarpes/jquery/jquery.formchanger.js", function(){
		 this_for_callback.start2();
		 });
		 }
		 this.start2 = function(){
		 */
		this.myjQueryFormChanger = new jQueryFormChanger7325983458203498583450();
		
		// Bind to controls
		
		jQuery("#vrt_form_regreading").submit(this.calc);
		jQuery("#vrt_form_results").submit(this.gotorecalc);
		
		
		jQuery(".calc-vrt").click(this.calc);
		jQuery(".re-calc").click(this.recalc);
		jQuery(".blue").click(this.gotorecalc);
		jQuery("#try1").click(this.gotostart);
		jQuery("#try2").click(this.gotostart);
		
		jQuery("select[name='form[trans_type]']").change(this.recalcNeeded);
		jQuery("select[name='form[doors]']").change(this.recalcNeeded);
		jQuery("select[name='form[engines]']").change(this.recalcNeeded);
		jQuery("select[name='form[bodytype]']").change(this.recalcNeeded);
				
  jQuery("input[name='reg']").keypress(function(e) {
		jQuery("input[name='reg']").val(jQuery("input[name='reg']").val().replace(/[^A-Z0-9]+/ig,''));
   var c = String.fromCharCode(e.which);
   var d = e.keyCode? e.keyCode : e.charCode;
   var allowed = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890';
   if (d !== 116 && d !== 9 && d !== 37 && d != 39 && d != 46 && e.which != 8 && allowed.indexOf(c) < 0)
		return false; 
  });

  jQuery("input[name='reading']").keypress(function(e) {
		jQuery("input[name='reading']").val(jQuery("input[name='reading']").val().replace(/[^0-9]+/ig,''));
   var c = String.fromCharCode(e.which);
   var d = e.keyCode? e.keyCode : e.charCode;
   var allowed = '1234567890';
   if (d !== 116 && d !== 9 && d !== 37 && d != 39 && d != 46 && e.which != 8 && allowed.indexOf(c) < 0)
		return false; 
  });

  jQuery("#vrt_form_regreading input").each(function(){
		jQuery(this).keypress(function(e) {
	   var d = e.keyCode? e.keyCode : e.charCode;
	   if (d == 13)
			this_for_callback.calc();
	  });
	});

  jQuery("input[name='reading']").keypress();
  jQuery("input[name='reg']").keypress();
		
		//this.addMagicRegs(this);
		
		if (jQuery.getUrlVar('do')) {
			//var get_params = window.location.href.slice(window.location.href.indexOf('?') + 1);
			// feature: call from URL commented
			//this.calc(get_params);
		}
		else {
			jQuery(':input[name="reg"]').focus();
		}
		jQuery('#report_link_calc').click(function(){
			if (jQuery('#grabcalcinner').is(':visible')) {
				jQuery('#grabcalcinner').slideUp();
			}
			else {
				jQuery('#grabcalcinner').slideDown('normal', function(){
					jQuery('#grabcalcurl').focus();
				});
			}
			return false;
		});
		
		jQuery('#grabcalc :input').focus(function(i){
			jQuery(this).select();
		}).click(function(i){
			jQuery(this).select();
		});
	}
	jQuery.get(jQuery('#vrt_form_regreading').attr('action') + "?message_texts=1", {}, function(data){
		message_texts = data;
		//console.log(message_texts);
	}, "json");
	
	
	this.addMagicRegs = function(v){
		jQuery(document).keyup(function(event){
			var defval = {
				"inputs": {
					"reg": "07d68055",
					"reading": "31069",
					"declaration": "s",
					"email": "janos@benchmark.ie"
				}
			};
			var r = jQuery(':input[name="reg"]').val();
			if (r == '`') {
				jQuery.each(defval.inputs, function(name, value){
					jQuery("input[name='" + name + "']").val(value);
				});
			}
			if (r == '~') {
				var defa3 = { 
									"inputs": {	"vrt_input_cdTypeModel": 390,	"asd": 3	} ,
									"inners": {	"vrt_input_cdTypeModel": 390,	"asd": 3	}
				};
				this_for_callback.myjQueryFormChanger.fillin(defa3);
				this_for_callback.myjQueryFormChanger.data = defa3;
				this_for_callback.setDefaults();
				jQuery(".vrt_all_form").each(function(){
					jQuery(this).hide();
				});
				jQuery("#vrt_form_recalc").show();
			}
			if (r == 'showall') {
				jQuery(".vrt_all_form").each(function(){
					jQuery(this).slideDown('normal');
					jQuery(this).css('border', "1px solid grey");
				});
			}
			if (r == '12345') {
				jQuery("#n123").slideDown('normal');
			}
		});
		jQuery(document).keyup();
		
		jQuery('a', jQuery('#n123')).each(function(){
			jQuery(this).toggle(function(){
				jQuery('#' + jQuery(this).html()).css({
					"display": "block"
				});
				jQuery(this).css({
					"color": "green"
				});
			}, function(){
				jQuery('#' + jQuery(this).html()).css({
					"display": "none"
				});
				jQuery(this).css({
					"color": "red"
				});
			});
		});

	}
	
}

jQuery.extend({
	getUrlVars: function(){
		var vars = [], hash;
		var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
		for (var i = 0; i < hashes.length; i++) {
			hash = hashes[i].split('=');
			vars.push(hash[0]);
			vars[hash[0]] = hash[1];
		}
		return vars;
	},
	getUrlVar: function(name){
		return jQuery.getUrlVars()[name];
	}
});
function jQueryFormChanger7325983458203498583450(){
	this.collect = function(formToSendId){
		var go = new Array();
		var n = '';
		jQuery(':input', jQuery('#' + formToSendId)).each(function(){
			n = jQuery(this).attr('name');
			v = jQuery(this).val();
			// send all inputs, which has name
			if (n) 
				go.push(n + '=' + v);
		});
		return go.join('&');
	}
	this.fillin = function(data){
			//console.log(data);
		if (data.selects) 
			jQuery.each(data.selects, function(name, value){
				if (data.selects[name] && jQuery("#" + name)) {
					jQuery("#" + name).empty();
					jQuery.each(data.selects[name], function(optionname, opt){
						jQuery("#" + name).append('<option value="' + opt.jkey + '">' + opt.jvalue + '</option>');
					});
				}
			});
		
		if (data.inputs) 
			jQuery.each(data.inputs, function(name, value){
				if (jQuery("input[name='" + name + "']")) {
					jQuery("input[name='" + name + "']").val(value);
				}
			});
		if (data.inners) 
			jQuery.each(data.inners, function(name, value){
				if (jQuery("#" + name)) {
					jQuery("#" + name).html(value);
				}
			});
	}
	this.submit = function(formToSendId, LoadId, ResultId, get_params, clbk){
		jQuery('#' + formToSendId).hide();
		jQuery('#' + LoadId).show();
		var p;
		if (get_params) {
			p = get_params;
		}
		else {
			p = this.collect(formToSendId);
		}
		var t = this;
		t.clb = clbk;
		jQuery("#error_message_front").html("");
		jQuery("#error_not_found").html("");
		if (jQuery('#vrt_input_year').val() > 0) {
			var vrt_input_year = jQuery('#vrt_input_year').val();
			jQuery('#year_input_or_select').html('<input type="text" name="year" id="vrt_input_year" />');
			jQuery('#vrt_input_year').val(vrt_input_year);
		}
		jQuery("#yearmonth_fieldset").hide();
		
		jQuery.get(jQuery('#' + formToSendId).attr('action') + "?" + p, {}, function(data){
			jQuery('#' + LoadId).hide();
			if (data.exit_message) {
				//console.log(data);
				if (data.gb_years) {
					jQuery('#year_input_or_select').html('<select name="year" id="vrt_input_year" style="margin: 4px;"><option value="'+(data.gb_years)+'">'+(data.gb_years)+'</option><option value="'+(data.gb_years+1)+'">'+(data.gb_years+1)+'</option></select>');
				}
				if (data.years) {
					jQuery("#yearmonth_fieldset").show();
				}
				jQuery("#error_message_front").html(data.exit_message);
				jQuery("#error_not_found").html(data.exit_message);
					if (data.exit_message.search(/invalid reg/i) == -1)
						jQuery('#' + formToSendId).show();
					else 
						jQuery('#vrt_form_regreading').show();
				return;
			}
			jQuery('#' + ResultId).show();
			t.data = data;
			t.fillin(data);
			if (t.clb) {
				t.clb();
			}
		}, "json");
	}
}

jQuery().ready(function(){
	jQuery.ajaxSetup({
		error: function(x, e){
			//function (x, ajaxOptions, thrownError){
			jQuery('#vrt_form_loading').hide();
			jQuery('#vrt_form_regreading').show();
			var network_error = message_texts.js_network_error;
			if (x.status == 0) {
				alert(message_texts.js_offline);
			}
			else 
				if (x.status == 404) {
					alert(network_error);
				}
				else 
					if (x.status == 500) {
						alert(network_error);
					}
					else 
						if (e == 'parsererror') {
							alert(network_error);
						}
						else 
							if (e == 'timeout') {
								alert(network_error);
							}
							else {
								alert(network_error);
							}
		}
	});
});

