//var panfu;
panfu['debug'] = false;
panfu['errors'] = new Object();
panfu['AJAX_RETRY'] = new Object();
panfu['partnerId'] = 0;

function log_debug(text) {
    if (panfu['debug'] && typeof console != 'undefined') {
        console.debug(text);
    }
}

if (typeof(panfu['lang'])=='undefined') {
		panfu['lang']='';
}
var ct_rdy=false;
running = new Array();
//var validate_error = new Array();
function concatObject(obj) {
  str='';
  for(prop in obj)
  {
    str+=prop + " value :"+ obj[prop]+"\n";
  }
  return(str);
}

function hideLoading()
{
	$("#overlay").hide();
	$('#loading').hide();
}

function showLoading()
{
	$("#overlay").show();
	$('#loading').show();
}

function getGet( name ) {
	name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
	var regexS = "[\\?&]"+name+"=([^&#]*)";
	var regex = new RegExp( regexS );
	var results = regex.exec( window.location.href );
	if( results == null )
		return null;
	else
		return results[1];
}

$(document).ready(function() {

	panfu['partnerId'] = getGet('partnerId');
	if (panfu['partnerId']==null) panfu['partnerId'] = 0;

	$('body').append('<div id="overlay"></div><div id="loading"><img src="' + (location.protocol != 'https:' ? "http://content.panfu.com/website" : '') + '/images/loadingAnimation.gif"></div>');
	$("#overlay").css('height',$('body').height());
	hideLoading();

	//ajax retry up to 5 times on timeout.. then reload the page if failed.
	$.ajaxSetup({ timeout: 19000 });
	$("body").ajaxError(function(event, request, settings,thrownError){
		if (typeof(panfu['AJAX_RETRY'][settings.url])=='undefined') panfu['AJAX_RETRY'][settings.url]=0;
		panfu['AJAX_RETRY'][settings.url]+=1;
		if (panfu['AJAX_RETRY'][settings.url]<5)
			$.ajax(settings);
		else {
			//hideLoading();
			//window.location.href=window.location.href;
		}
	 });

	panfu['check'] = 'false';
	var snd = { 'mode': 'init' };
	$.getJSON(
		rel_path+'includes/token.php?mode=init&callback=?',
		function (data) {
			if (data['check'] != true) {
				$('#pause_time').css('display', 'block');
				colorError('login_pass',false);
				colorError('login_name',false);
				countdown(data['pause']);
				$('#login_form').remove();
			} else {
				if (data['ct']) {
					var ct = data['ct'];
					$('#anmeldung_form').prepend('<input type="hidden" name="ct" value="'+ct+'" />');
				}
				$('#login_form').css('display', 'block');
				if (data['saved'] == true) {
					$('input[name="login_name"]').val(data['name']);
					$('input[name="login_pass"]').val(data['pass']);
					if (!frame) $('#save').css('display', 'none');
					//$('#support').css('display', 'none');
					$('#erase').css('display', 'block');
					$('input[name="save"]').attr('checked','checked');
				}
				if (data['ct']) {
					ct_rdy=true;
				}
			}
		}
		);

	$('input[name="agb"]').click(function() {
		if (this.checked == true) {
			$('#agb').addClass('hide');
		} else $('#agb').removeClass('hide');
	})

	$('input[name="boy"]').click(function() {
		checkSex();
	});
	$('input[name="girl"]').click(function() {
		checkSex();
	});

	$('input[name="login_submit"]').click(function() {
		checkLoginData();
		return false;
	});

	unfocused('name','');
	unfocused('email','');
	unfocused('email_confirm','');
	unfocused('login_name','');
	if (document.cookie.length>0)
	  {
	  c_start=document.cookie.indexOf("l_u=");
	  if (c_start!=-1)
	    {
	    c_start=c_start + "l_u".length+1;
	    c_end=document.cookie.indexOf(";",c_start);
	    if (c_end==-1) c_end=document.cookie.length;
	    unfocused('login_name',unescape(document.cookie.substring(c_start,c_end)));
	    $('input[name="login_name"]').val(document.cookie.substring(c_start,c_end));
	    }

	  c_start=document.cookie.indexOf("l_p=");
	  if (c_start!=-1)
	    {
	    c_start=c_start + "l_p".length+1;
	    c_end=document.cookie.indexOf(";",c_start);
	    if (c_end==-1) c_end=document.cookie.length;
	    unfocused('login_pass',unescape(document.cookie.substring(c_start,c_end)));
	    $('input[name="login_pass"]').val(document.cookie.substring(c_start,c_end));
	    }
	  }




	untoolMe('name');
	untoolMe('email');
	untoolMe('email_confirm');
	untoolMe('login_name');


	$('input[name="pass"]').after('<div id="capsinfo" style="opacity: 0.9; color:red; font-weight:bold; padding: 2px; display:none;text-align:center; width:236px;position:absolute;height:14px; background-color:white; border: 1px solid red;">Caps lock is turned on</div>');
	if ($('input[name="pass"]').position()) $('#capsinfo').css('top',$('input[name="pass"]').position().top+23).css('left',$('input[name="pass"]').position().left);
	$('input[name="pass"]').caps(function(caps){
	    if(jQuery.browser.safari) return; // Safari already indicates caps lock
	    // "this" is current element
	    if(caps){
	    	$("#capsinfo").slideDown("slow");
	    }
	    else {
	    	$("#capsinfo").slideUp("slow");
	    }
	});
	$('input[name="pass"]').blur(function () {
         $("#capsinfo:visible").slideUp("slow");
    })

    $(".emailFormatVerificationBox").each(function() {
        if ($("#emailFormatVerification").length) {
            $("form", this).submit(tb_remove);
            $("#emailFormatVerification form").submit(emailFormatVerification);
        }

        if ($("#emailFormatVerificationHotmail").length) {
            $("#emailFormatVerificationHotmail input[name=email_verify_submit_proposal]").click(tb_remove);
            $("#emailFormatVerificationHotmail input[name=email_verify_submit_proposal]").click(emailFormatVerificationProposal);
            $("#emailFormatVerificationHotmail input[name=email_verify_submit_user_input]").click(tb_remove);
            $("#emailFormatVerificationHotmail input[name=email_verify_submit_user_input]").click(emailFormatVerification);
        }

        buttonPreload = new Image(285, 44);
        buttonPreload.src = "../images/button_over.png";

        bgPreload = new Image(417, 354);
        bgPreload.src = "http://content.panfu.com/website/images/bg_green.png";

        $(".submit", this).mouseover(function() {
            $(this).css('backgroundImage', 'url(../images/button_over.png)');
        }).mouseout(function() {
            $(this).css('backgroundImage', 'url(../images/button.png)');
        });
    });
});


