/**
 * Tries to get the instance of XmlHttpRequest()
 *
 * @return object XmlHttpRequest or null
 *
 * @throws Exception
 */
function __getXmlHttpRequestObject()
{
  var xmlHttp = null;

  try {
      xmlHttp = new XMLHttpRequest(); // Standards compliant browsers
  } catch (e) {
      try {
          xmlHttp = createObj('Microsoft.XMLHTTP'); // M$IE >= 6
      } catch (e) {
          xmlHttp = new ActiveXObject('Msxml2.XMLHTTP');
      }
  }

  return xmlHttp;
}

/**
 * HTTP GET
 *
 * @param   string    URI to GET
 * @param   function  callback
 * @return  void
 *
 * @throws  Exception
 */
function httpRequest(URI, callback, store, divId)
{
	//console.log('request ' + URI +', ' + store + ', ' + divId);
	//alert('request ' + URI +', ' + store + ', ' + divId);

	if(store == true)
	{
		dhtmlHistory.add('' + URI, URI);
	}

	//href can contain div's id after # - for scrolling in price list
	//request with divid is not handled correctly in IE
	var splitted = URI.split('#');

	var xmlHttp = __getXmlHttpRequestObject();
  xmlHttp.open('GET', 'httpget.php?uri=' + splitted[0], true);
  xmlHttp.onreadystatechange = function()
  {
	  if (xmlHttp.readyState == 4 && xmlHttp.status == 200)
	  {
	  	callback(xmlHttp.responseText, xmlHttp.responseXML, divId, splitted[0]);
	  }
  }

  xmlHttp.send(null);
}

/**
 * HTTP POST
 *
 * @param   string   URI
 * @param   string   values
 * @return  string   responseText
 *
 * @throws  Exception
 */
function httpSend(URI, values)
{
  var xmlHttp = __getXmlHttpRequestObject();
  xmlHttp.open('POST', URI, false);
  xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
  xmlHttp.send(values);
  return xmlHttp.responseText;
}

