var isloading = false;

ResponseCode =
{
    Succeed                     : 0,
    UsernameError               : 1,
    PasswordError               : 2,
    UnknownError                : 3,
    BirthdayError               : 4,
    GenderError                 : 5,
    PostalCodeError             : 6,
    EmailAlreadyExist           : 7,
    UsernameAlreadyExist        : 8,
    SessionError                : 9,
    ScreenNameAlreadyExist      : 10,
    AccountLocked               : 11,
    ForgotPwdFlowBlocked        : 12,
    CreateExtendAccountFailed   : 13,
    PasswordIsTemporary         : 14,
    TemporaryPasswordError      : 15,
    ExpressSuccess              : 16,
    NoUsernameAtSystemID        : 17,
    CADServerDown               : 18
};

CharType =
{
    Upper    : 1,
    Lower    : 2,
    Number   : 3,
    Special  : 4,
    Space    : 5
};

//function carousel(dir, buttons, currentCarousel, divUnits, xMoveBy) 
//{
//    var carouselCountainer = currentCarousel.getElementsByClassName('carouselContainer', 'div')[0];
//		
//	// if there's no stageScroll on the page or
//	// there's already an animation in the queue then exit
//	if(!carouselCountainer || Effect.Queue.effects.length > 0)
//		return;
//	
//	// setup variables
//	var curX = Position.positionedOffset(carouselCountainer)[0];
//	
//	var xMove = carouselCountainer.parentNode.getWidth();
//	var divUnits = typeof(divUnits) == "undefined" ? 5 : divUnits;
//		
//	//alert(xMove + ":" + divUnits);
//		
//	//if we're one of the smaller scrolls we need to tweak the xMove a little bit.
//	if(xMove == 508)
//	{
//		xMove += 38;
//		divUnits = 3;
//	}
//	else if(xMove == 700)
//	{
//		xMove += 28;
//		divUnits = 4;
//	}
//		
//	var numScrolls = Math.ceil(carouselCountainer.immediateDescendants().length / divUnits) - 1;
//	var xMoveBy = typeof(xMoveBy) == "undefined" ? (xMove * dir) : xMoveBy;
//	var xMoveTo = curX + (xMoveBy);
//	var xMax = -Math.abs((numScrolls) * xMove);
//	var curScroll = Math.abs(xMoveTo / xMove);
//		
//	// exit if conditions aren't perfect
//	if(!(xMoveTo <= 0 && xMoveTo >= xMax))
//		return;
//			
//	if(buttons)
//	{
//		// setup left / right buttons
//		buttons[0].src = xMoveTo >= 0 ? "img/scrollBackOff.gif" : "img/scrollBackOn.gif";
//		buttons[1].src = xMoveTo <= xMax ? "img/scrollForwardOff.gif" : "img/scrollForwardOn.gif";
//	}
//	
//	// do the move
//	if(dir != 0)
//	//{
//		//	if(typeof(finalPos)=="undefined")
//	    new Effect.MoveBy(carouselCountainer, 0, xMoveBy);
//		//	else
//		//	    new Effect.Move(carouselCountainer, { x: finalPos, mode: 'absolute'});
//		//}
//		
//	// setup status indicators
//	var indicatorCount = -1;
//	var indicators = currentCarousel.getElementsByClassName('indicatorsWrapper', 'div')[0];
//	
//	if(indicators)
//	{
//		// delete the old indicators
//		while (indicators.firstChild)
//			indicators.removeChild(indicators.firstChild);
//	
//	    // add them back in
//		while(indicatorCount++ < numScrolls) 
//	    {
//			indicators.appendChild(Builder.node('div', {className:((indicatorCount == curScroll) ? 'on' : 'off')}));
//		}
//	}
//}

function ShowMyPanel()
{
    var ajax = new AJAX( GetAbsoluteUrl("/MyPanelAJAX.aspx") );
    ajax.SetCallbackFun(_GetMyPanelAJAXCallback);
    var callBack = "CallBack";
    ajax.AddUrlParameter( "CallBack", callBack);
    ajax.Send(null);
}

