/*  Cineplex.js
    This file should be included on every single myCineplex page except for the
    integrated pages.
    
    Handles form validations, form input replacements
*/

var CineplexForms = {
    
    formError : requiredFormError,
    
    clearText : function(elm, clearText) {
        if (elm) {
            if (elm.value.toLowerCase() == clearText.toLowerCase()) elm.value = '';
        }
    },
    
    resetFormError : function () {
        this.formError = requiredFormError;
    },
    
    replaceFriendInputs : function() {
        $('p.friendAction').each(function() {
            var thisInput = this.getElementsByTagName('input')[0];
            var inputVal = '';
            if (thisInput) inputVal = thisInput.value;
            var friendLink = '<a class="friendLink" href="#" onclick="CineplexForms.submitMyForm(this);return false;">'+ inputVal +'</a>';
            
            $(thisInput).hide();
            $(this).append(friendLink);
        });
    },
    
    replaceSpoilerAlerts : function() {
        $('.alertModule div.flagSpoiler').each(function() {
            var thisInput = this.getElementsByTagName('input')[0];
            var inputVal = '';
            if (thisInput) inputVal = thisInput.value;
            var spoilerLink = '<a href="#" onclick="CineplexForms.submitMyForm(this);return false;">'+ inputVal +'</a>';
            
            if (thisInput) {
                $(thisInput).hide();
                $(this).append(spoilerLink);
            }
        });
    },
    
    replaceFlagAlerts : function() {
        $('div.flagNormal').each(function() {
            var thisInput = this.getElementsByTagName('input')[0];
            var inputVal = '';
            if (thisInput) inputVal = thisInput.value;
            var flagLink = '<a href="#" onclick="CineplexForms.submitMyForm(this);return false;">'+ inputVal +'</a>';
            
            if (thisInput) {
                $(thisInput).hide(); 
                $(this).append(flagLink);
            }
        });
    },
    
    replaceFlagging : function() {
        this.replaceFlagAlerts();
        this.replaceSpoilerAlerts();
    },
    
    replaceAlertInputs : function() {
        $('.alertModule dl dd').each(function() {
            var thisInput = this.getElementsByTagName('input')[1];
            var thisInput2 = this.getElementsByTagName('input')[3];
            var inputVal = '';
            var inputVal2 = '';
            if (thisInput) inputVal = thisInput.value;
            if (thisInput2) inputVal2 = thisInput2.value;
            
            var helpfulLink = '<div class="btnT1"><div class="btnT1-left"></div><div class="btnT1-center"><a href="#" onclick="CineplexForms.submitMyForm(this);return false;">'+ inputVal +'</a></div><div class="btnT1-right"></div></div>';
            
            var helpfulLink2 = '<div class="btnT1"><div class="btnT1-left"></div><div class="btnT1-center"><a href="#" onclick="CineplexForms.submitMyForm(this);return false;">'+ inputVal2 +'</a></div><div class="btnT1-right"></div></div>';
            
            if (thisInput) $(thisInput).hide();
            if (thisInput2) $(thisInput2).hide();
            
            var i = 0;
            
            $(this).children('form div').each(function() {
                if (i == 0) {
                    $(this).append(helpfulLink);
                } else {
                    $(this).append(helpfulLink2);
                }
                i++;
            });
        });
    },
    
    findMyForm : function(elm) {
        if (elm) {
            if (elm.tagName.toLowerCase() == 'form') {
                return elm;
            } else {
                return this.findMyForm(elm.parentNode);
            }
        }
    },
    
    submitMyForm : function(elm) {
        if (elm) {
            var parentForm = this.findMyForm(elm.parentNode);
            if (parentForm) {
                if (parentForm.tagName.toLowerCase() == 'form') {
                    if (CineplexForms.checkRequiredFields(parentForm)) {
                        parentForm.submit();
                    } else {
                        alert(CineplexForms.formError);
                        CineplexForms.resetFormError();
                    }
                }
            }
        }
    },
    
    checkRequiredFields : function(formElm) {
        var validForm = true;
        
        $(formElm).find('input.required, textarea.required, select.required').each(function() {
            if (!this.value) {
                validForm = false;
            } else if (this.type.toLowerCase() == 'checkbox') {
                if (!this.checked) validForm = false;
            }
        });
        
        return validForm;
    },
    
    clearSearchBoxes : function() {
        $('.headerSearch input.txtInput').bind('focus', function() {
            CineplexForms.clearText(this, $('.headerSearch input.txtInput').attr('cleartext'));
        });

        $('.searchBox input[type=text]').bind('focus', function() {
            CineplexForms.clearText(this, $('.searchBox input[type=text]').attr('cleartext'));
        });
    },
    
    replaceProfileSubmits : function() {
        $('form input.replaceMe').each(function() {
            var inputVal = this.value;
            var replaceLink = '<div class="btnT3"><a href="#" onclick="CineplexForms.submitMyForm(this);return false;">'+ inputVal +'</a></div>';
            
            $(this).replaceWith(replaceLink);
        });
    },
    
    replaceDeleteInputs : function() {
        $('form input.replaceDelete').each(function() {
           var inputVal = this.value;
           var deleteLink = '<a href="#" class="deleteLink" onclick="CineplexForms.submitMyForm(this);return false;">'+ inputVal +'</a>';
           
           $(this).replaceWith(deleteLink);
        });
    },
    
    replaceSocialBarInputs : function(linkItem) {
        $('form input.replaceSocial').each(function() {
            var inputVal = this.value;
            var socialLink = '';
            
            if ($(this).hasClass('wantToSee')) {
                socialLink = '<a href="#" class="wantToSee" onclick="CineplexForms.submitMyForm(this);return false;">'+ inputVal +'</a>';
            } else if ($(this).hasClass('becomeFan')) {
                socialLink = '<a href="#" class="becomeFan" onclick="CineplexForms.submitMyForm(this);return false;">'+ inputVal +'</a>';
            } else if ($(this).hasClass('justSaw')) {
                socialLink = '<a href="#" class="justSaw" onclick="CineplexForms.submitMyForm(this);return false;">'+ inputVal +'</a>';
            } else if ($(this).hasClass('removeFan')) {
                socialLink = '<a href="#" class="removeFan" onclick="CineplexForms.submitMyForm(this);return false;">'+ inputVal +'</a>';
            }
            
            $(this).replaceWith(socialLink);
        });
    },
    
    checkCommentForm : function() {
        $('#PostComment').bind('submit', function() {
            return CineplexForms.validComment(document.getElementById('id_comment'));
        });
    },
    
    validComment : function(elm) {    
        if (elm) {
            var commentTextLimit = 400;
            
		    if (elm.value.length > commentTextLimit) {
		        alert(postCommentError + ' ' + commentTextLimit);
		        return false;
		    } else if (!elm.value || elm.value == '' || elm.value.length == 0) {
		        alert(CineplexForms.formError);
		        return false;
		    }
		}
		return true;
    }
}

$(function() {
    CineplexForms.clearSearchBoxes();
    CineplexForms.replaceFriendInputs();
    CineplexForms.replaceAlertInputs();
    CineplexForms.replaceFlagging();
    CineplexForms.replaceProfileSubmits();
    CineplexForms.replaceDeleteInputs();
    CineplexForms.replaceSocialBarInputs();
    CineplexForms.checkCommentForm();
});