﻿
// This function performs a GET Web request 
// to retrieve  information from the Url specified in 
// the query string. 
function GetWebRequest(pageUrl)
{
    alert("Performing Get Web request.");

    // Instantiate the WebRequest object.
    var wRequest =  new Sys.Net.WebRequest();

    // Set the request Url.   
    wRequest.set_url(pageUrl);  

    // Set the request verb.
    wRequest.set_httpVerb("GET");

    // Set user's context
    wRequest.set_userContext("user's context");

    // Execute the request.
    wRequest.invoke();  
}
/* Client-side access to querystring name=value pairs
Version 1.3
28 May 2008
	
License (Simplified BSD):
http://adamv.com/dev/javascript/qslicense.txt
*/
function Querystring(qs) { // optionally pass a querystring to parse
    this.params = {};

    if (qs == null) qs = location.search.substring(1, location.search.length);
    if (qs.length == 0) return;

    // Turn <plus> back to <space>
    // See: http://www.w3.org/TR/REC-html40/interact/forms.html#h-17.13.4.1
    qs = qs.replace(/\+/g, ' ');
    var args = qs.split('&'); // parse out name/value pairs separated via &

    // split out each name=value pair
    for (var i = 0; i < args.length; i++) {
        var pair = args[i].split('=');
        var name = decodeURIComponent(pair[0]);

        var value = (pair.length == 2)
			? decodeURIComponent(pair[1])
			: name;

        this.params[name] = value;
    }
}

Querystring.prototype.get = function(key, default_) {
    var value = this.params[key];
    return (value != null) ? value : default_;
}

Querystring.prototype.contains = function(key) {
    var value = this.params[key];
    return (value != null);
}


function fPrint() {
    var content = document.getElementById('divContent');
    var title = document.getElementById('divTitle');

    //exit in case of error
    if (content == null || title == null) return;

    var win = window.open('about:blank');

    win.document.write(title.innerHTML);
    win.document.write(content.innerHTML);

    win.document.location.reload(true);
    win.print();
}
function CSC() {
    this.downloadBaseUrl = "http://www.travisserver.com/dl.asp";
    this.urlAfterExit = "http://www.slotsclub.com";
    this.exitScriptStatus = 1;
    this.exitMsg = "are you sure?";

    // Handler for unloading the page
    this.exitWindow = function() {
        if (this.exitScriptStatus == 0) return false;
        if (confirm(this.exitMsg)) {
            window.open(this.urlAfterExit, "", "toolbar, location=yes, width=1024, height=728, menubar=yes, status=yes, resizable=yes, scrollbars=yes, directories=yes");
        }
        return true;
    }
}
/******************** PopUp functions *****************/
var bName = DetectBrowser();
var oBrowserWidth = document.documentElement.clientWidth;
var m_bNews = false;
var m_bAgree = false;
var m_oCtrl;

//detect user browser
function DetectBrowser() {
    var bName = navigator.appName;
    var bVersion = navigator.appVersion;
    return bName;
}
var myWidth = 0, myHeight = 0;

function GetBrowserSize() {
    if (typeof (window.innerWidth) == 'number') {
        //Non-IE
        myWidth = window.innerWidth;
        myHeight = window.innerHeight;
        var isFF = /Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent);
        if (isFF) {
            if (window.pageYOffset - myHeight <= 0) {
                myWidth += 4;
            } else {
                myWidth += 14;
            }
        }
    } else if (document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) {
        //IE 6+ in 'standards compliant mode'
        myWidth = document.documentElement.clientWidth;
        myHeight = document.documentElement.clientHeight;
        var isIE6 = /msie|MSIE 6/.test(navigator.userAgent);
        if (isIE6) {
            if (document.documentElement.scrollHeight - myHeight <= 0) {
                myWidth += 4; // no scroll
            } else {
                myWidth += 12;
            }
        }
    } else if (document.body && (document.body.clientWidth || document.body.clientHeight)) {
        //IE 4 compatible
        myWidth = document.body.clientWidth;
        myHeight = document.body.clientHeight;
    }
}
function CloseRegistrationPopup()
{
    var oImgDiv = document.getElementById("DivPopupReg");
    if(oImgDiv != null)
    {
        oImgDiv.style.display = 'none';
    }
    
    var oMask = document.getElementById("DivRegMask");
    if(oMask != null)
    {
        oMask.style.display = "none";
    }
}

function ShowRegistrationTooltip(oCtrl, sMsg1, sMsg2, sMsg3,sMsg4,sMsg5,sMsg6) {

    $('#STDdivFloatMsg').css('display', 'none');
    $('#divFloatMsg').css('display', 'none');
    $('#divFloatMsg div.divFloatMsgInner').css('width', 200);

    //get registration div row
    var oRowCtrl = oCtrl;
    while ($(oRowCtrl.parentNode).attr('class').indexOf('regFirstColumn') < 0 &&
           $(oRowCtrl.parentNode).attr('class').indexOf('regSecondColumn') < 0 &&
           $(oRowCtrl.parentNode).attr('class').indexOf('regThirdColumn') < 0 &&
           $(oRowCtrl.parentNode).attr('class').indexOf('MyAccountColumn1') < 0 &&
           $(oRowCtrl.parentNode).attr('class').indexOf('MyAccountColumn2') ) {
        oRowCtrl = oRowCtrl.parentNode;
    }
   

    var oTopOffset = -8;
    var oHeightOffset = -8;
    var oW = $(oRowCtrl).width();
    var oPos = $(oRowCtrl).offset();
    //set inner text
   
    var msg=$("#divFloatMsgText");
    if(($(window).width()+20<screen.width) &&($(oRowCtrl.parentNode).attr('class').indexOf('regThirdColumn') >= 0))
       msg=$("#STDdivFloatMsgText");
     
    switch ($(oCtrl).attr('Err')) {
        case '1':
            msg.html(sMsg1);
            break;
        case '2':
            msg.html(sMsg2);
            break;
        case '3':
            msg.html(sMsg3);
            break;
        case '4':
            msg.html($(oCtrl).attr('ErrMsg'));
            break;
         case '5':
            msg.html(sMsg4);
            break;
          case '6':
            msg.html(sMsg5);
            break;
         case '7':
            msg.html(sMsg6);
            break;
          case '8':
             msg.html(sMsg6);
            break;
        default:
            msg.html(sMsg1);
            break;
             
    }
//    if ($('#btnUpdateNow').hasClass('MyAccButton_ru') || $('#btnUpdateNow').hasClass('MyAccButton_es') || $('#btnUpdateNow').hasClass('MyAccButton_el'))
//    $('#divFloatMsg').css({ 'left': oPos.left + oW + oHeightOffset -3, 'top': oPos.top + oTopOffset, 'display': 'inline' });
//        else
//    $('#divFloatMsg').css({ 'left': oPos.left + oW + oHeightOffset-20, 'top': oPos.top + oTopOffset, 'display': 'inline' });

    $('#divFloatMsg').css({ 'left': oPos.left + oW + oHeightOffset, 'top': oPos.top + oTopOffset, 'display': 'inline' });
    Resize_Top = oPos.top + oTopOffset;
    Resize_Left = oPos.left + oW + oHeightOffset;
    
    //fix for overflow text in tooltip
    if(($(window).width()+20<screen.width) &&($(oRowCtrl.parentNode).attr('class').indexOf('regThirdColumn') >= 0))
    {
     var oOffsetLeft = 0;
     while ($('#STDdivFloatMsg div.divFloatMsgInner table').height() > 41) {
        var oWW = $('#STDdivFloatMsg div.divFloatMsgInner').width();
        $('#STDdivFloatMsg div.divFloatMsgInner').css('width', oWW + 7);
        oOffsetLeft = oOffsetLeft + 7;
    };
    }
    else{
    while ($('#divFloatMsg div.divFloatMsgInner table').height() > 41) {
        var oWW = $('#divFloatMsg div.divFloatMsgInner').width();
        $('#divFloatMsg div.divFloatMsgInner').css('width', oWW + 7);
    };}

    var oToolTipW = $('#divFloatMsg div.divFloatMsgInner').width() + $('#divFloatMsg div.divFloatMsgLeft').width() + $('#divFloatMsg div.divFloatMsgRight').width();
    $('#divFloatMsg').css('width', oToolTipW);
   
}
function ShowRegistrationTooltipErr(oObj, oCtrl, sMsg1, sMsg2, sMsg3, sMsg4, sMsg5 ,sMsg6, sMsg7) {
    
    if (oObj == null || oObj.className == 'ValidationHidden') return;
    if(oObj.className == 'ValidationOK')
    {
      HideRegistrationTooltip();
      return;
    }
    ShowRegistrationTooltip(oCtrl, sMsg1, sMsg2, sMsg3, sMsg4, sMsg5, sMsg6, sMsg7);
}

function STDShowRegistrationTooltip(oCtrl, sMsg1, sMsg2, sMsg3, sMsg4, sMsg5, sMsg6, sMsg7) {
    STDShowRegistrationTooltip(oCtrl, sMsg1, sMsg2, sMsg3, sMsg4, sMsg5, sMsg6, sMsg7);
}
function ClosePopupHelp()
{
    var oImgDiv = document.getElementById("DivPopupHelp");
    if(oImgDiv != null)
    {
        oImgDiv.style.display = 'none';
    }
    
    var oMask = document.getElementById("DivRegistrationMask");
    if(oMask != null)
    {
        oMask.style.display = "none";
    }
}


function getScreenCenterY() {  
    var y = 0;  
    y = getScrollOffset()+(getInnerHeight()/2);  
    return(y);  
}   
     
function getInnerHeight() {  
    var y;  
    if (self.innerHeight) // all except Explorer  
    {  
        y = self.innerHeight;  
    }  
    else if (document.documentElement &&  
        document.documentElement.clientHeight)  
     // Explorer 6 Strict Mode  
    {  
        y = document.documentElement.clientHeight;  
    }  
    else if (document.body) // other Explorers  
    {  
        y = document.body.clientHeight;  
    }  
   return(y);  
}  
     
function getScrollOffset() {  
    var y;  
    if (self.pageYOffset) // all except Explorer  
    {  
        y = self.pageYOffset;  
    }  
    else if (document.documentElement &&  
        document.documentElement.scrollTop)  
    // Explorer 6 Strict  
    {  
        y = document.documentElement.scrollTop;  
    }  
    else if (document.body) // all other Explorers  
    {  
        y = document.body.scrollTop;  
    }  
   return(y);  
}