function _GetMyPanelAJAXCallback(ajax)
{
    var objDOM = ajax.GetXmlDoc();
    document.getElementById("MyPanelWrapper").innerHTML = objDOM.selectSingleNode("//xmlRoot/html").text;
}

function ShowLoginRegister()
{
try{
    var regBody = $$('.myVideoPlayPanelOn')[0];
    if (regBody.visible()) 
        return;

    DisableButton();
    //Omniture,when the tab is display;
    s_sendPageName("Registration/Login:Tab Opened","Registration/Login");
    }catch(e)
    {}
    var ajax = new AJAX( GetAbsoluteUrl("/RegistrationStarts.aspx") );
    ajax.SetCallbackFun(_GetLoginRegisterAJAXCallback);
    ajax.Send(null);
}



function ShowLoginRegister(obj)
{
    var logOrReg=true;
    try{
        logOrReg=obj!="reg"?true:false;
    }catch(err){
        logOrReg = true;
    }
    var httppost = top.location.protocol+"//";
    
    var fileurl = top.location.href;
    var parturl = top.location.protocol+"//"+top.location.host;
    var querys = fileurl.replace(parturl,"");
    if(logOrReg)
    {
//        var logurl = top.location.pathname;
        var logcurUrl=httppost+top.location.host+"/Login.aspx?targeturl="+querys;
        top.location = logcurUrl; 
    }
    else
    {
//        var regurl = top.location.pathname;
        var regcurUrl=httppost+top.location.host+"/Registration.aspx?targeturl="+querys;
        top.location = regcurUrl; 
    }
}


function _GetLoginRegisterAJAXCallback(ajax)
{
    var objDOM = ajax.GetXmlDoc();
    //document.getElementById("VideoPlayPanelOn").innerHTML = objDOM.selectSingleNode("//xmlRoot/html").text;
    $$('.myVideoPlayPanelOn')[0].innerHTML = objDOM.selectSingleNode("//xmlRoot/html").text;
    //alert($$('.myVideoPlayPanelOn')[0].innerHTML);
    toggleReg(true);
    
    setTimeout ('EnableButton()',1000);
    try{
         document.getElementById('search').focus();
         }catch(e){}
}

function EnableButton()
{
    document.getElementById("btnLogin").href = "javascript:ShowLoginRegister();";
    document.getElementById("btnOr").href = "javascript:ShowLoginRegister();";
    document.getElementById("btnRegister").href = "javascript:ShowLoginRegister();";
    document.getElementById("btnClose").href = "javascript:HideLoginRegister();";
}

function DisableButton()
{
    document.getElementById("btnLogin").href = "#";
    document.getElementById("btnOr").href = "#";
    document.getElementById("btnRegister").href = "#";
    document.getElementById("btnClose").href = "#";
}

function HideLoginRegister()
{
    var regBody = $$('.myVideoPlayPanelOn')[0];
    if (!regBody.visible()) 
        return;
        
    DisableButton();
    toggleReg(false);
    
    setTimeout ('EnableButton()',1000);
    
    try{
     var Termsand = $$('.TermsandConditionsOn')[0];
    if(Termsand.visible())
    Effect.SlideUp(Termsand, {duration: 1});
    //BBM when the tab is closed;
    s_sendPageName("Registration/Login:Tab Closed","Registration/Login");
    }catch(e)
    {}
}

function ShowWatchlist()
{
    alert('Goto Watchlist Page');
}

function ShowMyAccount()
{
    alert('Goto My Account Page');
}

function toggleReg(expended) 
{
    // make sure there's no other effects happening on the page
    if (Effect.Queue.effects.length > 0) return;

    var regBody = $$('.myVideoPlayPanelOn')[0];
    //var regBody = document.getElementById("VideoPlayPanelOn");
    //alert(regBody);

    //if (!regBody.visible()) 
    if (expended)
    //if (regBody.style.display=="none")
    {
      Effect.SlideDown(regBody, {duration: 1});
      $('regCloseBtn').show();
      $('regOpenBtn').hide();
    }
    else 
    {
      Effect.SlideUp(regBody, {duration: 1});

      setTimeout (function() 
      {
          //$('regCloseBtn').hide();
          //$('regOpenBtn').show();
          ShowMyPanel();
          //carousel(-1, null, $$('.myVideoPlayPanelOn .regWrapper .carouselBody')[0], 1, 0);
      }, 1000);
    }
}


