﻿//---------------------------------------------------------------------------------------------------------
//INITIAL VALUES
//---------------------------------------------------------------------------------------------------------
var selectedRow = null;
var selectedElem = null;
var Validateonblur=false;

//---------------------------------------------------------------------------------------------------------
//IFRAME COMMUNICATION
//---------------------------------------------------------------------------------------------------------

//function UpdateThumbnailField(thumbnailPath)
//{
//    getElement(ThumbnailPathId).value = thumbnailPath;
//}

//---------------------------------------------------------------------------------------------------------
//SCREEN MANAGEMENT
//---------------------------------------------------------------------------------------------------------
function onmouseoverRow(elemId)
{
    return;
    var selectedElement = eval(elemId)
    var infoPanel = getElement(selectedElement.InfoMessage);
    var offsetParent = getElement(selectedElement.ElementId);
            
    var positions = Position.cumulativeOffset(offsetParent);
    
    infoPanel.style.left = positions[0] + 420 + "px";
    infoPanel.style.top = positions[1] - 3 + "px";
    infoPanel.style.display = 'block';
}
  
function onmouseoutRow(elemId)
{
    var selectedElement = eval(elemId);
    if(selectedElem==selectedElement)
        return;
    getElement(selectedElement.InfoMessage).style.display= 'none';
}
     
function selectRow(elemId)
{
    if(selectedElem != null)
    {
        if(selectedElem==eval(elemId))
            return;
//        getElement(selectedElem.ElementId).style.backgroundImage = "";
        getElement(selectedElem.InfoMessage).style.display = 'none';
    }
    
    selectedElem = eval(elemId);
    
    var offsetParent    = getElement(selectedElem.ElementId);
    var positions       = Position.cumulativeOffset(offsetParent);
    var infoPanel       = getElement(selectedElem.InfoMessage);;
    
    infoPanel.style.left    = positions[0] + 420 + "px";
    infoPanel.style.top     = positions[1] - 3 + "px";
    
//    getElement(selectedElem.ElementId).style.backgroundImage = "url('/aniboom/images/FormElementPanelBg.png')";
    Effect.Grow(selectedElem.InfoMessage, {duration: 0.2});
    infoPanel.className = "formElement-informationPanel-checked";

//    if (elemId == 'formElementIcon')
//    {
//        getElement(selectedElem.ElementId).style.backgroundImage = "";
//    }
}

//---------------------------------------------------------------------------------------------------------
// FORM ELEMENTS
//---------------------------------------------------------------------------------------------------------

//SongName
var formElementSongName = 
{
    ElementId: "SongNamePanel",
    ErrorMessagePanel: "SongNameErrorMsgBox",
    InfoMessage: "SongNameInfoBox",
    TextBox: "",
    Label: "SongNameLabel",
    IsEligibleForValidation: true,

    ValidationFunction: function()
    {
       if(!this.IsEligibleForValidation) {return;}
       formElementSongName.Valid = (formElementSongName.TextBox.value != "0");
       if(!formElementSongName.Valid)
       {
          getElement(formElementSongName.ErrorMessagePanel).style.display="block";
          getElement(formElementSongName.TextBox).className = "formElement-field-input-Error";
       }
       else
       {
          getElement(formElementSongName.ErrorMessagePanel).style.display="none";
          getElement(formElementSongName.TextBox).className = "formElement-field-input";
       }  
       return formElementSongName.Valid
    }
}


