// sexsation.org common js
// UTILITY functions

function sprinter(obj,pfx) {
var tmp;
   pfx = pfx || "";
   if (pfx.length>50) return;
   if (typeof(obj)=='object') {
		for (var itm in obj) {
		   tmp += pfx + itm + ": " + sprinter(obj[itm],pfx+"   ");
		}
   } else if (typeof(obj)=='function') {
      tmp += pfx + obj + "()\n";   
   } else {
      tmp += pfx + obj + "\n";
	}
	return tmp;
}

  
  function makeFromHTML(html)
  {
  	el = new Element('div').update(html);
  	return el.firstChild;
  }  


var $loggedIn = false;
var $fbKey = false;

function setPageState(loggedIn,forceRefresh)
{
    if ($loggedIn != loggedIn || forceRefresh)
    {
        $loggedIn = loggedIn;        
        if ($loggedIn) {
	        $('canvas_wrap').addClassName('loggedIn');
	    } else {
	        $('canvas_wrap').removeClassName('loggedIn');
	    }
        if ($('canvas_wrap').hasClassName('memberpage') || $('canvas_wrap').hasClassName('private_userprofile'))
        {
            top.location.href=top.location.href.replace(/^(.*?)\?.*$/,'$1');
        } else {
	        updateAjaxFrames(forceRefresh);
	    }
        //pageTracker._trackEvent('logged',(loggedIn ? 'in' : 'out'),top.location.href,++eventCounter);
    	//updateAds();
    }
    
    if (forceRefresh) $$('#login .dropbox').each(function (itm) {itm.addClassName('open')});

	if ($fbKey && FB) {
		FB_RequireFeatures(["XFBML"], function() {FB.init($fbKey, "/typo3conf/ext/facebook/res/xd_receiver.htm");});
		FB.init($fbKey);
	}

}


var setupDone = false;
function setupPage(loggedIn,fbKey)
{
    if (!setupDone) 
    {
        $loggedIn = loggedIn;
        $fbKey = fbKey;
        //setupAjaxFrameFeatures(document.body);
        setupAjaxFramesBySelector('.loginframe',{type:500},true,null);
        setupAjaxFramesBySelector('.videoframe',{type:600},true,'#videorating');
        setupAjaxFramesBySelector('.commentsframe',{type:302},true,null);
        setupAjaxFramesBySelector('.REGISTRATION',{type:800},true,null);
    	setupAjaxFramesBySelector('.LOGINBOX',{type:501},true,null);
    	setupAjaxFramesBySelector('#c2496',{type:2496},false,'');
    }
    //setupSmartNewsroll();
    //setupSlotMachine();
	
	if ($fbKey && FB) {
		FB_RequireFeatures(["XFBML"], function() {FB.init($fbKey, "/typo3conf/ext/facebook/res/xd_receiver.htm");});
		FB.init($fbKey);
	}
}



function updateAjaxFrames(forceRefresh)
{
    updateAjaxFramesBySelector('.loginframe');
    updateAjaxFramesBySelector('.commentsframe');
    updateAjaxFramesBySelector('.videoframe');
    updateAjaxFramesBySelector('.REGISTRATION');
    updateAjaxFramesBySelector('.LOGINBOX');
    updateAjaxFramesBySelector('#c2496');
    updateAjaxFramesBySelector('.loginframe',null,1000,true);

}

function updateAjaxFramesBySelector(selector,url,delay,reloadAlways)
{
    $$(selector).each(function(itm)
    {
        if (itm != $lastFrame || reloadAlways )
        {
            window.setTimeout(function()
            {
                updateAjaxFrame(itm,url);
            },
            delay||0);
        }
    });
}


function setupAjaxFramesBySelector(selector,params,forceSticky,exclude)
{
        $$(selector).each(function(itm){makeAjaxFrame(itm,params,forceSticky,exclude)});
}

var $lastFrame = null;

function matchAjaxFrameElement(frame,element)
{
    if (!element) return false; 
    if (element.hasClassName('fullpage')) return false;
    if (element.hasClassName('FBConnectButton')) return false;
    if (!frame.hasClassName('sticky') && !element.hasClassName('local')) return false;
    if (element.match(frame.exclude||'magic')) return false;
    return true;
}

var $call_frame = null;
var $call_target = null

function updateCallFrame() {
	updateAjaxFrame($call_frame,$call_target);
}


function makeAjaxFrame(frame,params,forceSticky,exclude)
{
//    alert('makeFrame');
    forceSticky && frame.addClassName('sticky');  
    sticky = frame.hasClassName('sticky');
    frame.params=params;
    frame.exclude=exclude
    frame.observe("click", function (e)
    {
        target = e.findElement("a");
        if (matchAjaxFrameElement(frame,target))
        {
        	if (target.hasClassName('logout_button') && typeof(FB)=='object') {
        	    $call_frame = frame;
        	    $call_target = target.href;
        		FB.Connect.logout(updateCallFrame);
        	} else {
	            updateAjaxFrame(frame,target.href);
	        }
            e.stop();             
        };
    });
    setupAjaxFrameContent(frame);
}