function toolMe(name, message, color) {
	if (color !='green') {
		color='red';
	}
	var width = 200;
	var side = 'left';
	switch (name) {
		case 'name':
		case 'email':
		case 'email_confirm':
			width = 350;
			side = 'top';
			break;

		case 'agb':
			width = 200;
			side = 'left';
			break;
		case 'pass':
			width = 250;
			side = 'left';
			break;
		case 'login_name':
		case 'login_pass':
			width = 220;
			side = 'right';

			break;
		default:
			width = 200;
			side = 'left';
			break;
	}

	//softoolMe(name, message);
	//alert(name+' '+width+' '+side);
	var shrink = true;
	if (frame) {
		shrink = false;
		side = 'left';
		width = 350;
		switch (name) {
			case 'pass':
				width = 150;
				side = 'right';
				break;
			case 'login_pass':
				side = 'bottom';
                break;
            case 'email_confirm':
                side = 'bottom';
                width = 250;
                break;
            case 'email':
                width = 75;
				break;
            case 'name':
                side = 'top';
                width = 300;
                break;

		}
	}

	$('input[name="'+name+'"]').bt(message,
		{
			trigger: 'none',
			fill: color,
			cssStyles: {color: 'white', fontWeight: 'bold'},
			padding: 5,
	  		cornerRadius: 5,
	  		spikeLength: 20,
	  		spikeGirth: 10,
	  		positions: [side],
	  		clickAnywhereToClose: false,
			shrinkToFit: shrink,
			width:width+'px'
		}
	);
	/**/
	$('input[name="'+name+'"]').btOn();

}

function softoolMe(name, message){
	$('input[name="'+name+'"]').attr('title',message);
	$('input[name="'+name+'"]').tooltip({
		track: true,
//		extraClass: 'red',
		top: -45,
		left: 5,
		fade: 50
	});
}

