﻿
var switchInterval = 2000;
var initInterval = 100;
var imgCellsCount = 4;
var imgRowsCount = 4;
//var imgIdPrefix = prefix + "scrimg_";
var imgIdPrefix = "scrimg_";
var embedIndex = 0;

function setOpacity(_eid, _value) {
    var elem = document.getElementById(_eid);
    
    elem.style.opacity = _value/10; //mozzila
    elem.style.filter = 'alpha(opacity=' + _value*10 + ')'; //explorer
 }
  
 function fadeIn(id,index) {
   var elid = id + "_" + index;
   // turning off remaining 2
   for (var i = 0; i < 3; i++) {
     if (i != index) {                  
       document.getElementById(id + "_" + i).style.display = "none";
     }
   }
           
   // turn on 
   document.getElementById(elid).style.display = "";
   setOpacity(elid,1);  
   for (var i = 1; i <= 20; i++) {
        setTimeout("setOpacity('" + elid + "', " + i/2 + ")", i*50);
    }
 }
 
 function fadeOut(elid) {
    for (var i = 10; i >= 0; i--) {
        setTimeout('setOpacity(\''+elid+'\', '+i+')', (10-i)*50);
    }   
    
    setTimeout('hideIt(\''+elid+'\')', 550);         
 }

 function hideIt(elid) {
	document.getElementById(elid).style.display = "none"; 
 }

function CrossFade(id,old_index,new_index) {
  // fade out id1, and than fade in id2
  fadeOut(id + "_" + old_index);
  setTimeout("fadeIn('" + id + "'," +   new_index + ");",560); 
}

function ClearCell(id) {
  for (var i = 0; i < 3; i++) {
    document.getElementById(id + "_" + i).style.display = "none";
  }
}

function SwitchScr(id, index) {
  // find old index
  var old_index = 0;
  for (var i = 0; i<3;i++) {
    if (i != index) {                  
        if ( document.getElementById(id + "_" + i).style.display != "none") {                 
            old_index = i;                        
        }
    }
  }  
  
  if (old_index == index) {
     // choose new index
     index = (old_index + 1) % 3;
  }
  
  SetImgUrl(id + "_" + index);    
  CrossFade(id,old_index,index);     
}

function SwitchPicture() {
   var i = Math.floor(Math.random() * imgRowsCount);
   var j = Math.floor(Math.random() * imgCellsCount);
   var k = Math.floor(Math.random() * 3);
   var id = imgIdPrefix + i + "_" + j;
   SwitchScr(id, k);
}

function SwitchPictures(count) {
    for (var i = 0; i < count; i++) {
         SwitchPicture();
    }   
    var newCount =  Math.floor(Math.random() * 5);
    setTimeout("SwitchPictures(" + newCount + ")", switchInterval);
}

function StartScrShow() {
    setTimeout("InitImages()", initInterval);
    setTimeout("SwitchPictures(7)", switchInterval);
}

function InitImages() {
   // show defaults
   for (var i = 0; i < imgRowsCount; i++) {
     for (var j = 0; j < imgCellsCount; j++) {
         var id = imgIdPrefix + i + "_" + j + "_0";   // todo make common function 
         SetImgUrl(id);
         document.getElementById(id).style.display = "";
     }
   }   
}

function SetImgUrl(id) {
  var img = document.getElementById(id);
  if (img.src == "") {
     img.src = img.getAttribute("imgurl");
  }  
}

// embeding flash into page
function GenSWFHTML(swfSrc,flashvars,width,height) {   
   embedIndex++;
   return '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="embed' + embedIndex  + '" width="' + width + '" ' +
    'height="' + height + '" codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab">' +
    '<param name="movie" value="' + swfSrc + '" />' +
    '<param name="quality" value="high" />' +
    '<param name="bgcolor" value="#ffffff" />' +
    '<param name="allowScriptAccess" value="sameDomain" />' +
    '<param name="wmode" value="opaque">' +
    '<param name="flashvars" value="' + flashvars + '" />' +
    '<embed src="' + swfSrc + '" quality="high" bgcolor="#ffffff" width="' + width + '" height="' + height + '" ' +
    'name="AncLaunch" align="middle" play="true" loop="false" quality="high" allowscriptaccess="sameDomain" wmode="opaque" ' +
    'flashvars="' + flashvars + '" ' +
    'type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer"></embed></object>';
}