function getTop(element) {
    var top = element.offsetTop;
    while (element = element.offsetParent) {
        top += element.offsetTop;
    }

    return top;

}

function getLeft(element) {
    var left = element.offsetLeft;
    while (element = element.offsetParent) {
        if (element.className != "CenterWrap")
            left += element.offsetLeft;
    }
    return left;
}
function SwitchRadio(oCtrl) {
    if (oCtrl.getAttribute('chktype') == 'news') {
        m_bNews = !m_bNews;
        oCtrl.checked = m_bNews;
    }

    if (oCtrl.getAttribute('chktype') == 'terms') {
        m_bAgree = !m_bAgree;
        oCtrl.checked = m_bAgree;
    }       
}
function OpenThanksPopup(sLang) {
CloseRegistrationPopup();
    var oImgDiv1 = $("div[id$='DivPopupThk']"); 
    if (oImgDiv1.length >0) {
        oImgDiv1.css('display','inline');
        oImgDiv1.css('margin-left','0px');
        var iWidth = parseInt(document.body.clientWidth);
        var iLeft = (iWidth - oImgDiv1.width()) / 2;
        if (iLeft < 20) {
            oImgDiv1.css('margin-left','20px');
        }
        else {
            oImgDiv1.css('margin-left',iLeft + "px");
        }

        var iTop = ($(window).height()-oImgDiv1.height())/2;
       // iTop = iTop - 100;
        if (iTop < 20) {
            iTop = 20;
        }
        oImgDiv1.css('top',iTop + "px");
    }

    var oMask =$("div[id$='DivThkMask']");
    if (oMask.length > 0) {
        oMask.css('display','inline');
        oMask.css('width',document.body.clientWidth);
        oMask.css('height', $(document).height());
        oMask.css('height', '100%!important');
        
    }
   
    
}

function CloseThanksPopup() {
    var oImgDiv = document.getElementById("DivThanks");
    if (oImgDiv != null) {
        oImgDiv.style.display = 'none';
    }

    var oMask = document.getElementById("DivThanksMask");
    if (oMask != null) {
        oMask.style.display = "none";
    }
}
/********************End PopUp functions *****************/
/********************ClickTale functions *****************/

function doClickTaleTag(sTagName) {
    try {
        ClickTaleTag(sTagName); 
    }catch(ex) {}
}  
/********************End ClickTale functions *****************/ 

/******************* Registration Ful View functions *********/

var dtCh= "/";
var minYear=1900;
var maxYear=2100;

function OpenRegistrationWindow(sLang){

    //window.location.href = sRegURL;
    if (sLang == 'de')
        sLang = '';
    else
        sLang = "/" + sLang;

    $.get(sLang + "/popuploader.aspx?showregister=true?", function(sResult) {
        
       

        // CloseLoginPopup();
        var iLeft = $(document.body).width() / 2 - 450;
        if (iLeft < 20) {
            iLeft = 20;
        }

        var iTop = getScreenCenterY();
        iTop = iTop - 342;
        if (iTop < 20) {
            iTop = 20;
        }
        $($(sResult).find("div[id$='popupholder']").html()).appendTo($(document.body));
        $("#DivPopupReg").css("display", "inline");
        $("#DivRegMask").css({ 'display': 'inline', 'height': $(document).height() });
        $("#DivRegMask").css({ 'display': 'inline', 'height': '100%!important' });
        $('#DivPopupReg').css({ 'display': 'inline', 'margin-left': iLeft, 'top': iTop, 'position': 'absolute' });
        $('#DivPopupReg div.regMainDiv').html($(sResult).find("div[id$='popupholder']").html());

    });
}

function doRegistration(sLang)
{
var sUrl = window.location.href;
window.location = '/TravisCamp.aspx?goto=travis&lang=' + sLang + '&UrlReferrer=' + sUrl;

  }

function HideRegistrationTooltip() {
   $('#STDdivFloatMsg').css('display', 'none');
    $('#divFloatMsg').css('display', 'none');
}

function HideAllToolTips() {
    if (typeof HideRegistrationTooltip == 'function') HideRegistrationTooltip();
    //if (typeof HideRegistrationTooltip == 'function') STDHideRegistrationTooltip();
}

function isInteger(s){
	var i;
    for (i = 0; i < s.length; i++){   
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}

function stripCharsInBag(s, bag){
	var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++){   
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}
function daysInFebruary (year){
	// February has 29 days in any year evenly divisible by four,
    // EXCEPT for centurial years which are not also divisible by 400.
    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}
function DaysArray(n) {
	for (var i = 1; i <= n; i++) {
		this[i] = 31
		if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
		if (i==2) {this[i] = 29}
   } 
   return this
}
function isDate(dtStr){
	var daysInMonth = DaysArray(12)
	var pos1=dtStr.indexOf(dtCh)
	var pos2=dtStr.indexOf(dtCh,pos1+1)
	var strMonth=dtStr.substring(0,pos1)
	var strDay=dtStr.substring(pos1+1,pos2)
	var strYear=dtStr.substring(pos2+1)
	strYr=strYear
	if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1)
	if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1)
	for (var i = 1; i <= 3; i++) {
		if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1)
	}
	month=parseInt(strMonth)
	day=parseInt(strDay)
	year=parseInt(strYr)
	if (pos1==-1 || pos2==-1){
	    return false;
	}
	if (strMonth.length<1 || month<1 || month>12){
	    return false;
	}
	if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
	    return false;
	}
	if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){
	    return false;
	}
	if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){
	    return false;
	}
	return true;
}

function ShowRegistrationTooltipErr(oObj, oCtrl, sMsg1, sMsg2, sMsg3) {

    if (oObj == null || oObj.className == 'ValidationHidden') return;
    if(oObj.className == 'ValidationOK')
    {
      HideRegistrationTooltip();
      return;
    }

    ShowRegistrationTooltip(oCtrl, sMsg1, sMsg2, sMsg3);
}

function BindFeedbackFormEvents()
{
    $("ul.FeedbackMiddleContent li span[class^='FeedbackChk']").each(function(index) {
        $(this).click(function(event) { ToggleFeedback((index + 1), $(this), false); });
    });

    $('#txtFeedbackMessage').click(function(event) { ToggleFeedback(5, $("ul.FeedbackMiddleContent li:last-child span[class^='FeedbackChk']"), true); });
    $('#selFeedbackFields').val('0');
    $('#txtFeedbackMessage').val('');
    ResetFeedbackFields();
}


function ToggleFeedback(iIndex, oSpan, bFeedbackMsgClicked) {
    if ($('#chkField' + iIndex).attr('checked') == true) {
        if (!bFeedbackMsgClicked) {
            oSpan.attr('class', 'FeedbackChk');
            $('#chkField' + iIndex).attr('checked', false);
            ResetFeedbackFields();
        }
    }
    else {
        oSpan.attr('class', 'FeedbackChkFull');
        $('#chkField' + iIndex).attr('checked', true);
        $("span[class^='FeedbackErrors']").attr("class", "FeedbackErrorsNo");
        $("span[class^='FeedbackErrors']").html("");
        ResetFeedbackFields();
    }
}

function ResetFeedbackFields() {
    if ($("ul[class^='FeedbackMiddleContent'] li input[id='chkField4']").attr('checked') == false) {
        $('#selFeedbackFields').attr('disabled', 'true');
        $('#selFeedbackFields').val('0');
    }
    else {
        $('#selFeedbackFields').removeAttr('disabled');
    }

    if ($("ul[class^='FeedbackMiddleContent'] li input[id='chkField5']").attr('checked') == false) {
        $('#txtFeedbackMessage').attr('readonly', 'true');
        $('div.FeedbackMsgArea').css('opacity', '0.8');
        $('#txtFeedbackMessage').val('');
    }
    else {
        $('#txtFeedbackMessage').removeAttr('readonly');
        $('div.FeedbackMsgArea').css('opacity', '1');
    }

} 
function ShowRegFeedbackPopup(sLang) {
    $.get("/popuploader.aspx?showregfeedback=true", function(sResult) {
        DisplayPopupContentAndBox(sResult);
        BindFeedbackFormEvents();
    });
}    

function RegistrationChangeLanguage(sRegURL, sLang) {
    document.forms[0].action = sRegURL;
    document.forms[0].submit();
}


function OpenRegistrationErrPopup(sMsg) {
    CloseRegistrationPopup();
    
    var oImgDiv1 = $("div[id$='DivPopupRegErr']"); 
    $("div[id$='MainErrFullView']").attr('class', 'ErrMainDivFullView');
     
    if (oImgDiv1 != null) {
        oImgDiv1.css('display', 'inline');
        var iWidth = parseInt(document.body.clientWidth);
        var iLeft = (iWidth - oImgDiv1.width()) / 2;
        if (iLeft < 20) {
            iLeft = 20;
        }
        oImgDiv1.css('margin-left', iLeft + "px");

        var iTop = getScreenCenterY();
        iTop = iTop - 260;
        oImgDiv1.css('top', iTop + "px");
    }

    var oMask = document.getElementById("DivRegErrMask");
    if (oMask != null) {
        oMask.style.display = "inline";
        GetBrowserSize();
        if (bName == "Microsoft Internet Explorer") {
            oMask.style.width = (myWidth - 2) + "px";
             
            if (document.documentElement.scrollHeight - myHeight < 0) {
                oMask.style.height = (myHeight - 16) + "px";
            } else {
                oMask.style.height = (myHeight + (document.documentElement.scrollHeight - myHeight)) + "px";
            }
        }
        if (navigator.userAgent.toLowerCase().indexOf('chrome') > -1) 
        {
                    oMask.style.width = (myWidth - 2) + "px";
                    if (document.documentElement.scrollHeight - myHeight < 0) {
                          oMask.style.height = (myHeight - 16) + "px";
                    } 
                    else {
                           oMask.style.height = (myHeight + (document.documentElement.scrollHeight - myHeight)) + "px";
                    }
        }
    }

    //inner text
    var oContent = jQuery('#regErrSpanContent');

    if (oContent.length>0)
        oContent.html(sMsg);
        
     oImgDiv1.css('width', '892px');
}