function untoolMe(name) {
	$('input[name="'+name+'"]').btOff();
	switch (name) {
		case 'name':
		case 'email':
		case 'email_confirm':
		case 'login_name':
		case 'login_pass':
			softoolMe(name, panfu['info'][name]);
			break;
		default:
			break;
	}
}

function focused(name,val){
	if (val == panfu['info'][name]) {
		$('input[name="'+name+'"]').val("");
	}
	$('input[name="'+name+'"]').removeClass('empty_input');
	panfu[name]=null;

}

function unfocused(name,val){
	if (val == "") {
		$('input[name="'+name+'"]').addClass('empty_input');
		$('input[name="'+name+'"]').val(panfu['info'][name]);
	} else {
		$('input[name="'+name+'"]').removeClass('empty_input');
	}
}

/*
function hoverError(id) {
	if (in_array(panfu['errors'], id)) {
		$('#error_'+id).removeClass('hide');
	} else $('#error_'+id).addClass('hide');
}
*/

function checkSex() {
	if ( $('input[name="boy"]').attr('checked') == true || $('input[name="girl"]').attr('checked') == true ) {
		$('#sex').addClass('hide');
	} else $('#sex').removeClass('hide');
}

function validateChars(string, mode) {
	if(mode=='pwd'){
		var error_found = false;
		var temp_ph = new Array();
		for (i = 0; i < string.length; i++) {

            temp_ph[i] = string.charCodeAt(i);

            if((temp_ph[i] < 48) || (temp_ph[i] > 57 && temp_ph[i] < 65) || (temp_ph[i] > 90 && temp_ph[i] < 97) || (temp_ph[i] > 122)){

            	error_found = true;
                break;
            }
       }
		return (!error_found);
	}
	//var re = new RegExp('[!"\'§$%&/\\()|{}=?`´*+#<>^.,:;€]');
	//if (mode=='name') re = new RegExp('[!"\'§$%&/\\()|{}=?`´*+#<>^.,:;€@]');

	var re = new RegExp('[!"\'§$%&/\\()|{}=?`´*+#<>^.,:;€]');

	if (mode=='name') {
		//'@' is not allowed for registering
		re = new RegExp('[^A-Za-z0-9_]');
	}
	matched = string.match(re);

	if ((mode=='name') && (!matched)) {
		re = new RegExp('([0-9].*){6,}');
		matched = string.match(re);
	}

	//alert(string+' flound illegal character:'+string.match(re));
	return (!matched);
}

function validateEmail(email) {
	var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
	return reg.test(email);
}

function checkData(mode, string, ip) {
	//alert("inside fn");


	var checkf = false;
	if (ip=='-1' || ip==-1) {
		checkf = true;
	}

	if (typeof(running[mode]) == 'undefined')  running[mode]=false;
	//mark as error first
	if (string != '' && string!=panfu['info'][mode]) {
		colorWait(mode);

	}
	else {
		colorError(mode, false);
		panfu['errors'][mode] = panfu['missing_message'][mode];
	}
	//then make check
	var success = false;

	if ( string != '' && string!=panfu['info'][mode] ) {
		//alert("if");
		if ( mode == 'name' ) {
			success = validateChars(string, 'name');
		} else if ( mode == 'email' ) {
			success = validateEmail(string);
		} else if ( mode == 'email_confirm') {
            success = string == $("input[name=email]").val();
        }
		//alert(success);
		//alert(running[mode]);

		if (success == true && !running[mode] && mode != 'email_confirm') {
			//alert("inside if");
			running[mode]=true;
			document.body.style.cursor = 'wait';
			// get key
			$.getJSON(
				rel_path+'includes/login_functions.php?langId='+panfu['lang']+'&mode=checkdata&string='+string+'&type='+mode+'&callback=?',
				function (data) {
					if ((data['key'] != 'error') && (data['ref'] != '') && (data['bl'] == true)) {
						sendToInfoServer(mode, string, data['key'], checkf);
					} else if (data['bl'] == false) {
						//re-set error (delayed)
						if (mode=='name') colorError(mode, true, panfu['error_message']['name_bad']);
						else colorError(mode, true, panfu['error_message'][mode]);
						document.body.style.cursor = 'default';
						running[mode] = false;
					} else {
						window.location.reload();
					}
				}
			);

		}
        else if (success == true && mode =='email_confirm') {
            colorError(mode, false);
            panfu[mode] = string;
        }
		else if ( success == false) {
			colorError(mode, true, panfu['error_message'][mode]);
		}
	}

	if (success == false) {
		panfu[mode] = '';
		if (checkf) checkFields();
	}

}