// Title 
var formElementTitle = 
{
    ElementId: "TitlePanel",
    ErrorMessagePanel: "TitleErrorMsgBox",
    InfoMessage: "TitleInfoBox",
    TextBox: "",
    Label: "TitleLabel",
    IsEligibleForValidation: true,

    ValidationFunction: function()
    {

       if(!this.IsEligibleForValidation) {return;}
       
       var infoPanel = $("#" + formElementTitle.TextBox).parent().parent().next();
       var msgPanel = infoPanel.next();
       var msgError = msgPanel.children().children(".errorText");
       
       formElementTitle.Valid = (LengthValidation(getElementF(formElementTitle.TextBox),1,50) && IsValidText(getElementF(formElementTitle.TextBox)));
       if(!formElementTitle.Valid)
       {
            
          //getElement(formElementTitle.ErrorMessagePanel).style.display="block";
          msgPanel.addClass("formElement-MessagePanelError");
          infoPanel.addClass("formElement-informationPanelError");
          infoPanel.removeClass("formElement-informationPanelOK");
          msgError.show();
          //getElement(formElementTitle.TextBox).className = "formElement-field-input-Error";
       }
       else
       {
//          getElement(formElementTitle.ErrorMessagePanel).style.display="none";
//          getElement(formElementTitle.TextBox).className = "formElement-field-input";
            msgPanel.removeClass("formElement-MessagePanelError");
            infoPanel.removeClass("formElement-informationPanelError");
            infoPanel.addClass("formElement-informationPanelOK");
            msgError.hide();
       }  
       return formElementTitle.Valid
    }
}

// Animator
var formElementAnimator = 
{
    ElementId: "AnimatorPanel",
    ErrorMessagePanel: "AnimatorErrorMsgBox",
    InfoMessage: "AnimatorInfoBox",
    TextBox: "",
    Label: "AnimatorLabel",
    IsEligibleForValidation: false
//    ValidationFunction: function() {}
}

//Synopsis
var formElementSynopsis = 
{

    ElementId: "SynopsisPanel",
    ErrorMessagePanel: "SynopsisErrorMsgBox",
    InfoMessage: "SynopsisInfoBox",
    TextBox: "",
    Label: "SynopsisLabel",
    IsEligibleForValidation: true,

    ValidationFunction: function()
    {
       if(!this.IsEligibleForValidation) {return;}
       
       var infoPanel = $("#" + formElementSynopsis.TextBox).parent().parent().next();
       var msgPanel = infoPanel.next();
       var msgError = msgPanel.children().children(".errorText");
       
       
       formElementSynopsis.Valid = (LengthValidation(getElementF(formElementSynopsis.TextBox),1,300) && IsValidTextSynopsis(getElementF(formElementSynopsis.TextBox)));
       if(!formElementSynopsis.Valid)
       {
//          getElement(formElementSynopsis.ErrorMessagePanel).style.display="block";
//          getElement(formElementSynopsis.TextBox).className = "formElement-field-input2-Error";
            msgPanel.addClass("formElement-MessagePanelError");
            infoPanel.addClass("formElement-informationPanelError");
            infoPanel.removeClass("formElement-informationPanelOK");
            msgError.show();
            //getElement(formElementTitle.TextBox).className = "formElement-field-input-Error";
       }
       else
       {
//          getElement(formElementTitle.ErrorMessagePanel).style.display="none";
//          getElement(formElementTitle.TextBox).className = "formElement-field-input";
            msgPanel.removeClass("formElement-MessagePanelError");
            infoPanel.removeClass("formElement-informationPanelError");
            infoPanel.addClass("formElement-informationPanelOK");
            msgError.hide();
            
//          getElement(formElementSynopsis.ErrorMessagePanel).style.display="none";
//          getElement(formElementSynopsis.TextBox).className = "formElement-field-input2";
       }  
       return formElementSynopsis.Valid
    }
}

//Category
var formElementCategory = 
{
    ElementId: "CategoryPanel",
    ErrorMessagePanel: "CategoryErrorMsgBox",
    InfoMessage: "CategoryInfoBox",
    DropDownList: "",
    Label: "CategoryLabel",
    IsEligibleForValidation: false,

    ValidationFunction: function()
    {
       if(!this.IsEligibleForValidation) {return;}
       formElementCategory.Valid = true;
       if(!formElementCategory.Valid)
       {
          getElement(formElementCategory.ErrorMessagePanel).style.display="block";
          getElement(formElementCategory.DropDownList).className = "formElement-field-input-Error";
       }
       else
       {
          getElement(formElementCategory.ErrorMessagePanel).style.display="none";
          getElement(formElementCategory.DropDownList).className = "formElement-field-input";
       }  
       return formElementCategory.Valid
    }
}

