// TOURISTWAY - TOURISTWAY - TOURISTWAY - TOURISTWAY - TOURISTWAY - TOURISTWAY //
// TOURISTWAY - TOURISTWAY - TOURISTWAY - TOURISTWAY - TOURISTWAY - TOURISTWAY //
// TOURISTWAY - TOURISTWAY - TOURISTWAY - TOURISTWAY - TOURISTWAY - TOURISTWAY //
// TOURISTWAY - TOURISTWAY - TOURISTWAY - TOURISTWAY - TOURISTWAY - TOURISTWAY //

var TW_DOCBASEURL='';
var TW_DEFAULTMAPICON={};
var TW_AJAXPROCESSOR={url:'ajax.cgi'};

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // 

function setdocbase(docurl)
	{
	TW_DOCBASEURL=docurl;
	}

function setuserdateformat(dateformat)
	{
	TW_USERDATEFORMAT=dateformat;
	}

$.fn.disable = function()
	{
	// extend Jquery with a method to disable form elements
	return this.each(function()
		{
		if (typeof this.disabled != "undefined") this.disabled=true;
		});
	}
$.fn.enable = function()
	{
	// extend Jquery with a method to enable form elements
	return this.each(function()
		{
		if (typeof this.disabled != "undefined") this.disabled=false;
		});
	}


// DATE PICKER - DATE PICKER - DATE PICKER - DATE PICKER - DATE PICKER - DATE PICKER // 
// DATE PICKER - DATE PICKER - DATE PICKER - DATE PICKER - DATE PICKER - DATE PICKER // 
// DATE PICKER - DATE PICKER - DATE PICKER - DATE PICKER - DATE PICKER - DATE PICKER // 

$(document).ready(function()
	{
	// all input fields of class datepicker get initialize with datePicker,
	// use initdtcheckout onchange of dtchkin to create a binding

	Date.firstDayOfWeek = 1;
	
	var datePickerDateFormat = TW_USERDATEFORMAT.replace(/{dd}/,'dd').replace(/{mm}/,'mm').replace(/{yy}/,'yyyy');
	Date.format = datePickerDateFormat;

	$('input.datepicker').datePicker({showYearNavigation: false});

	});

function initdtcheckout(fldin,fldout,days)
	{
	var d = $('#' + fldin).dpGetSelected().shift(); 
	//DatePicker return dates in internal format, use Date type (i.e. "dobj=new Date(d)") 
	//to create a proper date object and .asString() to stringify. 
	if (d) 
		{
		d = new Date(d);
		if (days==undefined) {days=0;}
		var dt=d.addDays(days).asString();
		//var dt=d.asString();
		$('#' + fldout).dpSetStartDate(dt);
		$('#' + fldout).dpSetSelected(dt);
		$('#' + fldout).val(dt);
		}
	}

function initdtrange(fldin,fldout)
	{
	$('#' + fldin).datePicker();
	$('#' + fldout).datePicker();
	$('#' + fldin).bind(
		'dpClosed', 
		function(e, selectedDates)
			{
			var d = selectedDates[0];
			if (d) 
				{
				d = new Date(d);
				//var dt=d.addDays(1).asString();
				var dt=d.asString();
				$('#' + fldout).dpSetStartDate(dt);
				$('#' + fldout).dpSetSelected(dt);
				$('#' + fldout).val(dt);
				}
			}
		);
	}

// LAYOUT MODIFIERS - LAYOUT MODIFIERS - LAYOUT MODIFIERS - LAYOUT MODIFIERS //
// LAYOUT MODIFIERS - LAYOUT MODIFIERS - LAYOUT MODIFIERS - LAYOUT MODIFIERS //
// LAYOUT MODIFIERS - LAYOUT MODIFIERS - LAYOUT MODIFIERS - LAYOUT MODIFIERS //

function toggledetails(drawerfldid)
	{
	// expected link(span) id = drawer id + '-listen'
	$('#' + drawerfldid).toggle();
	$('#' + drawerfldid + '-listen').toggleClass('add');
	$('#' + drawerfldid + '-listen').toggleClass('del');
	}

function switchtab(group,tabid)
	{
	// ul id = {group}-options
	//  li>span[N] id = tabid
	// div id = {group}-content
	//  div[N] id = tabid
	$('div#' + group + '-content>div').hide();
	$('div#' + group + '-content>#' + tabid).show();
	$('ul#'  + group + '-options>li>span').removeClass('current');
	$('ul#'  + group + '-options>li#' + tabid + ' span').addClass('current');
	}

// GOOGLE MAPS - GOOGLE MAPS - GOOGLE MAPS - GOOGLE MAPS - GOOGLE MAPS - GOOGLE MAPS //
// GOOGLE MAPS - GOOGLE MAPS - GOOGLE MAPS - GOOGLE MAPS - GOOGLE MAPS - GOOGLE MAPS //
// GOOGLE MAPS - GOOGLE MAPS - GOOGLE MAPS - GOOGLE MAPS - GOOGLE MAPS - GOOGLE MAPS //