//去左空格; 
function ltrim(s)
{ 
 return s.replace( /^\s*/, ""); 
} 

//去右空格; 
function rtrim(s)
{ 
 return s.replace( /\s*$/, ""); 
} 

//去左右空格; 
function Trim(s)
{ 
 return rtrim(ltrim(s)); 
} 

function Trim1(str)
{
    return str.replace(/(^\s*)|(\s*$)/,"");
}   

function ValidateEmail(objemail)
{
    if (IsEmpty(objemail))
        return false;
    var email = Trim(objemail.value);
    //var regEmail=/^([a-z][a-z0-9\_\.]*[a-z0-9])(@)(([a-z0-9][a-z0-9\-]*[a-z0-9][\.])+(com|cn|net|hk|tw|au|uk|de))$/i;
    //var regEmail=/^([a-z][a-z0-9\_\.]*[a-z0-9])(@)(([a-z0-9][a-z0-9\-]*[a-z0-9][\.])([a-z][a-z0-9\_\.]*[a-z0-9]))$/i;
    //var regEmail=/([a-z0-9][a-z0-9\-]*[a-z0-9])(@)(([a-z0-9][a-z0-9\-]*[a-z0-9][\.])([a-z0-9][a-z0-9\-]*[a-z0-9]))$/i;
    var regEmail=/^[a-z0-9+]+([_\.-][a-z0-9]+)*@([a-z0-9]+([\.-][a-z0-9]+)*)+\.[a-z]{2,}$/;
    return regEmail.test(Trim(email));
}

function GetCharMode(iN)
{
    if (iN >= 48 && iN <= 57) //数字
        //return CharType.Number;
        return 1;
    if (iN >= 65 && iN <= 90) //大写
        //return CharType.Upper;
        return 2;
    if (iN >= 97 && iN <= 122)//小写
        //return CharType.Lower;
        return 3;
    //return CharType.Special;//其他字符
    return 4;
}

function IsEmpty(obj)
{
    if (obj == null)
        return true;
    if (Trim(obj.value) == '')
        return true;
    return false;
}

function ValidatePassword(objpassword)
{
    if (IsEmpty(objpassword))
        return false;
    if (objpassword.value.length < 8)
        return false;    
    
    return true;
}

function GetCharMode(iN)
{
    if (iN >= 48 && iN <= 57) //数字
        //return CharType.Number;
        return 3;
    if (iN >= 65 && iN <= 90) //大写
        //return CharType.Upper;
        return 1;
    if (iN >= 97 && iN <= 122)//小写
        //return CharType.Lower;
        return 2;
    if (iN == 32)
        return 5;//空格
    //return CharType.Special;//其他字符
    return 4;
}

function ValidatePassword2(objpassword)
{
    if (IsEmpty(objpassword))
        return false;

    if (objpassword.value.length < 8)
        return false;    
    
    var upper = false;
    var lower = false;
    var number = false;
    var space = false;
    
    for (i = 0; i < objpassword.value.length; i++)
    {
        if (GetCharMode(objpassword.value.charCodeAt(i)) == CharType.Number)//数字
            number = true;
        if (GetCharMode(objpassword.value.charCodeAt(i)) == CharType.Upper)//大写
            upper = true;
        if (GetCharMode(objpassword.value.charCodeAt(i)) == CharType.Lower)//小写
            lower = true;
        if (GetCharMode(objpassword.value.charCodeAt(i)) == CharType.Space)//Space
            space = true;
    }
    
    if (!number || !(upper || lower))
        return false;
    
    if (space)
        return false;
        
    return true;
           
//    if (!upper || !lower || !number)
//        return false;
//    
//    return true;
}