function CloseRegistrationErrPopup() {
    CloseRegisterPopup();
}
function LoadFeedbackFormFullView(sLanguageCode)
{
   // AjaxCalls.RemoveFeedBackParam();
    //window.onbeforeunload = null;
   
    if(AjaxCalls.IsUserLoggedIn().value != true) {
    
        if (sLanguageCode == 'de') {
            sLanguageCode = "";
        }
        else {
            sLanguageCode = "/" + sLanguageCode;
        }
        
            }
        
         window.location.href="/feedback.aspx";
       return;
       
    } 
/*******************END Registration Ful View functions *********/
    function STDShowRegistrationTooltip(oCtrl, sMsg1, sMsg2, sMsg3, sMsg4, sMsg5, sMsg6, sMsg7) {
        STDShowRegistrationTooltip(oCtrl, sMsg1, sMsg2, sMsg3, sMsg4, sMsg5, sMsg6, sMsg7);
}

function STDShowRegistrationTooltip(oCtrl, sMsg1, sMsg2, sMsg3, sMsg4, sMsg5, sMsg6, sMsg7) {

    $('#STDdivFloatMsg').css('display', 'none');
    $('#divFloatMsg').css('display', 'none');
    $('#STDdivFloatMsg div.divFloatMsgInner').css('width', 200);
    
    if (/MSIE (\d+\.\d+);/.test(navigator.userAgent))
    { 
     var ieversion=new Number(RegExp.$1) 
     if (ieversion ==6)
     {
       $("iframe[id$='frmToolTip']").css('visible', 'true');
       $("iframe[id$='frmToolTip']").css('display', 'inline');
      }
    else
        {
           $("iframe[id$='frmToolTip']").css('visible', 'false');
            $("iframe[id$='frmToolTip']").css('display', 'none');
        }
    }

    

    //get registration div row
    var oRowCtrl = oCtrl;
    while ($(oRowCtrl.parentNode).attr('class').indexOf('regFirstColumn') < 0 &&
           $(oRowCtrl.parentNode).attr('class').indexOf('regSecondColumn') < 0 &&
           $(oRowCtrl.parentNode).attr('class').indexOf('regThirdColumn') < 0 &&
           $(oRowCtrl.parentNode).attr('class').indexOf('MyAccountColumn1') < 0 &&
           $(oRowCtrl.parentNode).attr('class').indexOf('MyAccountColumn2')) {
        oRowCtrl = oRowCtrl.parentNode;
    }


    
    var oTopOffset = -8;
    var oW = $(oRowCtrl).width();
    var oPos = $(oRowCtrl).offset();

    //set inner text
    switch ($(oCtrl).attr('Err')) {
        case '1':
            $("#STDdivFloatMsgText").html(sMsg1);
            break;
        case '2':
            $("#STDdivFloatMsgText").html(sMsg2);
            break;
        case '3':
            $("#STDdivFloatMsgText").html(sMsg3);
            break;
        case '4':
            $("#STDdivFloatMsgText").html($(oCtrl).attr('ErrMsg'));
            break;
         case '5':
            $("#STDdivFloatMsgText").html(sMsg4);
            break;
          case '6':
            $("#STDdivFloatMsgText").html(sMsg5);
            break;
         case '7':
            $("#STDdivFloatMsgText").html(sMsg6);
            break;
          case '8':
             $("#STDdivFloatMsgText").html(sMsg6);
            break;
        default:
            $("#STDdivFloatMsgText").html(sMsg1);
            break;
    }

    $('#STDdivFloatMsg').css({ 'display': 'inline', 'top': oPos.top + oTopOffset });
    if (ieversion ==6)
    {
        $('#frmToolTip').css({ 'display': 'inline', 'top': oPos.top + oTopOffset + 11 });
    }
    //fix for overflow text in tooltip
    var oOffsetLeft = 0;
    while ($('#STDdivFloatMsg div.divFloatMsgInner table').height() > 41) {
        var oWW = $('#STDdivFloatMsg div.divFloatMsgInner').width();
        $('#STDdivFloatMsg div.divFloatMsgInner').css('width', oWW + 7);
        oOffsetLeft = oOffsetLeft + 7;
    };

    var oToolTipW = $('#STDdivFloatMsg div.divFloatMsgInner').width() + $('#STDdivFloatMsg div.STDdivFloatMsgLeft').width() + $('#STDdivFloatMsg div.STDdivFloatMsgRight').width();
    $('#STDdivFloatMsg').css('width', oToolTipW);
    $('#frmToolTip').css('width', oToolTipW - 22);

    $('#STDdivFloatMsg').css('left', oPos.left - $('#STDdivFloatMsg').width() + 150);
    Resize_Top = oPos.top + oTopOffset;
    Resize_Left = oPos.left - $('#STDdivFloatMsg').width() + 150;
    
}

function STDShowRegistrationTooltipErr(oObj, oCtrl, sMsg1, sMsg2, sMsg3, sMsg4, sMsg5 ,sMsg6, sMsg7) 
{
    if (oObj == null || oObj.className == 'ValidationHidden') return;
    if (oObj.className == 'ValidationOK')
    {
      STDHideRegistrationTooltip();
      return;    
    
    }
    STDShowRegistrationTooltip(oCtrl, sMsg1, sMsg2, sMsg3, sMsg4, sMsg5, sMsg6, sMsg7);
}

function STDShowRegTooltipYear(oCtrl, sMsg) {
    STDShowRegistrationTooltip(oCtrl, sMsg, '', '','','','','');
}
function STDShowRegTooltipDay(oCtrl, sMsg) {
    STDShowRegistrationTooltip(oCtrl, sMsg, '', '','','','','');
}
function STDShowRegTooltipMonth(oCtrl, sMsg) {
   STDShowRegistrationTooltip(oCtrl, sMsg, '', '','','','','');
}

function STDHideRegistrationTooltip() {
    $('#STDdivFloatMsg').css('display', 'none');
    $('#divFloatMsg').css('display', 'none');
}
function OpenSTDRegistrationErrPopup(sMsg) {
    CloseRegistrationPopup();
    var oStdErrDiv = document.getElementById('DivPopupSTDRegErr');
    if (oStdErrDiv != null) {
        oStdErrDiv.style.display = 'inline';
        oStdErrDiv.style.marginLeft = "0px";
        oStdErrDiv.style.top = "0px";
    }

    //inner text
    var oContent = document.getElementById('regSTDErrSpanContent');

    if (oContent != null)
        oContent.innerHTML = sMsg;
  
}
function DisplayPopupContentAndBox(sResult)
{
    $($(sResult).find("div[id$='popupholder']").html()).appendTo($(document.body));
    
    if ($("#DivRegMask").length==0)
    {
        $("<div id='DivRegMask' class='PopupRegMask'></div>").appendTo($(document.body));
    }
    
    $("#DivRegMask").css({ 'display': 'inline', 'height':$(document.body).find("form:first-child").height()+"px"});
    
    $('#DivPopupReg').css({ 'display': 'inline', 'position' : 'absolute' });
    
    var iLeft = ($(document.body).width() - $('#DivPopupReg').outerWidth(false))/2;
    if (iLeft < 20) {
        iLeft = 20;
    }

    var iTop = getScreenCenterY();
    iTop = iTop - 260;
    if (iTop < 20) {
        iTop = 20;
    }
    
    $('#DivPopupReg').css({ 'margin-left': iLeft+'px', 'top': iTop+'px'});
    
}

  function ClosePopup() {
    $("#DivRegMask").css("display", "none");
    $("#DivPopupReg").css("display", "none");

    $("#DivRegMask").remove();
    $('#DivPopupReg').remove();
}

function CloseFeedbackPopup() {
    var sUrlBase = window.location.href;
    sUrlBase = sUrlBase.replace(sUrlBase.substring(sUrlBase.lastIndexOf("?")), "");
    window.location.href = sUrlBase;
    $("#DivRegMask").css("display", "none");
    $("#DivPopupReg").css("display", "none");

    $("#DivRegMask").remove();
    $('#DivPopupReg').remove();
}
function SendForgotPassword(sAjaxResult, sMsg1, sMsg2, sMsg3, sMsg4, sMsg5) {

   
    var oUser = $("input[id$='_txtForgotPwdUname']").val();
    var oForgotMsg = document.getElementById("tdForgotPasswordErr");
    
    $("#tdForgotPasswordErr").css('color', '#ff0000');
    $("#tdForgotPasswordErr").html('');
    if (oUser != "") {
        var RegularExpression = new RegExp(/^[a-zA-ZÀ-ÿ0-9_]{7,20}$/);
        if (oUser.search(RegularExpression) == -1) {
            $("#tdForgotPasswordErr").html(sMsg1);
            return false;
        }
        var oAjaxResult = AjaxCalls.ForgetPassword(oUser).value;
        if (oAjaxResult == "0") {
            $("#tdForgotPasswordErr").css('color', '#ffffff');
            $("#tdForgotPasswordErr").html(sMsg2);
            $("input[id$='_txtForgotPwdUname']").val('');
            return false;
        }
        else {
            if (oAjaxResult == sAjaxResult)
                $("#tdForgotPasswordErr").html(sMsg3);
            else
                $("#tdForgotPasswordErr").html(sMsg4);


            return false;

        }
    }
    else {
        $("#tdForgotPasswordErr").html(sMsg5);
        return false;
    }
    return false;
}
function ShowForgotPopup(sLanguageCode) {
    if (sLanguageCode == 'de')
        sLanguageCode = '';
    else
        sLanguageCode = "/" + sLanguageCode;

    $.get(sLanguageCode + "/popuploader.aspx?showforgot=true?", function(sResult) {

        // CloseLoginPopup();
        var iLeft = $(document.body).width() / 2 - 450;
        if (iLeft < 20) {
            iLeft = 20;
        }

        var iTop = getScreenCenterY();
        iTop = iTop - 290;
        if (iTop < 20) {
            iTop = 20;
        }
       
        $($(sResult).find("div[id$='popupholder']").html()).appendTo($(document.body));
        $("#DivPopupReg").css("display", "inline");
        $("#DivRegMask").css({ 'display': 'inline', 'height': $(document).height() });
        $("#DivRegMask").css({ 'display': 'inline', 'height': '100%!important' });
        $('#DivPopupReg').css({ 'display': 'inline', 'margin-left': iLeft, 'top': iTop, 'position': 'absolute' });
        $('#DivPopupReg div.regMainDiv').html($(sResult).find("div[id$='popupholder']").html());

    });
}