function makeRandomString()
{
    return Math.random().toString().substr(2) +""+Math.random().toString().substr(2);
}

function checkRedirect(uid,url) {
   new Ajax.Request(
	    url, 
	    {
	        method: 'get',
		    onComplete: function(response) {
				if (response.responseText.indexOf('rel="canonical" href="http://www.intimatemedicine.de/')>-1) {
					$(uid).insert({top: '<a href="' + url + '">' + 'OK</a>: '});
				} else if (response.status==200) {
					$(uid).insert({top: '<a href="' + url + '" class="red">' + response.status + ':AT</a>: '});
				} else {
					$(uid).insert({top: '<a href="' + url + '" >' + response.statusText + ':DE</a>: '});
				}
		    }
	    }
    );
}

var eventCounter = 0;

var myZones='hello';
function updateAds()
{
   return;
   new Ajax.Request(
	    top.location.href, 
	    {
	        parameters : {type:850},
	        method: 'get',
		    onSuccess: function(trans) {
		        //cleanupAjaxFrameFeatures(element);
		        myZones = trans.responseText.split(/---separator---/);
				
		        //$("oglasna-pasica-zgoraj").replace(myZones[0]);
		        return;
		        //Element.replace($("neboticnik"),zones[1]);
		    	return;
		        //Element.replace($("oglas-notranji"),zones[2]);
		        //Element.replace($("oglasna-pasica-spodaj"),zones[3]);
		    }
	    }
    );
}


function updateAjaxFrame(frame,url,errorText) {
    if (frame) 
    {
//        pageTracker._trackEvent('click',frame.id,url,++eventCounter);
//        updateAds();
        if (top.location.href.indexOf('skin=fb')>0) frame.params.skin = 'fb';
        frame.params.disableCache=makeRandomString();
        new Ajax.Request(
		    (url||top.location.href), 
		    {
		        parameters : frame.params,
			    onSuccess: function(trans) {
			        //cleanupAjaxFrameFeatures(element);
				    $lastFrame=frame;
		            cleanupAjaxFrameContent(frame);
			        frame.update(trans.responseText);
    		        setupAjaxFrameContent(frame);
			    },
			    onFailure: function(trans) {
		            cleanupAjaxFrameContent(frame);
			        frame.update((errorText||'Error ')+trans.status);
	            }
		    }
	    );
    }
}    

function postToAjaxFrame(frame,form,errorText) {
    if (frame && form) 
    {
//        pageTracker._trackEvent('post',frame.id,form.action,++eventCounter);
//        updateAds();
        if (top.location.href.indexOf('skin=fb')>0) frame.params.skin = 'fb';
        frame.params.disableCache=makeRandomString();
        form.request(
	    {
	        method : 'post',
	        parameters : frame.params,
		    onSuccess: function(trans) {
                $lastFrame=frame;
		        cleanupAjaxFrameContent(frame);
			    frame.update(trans.responseText);
                setupAjaxFrameContent(frame);
		    },
		    onFailure: function(trans) {
		        cleanupAjaxFrameContent(frame);
		        frame.update((errorText||'Error ')+trans.status);
            }
	    });
    }
}    



function setupAjaxFrameContent(frame)
{
    frame.select('form').each( function (myForm)
    {
        if (matchAjaxFrameElement(frame,myForm))
        {
            //alert ("registering " + frame.id + myForm.id);   
            myForm.observe('submit', function(e)
            {
                if (myForm == e.element())
                {
                    e.stop();
                    postToAjaxFrame(frame,myForm);
                }
            });
        }
        else
        {
            //alert ("ignoring " + frame.id + myForm.id);
        }
    });
    setupAjaxFrameFeatures(frame);
}

function setupAjaxFrameFeatures(container,params)
{
//    setupFrames(container,params);
//    alert('setting up');
    setupDropboxes(container);
}



var activeDropbox = null;

function openDropbox(dropbox)
{
    if (activeDropbox!=dropbox) closeDropbox(); 
    dropbox.addClassName('open');
    activeDropbox = dropbox;
}

function closeDropbox()
{
    if (activeDropbox)
    {
//        alert ('closing dropbox');

    	 activeDropbox.removeClassName("open");
	     activeDropbox.addClassName("closing");
	     thisDropbox=activeDropbox;
	     window.setTimeout(function(){ thisDropbox && thisDropbox.removeClassName('closing');},10);
	     activeDropbox = null;
    }
}

document.observe('click', function(e)
{
    if (activeDropbox)
    {
        target=e.element();
        if ( target != activeDropbox && !target.descendantOf(activeDropbox))
        {
            closeDropbox();
        }
    }
});