function checkLoginUsername(name, ip) {
	if (validateChars(name, null) != true) {
		colorError('login_name',true, panfu['error_message']['name']);
	} else {
		colorError('login_name',false);
	}
}

function checkPassword(pwd, _name) {
	if ( (pwd!='') && (validateChars(pwd, 'pwd') == true) ) {
		var all = ( _name == 'pass' ) ? 'true' : 'false';
		var send = { 'mode': 'passcheck', 'string': pwd, 'all': all };
		if (all=='true' && ($('input[name="name"]').attr('value').lastIndexOf(pwd)>-1) ) {
			colorError(_name, true, panfu['error_message']['password']);
		}
		else if (all == 'true'){
			running[_name]=true;
			document.body.style.cursor = 'wait';
			$.getJSON(
				rel_path+'includes/login_functions.php?langId='+panfu['lang']+'&mode=passcheck&string='+pwd+'&all='+all+'&callback=?',
				function (data) {
					if (running[_name]) {
						if (data['return'] == true) {
							colorError(_name, false);
						} else {
							colorError(_name, true, panfu['error_message']['pwd_short']);
						}
					}
					document.body.style.cursor = 'default';
					running[_name]=false;
				}
			);
		}
	} else if (pwd != '') {
		colorError(_name, true);
	} else if (pwd == '') {
		colorError(_name, false);
		panfu['errors'][_name]=panfu['missing_message']['pass'];
	}
}

function sendToInfoServer(mode, string, key, checkf) {
	var methodName = { 'name': 'checkUsername', 'email': 'checkEmail', 'final': 'registration' };
	tmp = (mode == 'final') ? 'name' : mode;
	// Check mode
	if (methodName[mode] != '' && running[mode]) { //if(mode == 'final') panfu['infoserverurl'] = 'test';
		document.body.style.cursor = 'wait';
		$.getJSON(
			panfu['infoserverurl']+ methodName[mode]+'?'+tmp+'='+string+'&format=json&key='+key+'&callback=?',
			function (data) {
				//hideLoading();
				if (data['return'] == 'true') {
					// SPECIAL
					if ((mode == 'final') && (panfu['debug'] == true)) alert("You were successfully written in the DB =)");
					if (mode == 'final') {
						//doClean();
						try { localTracker._trackPageview('/virtual-signup.php'); } catch(err) {}
						try { globalTracker._trackPageview('/virtual-signup.php'); } catch(err) {}
						try { partnerTracker._trackPageview('/virtual-signup.php'); } catch(err) {}

						//A/b experiment MA-275
						if (panfu['lang'] == 'DE') {
                            try {
                            var gwoTracker=_gat._getTracker("UA-10609091-3");
                            gwoTracker._trackPageview("/0603636810/goal");
                            }catch(err){}
                        }
						//end of A/B test

						setCookie('token', '', -1);
						setCookie('login_count', '', -1);
						doAfterRegister(panfu['name'],panfu['pass']);
						doLogin(panfu['name'],panfu['pass'], panfu['partnerId']);
					}
					if (panfu['debug'] == true) log_debug(data['return']);
					if ((running[mode] == 'true') || (running[mode] == true)) {
						colorError(mode, false);
					};
					if (data['secondkey']) panfu['key2'] = data['secondkey'];
				} else {
					if (mode=='final') window.location.reload(); // fatal error ?
					if (mode=='name') colorError(mode, true, panfu['error_message']['name_bad']);
					else {
						if (mode=='email') colorError(mode, true, panfu['error_message']['email_bad']);
						else colorError(mode, true, panfu['error_message'][mode]);
					}
					if (panfu['debug'] == true) log_debug('return from server: '+data['return']);
				};
				document.body.style.cursor = 'default';
				running[mode] = false;
				panfu[mode] = string;
				if (checkf) checkFields();
			}
		);
	}
}

function eraseUser() {
	$.getJSON(
		rel_path+'includes/login_functions.php?mode=erase',
		function(data) {
			if (data['return'] == true) {
				$('input[name="login_name"]').val('');
				$('input[name="login_pass"]').val('');
				$('#save').css('display', 'block');
				$('#support').css('display', 'block');
				$('#erase').css('display', 'none');
			}
		}
	);
}