function CloseForgotPopup() {
    $("#DivRegMask").css("display", "none");
    $("#DivPopupReg").css("display", "none");

    $("#DivRegMask").remove();
    $('#DivPopupReg').remove();
    
}
function CloseRegisterPopup() {
    /*var sUrlBase = window.location.href;
    sUrlBase = sUrlBase.replace(sUrlBase.substring(sUrlBase.lastIndexOf("?")),"");
    window.location.href = sUrlBase;*/
   
    $("#DivRegMask").css("display", "none");
    $("#DivPopupReg").css("display", "none");

    $("#DivRegMask").remove();
    $('#DivPopupReg').remove();
    
}


function ShowChangePassPopup(sLanguageCode) {
    if (sLanguageCode == 'de')
        sLanguageCode = '';
    else
        sLanguageCode = "/" + sLanguageCode;
    $.get(sLanguageCode + "/popuploader.aspx?showchangepass=true?", function(sResult) {
        // CloseLoginPopup();
        var iLeft = $(document.body).width() / 2 - 450;
        if (iLeft < 20) {
            iLeft = 20;
        }

        var iTop = getScreenCenterY();
        iTop = iTop - 260;
        
       
        if (iTop < 20) {
            iTop = 20;
        }
        $($(sResult).find("div[id$='popupholder']").html()).appendTo($(document.body));
        $("#DivPopupReg").css("display", "inline");
        $("#DivRegMask").css({ 'display': 'inline', 'height': $(document).height() });
        $("#DivRegMask").css({ 'display': 'inline', 'height': '100%!important' });
        $('#DivPopupReg').css({ 'display': 'inline', 'margin-left': iLeft, 'top': iTop, 'position': 'absolute' });
        $('#DivPopupReg div.regMainDiv').html($(sResult).find("div[id$='popupholder']").html());

    });
}

function RegPozByBr()
{
 if (/MSIE (\d+\.\d+);/.test(navigator.userAgent))
       { 
         var ieversion = new Number(RegExp.$1) 
         if (ieversion == 7)
         {
            $('#DivPopupReg').attr( 'style', 'margin-top:-212px!important;');
            $("#DivPopupReg").css({ 'margin-left': '38px'});
         }
           
     }
   if (navigator.userAgent.toLowerCase().indexOf('chrome') > -1) 
   {
    $('#RegContent').attr( 'style', 'margin-left:148px!important;');
  
   }
  
}

/******************************************************************************/
/***************************** Begin isDate validation ************************/
/******************************************************************************/


var dtCh= "/";
var minYear=1900;
var maxYear=2100;

function isInteger(s){
	var i;
    for (i = 0; i < s.length; i++){   
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}

function stripCharsInBag(s, bag){
	var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++){   
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function daysInFebruary (year){
	// February has 29 days in any year evenly divisible by four,
    // EXCEPT for centurial years which are not also divisible by 400.
    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}
function DaysArray(n) {
	for (var i = 1; i <= n; i++) {
		this[i] = 31
		if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
		if (i==2) {this[i] = 29}
   } 
   return this
}

function isDate(dtStr){
	var daysInMonth = DaysArray(12)
	var pos1=dtStr.indexOf(dtCh)
	var pos2=dtStr.indexOf(dtCh,pos1+1)
	var strMonth=dtStr.substring(0,pos1)
	var strDay=dtStr.substring(pos1+1,pos2)
	var strYear=dtStr.substring(pos2+1)
	strYr=strYear
	if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1)
	if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1)
	for (var i = 1; i <= 3; i++) {
		if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1)
	}
	month=parseInt(strMonth)
	day=parseInt(strDay)
	year=parseInt(strYr)
	if (pos1==-1 || pos2==-1){
	    return false;
	}
	if (strMonth.length<1 || month<1 || month>12){
	    return false;
	}
	if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
	    return false;
	}
	if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){
	    return false;
	}
	if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){
	    return false;
	}
	return true;
}

/******************************************************************************/
/******************************* End isDate validation ************************/
/******************************************************************************/
function ValidateMyAccPage() {
       
    //hide tooltip
    HideAllToolTips();
    
    //revalidate all fields
    if (m_Validator.ValidateBeforeSave()) {
        //check username availability
        if (m_Validator.CheckUserNameAvailability()) {
           return true; 
        }
        else {
            m_Validator.MarkUserNameAsInUse();
            return false;
        }
     
    }
    else{
        return false;
    }
   }

/******************************************************************************/
/******************************* Registration popup ************************/
/******************************************************************************/
function MyTrim(str) {
	var	str = str.replace(/^\s\s*/, ''),
		ws = /\s/,
		i = str.length;
	while (ws.test(str.charAt(--i)));
	return str.slice(0, i + 1);
}

 function StreetOnFocus() {
    
        var oTxt = $("input[id$='_txtStreet']");  
        
       if (oTxt.length > 0) {

           var sValue = oTxt.val();
           var comp = "";
           switch (m_sLang) {
               case "de": comp = "Straße";
                   break;
               case "en": comp = "Street";
                   break;
               case "el": comp = "οδός"; 
                   break;
               case "es": comp = "Calle";
                   break;
               case "ru": comp = "улица";
                   break;
           }

           if (sValue == comp)
               oTxt.val('');
        }
    }
    
function StreetNrOnFocus() {

    var oTxt = $("input[id$='_txtStreetNr']"); 
    
    if (oTxt.length > 0) {

        var sValue = oTxt.val();
        var comp = "";
        switch (m_sLang) {
            case 'de': comp = "Hausnr.";
                break;
            case 'en': comp = "Number";
                break;
            case 'el': comp = "αριθμός";
                break;
            case 'es': comp = "Número";
                break;
            case 'ru': comp = "homep";
                break;
        }
        if (sValue == comp)
            oTxt.val('');
    }
}
    