function myCallback(responseText, responseXML, divId, href)
{
  var idx = 0, ridx = 0, i = 0, j;
  var arr = new Array();
  responseText = new String(responseText);
  while(-1 != (idx = responseText.indexOf("<!--EVAL", idx)) && -1 != (ridx = responseText.indexOf("-->", idx)))
  {
		arr[i++] = responseText.substr(idx + 8, ridx - idx - 8);
		idx = ridx;
  }

  document.getElementById("text").innerHTML = responseText;
  for (j = 0; j < arr.length; j++)
  {
  	eval(arr[j]);
  }

  //scroll to div - used in price list
  if((href == 'preise-wellness' || href == 'preise-ayurveda' || href == 'preise-paar') && divId)
  {
  	document.getElementById(divId).scrollIntoView(true);
  }
  //preselect dropdpown - used in gutscheine form
  else if (href == 'gutschein-formular' && divId)
  {
  	//handle that strange iframe made by mr. problematic
		$('#formFrame').load(function(){
			$(this.contentDocument).find('#motive option[value='+divId+']').attr('selected', 'selected');
		});
  }
/*  
  //preselect massage - used in gutscheine selfprint form
  else if (href == 'gutschein-selfprint-formular' && divId)
  {
    //split massage name and massage price
    var massage = divId.split('_');    
    var massageName = '';
    
    //preset massage name
    switch(massage[0])
		{
      //wellness
      case 'after-work-relaxing':
        massageName = 'After-Work-Relaxing';
        break;
        
      case 'von-kopf-bis-fuss':
        massageName = 'Von Kopf bis Fuß';
        break;
        
      case 'tropical-moments':
        massageName = 'Tropical-Moments';
        break;
        
      case 'energie-massage':
        massageName = 'Energiemassage';
        break;
        
      case 'rucken-luxus-paket':
        massageName = 'Rücken-Luxus-Paket';
        break;
        
      case 'die-seelenstreichler-massage':
        massageName = 'Die Seelenstreichler-Massage';
        break;
        
      case 'verwohn-programm':
        massageName = 'Verwöhn-Programm';
        break;
              
      //ayurveda  
      case 'klassische-abhyanga':
        massageName = 'Klassische Abhyanga';
        break;
        
      case 'schnupper-abhyanga':
        massageName = 'Schnupper Abhyanga';
        break;

      //paar
     case 'paar-von-kopf-bis-fuss':
        massageName = 'Paarmassage: Von Kopf bis Fuß';
        break;
        
      case 'paar-tropical-moments':
        massageName = 'Paarmassage: Tropical-Moments';
        break;
        
      case 'paar-energie-massage':
        massageName = 'Paarmassage: Energiemassage';
        break;
        
      case 'paar-rucken-luxus-paket':
        massageName = 'Paarmassage: Rücken-Luxus-Paket';
        break;
        
      case 'paar-die-seelenstreichler-massage':
        massageName = 'Paarmassage: Die Seelenstreichler-Massage';
        break;
        
      case 'paar-verwohn-programm':
        massageName = 'Paarmassage: Verwöhn-Programm';
        break;
  
      //specials
      case 'paar-von-kopf-bis-fuss-mit-rosenbluten':
        massageName = 'Traum Paarmassage: Von Kopf bis Fuß';
        break;
        
      case 'paar-weihnachtsuberraschung-fur-paare':
        massageName = 'Traum Paarmassage: Weihnachtsüberraschung';
        break;
      
      case 'eltern-after-work-relaxing':
        massageName = 'Massage für Eltern: After-Work-Relaxing';
        break;
        
      case 'eltern-von-kopf-bis-fuss':
        massageName = 'Massage für Eltern: Von Kopf bis Fuß';
        break;
        
      case 'eltern-tropical-moments':
        massageName = 'Massage für Eltern: Tropical-Moments';
        break;
        
      default:
        massageName = '';
        break;
    }

		$('#formFrame').load(function(){
			$(this.contentDocument).find('#massagetype').val(massageName);
			populateMassageLength();
      $(this.contentDocument).find('#massagelength').val(massage[1]);
		});
  }  
*/
	/* jQuery - adding click handlers to links in newly loaded content */
	$(function()
	{
		//ie6 png fix on price list - must be scrollable - jquery.pngfix.js is only one working
		//pngfix function is included/defined only for ie6
		if($.fn.pngfix)
		{
			//$("#preise div.jingjang, #preise .gutschein a").pngfix();
			//$("#prices ul li, #pricelist ul li").pngfix({sizingMethod: "scale"});
			$("#prices ul li").pngfix({sizingMethod: "scale"});
		}

		//links
		$('#text a[target!=_blank]')
			.click(function(event)
			{
				jQuery.handleLinkClick($(this).attr('href'));
				event.preventDefault();
			})

		$('#text a[class=showWindow]')
/*
			.click(function(event)
			{
				showWindow($(this).attr('href'), 640, 320);
			})
*/
			.hover(function(event)
			{
				clearGutscheinePopup();
				var src = $(this).children().attr('src');
				src = src.substring(0, src.lastIndexOf('_'));
				loadGutscheinePopup(src + '.jpg', $(this).attr('title'));
			})    

		if($('#player').length)
		{
			flowplayer(
				"player",
				"/templates/default/flash/flowplayer-3.2.5.swf",
				{
					clip: {
 					 onBeforeFinish: function() {return false;}
					},

					plugins: {
						controls: null
					}
				}
			);
		}

    $('#formFrame').load(function(){
			$(this.contentDocument).find('span[class="motive"]').hover(function () {
        clearGutscheinePopup();
				var src = 'templates/default/img/gutscheine/' + $(this).children('input[type="radio"]').val();
				loadGutscheinePopup(src + '.jpg', '');
      });     
      
      $(this.contentDocument).find('#massagetype').change(function() {
        populateMassageLength();
      });
    });
    
    
	});
}

