﻿var Validator = {
	params:[],
    init: function() {
    },
	is_array: function(value) {
		return value &&
			typeof value === 'object' &&
			typeof value.length === 'number' &&
			typeof value.splice === 'function' &&
			!(value.propertyIsEnumerable('length'));
	},
	trim: function(v) {
		return v.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
	},	
    getValidDate: function(dateValue) {
	    var objRegExp = new RegExp("^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{4}$");

	    //check to see if in correct format
	    if(!objRegExp.test(dateValue))
		    return false; //doesn't match pattern, bad date
	    else{
		    var arrayDate = dateValue.split(RegExp.$1); //split date into month, day, year
		    var intDay = parseInt(arrayDate[0],10);		
		    var intMonth = parseInt(arrayDate[1],10); 
		    var intYear = parseInt(arrayDate[2],10);

		    return new Date(intYear, intMonth - 1, intDay);
	    }
	    return false; //any other values, bad date    
    },
	get_url_parameter: function(name, url) {
		name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
		var regexS = "[\\?&]"+name+"=([^&#]*)";
		var regex = new RegExp( regexS );
		var results = regex.exec(url);		
		if( results == null)
			return "";
		else {
			var result = this.trim(results[1]);
			return (result !== "") ? result : "";
		}
	},
	readJSONProperty: function(json, properties) {
		// Breaks if properties isn't an array of at least 1 item
		if (properties.length == 1)
			return json[properties[0]];
		else {
			var property = properties.shift();
			if (typeof(json[property]) !== "undefined")
			  return readProperty(json[property], properties);
			else
			  return; // returns undefined
		}
	},
    formatPayment: function(pt) {
        var info = [];
		
		if (pt) {
			if (pt == 'kreditkarte') {
			   info[0] = 'Gerne k&ouml;nnen Sie bei uns mit Kreditkarte bezahlen. Wenn auf der Buchenseite die Zahlart Kreditkarte nicht vorgesehen ist, rufen Sie uns bitte an unter 01805 - 515 000  (14ct/Min. aus dem dt. Festnetz/Mobilfunknetze abweichend).';
			} else if (pt == 'mastercard') {
				info[0] = 'Gerne k&ouml;nnen Sie bei uns mit Ihrer Mastercard bezahlen. Wenn auf der Buchenseite die Zahlart Kreditkarte nicht vorgesehen ist, rufen Sie uns bitte an unter 01805 - 515 000  (14ct/Min. aus dem dt. Festnetz/Mobilfunknetze abweichend).';
			} else if (pt == 'visacard') {
				info[0] = 'Gerne k&ouml;nnen Sie bei uns mit Ihrer Visacard bezahlen. Wenn auf der Buchenseite die Zahlart Kreditkarte nicht vorgesehen ist, rufen Sie uns bitte an unter 01805 - 515 000  (14ct/Min. aus dem dt. Festnetz/Mobilfunknetze abweichend).';
			} else if (pt == 'amex') {
				info[0] = 'Gerne k&ouml;nnen Sie bei uns mit Ihrer American Express Karte bezahlen. Wenn auf der Buchenseite die Zahlart Kreditkarte nicht vorgesehen ist, rufen Sie uns bitte an unter 01805 - 515 000  (14ct/Min. aus dem dt. Festnetz/Mobilfunknetze abweichend).';
			} else if (pt == 'bankeinzug') {
				info[0] = 'Gerne buchen wir den Rechnungsbetrag von Ihrem Konto ab. Wenn Sie noch kein Kunde bei uns sind, geht das aus Sicherheitsgr&uuml;nden nur bei Buchungen bis zehn Tage vor Abflug. Wenn auf der Buchenseite die Zahlart Bankeinzug nicht vorgesehen ist, rufen Sie uns bitte an unter 01805 - 515 000  (14ct/Min. aus dem dt. Festnetz/Mobilfunknetze abweichend).';
			} else if (pt == 'ueberweisung') {
				info[0] = 'Gerne k&ouml;nnen Sie uns den Rechnungsbetrag &uuml;berweisen. Wenn Ihr Flug kurzfristig ausgestellt werden muss, akzeptieren wir auch einen &Uuml;berweisungsbeleg per Fax oder Email. Wenn auf der Buchenseite die Zahlart &uuml;berweisung nicht vorgesehen ist, rufen Sie uns bitte an unter 01805 - 515 000  (14ct/Min. aus dem dt. Festnetz/Mobilfunknetze abweichend).';
			} else if (pt == 'gutschein') {
				info[0] = 'Bei Elumbus Reisen buchen hei&szlig;t sparen. Denn Sie erhalten zu jeder Buchung mehrere Gutscheine, die Sie f&uuml;r Ihre zuk&uuml;nftigen Reisen und f&uuml;r Zusatzleistungen unbegrenzt einl&ouml;sen, verschenken oder verkaufen k&ouml;nnen. So kommen Sie dauerhaft in den Genuss verg&uuml;nstigter Reisen.';
				info[1] = 'http://www.elumbus-reisen.de/service/euro_sparen.html';
			} else if (pt == 'firmenkunden') {
				info[0] = 'Firmenkunden genie&szlig;en bei uns besondere Konditionen. Wir haben f&uuml;r Sie ein paar wichtige Informationen zusammengestellt, gerne stehen wir Ihnen f&uuml;r ein pers&ouml;nliches Gespr&auml;ch zur Verf&uuml;gung.';
				info[1] = 'http://www.elumbus-reisen.de/service/firmenkunden.html';
			} else if (pt == 'agb') {
				info[0] = 'Unsere Allgemeinen Gesch&auml;ftsbedingungen finden Sie, wenn Sie auf Weiterlesen klicken.';
				info[1] = 'http://www.elumbus-reisen.de/service/agb.html';
			} else if (pt == 'ek-telefon') {
				info[0] = 'Einen neuen Flug mit Emirates buchen Sie telefonisch unter 01805 - 515 000 vor (14ct/Min. aus dem dt. Festnetz/Mobilfunknetze abweichend). Wenn Sie nach Ihrer Buchung weitere Fragen zu Sitzplatzreservierungen, Essen oder Sondergepไck haben, k&ouml;nnen Sie Emirates unter 069-95968810 anrufen.';
			} else return info;
		} else return info;
		
		info[0] = "<p>"+ info[0] + "</p>";
	    
	    return info;
    },
    filter: function(name) {
		name = this.trim(name);
		var isAry = this.is_array(this.params);
		
		if (isAry) {
		    if (this.params.length > 0) {
                for (var i=0; i<this.params.length; i++) {
                    if (name === this.params[i]) return true;
                }		        
		    } else {
		        return true;
		    }
		}
		
		return false;
    },
    conditionalFilter: function(prop) {
        if (prop["pt"]) {
			var info = this.formatPayment(prop["pt"]);
			if (info.length > 0) prop["info"] = info;            
        }
        
        return prop;
    }
};