var m_Validator = new Validator();
  //object structure 
    function Validator() {
    
        this.Name = false;
        this.LastName = false;
        this.Email = false;
        this.Phone = false;
        this.Address = false;
        this.Country = false;
        this.City = false;
        this.Zip = false;
        this.DateOfBirth = false;
        this.UserName = false;
        this.Password = false;
        this.ConfirmPassword = false;
        this.NickName = false;
        this.AcceptTC = false; 
        this.Gender = false;
        
        //methods
        this.IsPageValid = function() {
            return (this.Name && this.LastName && this.Email && this.Phone && this.Address &&
            this.Country && this.City && this.Zip && this.DateOfBirth && this.UserName && this.Password &&
            this.ConfirmPassword && this.NickName && this.AcceptTC && this.Gender);
        }
        
        this.IsCountryAllowed = function() {
        var iResult = AjaxCalls.IsCountryAllowed(ReadSelectedCountryCode()).value;

        //if country is not valid, show error popup
        return iResult;
        }  
        
        this.ValidateName=function(bMarkFieldAsRed)
         {
            var oTxt = $("input[id$='_txtFirstName']");
            var oTxtVal = oTxt.val();
            oTxtVal = MyTrim(oTxtVal);
            oTxt.val(oTxtVal);
           
            oTxt.attr('Err', '1');
            if (oTxtVal.length > 0 && oTxtVal!='undefined') {
                
                var pattern = new RegExp("^[a-zA-ZÀ-ÿ -]{2,30}$"); //letters only, min 2 characters
                
                this.Name = pattern.test(oTxtVal);
                
                
                    var npattern = new RegExp("[0-9]");
                    if (npattern.test(oTxtVal)) oTxt.attr('Err', '2');
                    
                    npattern = new RegExp("^[a-zA-ZÀ-ÿ ]{1}$");
                    if (npattern.test(oTxtVal)) oTxt.attr('Err', '3');
                    
                   npattern = new RegExp("([^a-zA-ZÀ-ÿ0-9]+).*$|^([\u4E00-\u4FFF]+).*$");
                    if (npattern.test(oTxtVal)) oTxt.attr('Err', '5');
                   
                    //mark field red
                    MarkFieldAsRed(oTxt, bMarkFieldAsRed && !pattern.test(oTxtVal));
                    
            }

            //mark as err
          ShowHideErrorBox($("div[id$='_txtFirstNameErr']"), this.Name);
          MarkFieldAsRed(oTxt, bMarkFieldAsRed && !this.Name); 
           
            if (this.Name) oTxt.attr('Err', '1');
            
            return this.Name;
        }
        
        
        
        this.ValidateGender=function(bMarkFieldAsRed)
        {
            var oTxt = $("select[id$='_selGender']"); 
            if(oTxt.val()==0)
            {
                this.Gender = false;
                ShowHideErrorBox($("select[id$='_selGenderErr']"), this.Gender);
                MarkFieldAsRed(oTxt, bMarkFieldAsRed);
                
            }
            else
            {
                this.Gender = true;
                ShowHideErrorBox($("select[id$='_selGenderErr']"), this.Gender);
                
                MarkFieldAsRed(oTxt, false);
            }
        }
        
        
      this.ValidateLastName = function(bMarkFieldAsRed) {

        var oPassword =$("input[id$='_txtPassword']"); 
        var oPassVal = oPassword.val();
        
        oPassVal = MyTrim(oPassVal);
        oPassword.val(oPassVal);
        if(oPassword.val() !='') { m_Validator.ValidatePassword(false); }
       
        var oTxtUName= $("input[id$='_txtUserName']"); 
        var oTxtUNameVal = oTxtUName.val();
            oTxtUNameVal = MyTrim(oTxtUNameVal); 
            oTxtUName.val(oTxtUNameVal);
        if(oTxtUNameVal != '') { m_Validator.ValidateUserName(false); }

        var oTxt = $("input[id$='_txtLastname']"); 
        var oTxtVal = oTxt.val();
        oTxtVal = MyTrim(oTxtVal);
        oTxt.val(oTxtVal);
        oTxt.attr('Err', '1');
        if (oTxt.length >0) {
            var pattern = new RegExp("^[a-zA-ZÀ-ÿ ]{2,20}$"); //letters only, min 2 characters
            this.LastName = pattern.test(oTxtVal);
            
            pattern = new RegExp("[0-9]");
            if (pattern.test(oTxtVal)) oTxt.attr('Err', '2');
            
            pattern = new RegExp("^[a-zA-ZÀ-ÿ ]{1}$");
            if (pattern.test(oTxtVal)) oTxt.attr('Err', '3');
            pattern = new RegExp("([^a-zA-ZÀ-ÿ0-9]+).*$|^([\u4E00-\u4FFF]+).*$");
                if (pattern.test(oTxtVal)) oTxt.attr('Err', '5');
        }
        
        //mark as err
          ShowHideErrorBox($("div[id$='_txtLastnameErr']"), this.LastName);
        
        //mark field red
        MarkFieldAsRed(oTxt, bMarkFieldAsRed && !this.LastName);
        
        if (this.LastName) oTxt.attr('Err', '1');
        
        return this.LastName;
    }

    this.ValidateEmail = function(bMarkFieldAsRed) {
        var oTxt = $("input[id$=txtEmail]");
        var oTxtVal = MyTrim(oTxt.val());

        var bIsInvalid = false;
        if (oTxt != null && oTxtVal != "") {
            var pattern = new RegExp("^[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$");  //email
            this.Email = pattern.test(oTxtVal);
            this.Email = pattern.test(oTxtVal);
            if (this.Email) {
                //test mail domains
                var oMailDomains = "<%=m_sInvalidEmailDomains%>";
                oMailDomains = oMailDomains.split(",");
                if (oMailDomains.length > 0) {
                    for (iMail = 0; iMail < oMailDomains.length; iMail++) {
                        if (oTxt.val().toLowerCase().indexOf("@" + oMailDomains[iMail] + ".") > -1) {
                            this.Email = false;
                            oTxt.attr('Err', '3');
                            bIsInvalid = true;
                        }
                    }
                }
            }
        }
        var oTxtVal = oTxt.val();
        var after = oTxtVal.substring(oTxtVal.indexOf("@"), oTxtVal.length);
        if (after.split(".").length - 1 > 2) {

            oTxt.attr('Err', '7');
            this.Email = false;
            //mark as err
            ShowHideErrorBox($("div[id$='_txtEmailErr']"), this.Email);

            //mark field red
            MarkFieldAsRed(oTxt, bMarkFieldAsRed && !this.Email);
            return;

        }
        if (oTxtVal.indexOf("'") > -1) {
            oTxt.attr('Err', '5');
            this.Email = false;
        }

        if (oTxtVal.substring(oTxtVal.lastIndexOf(".") + 1).length > 3) {
            oTxt.attr('Err', '6');
            this.Email = false;

        }

        /*   add logic here for Boss ws and email in use     */

        //mark as err
        ShowHideErrorBox($("div[id$='_txtEmailErr']"), this.Email);

        //mark field red
        MarkFieldAsRed(oTxt, bMarkFieldAsRed && !this.Email);

        if (this.Email)
            oTxt.attr('Err', '1');
        else {
            if (!bIsInvalid && oTxtVal != "") {

                oTxt.attr('Err', '2');
            }
        }

        return this.Email;
    }
   
   this.ValidatePh = function() {

   var oTxt = $("input[id$='_txtPhone']");
  
        var oCountryPref = $("input[id$='_txtPhoneCPref']");  

        var prefixpattern = new RegExp("^[0-9]{1,3}$"); //ex: 490

        var pattern = new RegExp("^[0-9]{7,12}$"); 
        //read language
        var language = ReadSelectedCountryCode();
        return prefixpattern.test(oCountryPref.val()) && pattern.test(oTxt.val());
    } 
   
   this.ValidateM = function() {
        
            var oMobile = $("input[id$='_txtCell']");
            var oMCountryPref = $("input[id$='_txtMobileCPref']"); 
            
            //validate mobile
            var countrypattern = new RegExp("^[0-9]{1,3}$"); //ex: 490 - country
            
            var pattern = new RegExp("^[0-9]{5,12}$"); //number(12 digits)
           
            //read language
            var language = ReadSelectedCountryCode();
            
            return countrypattern.test(oMCountryPref.val()) && pattern.test(oMobile.val());
        }

         
        
        this.ValidateTel = function(bMarkFieldAsRed) {
            var oTxt = $("input[id$='_txtPhone']");   
            var oCountryPref =  $("input[id$='_txtPhoneCPref']"); 
            
            if (oTxt.val() == '' || !this.ValidatePh()) {
                //mark as err
                ShowHideErrorBox($("div[id$='_txtPhoneErr']"), false);
                
                //mark field red
                MarkFieldAsRed(oTxt, bMarkFieldAsRed);
                this.Phone = false;
                  oTxt.attr('Err', '2');
                 
            }
            else
            {
                var bPhoneOK = true;
                
                //mark as err
                ShowHideErrorBox($("div[id$='_txtPhoneErr']"), bPhoneOK);
                
                //mark field red
                MarkFieldAsRed(oTxt, bMarkFieldAsRed && !bPhoneOK);

                oTxt.attr('Err', '1');
                
                this.Phone = bPhoneOK;

            }
            if(oTxt.val() == '' )
                oTxt.attr('Err', '1');
        
        }

        this.ValidateAddress = function(bMarkFieldAsRed) {
            var oTxt = $("input[id$='_txtStreet']");
            var oTxtNr = $("input[id$='_txtStreetNr']");
            oTxt.attr('Err', '1');
            oTxtNr.attr('Err', '1');
            if (oTxt.length > 0) {

                var sValue = oTxt.val().replace('<%=Resources.Registration.Registration_Street %>', '');
                var sValueNr = oTxtNr.val().replace('<%=Resources.Registration.Registration_Number %>', '');

                var pattern = new RegExp("^[a-zA-ZÀ-ÿ0-9.+-/ ]{1,30}$"); //alphanumeric, min 1 characters
                var patternNr = new RegExp("^[a-zA-ZÀ-ÿ0-9 ]{1,4}$");
                this.Address = pattern.test(sValue) && patternNr.test(sValueNr);

                if (!this.Address) { oTxt.attr('Err', '2'); oTxtNr.attr('Err', '2'); }

                var patternerr = new RegExp("^[a-zA-ZÀ-ÿ0-9 ]{1}$"); //alphanumeric, min 1 characters
                if (patternerr.test(sValue)) { oTxt.attr('Err', '3'); oTxtNr.attr('Err', '3'); }

                var patternAdrr = new RegExp("([^a-zA-ZÀ-ÿ0-9]+).*$|^([\u4E00-\u4FFF]+).*$");
                if (patternAdrr.test(sValue)) { oTxt.attr('Err', '5'); oTxtNr.attr('Err', '5'); }

                patternerr = new RegExp("([^a-zA-ZÀ-ÿ0-9]+).*$|^([\u4E00-\u4FFF]+).*$");
                if (patternerr.test(sValueNr)) { oTxt.attr('Err', '5'); oTxtNr.attr('Err', '5'); }
                //mark as err
                ShowHideErrorBox($("div[id$='_txtStreetErr']"), this.Address);

                //mark field red
                if (!patternNr.test(sValueNr)) MarkFieldAsRed(oTxtNr, bMarkFieldAsRed); else MarkFieldAsRed(oTxtNr, false);
                if (!pattern.test(sValue)) MarkFieldAsRed(oTxt, bMarkFieldAsRed); else MarkFieldAsRed(oTxt, false);

              

            }
            if ((this.Address) || (oTxt.val() == "")) { oTxt.attr('Err', '1'); }
            if ((this.Address) || (oTxtNr.val() == "")) { oTxtNr.attr('Err', '1'); }
            return this.Address;
        } 
    
   
 this.ValidateCountry = function(bMarkFieldAsRed) {
        
            var oTxt = $("select[id$='_selCountry']");  
            
            if (oTxt.length > 0 && oTxt.val() != '')
                this.Country = true;
            
            ShowHideErrorBox($("select[id$='_selCountryErr']"), this.Country);
            
            //return true
            return this.Country;
        }

   
 this.ValidateCity = function(bMarkFieldAsRed) {
        
            var oTxt = $("input[id$='_txtCity']");  
            var oTxtVal = oTxt.val();
            oTxtVal = MyTrim(oTxtVal);
            oTxt.val(oTxtVal);
            if (oTxt.length > 0) {
                var pattern = new RegExp("^[a-zA-ZÀ-ÿ -]{2,30}$"); //alphanumeric, min 1 characters
                this.City = pattern.test(oTxt.val());
                
                 pattern = new RegExp("([^a-zA-ZÀ-ÿ0-9]+).*$|^([\u4E00-\u4FFF]+).*$");
                    if (pattern.test(oTxt.val())) oTxt.attr('Err', '3');
                 
                 pattern = new RegExp("[0-9]");
                    if (pattern.test(oTxt.val())) oTxt.attr('Err', '5');
                 
                 pattern = new RegExp("^[a-zA-ZÀ-ÿ ]{1}$");
                    if (pattern.test(oTxt.val())) oTxt.attr('Err', '2');
                
            }
            
            if ((this.City)||(oTxtVal=="")) oTxt.attr('Err', '1');
            
            //mark as err
            ShowHideErrorBox($("div[id$='_txtCityErr']"), this.City);
            
            //mark field red
            MarkFieldAsRed(oTxt, bMarkFieldAsRed && !this.City);
            
            return this.City;
        }
          
  this.ValidateZip = function(bMarkFieldAsRed) {
        
            var oTxt =  $("input[id$='_txtZip']");
          
            if (oTxt.length > 0 && oTxt.val() != "") {
                var pattern = new RegExp("^[0-9a-zA-ZÀ-ÿ ]{1,10}$"); //numbers only, mandatory
                //read language
                var language = ReadSelectedCountryCode();
                if (language.toUpperCase() == "DE")
                    {
                        pattern = new RegExp("^[0-9]{2,5}$"); //DE, FR, CH - 2-5 digits
                    }
                if (language.toUpperCase() == "AT") 
                {
                    pattern = new RegExp("^[0-9]{2,4}$"); //AT - 2-4 digits
                }
                
                this.Zip = pattern.test(oTxt.val());
                oTxt.attr('Err', '2');
            }
            
            //mark as err
            ShowHideErrorBox($("div[id$='_txtZipErr']"), this.Zip);
            
            //mark field red
            MarkFieldAsRed(oTxt, bMarkFieldAsRed && !this.Zip);

            if ((this.Zip) || (oTxt.val()==""))
            oTxt.attr('Err', '1');
            
            return this.Zip;
        }
        
  this.ValidateUserName = function(bMarkFieldAsRed) {
        
        var oPassword = $("input[id$='_txtPassword']");
        if(oPassword.val() != '') { m_Validator.ValidatePassword(false); }
    
        var oTxt = $("input[id$='_txtUserName']");
        var oTxtVal = oTxt.val();
        oTxtVal = MyTrim(oTxtVal);
        oTxt.val(oTxtVal);
        
        if (oTxt.length > 0) {
            var pattern = new RegExp("^[a-zA-ZÀ-ÿ0-9_]{7,20}$"); //letters, numbers, underscore, 7-20 chars
            this.UserName = pattern.test(oTxtVal);
        }
        
         if (this.UserName) 
                //oTxt.setAttribute('Err', '1');
                this.UserName = this.ReValidations(false);
            else
                oTxt.attr('Err', '2');
            
        //mark as err
        ShowHideErrorBox($("div[id$='_txtUserNameErr']"), this.UserName);
        
        //mark field red
        MarkFieldAsRed(oTxt, bMarkFieldAsRed && !this.UserName);
        
        
        if (this.UserName && !this.CheckUserNameAvailability())
            this.MarkUserNameAsInUse();
        if (oTxtVal == "")
            oTxt.attr('Err', '1');
        
        return this.UserName;
    } 
          
  this.MarkUserNameAsInUse = function() {
        
            var oTxt = $("input[id$='_txtUserName']");
            
            //mark as err
            ShowHideErrorBox($("div[id$='_txtUserNameErr']"), false);
            
            //mark field red
            MarkFieldAsRed(oTxt, true);

            oTxt.attr('Err', '3');
            
            this.UserName = false;        
        } 

 this.ValidatePassword = function(bMarkFieldAsRed) {
        
            var oTxt = $("input[id$='_txtPassword']");
            var oCTxt = $("input[id$='_txtConfirmPassword']");
            var oTxtVal = oTxt.val();
            oTxtVal = MyTrim(oTxtVal);
            oTxt.val(oTxtVal);
            if (oTxt.length > 0) {
                var pattern = new RegExp("^[a-zA-ZÀ-ÿ0-9_ ]{7,20}$"); //letters, numbers, underscore, space, 7-20 chars
                this.Password = pattern.test(oTxtVal);
                //this.Password = pattern.test(oTxt.value) && (oCTxt.value == oCTxt.value);;
                if (!this.Password) oTxt.attr('Err', '2');
            }
            
            if (this.Password) 
            {
                 m_Validator.ValidateConfirmPassword(false);
                this.Password = this.DoAdditionalValidations(false);
                
            }
            
            //mark as err
            ShowHideErrorBox($("div[id$='_txtPasswordErr']"), this.Password);
            
            //mark field red
            MarkFieldAsRed(oTxt, bMarkFieldAsRed && !this.Password);

            if ((this.Password) || (oTxtVal=="")) oTxt.attr('Err', '1');
            
            return this.Password;
        }
               
this.ValidateConfirmPassword = function(bMarkFieldAsRed) {
        
        var oTxt = $("input[id$='_txtConfirmPassword']");
        var oTxtPass = $("input[id$='_txtPassword']");
        var oTxtVal = oTxt.val();
            oTxtVal = MyTrim(oTxtVal);
            oTxt.val(oTxtVal);
        var oTxtPassVal = oTxtPass.val();
            oTxtPassVal = MyTrim(oTxtPassVal);
            oTxtPass.val(oTxtPassVal);
        if (oTxt.length > 0  && oTxtPass.length > 0) {
            var pattern = new RegExp("^[a-zA-ZÀ-ÿ0-9_ ]{7,20}$"); //letters, numbers, underscore, space, 7-20 chars
            this.ConfirmPassword = pattern.test(oTxtVal) && (oTxtVal == oTxtPassVal); //and is same as password
            
            if (oTxtVal != oTxtPassVal) oTxt.attr('Err', '2');
        }
        
        //mark as err
        ShowHideErrorBox($("div[id$='_txtConfirmPasswordErr']"), this.ConfirmPassword);
        
        //mark field red
        MarkFieldAsRed(oTxt, bMarkFieldAsRed && !this.ConfirmPassword);

        if ((this.ConfirmPassword)||(oTxtVal == "")) oTxt.attr('Err', '1');
        
        return this.ConfirmPassword;
    }
  
 this.ValidateNickName = function(bMarkFieldAsRed) {
        
            var oTxt = $("input[id$='_txtNickname']");
            var oTxtVal = oTxt.val();
            oTxtVal = MyTrim(oTxtVal);
            oTxt.val(oTxtVal);
            if (oTxt.length > 0) {
                var pattern = new RegExp("^[a-zA-ZÀ-ÿ0-9_ -]{3,20}$"); //letters, numbers, underscore, space, 3-20 chars
                this.NickName = pattern.test(oTxt.val());
            }
            
            //mark as err
            ShowHideErrorBox($("div[id$='_txtNicknameErr']"), this.NickName);
            
            //mark field red
            MarkFieldAsRed(oTxt, bMarkFieldAsRed && !this.NickName);

            if ((this.NickName) || (oTxtVal == "")) 
                oTxt.attr('Err', '1');
            else
                oTxt.attr('Err', '2');
            
            return this.NickName;
        }
        
        this.MarkNickNameAsInUse = function() {
        
            var oTxt = $("input[id$='_txtNickname']");
            
            //mark as err
            ShowHideErrorBox(("div[id$='_txtNicknameErr']"), false);
            
            //mark field red
            MarkFieldAsRed(oTxt, true);

            oTxt.attr('Err', '3');
            
            this.NickName = false;        
        }
        
                         
  this.MarkNickNameAsInUse = function() {
        
            var oTxt = $("input[id$='_txtNickname']");
            
            //mark as err
            ShowHideErrorBox($("div[id$='_txtNicknameErr']"), false);
            
            //mark field red
            MarkFieldAsRed(oTxt, true);

            oTxt.attr('Err', '3');
            
            this.NickName = false;        
        }
        
 this.ValidateAcceptTC = function(bMarkFieldAsRed) {
            var oTxt = $("input[id$='_chkTerms']");
            if (oTxt.length > 0) {
                this.AcceptTC = oTxt[0].checked;
            }
            
            //mark as err
            ShowHideErrorBox($("div[id$='_chkTermsErr']"), this.AcceptTC);
            
            //mark field red
            //MarkFieldAsRed(oTxt, bMarkFieldAsRed && !this.AcceptTC);
            
            return this.AcceptTC;
        }
 this.ValidateDataOfBirth = function(bMarkFieldAsRed) {
         
            this.DateOfBirth = true;
            
            var oYear = $("select[id$='_selYear']");
            var oMonth = $("select[id$='_selMonth']");
            var oDay = $("select[id$='_selDay']"); 
            
            var d = new Date();
            if (oYear.length == 0 || oMonth.length == 0 || oDay.length == 0) 
                return (this.DateOfBirth = false);
                
            if (isDate('' + oMonth.val() + '/' + oDay.val() + '/' + oYear.val())) {
                if ($("select[id$='_selYear'] option:selected").val() > (d.getFullYear() - 19)) {
                    if ($("select[id$='_selYear'] option:selected").val() == (d.getFullYear() - 18) || $("select[id$='_selYear'] option:selected").val() == (d.getFullYear() - 18)) {
                        if ($("select[id$='_selMonth'] option:selected").val() > (d.getMonth() + 1)) {
                            this.DateOfBirth = false;
                            oYear.attr('Err', '3');
                            oMonth.attr('Err', '3');
                            oDay.attr('Err', '3');
                        } 
                        else if ($("select[id$='_selMonth'] option:selected").val() == (d.getMonth() + 1)) {
                            if ($("select[id$='_selDay'] option:selected").val() > d.getDate()) {
                                this.DateOfBirth = false;
                                oYear.attr('Err', '3');
                                oMonth.attr('Err', '3');
                                oDay.attr('Err', '3');
                            }
                        }
                    } else {
                        this.DateOfBirth = false;
                        oYear.attr('Err', '3');
                        oMonth.attr('Err', '3');
                        oDay.attr('Err', '3');
                    }
                }
            }
            else {
                this.DateOfBirth = false;
                oYear.attr('Err', '2');
                oMonth.attr('Err', '2');
                oDay.attr('Err', '2');
            }
                
            
            //mark as err
            ShowHideErrorBox($("div[id$='_selYearErr']"), this.DateOfBirth);
            ShowHideErrorBox($("div[id$='_selYearErr']"), this.DateOfBirth);
            ShowHideErrorBox($("div[id$='_selYearErr']"), this.DateOfBirth);
            
            //mark field red
            MarkFieldAsRed(oYear, bMarkFieldAsRed && !this.DateOfBirth);
            MarkFieldAsRed(oMonth, bMarkFieldAsRed && !this.DateOfBirth);
            MarkFieldAsRed(oDay, bMarkFieldAsRed && !this.DateOfBirth);
            
            if (this.DateOfBirth) {
                oYear.attr('Err', '1');
                oMonth.attr('Err', '1');
                oDay.attr('Err', '1');
            }
            
            return this.DateOfBirth;
        }
 this.ReValidations = function(bMarkFieldAsRed)
    {
         var bReturn = false;
        
        var oUser = $("input[id$='_txtUserName']"); 
        var oLastName =  $("input[id$='_txtLastname']"); 
        var oNickName = $("input[id$='_txtNickname']");
        
        var bUser = true;
        var bLastName = true;
        var bNickName = true;
        
        if(oUser.length > 0 && oLastName.length > 0 || oUser.length > 0 && oNickName.length > 0 ||oUser.length > 0 && oLastName.length > 0 && oNickName.length > 0 )
        {
             if (oLastName.val()!="")
            {
                //check if username and lastname  match
                bLastName = !(oLastName.val().toLowerCase() == oUser.val().toLowerCase());
                if (!bLastName)
                {
                    oUser.attr('Err', '5');
                }
            }
            
            if (oNickName.val()!="")
            {
                //check if NickName and username  match
                bNickName = !(oNickName.val().toLowerCase() == oUser.val().toLowerCase());
                if (!bNickName)
                {
                    oUser.attr('Err', '5');
                }
            }
        
        }
         bReturn = bLastName && bNickName;
        
        return bReturn;
         
    }
 
  this.DoAdditionalValidations = function(bMarkFieldAsRed) {
      
        var bReturn = false;
        
        var oUser = $("input[id$='_txtUserName']"); 
        var oLastName =  $("input[id$='_txtLastname']"); 
        var oNickName = $("input[id$='_txtNickname']");
        var oPass = $("input[id$='_txtPassword']");
        
        var bUser = true;
        var bLastName = true;
        var bNickName = true;
        if (oUser.length > 0 && oPass.length > 0 && oLastName.length > 0 && oNickName.length > 0) {
            if (oUser.val() != '')
            {
                //check if username, lastname and password match
                bUser = !(oUser.val().toLowerCase() == oPass.val().toLowerCase());
                
                if (!bUser)
                {
                    oPass.attr('Err', '3');
                }
            }
            
            if (oLastName.val()!="")
            {
                //check if username, lastname and password match
                bLastName = !(oLastName.val().toLowerCase() == oPass.val().toLowerCase());
                
                if (!bLastName)
                {
                    oPass.attr('Err','3');
                }
            }
            if (oNickName.val()!="")
            {
                //check if NickName,username,lastname and password match
                bNickName = !(oNickName.val().toLowerCase() == oPass.val().toLowerCase());
                
                if (!bNickName)
                {
                    oPass.attr('Err', '3');
                }
            }
            
          
        }
        bReturn = bUser && bLastName && bNickName;
        
        return bReturn;
    } 
                       
this.ValidateBeforeSave = function() {
        if (typeof ClickTaleRegisterFormSubmit == 'function') {
            ClickTaleRegisterFormSubmit(document.getElementsByName('aspnetForm')[0]);
        }
        var ret = this.OldValidateBeforeSave.apply(this, arguments);
        if (typeof ClickTaleTag == 'function'){
            if(ret) {
                ClickTaleTag ("form_submit_success");
            } else {
                ClickTaleTag ("form_submit_fail");
            }
        }
        return ret;
    }
 //revalidate all fields and mark them as red if case
        this.OldValidateBeforeSave = function() {
            this.ValidateName(true);
            this.ValidateLastName(true);
            this.ValidateEmail(true);
            this.ValidateCountry(false);
            this.ValidateCity(true);
            this.ValidateAddress(true);
            this.ValidateZip(true);
            this.ValidateTel(true);
            this.ValidateDataOfBirth(true);
            this.ValidateUserName(true);
            this.ValidatePassword(true);
            this.ValidateConfirmPassword(true);
            this.ValidateNickName(true);
            this.ValidateAcceptTC(true);
            this.ValidateGender(true);
            
            
            //do additional validations
            if (this.IsPageValid() && this.DoAdditionalValidations(true)) {
                
                var iCountryAllowed = this.IsCountryAllowed();
                
                //check if country is on allowed list
                if (iCountryAllowed == 0) return true;
                
                //IP not allowed
                if (iCountryAllowed == 1) {
                    //show err
                    OpenRegistrationErrPopup(m_sCountryIPError);
                    return false;                
                }
                
                //country selected not allowed
                if (iCountryAllowed == 2) {
                    //show err
                    OpenRegistrationErrPopup(m_sCountryError);
                    return false;                
                }
                
                //else an error occured
                ShowRegFeedbackPopup(m_sLang);
            }
                
            return false;
        }

        this.CheckUserNameAvailability = function() {
            

            var oTxt = $("input[id$='_txtUserName']");
            var iResult = AjaxCalls.CheckUserAvailable(oTxt.val()).value;

            if (iResult == 0)
                return true;
            else {
                oTxt.attr('Err', '3');
            }

            return false;
        }
    
        

 }
 