function colorError(id, error, message) {
	error = (!defined(error)) ? true : error;
	soft = false;
	if (typeof(message)=='undefined' || message.length<1) {
		msg = panfu['missing_message'][id];
		soft = true;
	}
	else {
		msg = message;
	}
	if (typeof(msg)!='string') msg = '';
	$('input[name="'+id+'"]').removeAttr("readonly");
	$('input[name="'+id+'"]').removeClass('yellowBorder');
	$('input[name="'+id+'"]').removeClass('redBorder');
	$('input[name="'+id+'"]').addClass('greenBorder');
	$('#'+id).addClass('hide');
	untoolMe(id);
	if (error == true) {
		panfu['errors'][id]=msg+' ';
		if (soft) {
			softoolMe(id,msg);
		}
		else {
			$('input[name="'+id+'"]').removeClass('greenBorder');
			$('input[name="'+id+'"]').addClass('redBorder');
			$('#'+id).removeClass('hide');
			toolMe(id,msg);
		}
	} else {
		panfu['errors'][id]='';
	}
}

function colorWait(id){
	untoolMe(id);
	$('input[name="'+id+'"]').attr("readonly",true);
	$('input[name="'+id+'"]').removeClass('greenBorder');
	$('input[name="'+id+'"]').removeClass('redBorder');
	$('input[name="'+id+'"]').addClass('yellowBorder');
	var message = panfu['checking_message'][id];
	toolMe(id,message,'green');

}


function checkFields(){

	//validate_error = null;
	//wait for all checkings complete
	for(tag in running) if (running[tag]) {
		 setTimeout("checkFields()",1000);
		return;
	}

	// Check if name + email were already checked
	if (typeof(panfu['name']) == 'undefined' || panfu['name']==null) {
		checkData('name', $('input[name="name"]').val(), '-1'); return;
	}

	if (typeof(panfu['email']) == 'undefined'  || panfu['email']==null) {
		checkData('email', $('input[name="email"]').val(), '-1'); return;
	}

	if (typeof(panfu['email_confirm']) == 'undefined'  || panfu['email_confirm']==null) {
		checkData('email_confirm', $('input[name="email_confirm"]').val(), '-1'); return;
	}

	checkPassword($('input[name="pass"]').val(),'pass');

	// Assign form fields to window array (which stores globals so we have variable variables in JS =)) (yvan)
	//var fields = new Array('name', 'email', 'pass',/* 'bday', 'bmonth', 'byear', */'newsletter', 'agb'/*, 'promocode'*/);
	var fields = new Array('name', 'email', 'email_confirm', 'pass','newsletter', 'agb');
	for (var i=0; i < fields.length; i++) {
		panfu[fields[i]] = $(':input[name="'+fields[i]+'"]').val();
	}

	// 1- Check if hidden field "subject" is empty, if not, it might be a robot =)
	//alert("subject="+$('input[name="subject"]').val());
	if ($('input[name="subject"]').val() == ''){
		//alert("inside if");
		// 2- Check required fields (sex and agb are special cases)
		if ( (document.login_new.boy.checked == false) && (document.login_new.girl.checked == false)) {
			colorError('sex',true);
		} else {
			panfu['sex'] = (document.login_new.boy.checked == true) ? 'boy' : 'girl';
			colorError('sex',false);
		}
		if ((document.login_new.agb.checked == false)) {
			colorError('agb',true);
		} else {
			colorError('agb',false);
		}


		/*if ( ($('select[name="bday"]').val() == '') || ($('select[name="bmonth"]').val() == '') || ($('select[name="byear"]').val() == '') ) {
			colorError('birthdate',true);
			colorError('byear',false);
			colorError('bmonth',false);
			colorError('bday',false);
		} else {
			colorError('birthdate',false);
			colorError('byear',false);
			colorError('bmonth',false);
			colorError('bday',false);
		}*/

		var errorPrint = "";
		for (tmpName in panfu['errors']) {
			var err_tmp = panfu['errors'][tmpName];
			if (typeof(err_tmp)=='string' && err_tmp.length>1) {
				errorPrint += '<li>';
				errorPrint += err_tmp;
				errorPrint += '</li>';
			}
		};
		// Errors
		if (errorPrint.length > 0) {
			triggerTB('<ul style="padding-left:13px; ">'+errorPrint+'</ul>');

		} else {

            if ($("#emailFormatVerification").length) {
                $.ajax({
                    async: false,
                    url: rel_path + 'includes/login_functions.php?langId=' + panfu['lang'] + '&mode=checkEmailFormat&email=' + panfu['email'] + '&callback=?',
                    dataType: 'jsonp',
                    success: function(data) {
                        log_debug("Verifing email [" + panfu['email'] + "], result: [" + data['return'] + "], info: [" + data['info'] + "]");

                        if (data['return'] == 'INVALID' || data['return'] == 'INVALID_FORMAT') {
                            $("#emailFormatVerification input[name=email_verify]").val(panfu['email']);
                            tb_show('', '#TB_inline?width=417&height=364&inlineId=emailFormatVerification&modal=true', null);
                            $('#TB_ajaxContent').pngFix();
                        } else if (data['return'] == 'INVALID_FORMAT_HOTMAIL') {
                            var tmp_email = panfu['email'].split("@");
                            $("#emailFormatVerificationHotmail input[name=email_verify_proposal]").val(tmp_email[0] + "@hotmail.com");
                            tb_show('', '#TB_inline?width=417&height=364&inlineId=emailFormatVerificationHotmail&modal=true', null);
                            $('#TB_ajaxContent').pngFix();
                        } else {
                            // If no errors, do final check
                            finalCheck(panfu['name']);
                        }
                    }
                });
            } else {
                finalCheck(panfu['name']);
            }
		}
	}
}