//Tags
var formElementTags = 
{
    ElementId: "TagsPanel",
    ErrorMessagePanel: "TagsErrorMsgBox",
    InfoMessage: "TagsInfoBox",
    TextBox: "",
    Label: "TagsLabel",
    IsEligibleForValidation: true,

    ValidationFunction: function()
    {
       if(!this.IsEligibleForValidation) {return;}
       
       var infoPanel = $("#" + formElementTags.TextBox).parent().parent().next();
       var msgPanel = infoPanel.next();
       var msgError = msgPanel.children().children(".errorText");
       
       
       
       formElementTags.Valid = LengthValidation(getElementF(formElementTags.TextBox),0,500);
       if(!formElementTags.Valid)
       {
//          getElement(formElementTags.ErrorMessagePanel).style.display="block";
//          getElement(formElementTags.TextBox).className = "formElement-field-input-Error";
            msgPanel.addClass("formElement-MessagePanelError");
            infoPanel.addClass("formElement-informationPanelError");
            infoPanel.removeClass("formElement-informationPanelOK");
            msgError.show();
       }
       else
       {
            msgPanel.removeClass("formElement-MessagePanelError");
            infoPanel.removeClass("formElement-informationPanelError");
            //infoPanel.addClass("formElement-informationPanelOK");
            msgError.hide();
            
       }  
       return formElementTags.Valid
    }
}



//Soft Used
var formElementSoftUsed = 
{
    TextBox: "",
    IsEligibleForValidation: true,

    ValidationFunction: function()
    {
       if(!this.IsEligibleForValidation) {return;}
       var infoPanel = $("#" + this.TextBox).parent().parent().next();
       var msgPanel = infoPanel.next();
       var msgError = msgPanel.children().children(".errorText");
       
       this.Valid = LengthValidation(getElementF(this.TextBox),0,200);
       if(!this.Valid)
       {
            msgPanel.addClass("formElement-MessagePanelError");
            infoPanel.addClass("formElement-informationPanelError");
            infoPanel.removeClass("formElement-informationPanelOK");
            msgError.show();
       }
       else
       {
            msgPanel.removeClass("formElement-MessagePanelError");
            infoPanel.removeClass("formElement-informationPanelError");
            msgError.hide();            
       }  
       return this.Valid
    }
}


//Festivals Entered
var formElementFestivalsEntered = 
{
    TextBox: "",
    IsEligibleForValidation: true,

    ValidationFunction: function()
    {
       if(!this.IsEligibleForValidation) {return;}
       
       var infoPanel = $("#" + this.TextBox).parent().parent().next();
       var msgPanel = infoPanel.next();
       var msgError = msgPanel.children().children(".errorText");
       
       this.Valid = LengthValidation(getElementF(this.TextBox),0,300);
       if(!this.Valid)
       {
            msgPanel.addClass("formElement-MessagePanelError");
            infoPanel.addClass("formElement-informationPanelError");
            infoPanel.removeClass("formElement-informationPanelOK");
            msgError.show();
       }
       else
       {
            msgPanel.removeClass("formElement-MessagePanelError");
            infoPanel.removeClass("formElement-informationPanelError");
            msgError.hide();            
       }  
       return this.Valid
    }
}


//Awards Won
var formElementAwardsWon = 
{
    TextBox: "",
    IsEligibleForValidation: true,

    ValidationFunction: function()
    {
       if(!this.IsEligibleForValidation) {return;}
       
       var infoPanel = $("#" + this.TextBox).parent().parent().next();
       var msgPanel = infoPanel.next();
       var msgError = msgPanel.children().children(".errorText");
       
       this.Valid = LengthValidation(getElementF(this.TextBox),0,400);
       if(!this.Valid)
       {
            msgPanel.addClass("formElement-MessagePanelError");
            infoPanel.addClass("formElement-informationPanelError");
            infoPanel.removeClass("formElement-informationPanelOK");
            msgError.show();
       }
       else
       {
            msgPanel.removeClass("formElement-MessagePanelError");
            infoPanel.removeClass("formElement-informationPanelError");
            msgError.hide();            
       }  
       return this.Valid
    }
}



