/* NEW NEW NEW - Now with Prototype on HP*/

document.whenReady = (function() {
	document.observe('dom:loaded', function() {
		if(typeof homepageVars  != "undefined") {
			homepageVars.init();
		}
		//Hand Events to all Elements
		$('ps_loginBoxToggle').observe('click', function(){
			$('arrows').toggleClassName('up');
			Effect.toggle('ps_form_homepageLogin', 'slide', { delay: 0.0, duration : 0.2 });
			// remove selection / focus rectangle
			this.blur();
		});
		
		validateForm = new PS_validateForm();
		picToggle = new PS_picToggle();
		
		
	});
})();

var PS_picToggle = Class.create({
	initialize: function(ele){
		that = this;
		if(homepageVars.toggleBigPic2 == "") return false;
		theToggleTime = parseInt(homepageVars.toggleTime) * 1000;
		toggleInterval = "";
		this.preLoadImage();
	},
	
	preLoadImage: function() {
		theTogglePic = new Image();
		theTogglePic.src = homepageVars.toggleBigPic2;
		theTogglePic.onload = function() {
			$('ps_bigPic2').setStyle({backgroundImage: 'url('+theTogglePic.src+')'});
			
			toggleInterval = window.setInterval(that.toggleImages.bind(this), theToggleTime);
			
		}
	},
	
	toggleImages: function() {
		Effect.toggle('ps_bigPic1', 'appear');
		Effect.toggle('ps_bigPic2', 'appear');
	},
	
	stopToggeling: function() {
		window.clearInterval(toggleInterval);
	}
	
});

var PS_validateForm = Class.create({
	initialize: function(ele){
		var that = this;
		this.regFormElem = $('ps_form_registration');
		this.tryFormSubmit = false;
		myHandleResponse = this.handleResponse
		myShowErrorText = this.showErrorText
		mySubmitForm = this.submitForm
		/*Event.observe($('ps_form_registration'), "submit", function() {
			this.submitForm();
		});*/
		Event.observe($('loginSubmit'), "click", function() {
			that.checkForm(true);
		});
	},
	
	checkForm: function(formSubmit) {
		if(formSubmit) this.tryFormSubmit = true;
		if(this.tryFormSubmit) { //did User try to submit Form - from now on error correction via Ajax
			url = $('validateUrl').value;			
			//parameters = this.regFormElem.serialize( true );
			var jsmysex = false;
	        var mysexGirl = document.ps_form_registration.mysex[0];
			var mysexBoy = document.ps_form_registration.mysex[1];
			if(mysexGirl.checked) {
				jsmysex = mysexGirl.value;
			} else if(mysexBoy.checked) {
				jsmysex = mysexBoy.value;						
			}
	
			var jsessex = false;
			var essexGirl = document.ps_form_registration.essex[0];
			var essexBoy = document.ps_form_registration.essex[1];
			if(essexGirl.checked) {
				jsessex = essexGirl.value;
			} else if(essexBoy.checked) {
				jsessex = essexBoy.value;						
			}
			
	        var email = $('ps_email').value;
	        var terms = $('ps_terms').checked;
	        
	        var password = $('ps_field_password_dynamic').value;
	        var password_repeat = $('ps_field_password_repeat').value;
			
			additionalParameters = "";
			if($('acceptPrivatePolicy') != null) {
				additionalParameters = "&acceptPrivatePolicy=" + $('acceptPrivatePolicy').checked;
			} else {
			
			}
			
			params = "essex="+jsessex+"&mysex="+jsmysex+"&email="+email+"&terms="+terms+"&password="+password+"&passwordCheck="+password_repeat+additionalParameters;
		
			new Ajax.Request( url, {//FIXME mixing post and get request parameters (used for overriding browser caching?)
				method : 'post',
				onSuccess : function( transport ) {
					myHandleResponse(transport.responseText, formSubmit);
				},
				parameters : params });
		} else {
			
		}
	},
	
	handleResponse: function(resp, formSubmit) {
		var splitText = resp.split('\n')[1];
		var result = eval("("+splitText+")");
		
		$('ps_adviceLayer').addClassName('ps_inv');
		$('ps_errorLayer').addClassName('ps_inv');
		
		allErrorTexts = $$('#ps_errorLayer > div');
		$A(allErrorTexts).each(function(ele) {
			ele.addClassName('ps_inv');
		})

		allErrorLabels = ['ps_errorMysexLabel','ps_errorEmailLabel','ps_errorPasswordLabel','ps_errorPasswordCheckLabel','ps_errorTermsLabel','ps_errorPrivatePolicyLabel'];
		$A(allErrorLabels).each(function(ele, index) {
			if($(ele) != null) {
				$(ele).removeClassName('ps_hasError');
			}
		})

		if(result.$errors && result.$errors.userItem) {
			errorObj = result.$errors.userItem;
			if(errorObj.mysex != null && errorObj.email != null && document.getElementById('ps_email').value=="" && document.getElementById('ps_field_password_dynamic').value=="" && 
				errorObj.password != null && errorObj.terms != null) { // If User filled out nothing
				$('ps_adviceLayer').removeClassName('ps_inv');
				this.tryFormSubmit = false;
				return false;
			}
			$('ps_errorLayer').removeClassName('ps_inv');
			if(errorObj.mysex != null) {
				myShowErrorText('ps_errorMysex', errorObj.mysex);
			}
			if(errorObj.essex != null) {
				myShowErrorText('ps_errorEssex', errorObj.essex);
			}
			if(errorObj.email != null) {
				myShowErrorText('ps_errorEmail', errorObj.email);
			}
			if(errorObj.password != null) {
				myShowErrorText('ps_errorPassword', errorObj.password);
			}
			if(errorObj.passwordCheck != null) {
				myShowErrorText('ps_errorPasswordCheck', errorObj.passwordCheck);
			}
			if(errorObj.terms != null) {
				myShowErrorText('ps_errorTerms', errorObj.terms);
			}
			if(errorObj.acceptPrivatePolicy != null) {
				myShowErrorText('ps_errorPrivatePolicy', errorObj.acceptPrivatePolicy);
			}
		} else { //no Errors - submit Form if button clicked
			if(formSubmit)	mySubmitForm();
		}
	},
	
	showErrorText: function(id, text) {
		if($(id + "Label") != null) {
			errorLabel = $(id + "Label");
			errorLabel.addClassName('ps_hasError');
		}
		if($(id) != null) {
			errorElem = $(id);
			errorElemTextnode = $$('#' + id + ' p span')[0];
			errorElemTextnode.innerHTML = text.join(" ");
			errorElem.removeClassName('ps_inv');
			
			// IE treats the floated error labels like block elements with full width of the surrounding block
			// so we need to set the label width manually
			if(Prototype.Browser.IE) {
				var ieVersion = parseInt(navigator.userAgent.substring(navigator.userAgent.indexOf("MSIE")+5));
				
				if (ieVersion == 6 || ieVersion == 7) {
					errorElemTextnode.up().setStyle({'width': 'auto'});
					var width = (errorElemTextnode.getWidth() + 10) + 'px';
					errorElemTextnode.up().setStyle({'width': width});		
				}
			}
		}

	},
	
	submitForm: function() {
		$('ps_form_registration').submit();
	}
	
});