function emailFormatVerification(event, field) {
    log_debug('Field: ' + field);

    field = field == null ? 'email_verify' : field;

    log_debug('Field: ' + field);

    var value = $(".emailFormatVerificationBox:visible input[name=" + field + "]").val();

    if (event == 'secondCheck' || value != panfu['email']) {
        // email was changed in this window, perform validation once more

        $("input[name=email]").val(value);
        $("input[name=email_confirm]").val(value);

        // verify data if this method is not executed after waiting
        if (event != 'secondCheck') {
            checkData('email', $("input[name=email]").val(), null);
        }

        // waiting till data verification will be finished, and then running the same method skipping data check
        for (tag in running) {
            if (running[tag]) {
                setTimeout("emailFormatVerification('secondCheck', '" + field + "')", 1000);
                return;
            }
        }

        if (!panfu['errors']['email']) {
            finalCheck(panfu['name']);
        }
    } else {
        finalCheck(panfu['name']);
    }

    return false;
}

function emailFormatVerificationProposal(event) {
    emailFormatVerification(event, 'email_verify_proposal');
    return false;
}

function finalCheck(pandaname) {
	var send = {
		'mode' : 'checkdata',
		'mode2': 'final',
		'string': pandaname,
		'ct' : $('input[name="ct"]').val()
	};
	//showLoading();
	$.getJSON(
		rel_path+'includes/login_functions.php?langId='+ panfu['lang']+'&mode=checkdata&mode2=final&string='+pandaname+'&ct='+$('input[name="ct"]').val()+'&callback=?',
		function (data) {
			if ((data['return'] != 'error') && (data['key'] != 'error')) {
				var refID = $('input[name="refID"]').val();
				var partnerId = $('input[name="refID"]').val(); //previous refID
				if(partnerId == '0') partnerId = '';
				var NUMS = $('input[name="NUMS"]').val();
				var referrer = $('input[name="referrer"]').val();
				var newsletter = (document.login_new.newsletter.checked == true) ? 'true' : 'false';
				var str = panfu['name']+'&password='+panfu['pass']+'&email='+panfu['email'];
				//str += '&code='+panfu['promocode'];
				//str += '&refID='+refID;
				if((refID.length <= 8) && (refID.length >= 0) && (parseInt(refID) == Number(refID)))
				{
					str += '&refID='+refID;
				}else
				{
					str += '&refID=';
				}
				//sending empty value - InfoServer waits for this - partnerId is now sended through variable with the same name
				str += '&nums='+NUMS+'&referrer='+referrer;

				str += '&partnerId='+partnerId;
				str += '&sex='+panfu['sex'];
				//str += '&birthday='+panfu['bday']+'-'+panfu['bmonth']+'-'+panfu['byear'];
				str += '&chatID=1&newsletter='+newsletter;
				var zanox_id = getCookieOrNull('zanox_id');
				var tduid = getCookieOrNull('TRADEDOUBLER');
				if((zanox_id == null) && (tduid == null))
				{
					str += '&advertiser_id=';
				}else if(zanox_id != null)
				{
					str += '&advertiser_id='+zanox_id;
				}else if(tduid != null)
				{
					str += '&advertiser_id='+tduid;
				}

				if (typeof(panfu['win']) == 'string')
				{
					str += '&win='+panfu['win'];
				}
				if (typeof(panfu['code']) == 'string')
				{
					str += '&code='+panfu['code'];
				}

				str += '';
				running['final']=true;
				sendToInfoServer('final', str, panfu['key2'],false);
			} else
			{
				//hideLoading();
				log_debug("an error occured...");
			}
		}
	);
}