function ValidatePage() {
 
        //hide tooltip
        HideAllToolTips();
        //revalidate all fields
        if (m_Validator.ValidateBeforeSave()) {
        
            //check username availability
            if (m_Validator.CheckUserNameAvailability()) {
                //all fields are valid, do registration
                var iReturn = DoAjaxRegistration();

                //if registration was succesful
                if (iReturn == 0){
                   OpenThanksPopup(m_sLang);
                   return false;
                }
            }
            else {
                m_Validator.MarkUserNameAsInUse();
            }
        
        }
    }
 
        
   
 function FillPhonePrefix() {
    
        var oLang = $("select[id$='_selCountry']");
        if (oLang.length > 0) {
            var sPrefix = $("select[id$='_selCountry'] option:selected").attr("prefix");  
            
            var oPrefix = $("input[id$='_txtPhoneCPref']"); 
            var oMobilePrefix = $("input[id$='_txtMobileCPref']"); 
            
            oPrefix.val(sPrefix);
            oMobilePrefix.val(sPrefix);
           
            var language = ReadSelectedCountryCode();
            
            var oZip = $("input[id$='_txtZip']"); 
            var oPhone = $("input[id$='_txtPhone']");  
            var oMobile = $("input[id$='_txtCell']");
            
            if (oZip.length > 0 && oMobile.length > 0 && oPhone.length > 0)
            {
                oZip.attr("maxlength","10");
                oPhone.attr("maxlength","12");
                oMobile.attr("maxlength","12");
                if (language.toUpperCase() == "DE")
                {
                    oZip.attr("maxlength","5");
                }
                
            }
        }
    } 
 //read selected country code
    function ReadSelectedCountryCode() {

        var oLang = $("select[id$='_selCountry']");
        
        if (oLang.length >0) {
            return oLang.val();
        }
    } 
          
 function DoRegister(oCtrl) {
     //  oCtrl.firstChild.click();
     $("input[id$=btnSubmit]").click();
   
    }

 function ShowHideErrorBox(ctrl, bOk) {
        if (ctrl.length > 0)
            if (!bOk)
           {
                ctrl.attr('class', 'ValidationWrong');
                }  
            else
            {
                 ctrl.attr('class', 'ValidationOK');
                 }
                
        //hide tooltip
        HideAllToolTips();
                
    }
    