function initmap(mapdivid)
	{
	if (GBrowserIsCompatible()) 
		{
		var map = new GMap2(document.getElementById(mapdivid));
		map.setCenter(new GLatLng(0, 0), 1);
		map.addControl(new GMapTypeControl());
        map.addControl(new GOverviewMapControl());
		map.addControl(new GSmallMapControl());

		// Create a base icon for all of markers that specifies the
		// shadow, icon dimensions, etc.
		TW_DEFAULTMAPICON = new GIcon(G_DEFAULT_ICON);
		if (TW_DOCBASEURL)
			{
			// override default icon
			TW_DEFAULTMAPICON.image = TW_DOCBASEURL + "images/elements/mapmarkera.png";
			TW_DEFAULTMAPICON.iconSize = new GSize(30, 40); //<----
			TW_DEFAULTMAPICON.shadow = "";
			//TW_DEFAULTMAPICON.shadow = "http://www.google.com/mapfiles/shadow50.png";
			//TW_DEFAULTMAPICON.shadowSize = new GSize(37, 34);
			TW_DEFAULTMAPICON.iconAnchor = new GPoint(14, 40);
			TW_DEFAULTMAPICON.infoWindowAnchor = new GPoint(28, 18);
			}

		return map;
		}
	}

function createmapmarker(gmap,lat,lng,zmm,infodivid)
	{
	var point = new GLatLng(lat,lng);
	var twicon = new GIcon(TW_DEFAULTMAPICON);
	//twicon.image = TW_DOCBASEURL + "images/elements/mapmarker" + type + ".png";

	// Set up GMarkerOptions object
	markerOptions = { icon:twicon };
	var marker = new GMarker(point, markerOptions);

	GEvent.addListener(marker, "click", function() 
		{
		var infohtml=$('#mapinfo-' + infodivid).html()
		var infowinoptions= {maxWidth:400, noCloseOnClick:false};
  		marker.openInfoWindowHtml(infohtml,infowinoptions);
		});

	gmap.addOverlay(marker);

	return marker;
	}

function centermap(gmap,lat,lng,zmm)
	{
	if (!zmm) {zmm=13;} //16: street, 13: district, 1: world
	var point = new GLatLng(lat,lng);
	gmap.setCenter(point, zmm);
	}


// AJAX - AJAX - AJAX - AJAX - AJAX - AJAX - AJAX - AJAX - AJAX - AJAX - AJAX - AJAX //
// AJAX - AJAX - AJAX - AJAX - AJAX - AJAX - AJAX - AJAX - AJAX - AJAX - AJAX - AJAX //
// AJAX - AJAX - AJAX - AJAX - AJAX - AJAX - AJAX - AJAX - AJAX - AJAX - AJAX - AJAX //

function spinajaxloading()
	{
	if (TW_DOCBASEURL)
		{
		var spinimgurl = TW_DOCBASEURL + "images/elements/spinajaxloading.gif";
		return '<div class="spinajaxloading"><img src="' + spinimgurl + '"></div>';
		}
	else
		{
		return '<div class="spinajaxloading">...LOADING...</div>'
		}
	}



// BACKOFFICE - BACKOFFICE - BACKOFFICE - BACKOFFICE - BACKOFFICE - BACKOFFICE //
// BACKOFFICE - BACKOFFICE - BACKOFFICE - BACKOFFICE - BACKOFFICE - BACKOFFICE //
// BACKOFFICE - BACKOFFICE - BACKOFFICE - BACKOFFICE - BACKOFFICE - BACKOFFICE //

// SLIDER:
var sval=['deleted','cancelled','offer','option','standby','inprogress','confirmed'];
function setstatus(e,ui) { $('#status-handle').val(sval[ui.value]); }
function setslider(status) { $('#slidestatus').slider('value',$.inArray(status,sval)); }
// ATTENTION: slider has to be set/moved when visible only (open 'resvheader' drawer)

// CUSTOMER/AFFILIATE DETAIL EDITOR:
function loaduserpane(utype,userid,outdiv)
	{
	$('#' + outdiv).html(spinajaxloading());
	var domethod='usermanager.open';
	if (userid == '_NEW_') {domethod='usermanager.create';}

	var custid='';
	var afflid='';
	var module='';
	if (utype == 'affiliate')
		{
		module='ajax-affiliatemanager';
		afflid=userid;
		}
	else
		{
		module='ajax-customermanager';
		custid=userid;
		}

	$.post(TW_AJAXPROCESSOR.url, 
		{ m: module, DO: domethod, uid: custid, aid: afflid },
		function(data){ $('#' + outdiv).html(data) }
		);
	}

// AJAX DRAWERS:
function loadhtmlpane(module,method,formpars,outdiv)
	{
	$('#' + outdiv).html(spinajaxloading());

	formpars.m=module; // { m: module, DO: domethod, uid: custid, aid: afflid }
	if (method)
		{
		formpars.DO=method; //Safari mess up with lowercase 'do' (?!)
		}

	$.post(TW_AJAXPROCESSOR.url, 
		formpars,
		function(data){ $('#' + outdiv).html(data) }
		);
	}

// PRICE OVERRIDE IN SERVICE DETAILS
function togglepriceoverride(resvservice,init)
	{
	if (init)
		{
		$('#' + resvservice + ' #priceoverride-listen').attr('checked',(init=='V'));
		}

	if (init=='B')
		{
		// bundle remains bundle!
		$('#' + resvservice + ' #priceoverride-listen').attr('disabled',true);
		$('#' + resvservice + ' #priceoverride-handle').val('B');
		}
	else
		{
		$('#' + resvservice + ' #priceoverride-handle').val($('#' + resvservice + ' #priceoverride-listen').is(':checked') ? 'V' : 'S');
		}
	$('#' + resvservice + ' input.priceoverride').attr('disabled',$('#' + resvservice + ' #priceoverride-listen').is(':checked') ? false : true);
	}