function checkLoginData(user,pw) {
	if (ct_rdy) checkLoginData_rdy(user,pw);
	else setTimeout("checkLoginData('"+user+"','"+pw+"')",1000);
}


function checkLoginData_rdy(user,pw) {
	if (typeof(user)!="string") user = $('input[name="login_name"]').val();
	if (typeof(pw)!="string") pw = $('input[name="login_pass"]').val();
	var ct = $('input[name="ct"]').val();
	var count;
	var save = ($('input[name="save"]').attr('checked') == true).toString();
	var send = {
		'mode': 'logincheck',
		'name': user,
		'pass': pw,
		'ct' : ct,
		'save': save
	};
	if (user == '') colorError('login_name', true);
	if (pw == '') colorError('login_pass', true);

	//showLoading();

	$.getJSON(
		rel_path+'includes/login_functions.php?langId='+panfu['lang']+'&mode=logincheck&name='+user+'&pass='+pw+'&ct='+ct+'&save='+save+'&callback=?',
		function(data) {
			//hideLoading();
			//alert(data['error']);
			count = data['count'];
			if (count < 6) {
				if (data['return'] == true) {
					colorError('login_pass',false);
					colorError('login_name',false);
					doLogin(data['name'], data['pass'],panfu['partnerId']);
					return;
				} else if (data['return'] == false) {
					/* WRONG USER */

					if (user != 'undefined') colorError('login_name',true, panfu['error_message']['userpw']);
					if (pw != 'undefined') colorError('login_pass',true, panfu['error_message']['userpw']);

					untoolMe('login_pass');


					// Call thickbox
					//triggerTB(panfu['error_message']['userpw']);
					$('#login_left').css('display', 'block');
					$('#login_right').css('display', 'block');

					//used only on newsletter1.php page
					if(window.location.href.match('newsletter1.php') != null)
					{
						$('.bt-wrapper:last').css('left', '424px');
						$('.bt-wrapper:last').css('top', '221px');
						$('.bt-wrapper:last').css('z-index', '99');
						$('.bt-wrapper:first').css('left', '124px');
						$('.bt-wrapper:first').css('top', '160px');
						$('.bt-wrapper:first').css('z-index', '99');
					}

					if(window.location.href.match('newsletter2.php') != null)
					{
						$('.bt-wrapper:last').css('left', '445px');
						$('.bt-wrapper:last').css('top', '236px');
						$('.bt-wrapper:last').css('z-index', '99');
						$('.bt-wrapper:first').css('left', '145px');
						$('.bt-wrapper:first').css('top', '175px');
						$('.bt-wrapper:first').css('z-index', '99');
					}

					if(window.location.href.match('newsletter3.php') != null)
					{
						$('.bt-wrapper:last').css('left', '425px');
						$('.bt-wrapper:last').css('top', '216px');
						$('.bt-wrapper:last').css('z-index', '99');
						$('.bt-wrapper:first').css('left', '125px');
						$('.bt-wrapper:first').css('top', '155px');
						$('.bt-wrapper:first').css('z-index', '99');
					}

				if (count == 4) showWarning();
				if (count > 4) hideWarning();
				}
			} else {
				// countdown

				countdown(600);
				$('#pause_time').css('display', 'block');
				colorError('login_pass',false);
				colorError('login_name',false);
				$('#login_left').css('display', 'block');
				$('#login_right').css('display', 'block');
				$('#login_form').remove();

			}
		});
	//alert('showing');

}


/* Helpers */