//Release Date
var formElementReleaseDate = 
{
    ElementId: "ReleaseDatePanel",
    ErrorMessagePanel: "ReleaseDateErrorMsgBox",
    InfoMessage: "ReleaseDateInfoBox",
    TextBox: "",
    Label: "ReleaseDateLabel",
    IsEligibleForValidation: true,

    ValidationFunction: function()
    {
       if(!this.IsEligibleForValidation) {return;}
       
       var infoPanel = $("#" + this.TextBox).parent().parent().next();
       var msgPanel = infoPanel.next();
       var msgError = msgPanel.children().children(".errorText");
       
       var val = getElementF(formElementReleaseDate.TextBox);
       if (val == "")
       {
            formElementReleaseDate.Valid = true;
            return formElementReleaseDate.Valid 
       }
       
       formElementReleaseDate.Valid = (LengthValidation(val,4,4) && IsInteger(val));
       
       if (formElementReleaseDate.Valid)
            formElementReleaseDate.Valid = (val >= 1937 && val <= ((new Date()).getFullYear() +1));
            
       if(!formElementReleaseDate.Valid)
       {
            msgPanel.addClass("formElement-MessagePanelError");
            infoPanel.addClass("formElement-informationPanelError");
            infoPanel.removeClass("formElement-informationPanelOK");
            msgError.show();
       }
       else
       {
            
            msgPanel.removeClass("formElement-MessagePanelError");
            infoPanel.removeClass("formElement-informationPanelError");
            msgError.hide();  
       }  
       return formElementReleaseDate.Valid
    }
}

//Language
var formElementLanguage = 
{
    ElementId: "LanguagePanel",
    ErrorMessagePanel: "LanguageErrorMsgBox",
    InfoMessage: "LanguageInfoBox",
    DropDownList: "",
    Label: "LanguageLabel",
    IsEligibleForValidation: false,

    ValidationFunction: function()
    {
       if(!this.IsEligibleForValidation) {return;}
       formElementLanguage.Valid = true
       if(!formElementLanguage.Valid)
       {
          getElement(formElementLanguage.ErrorMessagePanel).style.display="block";
          getElement(formElementLanguage.DropDownList).className = "formElement-field-input-Error";
       }
       else
       {
          getElement(formElementLanguage.ErrorMessagePanel).style.display="none";
          getElement(formElementLanguage.DropDownList).className = "formElement-field-input";
       }  
       return formElementLanguage.Valid
    }
}

//English Subtitles
var formElementEnglishSubs = 
{
    ElementId: "EnglishSubsPanel",
    ErrorMessagePanel: "EnglishSubsErrorMsgBox",
    InfoMessage: "EnglishSubsInfoBox",
    CheckBox: "",
    Label: "EnglishSubsLabel",
    IsEligibleForValidation: false,

    ValidationFunction: function()
    {
       if(!this.IsEligibleForValidation) {return;}
       formElementEnglishSubs.Valid = true 
       if(!formElementEnglishSubs.Valid)
       {
          getElement(formElementEnglishSubs.ErrorMessagePanel).style.display="block";
       }
       else
       {
          getElement(formElementEnglishSubs.ErrorMessagePanel).style.display="none";
       }  
       return formElementEnglishSubs.Valid
    }
}

//Festivals
var formElementFestivals = 
{
    ElementId: "FestivalsPanel",
    ErrorMessagePanel: "FestivalsErrorMsgBox",
    InfoMessage: "FestivalsInfoBox",
    TextBox: "",
    Label:"FestivalsLabel",
    IsEligibleForValidation: true,

    ValidationFunction: function()
    {
       if(!this.IsEligibleForValidation) {return;}
       formElementFestivals.Valid = LengthValidation(getElementF(formElementFestivals.TextBox),0,300);
       if(!formElementFestivals.Valid)
       {
          getElement(formElementFestivals.ErrorMessagePanel).style.display="block";
          getElement(formElementFestivals.TextBox).className = "formElement-field-input2-Error";
       }
       else
       {
          getElement(formElementFestivals.ErrorMessagePanel).style.display="none";
          getElement(formElementFestivals.TextBox).className = "formElement-field-input2";
       }  
       return formElementFestivals.Valid
    }
}