function ValidateDate(objyear, objmonth, objday)
{
    if (IsEmpty(objyear) || IsEmpty(objmonth) || IsEmpty(objday))
        return false;

    var str = Trim(objyear.value) + '-' + Trim(objmonth.value) + '-' + Trim(objday.value);
    var r = str.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/);
    if(r==null)
        return false; 
    
    var d = new Date(r[1], r[3]-1, r[4]);
    var result = (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]);
    if (!result)
        return false;
    
    if (d.getFullYear() < 1900)
        return false;
    
    var today = new Date();
    if (d > today)
        return false;
    
    return true;
}

function IsNumber(theNum)
{
    if (Trim(theNum) == '')
        return false;
    for (var i = 0; i < theNum.length; i++)
    {
        var oneNum = theNum.substring(i,i+1);
        if (oneNum < '0' || oneNum > '9')
            return false;
    }
    return true;
}

function ValidateDateYear(objyear)
{
    if (IsEmpty(objyear))
        return false;
    
    var year = Trim(objyear.value);
    
    if (!IsNumber(year))
        return false;
       
    if (year < 1900)
        return false;
    
    return true;
}

function ValidateDateMonth(objmonth)
{
    if (IsEmpty(objmonth))
        return false;
    
    var month = Trim(objmonth.value);
    
    if (!IsNumber(month))
        return false;    
       
    if (month < 1)
        return false;
        
    if (month > 12)
        return false;
    
    return true;
}

function ValidateDateDay(objyear,objmonth,objday)
{
    if (IsEmpty(objday))
        return false;
    
    var year = Trim(objyear.value);
    var month = Trim(objmonth.value);
    var day = Trim(objday.value);

    if (!IsNumber(day))
        return false;    
       
    if (day < 1)
        return false;
        
    if (day > 31)
        return false;
        
    var d = new Date(year, month - 1, day);
    
    var result = (d.getFullYear()==year&&(d.getMonth()+1)==month&&d.getDate()==day);
    if (!result)
        return false;
        
    return true;
}

function IsInFeature(objyear,objmonth,objday)
{
    var year = Trim(objyear.value);
    var month = Trim(objmonth.value);
    var day = Trim(objday.value);
    
    var d = new Date(year, month - 1, day);
    
    var today = new Date();
    
    if (d > today)
        return true;
    else
        return false;
}

function ValidatePostalCode(objpostalcode1,objpostalcode2)
{
    if (IsEmpty(objpostalcode1) || IsEmpty(objpostalcode2))
        return false;

    var reg = /^[A-Za-z][0-9][A-Za-z]\s[0-9][A-Za-z][0-9]$/;
    var postalcode = Trim(objpostalcode1.value) + ' ' + Trim(objpostalcode2.value);
    return reg.test(postalcode);
    //return true;
}

function SetLoading(ControlID)
{
    //alert('Set');
    isloading = true;
    document.getElementById("Loading").innerHTML = GetStr(1000);
 try{
    var c = document.getElementById(ControlID)

    if (c != null)
    {
        c.rel = c.href;
        c.href = "javascript:ShowLoadingText();";
    }
    
      }catch(e){}

}

function UnSetLoading(ControlID)
{
    //alert('UnSet');
    isloading = false;
    document.getElementById("Loading").innerHTML = "";
try{
        var c = document.getElementById(ControlID)
        if (c != null)
        {
            c.href = c.rel;
            c.rel = '';
        }
    }catch(e){}
}

 function ValidateDeviceName(e){
    var keynum
    var keychar
    var numcheck
    if(window.event) 
    {
      keynum = e.keyCode
    }
    else 
    if(e.which) 
    {
      keynum = e.which
    }
    keychar = String.fromCharCode(keynum)
    //numcheck =/\@|\"|\[|\^|\\|\/|\:|\*|\?|\<|\>|\||\,|\]|\+|\$|\_|\-|\'/
    numcheck =/\@|\"|\[|\^|\\|\/|\:|\*|\?|\<|\>|\||\,|\]|\+|\$|\_|\-|\'|\!|\#|\%/
    return !numcheck.test(keychar)
}