function triggerTB(text, width, height) {
	width = (! width) ? '365' : width;
	height = (! height) ? '320' : height;
	var message = '<br />' + text + '<br /><br /><p style="text-align: center;">'+
		'<input style="font-size:14px;" class="login_submit submit_right" type="submit" value="ok" onclick="tb_remove();" /></p><br />';
	$('#errorDiv').html(message);
	$('#TB_ajaxContent').html();
	tb_show('', '#TB_inline?height='+height+'&width='+width+'&inlineId=errorDiv');
//	tb_show('', '#TB_inline?inlineId=errorDiv');
	$('#TB_title').css('height', '29px').css('background-color', '#4D9201').css('display', 'none');
	$('#TB_ajaxContent').html(message).css('background-color', '#4D9201').css('color', 'white').css('font-size', '16px');
	$('#TB_ajaxContent').css('font-family', 'inherit').css('-moz-border-radius', '12px').css('-webkit-border-radius', '12px').css('background-image','url("images/bg_green_header_anmeldung_new_right.png")')
	.css('background-position','right bottom').css('background-repeat','no-repeat');
	$('#TB_window').css('border', 'none');
}

function defined(x) {
	return (typeof(x) != undefined);
}


function setCookie(c_name, value, expiredays) {
	var expdate = new Date();
	expdate.setDate(expdate.getDate() + expiredays);
	document.cookie = c_name+ "=" + escape(value) + ((expiredays==null) ? "" : ";expires=" + expdate.toGMTString());
}

function getCookieOrNull(check_name) {
	// first we'll split this cookie up into name/value pairs
	// note: document.cookie only returns name=value, not the other components
	var a_all_cookies = document.cookie.split( ';' );
	var a_temp_cookie = '';
	var cookie_name = '';
	var cookie_value = '';
	var b_cookie_found = false; // set boolean t/f default f

	for ( i = 0; i < a_all_cookies.length; i++ )
	{
		// now we'll split apart each name=value pair
		a_temp_cookie = a_all_cookies[i].split( '=' );


		// and trim left/right whitespace while we're at it
		cookie_name = a_temp_cookie[0].replace(/^\s+|\s+$/g, '');

		// if the extracted name matches passed check_name
		if ( cookie_name == check_name )
		{
			b_cookie_found = true;
			// we need to handle case where cookie has no value but exists (no = sign, that is):
			if ( a_temp_cookie.length > 1 )
			{
				cookie_value = unescape( a_temp_cookie[1].replace(/^\s+|\s+$/g, '') );
			}
			// note that in cases where cookie is initialized but no value, null is returned
			return cookie_value;
			break;
		}
		a_temp_cookie = null;
		cookie_name = '';
	}
	if ( !b_cookie_found )
	{
		return null;
	}
}


function debugObject(obj) {
	var ret = '';
	for (prop in obj) {
		ret += prop+': '+obj[prop]+"\n";
	}
	return ret;
}

function countdown(seconds) {
	var min = Math.round((seconds/60)-0.5);
	var sec = seconds - (min * 60);
	sec = (sec < 10) ? '0'+sec : sec;
	$('#pause_amount').html(min+':'+sec);
	if (seconds > 0) {
		seconds -= 1;
		setTimeout('countdown("'+seconds+'")', 1000);
	} else if (seconds == 0) window.location.href = window.location.href;
}

function showWarning() {
	untoolMe('login_pass');
	untoolMe('login_name');
	$('#warning').css('display', 'block');
	setTimeout('hideWarning()', 20000);
}

function hideWarning() {
	$('#warning').fadeOut('slow');
}

function trackingPixelCheck(userId)
{
	var id;
	id = Number(userId);
	if((id != 0) && (id != NaN))
	{
		var send = {
			'mode': 'trackingPixelCheck',
			'pid': userId
		};
		$.getJSON(
			rel_path+'includes/login_functions.php?mode=trackingPixelCheck&pid='+userId+'&callback=?', //?langId=PL+panfu['lang'], needs to be changed to this version
			function(data) {
				if(data['tracking_pixel'] != '')
				{
					$('body').append(data['tracking_pixel']);
				}
			});
	}
}

function doAfterRegister(user,pw) {
	var exdate=new Date();
	exdate.setSeconds(exdate.getSeconds()+30);
	document.cookie="ot_u=" +escape(user)+";expires="+exdate.toGMTString()+";path=/";
	document.cookie="ot_p=" +escape(pw)+";expires="+exdate.toGMTString()+";path=/";

	try {
		trakkenSetVarWithSource(localTracker, panfu['sex'], true);
	} catch(err) {}
}