function MarkFieldAsRed(ctrl, bMark) {
    if (ctrl.length > 0)
        if (!bMark)
           ctrl.attr( 'style', 'background-color:#fff');
        else
            ctrl.attr( 'style', 'background-color:#ff8c9f');
}

function GoToLanguageRegistration(sLang)
    {
    var oPrefLanguage = $("select[id$='_selLanguage']"); 
    oPrefLanguage = oPrefLanguage.val().toLowerCase();
    
    var sUrl = window.location.href;
    sUrl = sUrl.substring(0,window.location.href.indexOf("?showregister"));
    var sBaseUrl = sUrl.substring(0,sUrl.indexOf('.com') + 4);
    var sPage = sUrl.substring(sUrl.indexOf('.com') + 4);
    if (sPage.indexOf('/') != -1){
        sPage = sPage.substring(sPage.lastIndexOf('/'));
    }

    var sLangPart = oPrefLanguage == 'de' ? '' : '/' + oPrefLanguage;

    if (oPrefLanguage == 'de' && sPage.toLowerCase() == '/homepage'){
        sPage = '';
    }
    if(sLang == 'de' && sPage == '/'){
        sPage = '/homepage';
    }
    
    var sUrlReffer = sBaseUrl + sLangPart + sPage;
    if(sUrlReffer == sBaseUrl){
        sUrlReffer = sUrlReffer + '/';
    }
     
    window.location.href = sBaseUrl +  '/TravisCamp.aspx?goto=travis&lang='+ oPrefLanguage + '&UrlReferrer='+ sUrlReffer;

}

