Meetup.IframeUpload=function(mainEl,opts){var opts=opts||{};var o={photoType:opts.photoType||"event"};var init=function(){_mainEl=mainEl;_formEl=$("#"+_mainEl.id+"_upload");if(_formEl.length===0){return false}_frameEl=document.getElementById(_mainEl.id+"_frame");_fileEl=$("input.J_fileInput:first",_mainEl);_uploadEl=$("div.J_upload:first",_mainEl);_uploadFormEl=$("div.J_upload_form:first",_mainEl);_uploadWaitEl=$("div.J_upload_wait:first",_mainEl);_uploadCancelEl=$("a.J_upload_cancel:first",_uploadWaitEl);_uploadFailEl=$("div.J_upload_fail:first",_mainEl);_uploadFailOkEl=$("a.J_upload_ok:first",_uploadFailEl);_uploadPendingEl=$("div.J_upload_pending:first",_mainEl);_uploadPendingOkEl=$("a.J_upload_ok:first",_uploadPendingEl);_currentEl=$("div.J_currentImage",_mainEl);_currentThumbEl=$("img.J_current_thumb",_currentEl);_newImgActionEl=$("a.J_newImg_action",_currentEl);_noImgActionEl=$("a.J_noImg_action",_currentEl);_formEl.submit(_uploadStartListener);_uploadCancelEl.click(_uploadCancelListener);_newImgActionEl.click(_showUploadForm);_noImgActionEl.click(_killImg);setDisplayState();$(window).bind("form_reset",function(){setDisplayState()})};var setDisplayState=function(state){_setUploadDisplayState();if(!state){state=(_currentThumbEl.length>0&&_currentThumbEl.attr("src")!=blank)?"choose":"upload"}switch(state){case"choose":_uploadEl.hide();_currentEl.show();break;case"upload":_uploadEl.show();_currentEl.hide();break}};var hideIfAllowed=function(el){el.hasClass("dontHideMe")?el.show():el.hide()};var _setUploadDisplayState=function(state,text){switch(state){case"wait":_uploadWaitEl.show();_uploadFailEl.hide();_uploadPendingEl.hide();_uploadFormEl.hide();break;case"fail":_uploadWaitEl.hide();_uploadFailEl.show();_uploadPendingEl.hide();hideIfAllowed(_uploadFormEl);$("#photoupload-error").html(text);break;case"pending":_uploadWaitEl.hide();_uploadFailEl.hide();_uploadPendingEl.show();hideIfAllowed(_uploadFormEl);break;default:_uploadWaitEl.hide();_uploadFailEl.hide();_uploadPendingEl.hide();_uploadFormEl.show();break}};var _uploadCancelListener=function(e){e.preventDefault();_cancelUpload=true;if(typeof window.frames[_frameEl.name].stop!="undefined"){window.frames[_frameEl.name].stop()}_setUploadDisplayState()};var _showUploadForm=function(e){_uploadEl.slideDown()};var _uploadStartListener=function(e){if(!_fileEl.val()){e.preventDefault();return}_frameEl.contentWindow.document.body.innerHTML="";_cancelUpload=false;_setUploadDisplayState("wait");_uploadComplete()};var _uploadComplete=function(){(function(){if(_cancelUpload){return}var content=_frameEl.contentWindow.document.body.innerHTML;if(content.length>0){var json=$.parseJSON(content);if(json.response){if(json.response=="success"){setCurrent(json.data.preview_url);$(_frameEl).trigger("update",json.data)}else{switch(json.data.error){case"pending":_setUploadDisplayState("pending");_uploadPendingOkEl.click(function(e){e.preventDefault();setCurrent(json.data.preview_url);$(_frameEl).trigger("update",json);_uploadPendingOkEl.unbind("click")});break;case"fail":_setUploadDisplayState("fail",Meetup.Copy.uploadOtherError);$(_frameEl).trigger("error");_bindFailOkEl();break;default:_setUploadDisplayState("fail",Meetup.Copy.uploadOtherError);$(_frameEl).trigger("error");break}}}else{if(json.photoId){if(o.photoType==="object"){$(_frameEl).trigger("update",json.urls)}else{$(_frameEl).trigger("update",json.urls[o.photoType])}_setUploadDisplayState()}else{switch(json.error){case"TIMEOUT":_setUploadDisplayState("pending");$(_frameEl).trigger("pending");_uploadPendingOkEl.click(function(e){e.preventDefault();$(window).trigger("update",json);_uploadPendingOkEl.unbind("click")});break;case"BAD_FORMAT":_setUploadDisplayState("fail",Meetup.Copy.uploadWrongFormat);$(_frameEl).trigger("error");break;case"UPLOAD":_setUploadDisplayState("fail",Meetup.Copy.uploadOtherError);$(_frameEl).trigger("error");break;case"STAGING":_setUploadDisplayState("fail",Meetup.Copy.uploadOtherError);$(_frameEl).trigger("error");break;case"BAD_AUTH":_setUploadDisplayState("fail",Meetup.Copy.uploadBadPerm);$(_frameEl).trigger("error");break;case"BAD_CHAPTER":_setUploadDisplayState("fail",Meetup.Copy.uploadBadGroup);$(_frameEl).trigger("error");break;default:_setUploadDisplayState("fail",Meetup.Copy.uploadOtherError);$(_frameEl).trigger("error");break}_bindFailOkEl()}}}else{setTimeout(arguments.callee,2000);return}})()};var _bindFailOkEl=function(){_uploadFailOkEl.click(function(e){e.preventDefault();_setUploadDisplayState();_uploadFailOkEl.unbind("click")})};var _killImg=function(e){setCurrent(blank);$(_frameEl).trigger("update",{id:""})};var setCurrent=function(url){_currentThumbEl.attr("src",(url!=="")?url:blank);setDisplayState()};var blank="about:blank",_mainEl=null,_formEl=null,_fileEl=null,_frameEl=null,_currentThumbEl=null,_uploadEl=null,_uploadFormEl=null,_uploadWaitEl=null,_uploadFailEl=null,_uploadPendingEl=null,_uploadFailOkEl=null,_uploadPendingOkEl=null,_waitEl=null,_newImgActionEl=null,_noImgActionEl=null,_originalInputEl=null,_cancelUpload=false;(mainEl)?$(init):"";return{setDisplayState:setDisplayState,setCurrent:setCurrent,getFrame:function(){return $(_frameEl)}}};