/* END NEW NEW NEW - Now with Prototype on HP*/

// TODO: remove if obsolete
function gender_choice () {
  if (document.form.gender[0].checked == true) {
    var deaktiviert = false;
  } else {
    var deaktiviert = true;
  }
  for (var i = 0; i < document.form.mysex.length; i++) {
    document.form.mysex[i].disabled = deaktiviert;
  }
}

/* Functions for SEO Tabs
 * */
function tabSwitch(aktivElem){
    var anz = document.getElementById("ps_rcMenu").getElementsByTagName("div").length;
    
    for (i = 0; i < anz; i++) {
        if (document.getElementById("ps_rcNav" + (i + 1)) != null) {
            $("ps_rcContent" + (i + 1)).addClassName('ps_inv');
            $("ps_rcNav" + (i + 1)).removeClassName('ps_on');
            oldImg = document.getElementById("ps_rcNav" + (i + 1)).getElementsByTagName('img')[0];
            newImg = oldImg.src.substr(0, oldImg.src.length - 5);
            imgSuffix = oldImg.src.substr(oldImg.src.length - 4, 4);
            document.getElementById("ps_rcNav" + (i + 1)).getElementsByTagName('img')[0].src = newImg + "0" + imgSuffix;
        } else {anz++;}
    }
    $("ps_rcContent" + aktivElem).removeClassName('ps_inv');
    $("ps_rcNav" + aktivElem).addClassName('ps_on');
    
    oldImg = document.getElementById("ps_rcNav" + aktivElem).getElementsByTagName('img')[0];
    newImg = oldImg.src.substr(0, oldImg.src.length - 5)
    imgSuffix = oldImg.src.substr(oldImg.src.length - 4, 4);
    document.getElementById("ps_rcNav" + aktivElem).getElementsByTagName('img')[0].src = newImg + "1" + imgSuffix;
}