/* main checking methods */
function CheckTellView(_clientClick) {
    var name = document.getElementById(prefix + "TextName");
    var nameError = document.getElementById(prefix + "LabelNameError"); 
    
    var email = document.getElementById(prefix + "TextEmail");
    var emailError = document.getElementById(prefix + "LabelEmailError");   
    
    var emailFriend = document.getElementById(prefix + "TextEmailFriend");
    var emailFriendError = document.getElementById(prefix + "LabelEmailFriendError");   
    
    /* ked mazem textboxy z dola hore musim inicializovat secko naraz na prazdne stringy aby mi neostavala predchadzajuca hlaska */
    nameError.innerHTML = "";
    emailError.innerHTML = "";
    emailFriendError.innerHTML = "";
    
    if (name.value.length < 2 || name.value.length > 50) {
        if (_clientClick) {
            name.focus();
        }
        nameError.innerHTML = "Required between 2 - 50 chars";
        return false;
    }
    
    // sme sa dohodli ze email je nepovinny
    if(email.value.length != 0){
        if(!CheckEmail(email, emailError, _clientClick)){  
		    return false;
        }
    }
    
    if(!CheckEmail(emailFriend, emailFriendError, _clientClick)){  
		return false;
    }
    // TODO: CodeNumberTextBox?
    
    return true;
}

function CheckForgottenPasswd(_clientClick) {
    var nicknameElem = document.getElementById(prefix + "TextNickname");
    var nicknameErrorElem = document.getElementById(prefix + "LabelNicknameError");
    
    nicknameErrorElem.innerHTML = "";
    
    if(!CheckNickname(nicknameElem, nicknameErrorElem, _clientClick)) {
        return false;
    }
    
    // TODO: CodeNumberTextBox?
    
    return true;
}

function CheckPasswdRenewal(_clientClick) {
    var newPasswdElem = document.getElementById(prefix + "TextNewPasswd");
    var newPasswdErrorElem = document.getElementById(prefix + "LabelNewPasswdError");
    
    var confirmPasswdElem = document.getElementById(prefix + "TextConfirmPasswd");
    var confirmPasswdErrorElem = document.getElementById(prefix + "LabelConfirmPasswdError");
    
    newPasswdErrorElem.innerHTML = "";
    confirmPasswdErrorElem.innerHTML = "";
    
    if (!CheckPassword(newPasswdElem, newPasswdErrorElem, _clientClick)) {
        return false;
    }
    
    if (!CheckPassword(confirmPasswdElem, confirmPasswdErrorElem, _clientClick)) {
        return false;
    }
    
    if (!CheckConfirmPassword(confirmPasswdElem, newPasswdElem, confirmPasswdErrorElem, _clientClick)) {
        return false;
    }
    
    return true;
}

function ShowEmailError() {
  alert("User account with this email address already exists. Please use a different one.");  
}

function ShowNicknameError() {
  alert("Nickname already exists. Please enter a different one."); //TODO move to client 
}

function ShowWhiteSpaceError() {
  alert("Whitespaces in the nickname are not allowed. Please enter a different one."); //TODO move to client 
}

function CheckRegisterView(_clientClick, prefix)
{ 
    var nickname = document.getElementById(prefix + "TextNickName");
    if (nickname == null) {
       return; // bad screen
    }
    var password = document.getElementById(prefix + "TextPassword");
    var confirmPassword = document.getElementById(prefix + "TextConfirmPassword");
    var email = document.getElementById(prefix + "TextEmail");    
    var license = document.getElementById(prefix + "CheckBoxAgree");
         
    var licenseError = document.getElementById(prefix + "LabelLicenseError");                 
    licenseError.innerHTML = "";
    
    
    //nicknameError.innerHTML = "l";return;
    if(!CheckNickname(nickname, licenseError, _clientClick)){  
        return false;
    }
     
    if(!CheckPassword(password, licenseError, _clientClick)){
        return false;
    }                      
       
    if(!CheckConfirmPassword(confirmPassword, password, licenseError, _clientClick)){
        return false;        
    }
       
    if(!CheckEmail(email, licenseError, _clientClick)){  
		return false;
    }       
    
    if(!license.checked){        
        licenseError.innerHTML = "You have to agreee with the Terms of Use and Privacy policy";
        return false;
    }
        
    return true;
}