function setupDropboxes(container)
{
    
    container.select('.dropbox').each( function (itm)
	{

//        alert ('setDropboxees');
		if (itm.hasClassName('open'))
		{
		    openDropbox(itm);
		}
		itm.onclick = function(e)
		{
		    openDropbox(itm);
		};
		itm.down('.menu-close').observe('click',function(e)
		{
		    closeDropbox();
		    e.stop();
		});
    });  
}
function cleanupDropboxes(container)
{
    if (activeDropbox && activeDropbox.descendantOf(container)) closeDropbox();
}
function cleanupAjaxFrameFeatures(container)
{
    cleanupDropboxes(container);
}

function cleanupAjaxFrameContent(frame)
{
    cleanupAjaxFrameFeatures(frame);
}

function setupLogout() {
   setupLogin(true);
}


// OCENE VIDEOV

function setupRating() {
   var frm = $('videorating');
   frm && frm.observe('submit', function(e) {
        if (e.element() == frm)
        {
		    e.stop();
		    frm.request({
		        parameters:{disableCache:makeRandomString()},
		        onSuccess: function(trans) {
		        	$('ocena').update(trans.responseText);
		        }
		    });
		}
	});
}

// KOMENTARJI VIDEOV
/*
function setupComments() {
	commentForm = $$('#comments form')[0];
	if (!commentForm) return;
	commentForm.action = commentForm.action + (commentForm.action.indexOf('?')>-1 ? "&" : "?") + "type=302";
   commentForm.observe('submit', function(e) {
		Event.stop(e);
		commentForm.request({
		    onSuccess: function(trans) {
		      //trans.responseText.evalScripts();
		    	$('commentwrap').update(trans.responseText);
			   updateItem('login',loginForm.action);
		    }
		});
	});
	
	titleel=$$('#comments h3')[0];
	$$('#comments a').each(function(item) {
		$('guestthrobber').hide();
		item.observe('click',function(e) {
			Event.stop(e);
			var url = item.href + (item.href.indexOf('?')>-1 ? "&" : "?") + "type=302";
			//titleel.insert({'top' : throbber} );
			$('guestthrobber').show();
			new Ajax.Request(
			  url, {
				 onSuccess: function(trans) {
				 	$('commentwrap').update(trans.responseText);
			  },
			  	method: 'GET'
			});
		});
	});
}
*/

// ANKETA

function setupPoll(msgnoanswer,msgnosubmit) {
   var frm = $('pollform');
  	$$('#pollform .pollsubmit').each( function(item) {
  		item.observe('click', function(e) {
			if (frm.serialize().indexOf('answer')<0) {
		   	Event.stop(e);
				top.alert(msgnoanswer);
			} else {
				
				frm.pollgroup.value = item.value;
			}
		});
   });
   frm && frm.observe('submit', function(e) {
		Event.stop(e);
	   if (frm.pollgroup!='false') {

			frm.request({
			    parameters:{type:102,disableCache:makeRandomString()},
				onSuccess:function(trans){
					$('poll').update(trans.responseText);
				}
			});
		} else {
			top.alert(msgnosubmit);
		}
	});
}

function setupPollResult() {
  	$$('.legend A').each( function(item) {
  		item.observe('click', function(e) {
			Event.stop(e);
			var url = item.href;
			new Ajax.Request(
			  url,			  
			   {
			     parameters:{type:102,disableCache:makeRandomString()},
				 onSuccess: function(trans) {
				 	$('poll').update(trans.responseText);
			  }
			});
		});
   });
}

// "FIKSIRANJE" oglasnega stolpca

function XXXsetupNeboticnik() {
	if (window.addEventListener) 
	  Event.observe(window,'scroll', function(e) {
		 if(typeof(window.pageYOffset)=='number') {
         var offset = window.pageYOffset;
    	 } else {
         var offset = document.documentElement.scrollTop;
       }
		 $('neboticnik').setStyle({'marginTop': offset+'px'});
	  },false);
}

function setupNeboticnik() {
	var boxH = $('neboticnik').getHeight() + 30;
	$(document).observe('scroll', function(e) {
      var offset = $(document).viewport.getScrollOffsets()['top'];
      var maxOffset =  $('canvas_wrap').getHeight() - boxH;
      if (offset>maxOffset) offset = maxOffset;
	 	$('neboticnik').setStyle({'marginTop': offset+'px'});
	});
}



Event.observe(top,'load', function(){
// ...moved to HTML via TS (config)
//	if ($('videorating')) setupRating();
//	if ($('pollform')) setupPoll();  
//	setupNeboticnik();
//	setupDropboxes('#login-wrap');
});


