/*jslint nomen:false, debug:true, evil:true, vars:false, browser:true, forin:true, undef:false, white:false */
/**
 * Includes a Form with javascript
 * @param {Object} formId
 * @param {Object} initialHeight
 * @param {Object} iframeCode
 */
function FrameBuilder (formId, appendTo, initialHeight, iframeCode){
    this.formId = formId;
    this.initialHeight = initialHeight;
    this.iframeCode = iframeCode;
    this.frame = null;
    this.timeInterval= 200;
    this.appendTo = appendTo || false;
    
    // initialize function for object
    this.init = function(){
        this.createFrame();
        this.addFrameContent(this.iframeCode);
    };
    
    // Create the frame
    this.createFrame = function(){
        var htmlCode = "<"+"iframe src=\"\" allowtransparency=\"true\" frameborder=\"0\" name=\""+this.formId+"\" id=\""+this.formId+"\" style=\"width:100%; height:"+this.initialHeight+"px; border:none;\" scrolling=\"no\"></if"+"rame>";
        if(this.appendTo === false){
            document.write(htmlCode);
        }else{
            var tmp = document.createElement('div');
            tmp.innerHTML = htmlCode;
            var a = this.appendTo;
            document.getElementById(a).appendChild(tmp.firstChild);            
        }
        // also get the frame for future use.
        this.frame = document.getElementById(this.formId);
        // set the time on the on load event of the frame
        this.addEvent(this.frame, 'load', this.bindMethod(this.setTimer, this));
    };
    
    // add event function for different browsers
    this.addEvent = function( obj, type, fn ) {
        if ( obj.attachEvent ) {
            obj["e"+type+fn] = fn;
            obj[type+fn] = function() { obj["e"+type+fn]( window.event ); };
            obj.attachEvent( "on"+type, obj[type+fn] );
        }
        else{
            obj.addEventListener( type, fn, false );   
        }
    };
    
    this.addFrameContent = function (string){
        string = string.replace(new RegExp('src\\=\\"[^"]*captcha.php\"><\/scr'+'ipt>', 'gim'), 'src="http://api.recaptcha.net/js/recaptcha_ajax.js"></scr'+'ipt><'+'div id="recaptcha_div"><'+'/div>'+
                '<'+'style>#recaptcha_logo{ display:none;} #recaptcha_tagline{display:none;} #recaptcha_table{border:none !important;} .recaptchatable .recaptcha_image_cell, #recaptcha_table{ background-color:transparent !important; } <'+'/style>'+
                '<'+'script defer="defer"> window.onload = function(){ Recaptcha.create("6Ld9UAgAAAAAAMon8zjt30tEZiGQZ4IIuWXLt1ky", "recaptcha_div", {theme: "clean",tabindex: 0,callback: function (){'+
                'if (document.getElementById("uword")) { document.getElementById("uword").parentNode.removeChild(document.getElementById("uword")); } if (window["validate"] !== undefined) { if (document.getElementById("recaptcha_response_field")){ document.getElementById("recaptcha_response_field").onblur = function(){ validate(document.getElementById("recaptcha_response_field"), "Required"); } } } if (document.getElementById("recaptcha_response_field")){ document.getElementsByName("recaptcha_challenge_field")[0].setAttribute("name", "anum"); } if (document.getElementById("recaptcha_response_field")){ document.getElementsByName("recaptcha_response_field")[0].setAttribute("name", "qCap"); }}})'+
                ' }<'+'/script>');
        string = string.replace(/(type="text\/javascript">)\s+(validate\(\"[^"]*"\);)/, '$1 jTime = setInterval(function(){if("validate" in window){$2clearTimeout(jTime);}}, 1000);');
        var frameDocument = (this.frame.contentWindow) ? this.frame.contentWindow : (this.frame.contentDocument.document) ? this.frame.contentDocument.document : this.frame.contentDocument;
        frameDocument.document.open();
        frameDocument.document.write(string);
        setTimeout( function(){
            frameDocument.document.close();
            try{
                if('JotFormFrameLoaded' in window){
                    JotFormFrameLoaded();
                }
            }catch(e){}
        },200);
    };
    
    this.setTimer = function(){
        var self = this;
        this.interval = setTimeout(function(){self.changeHeight();},this.timeInterval);
    };
    
    this.changeHeight = function (){
        var actualHeight = this.getBodyHeight();
        var currentHeight = this.getViewPortHeight();
        if(actualHeight === undefined){
            this.frame.style.height = "100%";
            if(!this.frame.style.minHeight){
                this.frame.style.minHeight = "300px";
            }
        }else if  (Math.abs(actualHeight - currentHeight) > 18){
            this.frame.style.height = (actualHeight)+"px";
        }
        this.setTimer();
    };
    
    this.bindMethod = function(method, scope) {
        return function() {
            method.apply(scope,arguments);
        };
    };
    
    this.getBodyHeight = function (){
        var height;
        var scrollHeight;
        var offsetHeight;
        try{  // Prevent IE from throw errors
            if (this.frame.contentWindow.document.height){
                
                height = this.frame.contentWindow.document.height;
                //Emre: to prevent "iframe height"  problem (61059)
                if (this.frame.contentWindow.document.body.scrollHeight){
                    height = scrollHeight = this.frame.contentWindow.document.body.scrollHeight;
                }
                
                if (this.frame.contentWindow.document.body.offsetHeight){
                    height = offsetHeight = this.frame.contentWindow.document.body.offsetHeight;
                }
                
            } else if (this.frame.contentWindow.document.body){
                
                if (this.frame.contentWindow.document.body.scrollHeight){
                    height = scrollHeight = this.frame.contentWindow.document.body.scrollHeight;
                }
                
                if (this.frame.contentWindow.document.body.offsetHeight){
                    height = offsetHeight = this.frame.contentWindow.document.body.offsetHeight;
                }
                
                if (scrollHeight && offsetHeight){
                    height = Math.max(scrollHeight, offsetHeight);
                }
            }            
        }catch(e){ }
        return height;
    };
    
    this.getViewPortHeight = function(){
        var height = 0;
        try{ // Prevent IE from throw errors
            if (this.frame.contentWindow.window.innerHeight)
            {
                height = this.frame.contentWindow.window.innerHeight - 18;
            }
            else if ((this.frame.contentWindow.document.documentElement) &&
                     (this.frame.contentWindow.document.documentElement.clientHeight))
            {
                height = this.frame.contentWindow.document.documentElement.clientHeight;
            }
            else if ((this.frame.contentWindow.document.body) &&
                     (this.frame.contentWindow.document.body.clientHeight))
            {
                height = this.frame.contentWindow.document.body.clientHeight;
            }            
        }catch(e){ }
        return height;
    };
    
    this.init();
}
FrameBuilder.get = [];
var i1791448289 = new FrameBuilder("1791448289", false, "", "<!DOCTYPE HTML PUBLIC \"-\/\/W3C\/\/DTD HTML 4.01\/\/EN\" \"http:\/\/www.w3.org\/TR\/html4\/strict.dtd\">\n<html><head>\n<meta http-equiv=\"Content-Type\" content=\"text\/html; charset=utf-8\" \/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0\" \/>\n<meta name=\"HandheldFriendly\" content=\"true\" \/>\n<title>Form<\/title>\n<link href=\"http:\/\/max.jotfor.ms\/min\/g=formCss?3.0.2435\" rel=\"stylesheet\" type=\"text\/css\" \/>\n<style type=\"text\/css\">\n    .form-label{\n        width:150px !important;\n    }\n    .form-label-left{\n        width:150px !important;\n    }\n    .form-line{\n        padding:10px;\n    }\n    .form-label-right{\n        width:150px !important;\n    }\n    body, html{\n        margin:0;\n        padding:0;\n        background:#FFFFFF;\n    }\n\n    .form-all{\n        margin:0px auto;\n        padding-top:0px;\n        width:650px;\n        background:#FFFFFF;\n        color:Black !important;\n        font-family:Verdana;\n        font-size:12px;\n    }\n<\/style>\n\n<script src=\"http:\/\/max.jotfor.ms\/min\/g=jotform?3.0.2435\" type=\"text\/javascript\"><\/script>\n<script type=\"text\/javascript\">\n var jsTime = setInterval(function(){try{\n   JotForm.jsForm = true;\n\n   JotForm.init(function(){\n      $('input_7').hint('ex: myname@example.com');\n   });\n\n   clearInterval(jsTime);\n }catch(e){}}, 1000);\n<\/script>\n<\/head>\n<body>\n<form class=\"jotform-form\" action=\"http:\/\/submit.jotform.com\/submit.php\" method=\"post\" name=\"form_1791448289\" id=\"1791448289\" accept-charset=\"utf-8\">\n  <input type=\"hidden\" name=\"formID\" value=\"1791448289\" \/>\n  <div class=\"form-all\">\n    <ul class=\"form-section\">\n      <li id=\"cid_5\" class=\"form-input-wide\">\n        <div class=\"form-header-group\">\n          <h2 id=\"header_5\" class=\"form-header\">\n            BNP Paribas Showdown Presale Sign Up\n          <\/h2>\n        <\/div>\n      <\/li>\n      <li class=\"form-line\" id=\"id_14\">\n        <div id=\"cid_14\" class=\"form-input-wide\">\n          <img alt=\"\" class=\"form-image\" border=\"0\" src=\"http:\/\/cdn.msg.com\/polopoly_fs\/1.45326.1277827799!\/image\/2499990353.jpg\" height=\"349\" width=\"620\" \/>\n        <\/div>\n      <\/li>\n      <li class=\"form-line\" id=\"id_3\">\n        <div id=\"cid_3\" class=\"form-input-wide\">\n          <div id=\"text_3\" class=\"form-html\">\n            <p>\n              <strong><span style=\"font-size: small; font-family: Arial;\">4 TENNIS LEGENDS &bull; 2 EPIC RIVALRIES &bull; 1 SMASHING EVENT<\/span>\n              <\/strong>\n            <\/p>\n            <p><span style=\"font-size: small; font-family: Arial;\"><strong>\n                  Pete Sampras vs. Andre Agassi\n                <\/strong>\n                <br \/>\n                <strong>\n                  John McEnroe vs. Ivan Lendl\n                <\/strong>\n                <br \/>\n                Madison Square Garden&nbsp;In The BNP Paribas Showdown\n                <br \/>\n                Monday, February 28, 2011<\/span>\n            <\/p><\/span>\n            <\/p>\n            <p class=\"MsoNormal\" style=\"font-family: Arial;\"><span style=\"font-size: small;\">Tickets go on sale September 27th.&nbsp;Want to get tickets before they go on sale?&nbsp;Sign up below to be a part of the exclusive presale!<\/span>\n            <\/p>\n          <\/div>\n        <\/div>\n      <\/li>\n      <li class=\"form-line\" id=\"id_7\">\n        <label class=\"form-label-left\" id=\"label_7\" for=\"input_7\">\n          E-mail<span class=\"form-required\">*<\/span>\n        <\/label>\n        <div id=\"cid_7\" class=\"form-input\">\n          <input type=\"email\" class=\"form-textbox validate[required, Email]\" id=\"input_7\" name=\"q7_email\" size=\"30\" \/>\n        <\/div>\n      <\/li>\n      <li class=\"form-line\" id=\"id_8\">\n        <label class=\"form-label-left\" id=\"label_8\" for=\"input_8\">\n          Full Name<span class=\"form-required\">*<\/span>\n        <\/label>\n        <div id=\"cid_8\" class=\"form-input\"><span class=\"form-sub-label-container\"><input class=\"form-textbox validate[required]\" type=\"text\" size=\"10\" name=\"q8_fullName8[first]\" id=\"first_8\" \/>\n            <label class=\"form-sub-label\" for=\"first_8\" id=\"sublabel_first\"> First Name <\/label><\/span><span class=\"form-sub-label-container\"><input class=\"form-textbox validate[required]\" type=\"text\" size=\"15\" name=\"q8_fullName8[last]\" id=\"last_8\" \/>\n            <label class=\"form-sub-label\" for=\"last_8\" id=\"sublabel_last\"> Last Name <\/label><\/span>\n        <\/div>\n      <\/li>\n      <li class=\"form-line\" id=\"id_2\">\n        <div id=\"cid_2\" class=\"form-input-wide\">\n          <div style=\"margin-left:156px\" class=\"form-buttons-wrapper\">\n            <button id=\"input_2\" type=\"submit\" class=\"form-submit-button\">\n              Submit\n            <\/button>\n          <\/div>\n        <\/div>\n      <\/li>\n      <li class=\"form-line\" id=\"id_13\">\n        <div id=\"cid_13\" class=\"form-input-wide\">\n          <div id=\"text_13\" class=\"form-html\">\n            <p><span style=\"font-size: x-small;\">Entrance in the presale notification for the BNP Paribas Showdown automatically enters you as an MSG Tennis Insider. You will receive presale and discount offers for all of Madison Square Garden's tennis events. You may unsubscribe at any time.<\/span>\n            <\/p>\n          <\/div>\n        <\/div>\n      <\/li>\n      <li style=\"display:none\">\n        Should be Empty:\n        <input type=\"text\" name=\"website\" value=\"\" \/>\n      <\/li>\n    <\/ul>\n  <\/div>\n  <input type=\"hidden\" id=\"simple_spc\" name=\"simple_spc\" value=\"1791448289\" \/>\n  <script type=\"text\/javascript\">\n  document.getElementById(\"si\" + \"mple\" + \"_spc\").value = \"1791448289-1791448289\";\n  <\/script>\n<\/form><\/body>\n<\/html>\n");