//Adult Content
var formElementAdultContent = 
{
    ElementId: "AdultContentPanel",
    ErrorMessagePanel: "AdultContentErrorMsgBox",
    InfoMessage: "AdultContentInfoBox",
    CheckBox: "",
    Label: "AdultContentLabel",
    IsEligibleForValidation: false,

    ValidationFunction: function()
    {
       if(!this.IsEligibleForValidation) {return;}
       formElementAdultContent.Valid = true 
       if(!formElementAdultContent.Valid)
       {
          getElement(formElementAdultContent.ErrorMessagePanel).style.display="block";
       }
       else
       {
          getElement(formElementAdultContent.ErrorMessagePanel).style.display="none";
       }  
       return formElementAdultContent.Valid
    }
}

// Contract
//var formElementContract = 
//{
//    ElementId: "ContractPanel",
//    ErrorMessagePanel: "ContractErrorMsgBox",
//    InfoMessage: "ContractInfoBox",
//    TextBox: "",
//    Label: "ContractLabel",
//    IsEligibleForValidation: false,

//    ValidationFunction: function()
//    {
//       if(!this.IsEligibleForValidation) {return;}
//       formElementContract.Valid = (LengthValidation(getElementF(formElementContract.TextBox),1,10) && IsInteger(getElementF(formElementContract.TextBox)));
//       if(!formElementContract.Valid)
//       {
//          getElement(formElementContract.ErrorMessagePanel).style.display="block";
//          getElement(formElementContract.TextBox).className = "formElement-field-input-Error";
//       }
//       else
//       {
//          getElement(formElementContract.ErrorMessagePanel).style.display="none";
//          getElement(formElementContract.TextBox).className = "formElement-field-input";
//       }  
//       return formElementContract.Valid
//    }
//}

//---------------------------------------------------------------------------------------------------------
// FORM ELEMENTS COLLECTION
//---------------------------------------------------------------------------------------------------------

function formElements()
{
    this.Items = new Array();
    this.Count=this.Items.length;
        
    this.AddElement = function(elem){
                                        this.Items[this.Items.length] = elem; this.Count++;
                                    }
        
    this.GetElementByName = function(elemName)
    {
        for(i=0;i<this.Items.length;i++)
        {
            if(this.Items[i].Id==elemName)
            {
                return this.Items[i];
            }    
        }
    }
}

//---------------------------------------------------------------------------------------------------------
// CLIENT SIDE VALIDATION FUNCTIONS
//---------------------------------------------------------------------------------------------------------

function LengthValidation(inputValue,minLength,maxLength)
{
    var length = inputValue.replace(/^\s+|\s+$/g,"").length;    
    if(length < minLength || length > maxLength)
    {
        return false;
    }
    return true;
}

function IsEmpty(str)
{
    var length = str.replace(/^\s+|\s+$/g,"").length;
    return (length==0);
}

function ValidateDate(minDate, maxDate, dateInput)
{
    return true;
}

function IsInteger(sText)
{
   var ValidChars = "0123456789";
   var Valid = true;
   var Char;

   var k;
   for (k = 0; k < sText.length && Valid == true; k++) 
   { 
      Char = sText.charAt(k); 
      if (ValidChars.indexOf(Char) == -1) 
      {
        Valid = false;
      }
   }
   return Valid;
}

function HasValidCharsInText(sText)
{
   var InValidChars = "~`@^+=<>'|";
   var Valid = true;
   var Char;

   var k;
   for (k = 0; k < sText.length && Valid == true; k++) 
   { 
      Char = sText.charAt(k); 
      if (InValidChars.indexOf(Char) != -1) 
      {
        Valid = false;
      }
   }
   return Valid;
}

function IsValidText(sText)
{
   var HasInvalidChars = HasValidCharsInText(sText);
   var ValidChars = "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890,.-_";
   var Valid = false;

   var Char;
   var k;
   for (k = 0; k < sText.length && Valid == false; k++) 
   { 
      Char = sText.charAt(k); 
      if (ValidChars.indexOf(Char) != -1) 
      {
        Valid = true;
      }
   }
   return (Valid && HasInvalidChars);

}