function CheckBasicProfileConfirm(_clientClick, prefix)
{ 
    var pwdrow = document.getElementById("passwordrow");
    var oldPassword = document.getElementById(prefix + "TextBoxProfileConfirmOldPassword");
    var password = document.getElementById(prefix + "TextBoxProfileConfirmNewPassword");
    var confirmPassword = document.getElementById(prefix + "TextBoxProfileConfirmPasswordConfirm");
    var email = document.getElementById(prefix + "TextBoxProfileConfirmEmail");
      
    var oldPasswordError = document.getElementById(prefix + "LabelConfirmOldPasswordError");
    var passwordError = document.getElementById(prefix + "LabelConfirmNewPasswordError"); 
    var confirmPasswordError = document.getElementById(prefix + "LabelConfirmPasswordConfirmError");  
    var emailError = document.getElementById(prefix + "LabelConfirmEmailError");    
            
    /* ked mazem textboxy z dola hore musim inicializovat secko naraz na prazdne stringy aby mi neostavala predchadzajuca hlaska */
    oldPasswordError.innerHTML = "";
    passwordError.innerHTML = "";
    confirmPasswordError.innerHTML = "";  
    emailError.innerHTML = "";
   
    if(pwdrow == null){
        if(!CheckPassword(oldPassword, oldPasswordError, _clientClick)){
            return false;
        }
         
        if(!CheckPassword(password, passwordError, _clientClick)){
            return false;
        }
        
        if(!CheckConfirmPassword(confirmPassword, password, confirmPasswordError, _clientClick)){
            return false;
        }
    }
    
    if(!CheckEmail(email, emailError, _clientClick)){  
		return false;
    }
        
    return true;
}

/* helper checking methods */
function GeneralRegexCheck(_pattern, _input) {
    return _pattern.test(_input);
}

function CheckEmail(_elemEmail, _elemEmailError, _clientClick){    
    var pattern=/^.+@.+\.[a-zA-Z0-9]{2,5}$/;
    
    if(!GeneralRegexCheck(pattern, _elemEmail.value)){
        if(_clientClick){
            _elemEmail.focus();
        }
        _elemEmailError.innerHTML = "Required valid email";
        return false;        
    }
    return true;
}

function CheckNickname(_elemNickname, _elemNicknameError, _clientClick) {
    var nicknameRegex = new RegExp("^\\w{4,10}$");
    var match = nicknameRegex.exec(_elemNickname.value);
    if (match) {
        return true;
    } else {
        if(_clientClick){
            _elemNickname.focus();
        }
        _elemNicknameError.innerHTML = "Nickname has to be an alphanumeric string without whitespaces (4-10 letters)";
        return false;
    }
}

function CheckPassword(_elemPassword, _elemPasswordError, _clientClick) {
    // TODO: zvacsit minimalnu dlzku hesla na aspon 6 znakov, plus horne ohranicenie mozno ani netreba
    var passwdRegex = new RegExp("^\\w{4,32}$");
    var match = passwdRegex.exec(_elemPassword.value);
    if (match) {     
        return true;
    } else {     
        if (_clientClick) {
            _elemPassword.focus();
        }
        _elemPasswordError.innerHTML = "Password has to be an alphanumeric string (4-32 letters)";
        return false;
    }
}

function CheckConfirmPassword(_elemConfirmPassword, _elemPassword, _elemConfirmPasswordError, _clientClick){
    if (_elemConfirmPassword.value != _elemPassword.value) {     
        if (_clientClick) {
            _elemConfirmPassword.focus();
        }
        _elemConfirmPasswordError.innerHTML = "Passwords must match";        
        return false; 
    }
    return true;
}

function CheckFirstname(_elemFirstname, _elemFirstnameError, _clientClick){
    if(_elemFirstname.value.length > 20){
        if(_clientClick){
            _elemFirstname.focus();
        }
        _elemFirstnameError.innerHTML = "Required between 0 - 20 chars";
        return false;
    }  
    return true;
}

function CheckLastname(_elemLastname, _elemLastnameError, _clientClick){
    if(_elemLastname.value.length > 30){
        if(_clientClick){
            _elemLastname.focus();
        }
        _elemLastnameError.innerHTML = "Required between 0 - 30 chars";
        return false;
    } 
    return true;
}

function CheckBorn(_elemYear, _elemMonth, _elemDay, _elemBornError){
    if(_elemDay.value == 0  || _elemMonth.value == 0 || _elemYear.value == 0){
        if(_elemDay.value == 0 && _elemMonth.value == 0 && _elemYear.value == 0){
        } else{
            _elemBornError.innerHTML = "Required valid date";        
            return false;
        }
    }
    return true;
}
