/*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 i93445154583 = new FrameBuilder("93445154583", 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:5px;\n    }\n    .form-label-right{\n        width:150px !important;\n    }\n    body, html{\n        margin:0;\n        padding:0;\n        background:white;\n    }\n\n    .form-all{\n        margin:0px auto;\n        padding-top:20px;\n        width:530px;\n        background:white;\n        color:black !important;\n        font-family:\"Trebuchet MS\";\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      JotForm.setCalendar(\"16\");\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_93445154583\" id=\"93445154583\" accept-charset=\"utf-8\">\n  <input type=\"hidden\" name=\"formID\" value=\"93445154583\" \/>\n  <div class=\"form-all\">\n    <ul class=\"form-section\">\n      <li class=\"form-line\" id=\"id_9\">\n        <div id=\"cid_9\" class=\"form-input-wide\">\n          <div id=\"text_9\" class=\"form-html\">\n            The decision to co-sponsor an event is at the discretion of the Political Awareness Committee and it has no obligation to every application. If you have further questions, please contact the Committee Coordinator, Emily Wiklund at wiklund@stolaf.edu.\n          <\/div>\n        <\/div>\n      <\/li>\n      <li class=\"form-line\" id=\"id_10\">\n        <label class=\"form-label-left\" id=\"label_10\" for=\"input_10\">\n          Organization name<span class=\"form-required\">*<\/span>\n        <\/label>\n        <div id=\"cid_10\" class=\"form-input\">\n          <input type=\"text\" class=\"form-textbox validate[required]\" id=\"input_10\" name=\"q10_organizationName\" size=\"20\" maxlength=\"100\" \/>\n        <\/div>\n      <\/li>\n      <li class=\"form-line\" id=\"id_11\">\n        <label class=\"form-label-left\" id=\"label_11\" for=\"input_11\">\n          Contact person<span class=\"form-required\">*<\/span>\n        <\/label>\n        <div id=\"cid_11\" class=\"form-input\">\n          <input type=\"text\" class=\"form-textbox validate[required]\" id=\"input_11\" name=\"q11_contactPerson\" size=\"20\" maxlength=\"100\" \/>\n        <\/div>\n      <\/li>\n      <li class=\"form-line\" id=\"id_12\">\n        <label class=\"form-label-left\" id=\"label_12\" for=\"input_12\"> Campus Extension <\/label>\n        <div id=\"cid_12\" class=\"form-input\">\n          <input type=\"text\" class=\"form-textbox\" id=\"input_12\" name=\"q12_campusExtension\" size=\"20\" maxlength=\"100\" \/>\n        <\/div>\n      <\/li>\n      <li class=\"form-line\" id=\"id_13\">\n        <label class=\"form-label-left\" id=\"label_13\" for=\"input_13\">\n          Email<span class=\"form-required\">*<\/span>\n        <\/label>\n        <div id=\"cid_13\" class=\"form-input\">\n          <input type=\"text\" class=\"form-textbox validate[required, Email]\" id=\"input_13\" name=\"q13_email\" size=\"20\" maxlength=\"100\" \/>\n        <\/div>\n      <\/li>\n      <li class=\"form-line\" id=\"id_15\">\n        <label class=\"form-label-left\" id=\"label_15\" for=\"input_15\">\n          Name of event<span class=\"form-required\">*<\/span>\n        <\/label>\n        <div id=\"cid_15\" class=\"form-input\">\n          <input type=\"text\" class=\"form-textbox validate[required]\" id=\"input_15\" name=\"q15_nameOf\" size=\"40\" maxlength=\"100\" \/>\n        <\/div>\n      <\/li>\n      <li class=\"form-line\" id=\"id_14\">\n        <label class=\"form-label-left\" id=\"label_14\" for=\"input_14\">\n          Amount requested<span class=\"form-required\">*<\/span>\n        <\/label>\n        <div id=\"cid_14\" class=\"form-input\">\n          <input type=\"text\" class=\"form-textbox validate[required]\" id=\"input_14\" name=\"q14_amountRequested\" size=\"20\" maxlength=\"100\" \/>\n        <\/div>\n      <\/li>\n      <li class=\"form-line\" id=\"id_16\">\n        <label class=\"form-label-left\" id=\"label_16\" for=\"input_16\">\n          Date of event<span class=\"form-required\">*<\/span>\n        <\/label>\n        <div id=\"cid_16\" class=\"form-input\"><span class=\"form-sub-label-container\"><input class=\"form-textbox validate[required]\" id=\"month_16\" name=\"q16_dateOf16[month]\" type=\"text\" size=\"2\" maxlength=\"2\" value=\"02\" \/><span class=\"date-separate\">&nbsp;-<\/span>\n            <label class=\"form-sub-label\" for=\"month_16\" id=\"sublabel_month\"> Month <\/label><\/span><span class=\"form-sub-label-container\"><input class=\"form-textbox validate[required]\" id=\"day_16\" name=\"q16_dateOf16[day]\" type=\"text\" size=\"2\" maxlength=\"2\" value=\"09\" \/><span class=\"date-separate\">&nbsp;-<\/span>\n            <label class=\"form-sub-label\" for=\"day_16\" id=\"sublabel_day\"> Day <\/label><\/span><span class=\"form-sub-label-container\"><input class=\"form-textbox validate[required]\" id=\"year_16\" name=\"q16_dateOf16[year]\" type=\"text\" size=\"4\" maxlength=\"4\" value=\"2012\" \/>\n            <label class=\"form-sub-label\" for=\"year_16\" id=\"sublabel_year\"> Year <\/label><\/span><span class=\"form-sub-label-container\"><img alt=\"Pick a Date\" id=\"input_16_pick\" src=\"http:\/\/www.jotform.com\/images\/calendar.png\" align=\"absmiddle\" \/>\n            <label class=\"form-sub-label\" for=\"input_16_pick\"> &nbsp;&nbsp;&nbsp; <\/label><\/span>\n        <\/div>\n      <\/li>\n      <li class=\"form-line\" id=\"id_18\">\n        <label class=\"form-label-left\" id=\"label_18\" for=\"input_18\"> Time of event (if applicable) <\/label>\n        <div id=\"cid_18\" class=\"form-input\">\n          <input type=\"text\" class=\"form-textbox\" id=\"input_18\" name=\"q18_timeOf\" size=\"20\" maxlength=\"100\" \/>\n        <\/div>\n      <\/li>\n      <li class=\"form-line\" id=\"id_22\">\n        <label class=\"form-label-left\" id=\"label_22\" for=\"input_22\">\n          Please give a description of the event you're planning on hosting:<span class=\"form-required\">*<\/span>\n        <\/label>\n        <div id=\"cid_22\" class=\"form-input\">\n          <textarea id=\"input_22\" class=\"form-textarea validate[required]\" name=\"q22_pleaseGive\" cols=\"30\" rows=\"3\"><\/textarea>\n        <\/div>\n      <\/li>\n      <li class=\"form-line\" id=\"id_19\">\n        <label class=\"form-label-left\" id=\"label_19\" for=\"input_19\">\n          What is the purpose or goal intended by having this event?<span class=\"form-required\">*<\/span>\n        <\/label>\n        <div id=\"cid_19\" class=\"form-input\">\n          <textarea id=\"input_19\" class=\"form-textarea validate[required]\" name=\"q19_whatIs\" cols=\"30\" rows=\"4\"><\/textarea>\n        <\/div>\n      <\/li>\n      <li class=\"form-line\" id=\"id_20\">\n        <label class=\"form-label-left\" id=\"label_20\" for=\"input_20\">\n          How does the St. Olaf Community benefit from this event?<span class=\"form-required\">*<\/span>\n        <\/label>\n        <div id=\"cid_20\" class=\"form-input\">\n          <textarea id=\"input_20\" class=\"form-textarea validate[required]\" name=\"q20_howDoes\" cols=\"30\" rows=\"4\"><\/textarea>\n        <\/div>\n      <\/li>\n      <li class=\"form-line\" id=\"id_21\">\n        <label class=\"form-label-left\" id=\"label_21\" for=\"input_21\">\n          What other means have you sought for funding this event?<span class=\"form-required\">*<\/span>\n        <\/label>\n        <div id=\"cid_21\" class=\"form-input\">\n          <textarea id=\"input_21\" class=\"form-textarea validate[required]\" name=\"q21_whatOther\" cols=\"30\" rows=\"3\"><\/textarea>\n        <\/div>\n      <\/li>\n      <li class=\"form-line\" id=\"id_23\">\n        <label class=\"form-label-left\" id=\"label_23\" for=\"input_23\"> Additional information <\/label>\n        <div id=\"cid_23\" class=\"form-input\">\n          <textarea id=\"input_23\" class=\"form-textarea\" name=\"q23_additionalInformation\" cols=\"30\" rows=\"2\"><\/textarea>\n        <\/div>\n      <\/li>\n      <li class=\"form-line\" id=\"id_1\">\n        <div id=\"cid_1\" class=\"form-input-wide\">\n          <div style=\"margin-left:156px\" class=\"form-buttons-wrapper\">\n            <button id=\"input_1\" type=\"submit\" class=\"form-submit-button\">\n              Submit\n            <\/button>\n            &nbsp;\n            <button id=\"input_reset_1\" type=\"reset\" class=\"form-submit-reset\">\n              Clear Form\n            <\/button>\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=\"93445154583\" \/>\n  <script type=\"text\/javascript\">\n  document.getElementById(\"si\" + \"mple\" + \"_spc\").value = \"93445154583-93445154583\";\n  <\/script>\n<\/form><\/body>\n<\/html>\n");