function HasValidCharsInTextSynopsis(sText) {
    var InValidChars = "~`@^+=<>|";
    var Valid = true;
    var Char;

    var k;
    for (k = 0; k < sText.length && Valid == true; k++) {
        Char = sText.charAt(k);
        if (InValidChars.indexOf(Char) != -1) {
            Valid = false;
        }
    }
    return Valid;
}

function IsValidTextSynopsis(sText) {
    var HasInvalidChars = HasValidCharsInTextSynopsis(sText);
    var ValidChars = "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890,.\'-_";
    var Valid = false;

    var Char;
    var k;
    for (k = 0; k < sText.length && Valid == false; k++) {
        Char = sText.charAt(k);
        if (ValidChars.indexOf(Char) != -1) {
            Valid = true;
        }
    }
    return (Valid && HasInvalidChars);
}

function IsValidImageFile(input)
{
    var Valid = false;
    extArray = new Array(".gif", ".jpg", ".png");

    if (!input)
    {
        return true;
    }
    while (input.indexOf("\\") != -1)
    {
        input = input.slice(input.indexOf("\\") + 1);
    }
    ext = input.slice(input.indexOf(".")).toLowerCase();
    for (var i = 0; i < extArray.length; i++)
    {
        if (extArray[i] == ext)
        { 
          Valid = true;
          break;
        }
    }
    return Valid;
}

//---------------------------------------------------------------------------------------------------------
// CLIENT FORM VALIDATION FUNCTIONS
//---------------------------------------------------------------------------------------------------------


function initValidation()
{
    formElementTitle.TextBox = txtTitleId;
    formElementSynopsis.TextBox = txtSynopsisId;
    formElementTags.TextBox = txtTagsId;
    formElementReleaseDate.TextBox = txtReleaseDateId;
    formElementLanguage.DropDownList = ddlLanguageId;
    formElementEnglishSubs.CheckBox = chkEnglishSubsId;
    formElementAdultContent.CheckBox = chkAdultContentId;
    formElementSoftUsed.TextBox = txtSoftUsedId;
    formElementFestivalsEntered.TextBox = txtFestivalsEnteredId;
    formElementAwardsWon.TextBox = txtAwardsWonId;    
}

function ValidateForm(type)
{
    var formElementsCollection = new formElements();

    formElementsCollection.AddElement(formElementTitle);
    formElementsCollection.AddElement(formElementSynopsis);
    formElementsCollection.AddElement(formElementTags);
    formElementsCollection.AddElement(formElementSoftUsed);
    formElementsCollection.AddElement(formElementFestivalsEntered);
    formElementsCollection.AddElement(formElementAwardsWon);
    formElementsCollection.AddElement(formElementReleaseDate);
    
    allValid = true;
    Validateonblur=true;

    var i;
    for(i=0;i<formElementsCollection.Count;i++)
    {
        if(formElementsCollection.Items[i].IsEligibleForValidation)
        {
            if (formElementsCollection.Items[i].TextBox == 'EditMoviePage_FileUp')
            {
                formElementsCollection.Items[i].ValidationFunction(getElement(FileUploadId).value);
            }
            else
            {
                formElementsCollection.Items[i].ValidationFunction();
                //Event.observe(formElementsCollection.Items[i].TextBox, 'blur',formElementsCollection.Items[i].ValidationFunction);
            }
        }

        if(allValid)
        {
            allValid = formElementsCollection.Items[i].Valid;          
        }
        
        
   }
    
   //goto the correct anchor in case of error
   if (!allValid)
   {
        for(i=0;i<formElementsCollection.Count;i++)
        {
            if (formElementsCollection.Items[i].TextBox != 'EditMoviePage_FileUp')
            {
                if (!formElementsCollection.Items[i].Valid)
                {
                    if (i < 2)
                        gotoAnchor("TopFields");
                    else    
                        gotoAnchor("BottomFields");
                    
                    //
                    break;
                }    
            }
        }
   }
    
   return allValid;
}

function gotoAnchor(anchorName)
{
   var loc = window.location.href;
   var lastPound = loc.lastIndexOf("#");
   if (lastPound > 0)
        loc = loc.slice(0,lastPound);
   window.location = loc + "#" + anchorName;
}