/************************************************************************
 * 		Hilfsfunktionen													*
 * 		C 2008 by René Lange & Thomas Müller & Steve Rohrlack @ mindbox	*
 ************************************************************************/

// Durchsucht das Message Array des Loggers, ob ein Default-Wert abgefragt wird
Array.prototype.inArray = function (value,mode) {
    var i;
    for (i=0; i < this.length; i++) {
        if (this[i][0] == value) {
            if(mode == 'where') { return i; } else { return true; }
        }
    }
    return false;
}
 
// php-ähnliches Ersetzen von Strings
function string_replace(string, search, replace) {
   var new_string = "";
   var i = 0;
   while(i < string.length) {
      if(string.substring(i, i + search.length) == search) {
         new_string = new_string + replace;
         i = i + search.length - 1;
      }
      else {
         new_string = new_string + string.substring(i, i + 1);
   	  }
   i++;
  }
  return new_string;
}

// php-ähnliches Formatieren von Zahlen
function number_format(n,s,d,t){
	n=n.toFixed(s);
	var z=n.split('.');
	var g=z[0].split('').reverse();
	g=g.join('');
	s='';
	for (var i=1;i<=g.length;i++){
		s+=g.charAt(i-1);
		if(i%3==0&&i!=g.length)s+=t;
	}
	g=s.split('').reverse();
	var de='';
	if(z[1])de=d+z[1];
	g=g.join('')+de;
	return g;
} 

// Konvertiert einen Timestamp in eine Datumsangabe
 function convertToDate(timestamp) {
	var now = new Date();
	now.setTime (timestamp * 1000);
	
	var monthAdd = '';
	var month = (now.getMonth()+1).toString(); // Monate sind von 0 bis 11
	if(month.length == 1) {
		monthAdd = '0';
	}
	// IE gibt für 2008 2008 aus, FF nur 108
	var year = now.getYear();
	if (year < 2000) { // Firefox only
		year -= 100;
		if(year < 10) {
			year = '0' + year.toString();
		}
		year = '20'+year;
	}

	return now.getDate() + '.' + monthAdd + month + '.' + year;
}

// Konvertiert ein Datum in einen Timestamp
 function convertToSeconds(timestamp) {
	var timeArray = timestamp.split('.');	
	// Javascript Monate sind von 0 bis 11
	var dateObj = new Date(timeArray[2], timeArray[1]-1, timeArray[0]);
	return Date.parse(dateObj)/1000;
}

// Vergleicht zwei Daten
function compareDates(firstDateOptions, secondDateOptions) {
	var firstDate = new Date();
	firstDate.setFullYear(firstDateOptions.year,firstDateOptions.month,firstDateOptions.day);
	
	var secondDate = new Date();
	secondDate.setFullYear(secondDateOptions.year,secondDateOptions.month,secondDateOptions.day);
	
	if(firstDate == secondDate) {
		return 'equal';
	}
	
	if(firstDate > secondDate) {
		return 'first';
	} else {
		return 'second';
	}
}

// Zählt die Anzahl der Tage zwischen zwei Daten
function countDays (firstDate, secondDate) {
	var diff = secondDate - firstDate;
	
	if (diff < 0 ) {
		return -1;
	}
	return Math.round(diff/(60*60*24))+1;
}

// Speicherabfrage
function askForSaving () {
	// Preis wird vorerst nicht ausgegeben
	if(TourPlanner.instance.userStatus != 'false') {
		if (TourPlanner.instance.currentTourChanged) {
			if (!confirm('Dismiss changes?')) {
				return false;
			}
			TourPlanner.instance.currentTourChanged = false;
		}
	}
	return true;
}

function cloneObj(o) { 
    if (typeof(o) != 'object') {
		return o;
	}
	if (o == null) {
		return o;
	}
	  
    var newO = new Object(); 

	for (var i in o) {
		newO[i] = cloneObj(o[i]);
	}
	return newO;
 }