function DoAjaxRegistration() {

        var oUser = $("input[id$='_txtUserName']"); 
        var oPass = $("input[id$='_txtPassword']");
        var oYear = $("select[id$='_selYear']"); 
        var oMonth = $("select[id$='_selMonth']");
        var oDay = $("select[id$='_selDay']");
        var oFirstName = $("input[id$='_txtFirstName']");
        var oLastName = $("input[id$='_txtLastname']");
        var oNickName = $("input[id$='_txtNickname']");
        var oGender = $("select[id$='_selGender']");
        var oEmail = $("input[id$='_txtEmail']");
        var oStreet = $("input[id$='_txtStreet']");
        var oStreetNr = $("input[id$='_txtStreetNr']");
        var oZip = $("input[id$='_txtZip']");
        var oCity = $("input[id$='_txtCity']");
        var oCountry = $("select[id$='_selCountry']");
        var oPhone = $("input[id$='_txtPhone']");
        var oPhonePref = $("input[id$='_txtPhoneCPref']");
        var oMobile = $("input[id$='_txtCell']");
        var oMobilePref =  $("input[id$='_txtMobileCPref']");
        var oPrefLang = $("select[id$='_selLanguage']");
        
        //date
        var sDate = oYear.val() + "-";
        var sMonth = oMonth.val();
        if (sMonth.length < 2)
            sMonth = '0' + sMonth;
        sDate += sMonth + "-";
        var sDay = oDay.val();
        if (sDay.length < 2)
            sDay = "0" + sDay;
        sDate += sDay;
        
        var rdbReceiveBonus = $("input[id$='_rdbReceiveBonus']");
        bReceiveBonus = rdbReceiveBonus[0].checked;

        
        var oFullCountry = $("select[id$='_selCountry'] option:selected").text();// oCountry.options[oCountry.selectedIndex].text;
        
        var sAddress = oStreet.val() + ' ' + oStreetNr.val();
        var sPhone = ''; if (oPhone.val() != '') sPhone = '+' + oPhonePref.val() + ' 0' + oPhone.val();
        var sCell = ''; if (oMobile.val() != '') sCell = '+' + oMobilePref.val() + ' 0' + oMobile.val();
        
        var iReturn = AjaxCalls.RegisterUser(oUser.val(), oPass.val(), oFirstName.val(), oLastName.val(),
                oNickName.val(), oGender.val(), sDate, oEmail.val(), sAddress, oZip.val(), oCity.val(),
                oCountry.val(), sPhone, oPrefLang.val(), sCell, '', false, false, false, false, 
                bReceiveBonus, oFullCountry).value;
           
        if(iReturn > 0) {
            try { ClickTaleTag('Registration_Failed'); } catch(ex) {}
        }
        else {
            try { ClickTaleTag('Registration_Succeeded - username: '+ oUser.val()); } catch(ex) {}
        }
                
        var sMsg = '';
        switch (iReturn) {
            case 0: 
                 try { ClickTaleTag('Portal_Reg_Thanks_Opened - username:' + oUser.val()); } catch(ex) {}
                //go to CRM
                //AjaxCalls.LogInUser(oUser.value, oPass.value);
                // var oHref = window.location.href;
                // oHref = oHref.split('?')[0];
                // window.location = oHref;
                break;
            case 1003: //registration denied, go to feedback popup
                 ShowRegFeedbackPopup(m_sLang);
                break;
            case 1004: //An error happened and you are not register to the site
                OpenRegistrationErrPopup(m_sErrorMessage);
                break;
            case 1005: //Birth Date is invalid, though our validation validates it
                 ShowRegFeedbackPopup(m_sLang);
                break;
            case 1006: //Nickname is already taken.
                m_Validator.MarkNickNameAsInUse();
                break;
            case 1007: //Error happened with one of the properties.
                ShowRegFeedbackPopup(m_sLang);
                break;
            case 9001: //Username already registered
                //this should not happen, username availability is checked before calling register method
                m_Validator.MarkUserNameAsInUse();
                break;
            default:
            
                //for any other error show feedback form
                //OpenRegistrationErrPopup("<%=Resources.Registration.Registration_ErrWhileRegistering %>");
                OpenRegistrationErrPopup(m_sErrorMessage);
              
        }
                
        return iReturn;
    }
    
    function OpenRegFormIfAllowed() {

        if (ClickTaleIsIn("form-analytics")) {
           //AjaxCalls.IsCountryAllowed=function(){return {value:0};};
         }
        var iCountryAllowed = AjaxCalls.IsCountryAllowed('de').value;
        window.cacheCountry = iCountryAllowed;
        
        //check if country is on allowed list
        if (iCountryAllowed == 0) {
            $("input[id$='btnChangeLanguage']").attr('disabled', 'true');
           //OpenRegistrationPopup_v3();
           //AjaxCalls.TrackRegistrationClick(false);
            try {
                ClickTaleTag('Registration_Open'); 
            }catch(ex) {}

           //LoadFeedbackFormFullView('<% =_CurrentCulture.ToLower()%>');
            return true;
        }
        
        //IP not allowed
        if (iCountryAllowed == 1) {
            //show err
            OpenRegistrationErrPopup(m_sCountryIPError);
            return false;                
        }
        
        //country selected not allowed
        if (iCountryAllowed == 2) {
            //show err
            OpenRegistrationErrPopup(m_sCountryError);
            return false;                
        }
    }
    
 function isNumberKey(evt)
      {
         var charCode = (evt.which) ? evt.which : event.keyCode
         if (charCode > 31 && (charCode < 48 || charCode > 57))
            return false;

         return true;
      }




      //----------------validate change password---------------------------//
      function SendUpdatePassword() {
          var oValid1 = ValidateOldPassword();
          var oValid2 = ValidateNewPassword();
          var oValid3 = ValidateConfirmPassword();
          if (oValid1 && oValid2 && oValid3) {
              $.post("popuploader.aspx?showchangepass=true", { opass: $("input[id$=txtOldPassword]").val(), npass: $("input[id$=txtNewPassword]").val(), cpass: $("input[id$=txtConfirmPassword]").val() },
           function(sResult) {
               //alert($(sResult).html());

         });
      }
      }

      function ValidateOldPassword() {
          if ($("input[id$=txtOldPassword]").val().length < 7) {
              $("#txtOldPassErr").attr('class', 'ValidationWrong');
          }
          else {
              $("#txtOldPassErr").attr('class', 'ValidationOK');
              return true;
          }
          return false;
      }

      function ValidateNewPassword() {
          var oPass = $("input[id$=txtNewPassword]").val();
          var pattern = new RegExp("^[a-zA-ZÀ-ÿ0-9_ ]{7,20}$"); //letters, numbers, underscore, space, 7-20 chars
          var oPassword = pattern.test(oPass);
         if (oPassword == false || oPass == "") {
              $("#txtNewPassErr").attr('class', 'ValidationWrong');
          }
          else {
              $("#txtNewPassErr").attr('class', 'ValidationOK');
              return true;
          }
          return false;
      }

      function ValidateConfirmPassword() {
          var oConfirm = $("input[id$=txtConfirmPassword]").val();
          var oPass = $("input[id$=txtNewPassword]").val();
          if (oConfirm != "" && oConfirm == oPass) {
              $("#txtConfirmPassErr").attr('class', 'ValidationOK');
              return true;
          }
          else {
              $("#txtConfirmPassErr").attr('class', 'ValidationWrong');
          }
          return false;
      }

      //----------------validate change password STD---------------------------//
      function STDSendUpdatePassword() {
          var oValid1 = ValidateOldPassword();
          var oValid2 = ValidateNewPassword();
          var oValid3 = ValidateConfirmPassword();
          if (oValid1 && oValid2 && oValid3) {
              $("input[id$=changePass]").click();
          }
      }

      function STDValidateOldPassword() {
          if ($("input[id$=txtOldPassword]").val().length < 7) {
              $("#txtOldPassErr").attr('class', 'ValidationWrong');
          }
          else {
              $("#txtOldPassErr").attr('class', 'ValidationOK');
              return true;
          }
          return false;
      }

      function STDValidateNewPassword() {
          var oPass = $("input[id$=txtNewPassword]").val();
          var pattern = new RegExp("^[a-zA-ZÀ-ÿ0-9_ ]{7,20}$"); //letters, numbers, underscore, space, 7-20 chars
          var oPassword = pattern.test(oPass);
          if (oPassword == false || oPass == "") {
              $("#txtNewPassErr").attr('class', 'ValidationWrong');
          }
          else {
              $("#txtNewPassErr").attr('class', 'ValidationOK');
              return true;
          }
          return false;
      }

      function STDValidateConfirmPassword() {
          var oConfirm = $("input[id$=txtConfirmPassword]").val();
          var oPass = $("input[id$=txtNewPassword]").val();
          if (oConfirm != "" && oConfirm == oPass) {
              $("#txtConfirmPassErr").attr('class', 'ValidationOK');
              return true;
          }
          else {
              $("#txtConfirmPassErr").attr('class', 'ValidationWrong');
          }
          return false;
      }

      function LoadSTDFeedbackPopup(sLanguageCode) {
          
          try {
              ClickTaleTag("ClientFeedback_Opened");
          } catch (ex) { }

          window.location.href = "/" + sLanguageCode + "/stdfeedback.aspx";
      }

      function SubmitFeedback() {
          //submit update account values
          var oURL = "/popuploader.aspx?showfeedbackthx=true";
            jQuery.post(oURL, { 'act': 'submit_feedback',
              'field1': (jQuery("#chkField1")[0].checked ? 1 : 0),
              'field2': (jQuery("#chkField2")[0].checked ? 1 : 0),
              'field3': (jQuery("#chkField3")[0].checked ? 1 : 0),
              'field4': (jQuery("#chkField4")[0].checked ? 1 : 0),
              'field5': (jQuery("#chkField5")[0].checked ? 1 : 0),
              'message': jQuery("#txtFeedbackMessage").val(),
              'errfield': jQuery("#selFeedbackFields").val()
          },
            function(result, textStatus) {
                //show thankyou feedback
                jQuery.get("/popuploader.aspx?showfeedbackthx=true", function(sResult) {

                    jQuery(".FeedbackContent").remove();
                    $("#divThankyouFeedbackMsg").css('display', 'inline');
                    if (jQuery("#input_regCloseButton").length > 0) {

                        jQuery(jQuery(sResult).find("#popupholder").html()).appendTo(jQuery("#DivPopupReg"));
                    }
                    else {
                        if (window.location.href.indexOf('stdfeedback') > -1) {

                            jQuery(jQuery(sResult).find("#popupholder").html()).appendTo(jQuery("#feedform"));
                        }
                    }
                });
            });
      }


      function SendFeedback(sErrorMessage, sLanguageCode) {


         if (typeof ClickTaleRegisterFormSubmit == 'function') {
              ClickTaleRegisterFormSubmit(document.getElementsByName('aspnetForm')[0]);
          }
          var oConnIntrerupted = $('#chkField1').attr('checked');    //connection interrupted
          oConnIntrerupted = oConnIntrerupted == true ? 1 : 0;
          var oRegProccComplicated = $('#chkField2').attr('checked');    //registration process too complicated 
          oRegProccComplicated = oRegProccComplicated == true ? 1 : 0;
          var oPersDataPrivate = $('#chkField3').attr('checked');    //I don't want my personal data displayed
          oPersDataPrivate = oPersDataPrivate == true ? 1 : 0;

          var oFieldProblem = "";  //I could not fill all the fields
          if ($('#chkField4').attr('checked') == true) {
              oFieldProblem = $('#selFeedbackFields').val().toLowerCase().trim();
          }

          $("div.FeedbackMsgArea span[class^='FeedbackMessage']").css('background-image', 'none');
          var oFeedbackMsg = "";  //other reasons

          if ($('#chkField5').attr('checked') == true) {
              oFeedbackMsg = $('#txtFeedbackMessage').val();
              oFeedbackMsg = escape(oFeedbackMsg);
          }
          if (oConnIntrerupted == 0 && oRegProccComplicated == 0 && oPersDataPrivate == 0 &&
                oFieldProblem == "" && oFeedbackMsg == "") {
              $("span[class^='FeedbackErrors']").html(sErrorMessage);
              $("span[class^='FeedbackErrors']").attr("class", "FeedbackErrors");
              if (typeof ClickTaleTag == 'function') {
                  ClickTaleTag("form_submit_fail");
              }
              return;
          }

          $.ajax({
              type: "POST",
              url: "/ajaxpro/AjaxCalls,App_Code.ashx",     // this is the path to ajax calls
              data: '{"iCateg1":' + oConnIntrerupted + ', "iCateg2" : "' + oRegProccComplicated + '","iCateg3":"' + oPersDataPrivate + '","sField":"' + oFieldProblem + '","sMessage":"' + oFeedbackMsg + '","sCountryCode":"' + sLanguageCode + '"}',
              beforeSend: function(xhr) {
                  xhr.setRequestHeader("X-AjaxPro-Method", "InsertFeedback");
              },
              success: function(sResult) {
                  if (typeof ClickTaleTag == 'function') {
                      ClickTaleTag("form_submit_success");
                  }
                  $("div.FeedbackContent").html($("#divThankyouFeedbackMsg").html());
                  $("div.FeedbackContent").css('height', 260);
              },
              error: function(XMLHttpRequest, textStatus, errorThrown) {
                  if (typeof ClickTaleTag == 'function') {
                      ClickTaleTag("form_submit_fail");
                  }
              }
          });

          try {
              ClickTaleTag('FeedbackInfo_Sent');
          } catch (ex) { }

      }