// NOVICE - PAGEBROWSER ARHIVA NOVIC, SEARCH FORM
var throbber = '<span class="throbber"><img src="/fileadmin/templates/img/ajax-loader.gif" style="width:14px;height:14px" alt="loading" /></span>';

// newsArchive search form
function setupNewsSearch() {
	$('searchform').observe('submit', function(e) {
		$('news-search-form-submit-image').blur();
		$('news-search-form-submit').blur();
		$('news-search-form-submit-image').src='/fileadmin/templates/img/ajax-loader.gif';
		$('searchform').action = $('searchform').action + ($('searchform').action.indexOf('?')>-1 ? "&" : "?") + "type=300";
         //pageTracker._trackEvent('post','search',$('swords').value,++eventCounter);
		//updateAds();
		$('searchform').request({
		    parameters:{disableCache:makeRandomString()},
			onSuccess:function(trans) {
				$('newslist').replace(trans.responseText);
			   //trans.responseText.evalScripts();
			}
		});
		Event.stop(e);
	});
}

function setupNewsBrowse() {
  var request = false;
  $$('.news-list-browse A').each(function(item) {
       item.observe('click', function(e) {
           Event.stop(e);
           if (request) return;
           request = true;
           var loader = item.insert({'after' : throbber} );
           item.hide();
           try { 
               //pageTracker._trackEvent('click','newslist',item.href,++eventCounter);
			   //updateAds();
              new Ajax.Request(item.href,
                  { method:'get',
                    parameters:({type:300,disableCache:makeRandomString()}),
                    onSuccess:function(trans) {
                       request = false;
                       $('newslist').replace(trans.responseText);
                    },               
                    onFailure:function(trans) {
                       request = false;
                       loader.hide();
                       item.show();
                    }
                  });
           } catch(e) {
              request = false;
              loader.hide();
              item.show();
           	  top.alert('hm'+e.message)
           }
     		  return(false);
       });
  });
}

function setupNews() {
// newsArchive search form
//  setupNewsSearch();
//newsArchive pagebrowser
  setupNewsBrowse();
}

function set_as_homepage (url,msg,obj) {
     try {
		obj.style.behavior='url(#default#homepage)'; 
		obj.setHomePage(url);
	 } catch(e) { 
	    top.alert(msg); 
	 }
}

function setupOldNewsroll() {
  var running = true;
  var step = 543;
  var position = 0;
  var maxpos = 3*step;
  new PeriodicalExecuter(function(pe) {
    if (!running) return;
    position = (position + step) % maxpos;
    $$('.slider').each(function(slider) {
    	slider.morph('left:-'+position+'px');
    });
  }, 5);
  $$('.slider-wrap').each(function(slider) {
    slider.observe('mouseover',function(e) {
       running = false;
    });
    slider.observe('mouseout',function(e) {
       running = true;
    });
  });
}

function setupSlotMachine() {
  var running = true;
  $$('.slot').each(function(slider) {
	slider.slideposition = 0;
  });
  var doMorph = function (slider) {
      slider.morph('error!',
      			{ style:'top:-'+slider.slideposition+'px',
      			  duration:0.4,
      			  transition:Effect.Transitions.spring
      			});
  }
  new PeriodicalExecuter(function(pe) {
    if (!running) return;
    $$('.slot').each(function(slider,index) {
    	//top.alert(slider.width);
    	step = slider.ancestors()[0].getHeight();
    	maks = slider.childElements().size()*step;
    	nextposition = slider.slideposition + step;
    	if (nextposition==maks) {
    		slider.slideposition=0;
    	} else if (nextposition+step>maks) {
    		slider.slideposition = maks - step;
    	} else {
    		slider.slideposition = nextposition;
    	}
		doMorph.delay(0.1*index,slider);
    });
  }, 4);
  $$('.slotmachine').each(function(slider) {
    slider.observe('mouseover',function(e) {
       running = false;
    });
    slider.observe('mouseout',function(e) {
       running = true;
    });
  });
}


function setupSmartNewsroll() {
  var running = true;
  $$('.slider').each(function(slider) {
	slider.slideposition = 0;
  });
  new PeriodicalExecuter(function(pe) {
    if (!running) return;
    $$('.slider').each(function(slider) {
    	//top.alert(slider.width);
    	step = slider.ancestors()[0].getWidth()+1;
    	maks = slider.childElements().size()*slider.childElements()[0].getWidth();
    	nextposition = slider.slideposition + step;
    	if (nextposition==maks) {
    		slider.slideposition=0;
    	} else if (nextposition+step>maks) {
    		slider.slideposition = maks - step;
    	} else {
    		slider.slideposition = nextposition;
    	}
    	slider.morph('left:-'+slider.slideposition+'px');
    });
  }, 8);
  $$('.slider-wrap').each(function(slider) {
    slider.observe('mouseover',function(e) {
       running = false;
    });
    slider.observe('mouseout',function(e) {
       running = true;
    });
  });
}