var movie = document.getElementById('regions_map');
function over(what, frame){
    movie.TGotoFrame(what, frame);
}

function out(what){
    movie.TGotoFrame(what, 1);
    movie.TPlay(what);
}

 function over(what, frame){
    movie.TGotoFrame(what, frame);
}

function out(what){
    movie.TGotoFrame(what, 1);
    movie.TPlay(what);
}

function getFileName(){
    lo = document.location.href;
    cut = lo.lastIndexOf('/');
    file = '';
    if (cut > 0) {
        file = lo.substr(cut);
        file = file.replace(/\//g, "");
        file = file.replace(/.html/g, "");
    }
    if (file.length == 0) {
        file = 'index.html';
    }
    return file;
}
/* END Functions for SEO Tabs
 * */



/*
 * Trap that return/enter stroke and pass it via form validation
 */
function ps_submitOnEnter(e) {
    var kc;
    if (window.event) {	kc = window.event.keyCode; } 
	else if (e) { kc = e.which; } 
	else { return true; }
    if (kc == 13) {	ps_initHttpRequest(ps_validateForm,true); return false; }
	else { return true;	}
}


function defaultUsernameFocus(e, defaultValue){
    if (e.value == defaultValue.replace(/\s*:\s*/, "")) 
        e.value = '';
}

function defaultUsernameBlur(e, defaultValue){
    if (e.value == "") 
        e.value = defaultValue.replace(/\s*:\s*/, "");
}

function fakePasswordField(e, realField){
    e.style.display = 'none';
    var realField = document.getElementById(realField);
    realField.style.display = 'inline';
    realField.focus();
}

function passwordFieldBlur(e, fakeField){
    if (e.value == "") {
	  	e.style.display = 'none';
	  	var fakeField = document.getElementById(fakeField);
	  	fakeField.style.display = 'inline';
	  }
}




/*
 * VanillaModalBox -  no need to refactor right now
 */


function ps_createVMB(id,wC,oC,iC) {
	var d = document;
	if (d.getElementById) {
		if (d.getElementById(id)) { 
			return; //VMB exists -> do nothing
		}
		if (d.body) {
			if (d.body.insertAdjacentHTML) {
				isIE6 = navigator.userAgent.toLowerCase().indexOf('msie 6') != -1;
				var styleIE6 = "";
				if (isIE6) {
					styleIE6 = ' style=\"height:' + (document.body.offsetHeight +200) + 'px\"';
				}		
			
				var LR= '<div id=\"' + id + '\" class=\"' + wC + '\"><div class=\"' + oC +'\"'+ styleIE6 +'></div><div id=\"' + id + '_contentwrapper\" class=\"' + iC + '\">' + d.getElementById(id+'_content').innerHTML + '</div></div>';
				d.getElementById('VanillaModalBoxLayer').insertAdjacentHTML("AfterEnd",LR);
			} else if (d.createElement && d.body.appendChild) {
				var wN = d.createElement('div'), oN = d.createElement('div'), iN = d.createElement('div');
				wN.setAttribute('id',id); 
				wN.setAttribute('class',wC);
				oN.setAttribute('class',oC);
				iN.setAttribute('class',iC);
				iN.setAttribute('id',id+'contentwrapper');
				d.body.appendChild(wN);
				d.getElementById(id).appendChild(oN);
				d.getElementById(id).appendChild(iN);
				if (d.getElementById(id+"_content")) { 
					d.getElementById(id+'contentwrapper').innerHTML = d.getElementById(id+"_content").innerHTML
				}	
			}
		}
	}
}

function ps_trashVMB(id) {
	var d = document;
	if (d.getElementById && d.getElementById(id)) {
		var theNode = d.getElementById(id);
		if (theNode.parentNode.parentNode.removeChild) {
			theNode.parentNode.removeChild(theNode);
		}
	}
	
	if (d.getElementById(id) && d.getElementById(id).removeNode) {
			d.getElementById(id).removeNode(true);
	} else if (d.all && d.all[id]) {
		d.all[id].innerHTML='';
		d.all[id].outerHTML='';
	}
	// START OBSOLETE CODE FOR NETSCAPE 4 
	else if (d.layers && d.layers[id]) {
		d.layers[id].visibility='hide';
		delete d.layers[id];
	}
	// END OBOSOLETE CODE FOR NETSCAPE 4
}
/*
 * END VanillaModalBox -  no need to refactor right now
 */