function populateMassageLength()
{
    var mLength = new Array();    
    var iDoc = parent.document.getElementById("formFrame").contentDocument;

    //preset massage name
    switch($(iDoc).find('#massagetype').val())
		{
      //wellness
      case 'after-work-relaxing':
        mLength = [60];
        break;
        
      case 'von-kopf-bis-fuss':
        mLength = [60, 90, 120];
        break;

      case 'tropical-moments':
        mLength = [90, 120];
        break;
        
      case 'energie-massage':
        mLength = [70];
        break;
        
      case 'rucken-luxus-paket':
        mLength = [60];
        break;
        
      case 'die-seelenstreichler-massage':
        mLength = [90, 120];
        break;
        
      case 'verwohn-programm':
        mLength = [120, 150];
        break;
              
      //ayurveda  
      case 'klassische-abhyanga':
        mLength = [90];
        break;
        
      case 'schnupper-abhyanga':
        mLength = [60];
        break;

      //paar
     case 'paar-von-kopf-bis-fuss':
        mLength = [60, 90, 120];
        break;
        
      case 'paar-tropical-moments':
        mLength = [90, 120];
        break;
        
      case 'paar-energie-massage':
        mLength = [70];
        break;
        
      case 'paar-rucken-luxus-paket':
        mLength = [60];
        break;
        
      case 'paar-die-seelenstreichler-massage':
        mLength = [90, 120];
        break;
        
      case 'paar-verwohn-programm':
        mLength = [120, 150];
        break;
  
      //specials
      case 'paar-von-kopf-bis-fuss-mit-rosenbluten':
        mLength = [60];
        break;
        
      case 'paar-weihnachtsuberraschung-fur-paare':
        mLength = [60];
        break;
      
      case 'eltern-after-work-relaxing':
        mLength = [70];
        break;
        
      case 'eltern-von-kopf-bis-fuss':
        mLength = [70];
        break;
        
      case 'eltern-tropical-moments':
        mLength = [90];
        break;
    } 
    
     //clear options
    $(iDoc).find('#massagelength').html('');

    for(var i = 0; i < mLength.length; i++)
    {
      $(iDoc).find('#massagelength').append('<option value="' + mLength[i] +'">' + mLength[i] + ' Minuten</option>');  
    }
}

function load(page, divId, store)
{
	//load it
	httpRequest(page, myCallback, store == false ? false : true, divId);
}

function showWindow(url, w, h)
{
	window.open(
		url,
  	'',
  	'width=' + w + ', height=' + h + ', ' + 'directories=no, location=no, menubar=no, resizable=no, scrollbars=no, status=no, toolbar=no'
   	);
  return false;
}

var popupCloseTimer;

function loadGutscheinePopup(url, alt)
{
	var src = url;//.substr(0, url.lastIndexOf('_')) + '.jpg';

	popupCloseTimer = setTimeout('clearGutscheinePopup();', 15000);

	$('body').append('<div id="gutscheinepopup"><div id="topbar"><a class="order" href="/gutschein-formular">Gutscheine gibt’s hier</a> <a class="close" href="#"><span>close</span></a></div><img style="width:340px; height: 390px;" alt="'+alt+'" src="'+src+'" /></div>');

	$('#topbar a[class=order]')
		.click(function(event)
		{
			jQuery.handleLinkClick($(this).attr('href'));
			clearGutscheinePopup();
			event.preventDefault();
		})

	$('#topbar a[class=close]')
		.click(function(event)
		{
			clearGutscheinePopup();
			event.preventDefault();
		})

	$(function() {
		$("#gutscheinepopup").draggable();
	});

}

function clearGutscheinePopup()
{
	clearTimeout(popupCloseTimer);

	$('#gutscheinepopup').remove();
}