NS4 = (document.layers) ? true : false;
function checkEnter(event,element)
{     
    var code = 0;
    if (NS4)
        code = event.which;
    else
        code = event.keyCode;

    
    if (code==13)//User Press Enter
     {
         if (isloading)
         {
            ShowLoadingText();
            return;
         }
         if(element.name=='txtlogregemail' || element.name=='txtlogregpassword') //Login Page
         {
            DoLogin('logreg');
         }
         if(element.name=='txtlogfailemail' || element.name=='txtlogfailpassword') //Login Failed Page
         {
            DoLogin('logfail');
         }
         if(element.name=='txtforgotpwdemail') //Forgot Password Flow 1
         {
            //DoForgotPwd1();
         }
         if(element.name=='txtforgotpwdmonth' || element.name=='txtforgotpwddate'
            || element.name=='txtforgotpwdyear' || element.name=='txtreg3postalcode') //Forgot Password Flow 2
         {
            //alert('DoForgotPwd2');
            //DoForgotPwd2();
            
         }
         if(element.name=='txtreg1Screenname' || element.name=='txtreg1FirstName'
            || element.name=='txtreg1LastName') //Registration Flow 1
         {
            //alert('GotoFlow2');
           // GotoFlow2();
           GotoRegister2();
         }
         if(element.name=='txtreg2EmailAddress' || element.name=='txtreg2Password'
            || element.name=='txtreg2ConfirmPassword') //Registration Flow 2
         {
            //alert('GotoFlow3');
          //  GotoFlow3();
          GotoRegister2();
          
         }
         if(element.name=='txtreg5Lastname' || element.name=='txtreg5Number'
            || element.name=='txtreg5Number2' || element.name=='txtreg5Number2')
        {
         GotoRegister5();
        }         
         if(element.name=='txtreg3month' || element.name=='txtreg3date'
            || element.name=='txtreg3year' || element.name=='txtreg3postalcode1'|| element.name=='txtreg3postalcode2') //Registration Flow 3
         {
            //alert('GotoFlowComplete');
          //  GotoFlowComplete();
          GotoRegister3();
         }
         if(element.name=='changepwdoldpwd' || element.name=='changepwdpwd1'
            || element.name=='changepwdpwd2') //Change Password
         {
            //alert('DoChangePwd');
            DoChangePwd();
         }
     }
}

function ShowLoadingText()
{
    alert(GetStr(1003));
}


function MoveFocus( strSrcId, strDestId, nLength)
{
    if( document.getElementById(strSrcId).value.length >= nLength )
        document.getElementById(strDestId).focus();
}

function ShowDownload()
{
 if(proxies.ProxyService.SessionTimeOut())
  {
    alert(GetStr(2503));
    DoLogout();
    return ;
  }
    var regBody = $$('.myVideoPlayPanelOn')[0];
    if (regBody.visible()) 
        return;

    DisableButton();
    var ajax = new AJAX( GetAbsoluteUrl("/RegisterComplete.aspx") );
    ajax.SetCallbackFun(_GetDownloadPageCallback);
    
    ajax.Send(null);
}

function _GetDownloadPageCallback(ajax)
{
    var objDOM = ajax.GetXmlDoc();
    
    //alert(objDOM.selectSingleNode("//xmlRoot/html").text);
    //document.getElementById("VideoPlayPanelOn").innerHTML = objDOM.selectSingleNode("//xmlRoot/html").text;
    var start = "<div><div class=\"regWrapper\"><div class=\"carouselBody\"><div class=\"carouselContainer\"><div id=\"RegistrationComplete\">";
    var end = "</div></div></div></div></div>";
    $$('.myVideoPlayPanelOn')[0].innerHTML = start + objDOM.selectSingleNode("//xmlRoot/html").text + end;
    //alert($$('.myVideoPlayPanelOn')[0].innerHTML);
    toggleReg(true);
    
    setTimeout ('EnableButton()',1000);
}


