Ext.ns('ExtAccount');
LoginDialog=Ext.extend(Ext.Window,{
loginHandler:function(){
var p=this.tab.login,el=p.error,frame=Ext.getDom('login_iframe');
Ext.EventManager.on('login_form','submit',function(){
el.hide();});
Ext.EventManager.on(frame,'load',function(){
responseText='{success: false}';
try{
doc=frame.contentWindow.document||frame.contentDocument||window.frames['login_iframe'].document;
if(doc&&doc.body){
responseText=doc.body.innerHTML;}}catch(e){}
var result=Ext.decode(responseText);
if(result.success){
location.reload();}else{
el.update(result.msg);
el.show();
Ext.fly(this.tab.getTabEl(this.tab.reset)).frame('#008000');
this.tab.reset.emailField.setValue(p.loginField.getValue());}},this);},
registerHandler:function(button){
var p=this.tab.register,el=p.error;
el.hide();
el.removeClass('loginInfo');
p.getForm().submit({
params:{csrfmiddlewaretoken:Ext.util.Cookies.get('csrftoken')},
success:function(a,b){
el.addClass('loginInfo');
el.update("Success! Now check your e-mail and get your "+Extjs.SITE_NAME+" password.")
el.show();
p.button.setDisabled(false);
Ext.fly(this.tab.getTabEl(this.tab.login)).frame('#008000');
this.tab.login.loginField.setValue(p.emailField.getValue());},
failure:function(a,b){
el.update(b.result.msg);
el.show();},
scope:this});},
resetHandler:function(button){
var p=this.tab.reset,el=p.error;
el.hide();
el.removeClass('loginInfo');
p.getForm().submit({
params:{csrfmiddlewaretoken:Ext.util.Cookies.get('csrftoken')},
success:function(a,b){
el.addClass('loginInfo');
el.update("Please check your e-mail and activate your new password.")
el.show();
p.button.setDisabled(true);},
failure:function(a,b){
el.update(b.result.msg);
el.show();},
scope:this});},
constructor:function(config){
config=config||{};
var main=this;
var width=config.width||340;
LoginDialog.superclass.constructor.call(this,Ext.apply(config,{
closable:true,
closeAction:'hide',
width:width,
height:290,
y:200,
modal:true,
resizable:false,
items:{
xtype:'tabpanel',
tabPosition:'top',
ref:'tab',
deferredRender:false,
defaults:{
hideMode:'offsets',
padding:'25px 0 0 25px'},
items:[{
title:"Login",
xtype:'panel',
standardSubmit:true,
fileUpload:true,
ref:'login',
el:'login_form',
layout:'form',
labelAlign:'top',
height:230,
defaults:{
xtype:'textfield',
allowBlank:false,
msgTarget:'side'},
listeners:{
render:this.loginHandler.createDelegate(this)},
items:[{
el:'login_username',
ref:'loginField',
fieldLabel:"E-mail",
width:width-60},{
el:'login_password',
fieldLabel:"Password",
inputType:'password',
width:width-60},{
xtype:'container',
items:{
xtype:'checkbox',
el:'login_remember',
boxLabel:"Keep me signed in"}},{
xtype:'box',
ref:'error',
cls:'loginError',
width:width-60,
hidden:true}],
bbar:{
layout:'auto',
items:{
xtype:'container',
autoEl:'center',
items:[{
xtype:'hidden',
el:'login_submit'}]}}},{
title:"Register",
xtype:'form',
labelAlign:'top',
height:230,
ref:'register',
url:'/register/',
cls:'right-labels',
defaults:{
enableKeyEvents:true,
listeners:{
specialKey:function(field,el){
if(el.getKey()==Ext.EventObject.ENTER)main.registerHandler();}}},
items:[{
xtype:'textfield',
name:'reg_email',
ref:'emailField',
fieldLabel:"E-mail",
width:width-60,
allowBlank:false,
msgTarget:'side'},{
xtype:'label',
style:'font-size: 11px',
text:"We'll generate a random password and send it to your e-mail. You can then login using that password."},{
xtype:'box',
ref:'error',
cls:'loginError',
width:width-60,
hidden:true}],
bbar:{
layout:'auto',
items:{
xtype:'container',
autoEl:'center',
items:{
xtype:'tbbutton',
text:"Register with "+Extjs.SITE_NAME,
ref:'../../button',
handler:main.registerHandler,
scope:this}}}},{
title:"Reset password",
xtype:'form',
labelAlign:'top',
height:230,
ref:'reset',
url:'/ajax-resetpwd/',
defaults:{
enableKeyEvents:true,
listeners:{
specialKey:function(field,el){
if(el.getKey()==Ext.EventObject.ENTER)main.resetHandler();}}},
items:[{
xtype:'textfield',
name:'email',
ref:'emailField',
fieldLabel:"E-mail",
width:width-60,
allowBlank:false,
msgTarget:'side'},{
xtype:'label',
style:'font-size: 11px',
text:"We'll send you an e-mail containing a link to reset your password."},{
xtype:'box',
ref:'error',
cls:'loginError',
width:width-60,
hidden:true}],
bbar:{
layout:'auto',
items:{
xtype:'container',
autoEl:'center',
items:{
xtype:'tbbutton',
text:"Reset password",
ref:'../../button',
handler:main.resetHandler,
scope:this}}}}]}}));
this.addEvents('login');},
show:function(){
LoginDialog.superclass.show.apply(this,arguments);
this.tab.login.error.hide();
this.tab.register.error.hide();
this.tab.reset.error.hide();
this.tab.register.button.setDisabled(false);
this.tab.reset.button.setDisabled(false);}});
Ext.ns('ExtAccount');
ChangeEmailForm=Ext.extend(Ext.FormPanel,{
constructor:function(config){
config=config||{};
var main=this;
ChangeEmailForm.superclass.constructor.call(this,Ext.apply(config,{
url:'/ajax-change-email/',
border:false,
items:{
xtype:'fieldset',
title:"Change e-mail",
defaults:{
allowBlank:false,
msgTarget:'side'},
items:[{
xtype:'displayfield',
name:'email',
fieldLabel:"Current e-mail"},{
xtype:'textfield',
fieldLabel:"Current password",
name:'password',
inputType:'password'},{
xtype:'textfield',
fieldLabel:"Enter new e-mail",
width:200,
name:'new_email',
allowBlank:false},{
xtype:'button',
fieldLabel:' ',
labelSeparator:'',
text:"Change e-mail",
handler:function(){
main.error.hide();
main.getForm().submit({
params:{csrfmiddlewaretoken:Ext.util.Cookies.get('csrftoken')},
success:function(f,r){
main.error.update(r.result.msg);
main.error.show();
main.error.hide.defer(5000,main.error);}});}},{
xtype:'box',
ref:'../error',
cls:'loginError loginInfo',
hidden:true}]}}));}});
Ext.reg('changeemailform',ChangeEmailForm);
ChangePasswordForm=Ext.extend(Ext.FormPanel,{
constructor:function(config){
config=config||{};
var main=this;
ChangePasswordForm.superclass.constructor.call(this,Ext.apply(config,{
url:'/ajax-change-password/',
border:false,
items:{
xtype:'fieldset',
title:"Change password",
defaultType:'textfield',
defaults:{
allowBlank:false,
msgTarget:'side'},
items:[{
name:'password',
fieldLabel:"Current password",
inputType:'password'},{
name:'password1',
fieldLabel:"New password",
inputType:'password'},{
xtype:'textfield',
fieldLabel:"Retype new password",
name:'password2',
inputType:'password',
allowBlank:false},{
xtype:'button',
fieldLabel:' ',
labelSeparator:'',
text:"Change password",
handler:function(){
main.error.hide();
main.getForm().submit({
params:{csrfmiddlewaretoken:Ext.util.Cookies.get('csrftoken')},
success:function(f,r){
main.error.update(r.result.msg);
main.error.show();
main.error.hide.defer(5000,main.error);}});}},{
xtype:'box',
ref:'../error',
cls:'loginError loginInfo',
hidden:true}]}}));}});
Ext.reg('changepasswordform',ChangePasswordForm);
RemoveAccountForm=Ext.extend(Ext.FormPanel,{
constructor:function(config){
config=config||{};
var main=this;
RemoveAccountForm.superclass.constructor.call(this,Ext.apply(config,{
url:'/ajax-remove-account/',
border:false,
items:{
xtype:'fieldset',
title:"Account cancellation",
items:[{
xtype:'textfield',
fieldLabel:"Current password",
msgTarget:'side',
name:'password',
inputType:'password',
allowBlank:false},{
xtype:'button',
fieldLabel:' ',
labelSeparator:'',
text:"Delete my "+Extjs.SITE_NAME+" account",
handler:function(){
Ext.Msg.confirm("Warning","This will delete your account and all photos stored at "+Extjs.SITE_NAME,function(yn){
if(yn=='yes'){
main.error.hide();
main.getForm().submit({
params:{csrfmiddlewaretoken:Ext.util.Cookies.get('csrftoken')},
success:function(f,r){
main.error.update(r.result.msg);
main.error.show();
main.error.hide.defer(5000,main.error);}});}});}},{
xtype:'box',
ref:'../error',
cls:'loginError loginInfo',
hidden:true}]}}));}});
Ext.reg('removeaccountform',RemoveAccountForm);
Ext.ns('ExtPayment');
ExtPayment.PaymentForm=Ext.extend(Ext.FormPanel,{
constructor:function(config){
config=config||{};
var main=this;
var pu,dl;
if(ExtPayment.PREMIUM_UNTIL){
pu=Date.parseDate(ExtPayment.PREMIUM_UNTIL,'Y-m-d');
dl=Math.round((pu.getTime()-new Date().getTime())/1000/60/60/24);}
ExtPayment.PaymentForm.superclass.constructor.call(this,Ext.apply(config,{
border:false,
standardSubmit:true,
url:'/payment-send/',
items:[{
xtype:'fieldset',
title:"Service status",
items:[{
xtype:'label',
fieldLabel:'Premium Service is',
html:(ExtPayment.PREMIUM_UNTIL?"active until "+pu.format(Extjs.DATE_FORMAT)+' <span>('+dl+" days left)</span>":"inactive"),
cls:'extpayment-'+(ExtPayment.PREMIUM_UNTIL?'active':'inactive'),
style:'line-height: 20px'}]},{
xtype:'fieldset',
title:"New payment",
items:[{
xtype:'hidden',
name:'csrfmiddlewaretoken',
ref:'../csrfmiddlewaretoken'},{
xtype:'htmlselect',
fieldLabel:"Pay for",
hiddenName:'product_name',
store:new Ext.data.JsonStore({
root:'rows',
fields:['id','name','price','currency',{name:'view_name',convert:function(v,r){
if(r.currency=='USD'){
return r.name+' ('+Ext.util.Format.usMoney(r.price)+')';}
return r.name+' ('+r.price+' '+r.currency+')';}}],
data:{rows:ExtPayment.PRODUCTS}}),
valueField:'id',
displayField:'view_name',
anchor:'100%',
value:ExtPayment.PRODUCTS[0].id},{
xtype:'button',
text:'Pay by PayPal',
fieldLabel:' ',
labelSeparator:'',
handler:function(){
main.csrfmiddlewaretoken.setValue(Ext.util.Cookies.get('csrftoken'));
main.getForm().submit();}}]},{
xtype:'fieldset',
title:"Previous payments",
items:[{
xtype:'grid',
height:200,
autoExpandColumn:'item_column',
colModel:new Ext.grid.ColumnModel({
defaults:{
sortable:false},
columns:[
{header:'Product',dataIndex:'item_name',id:'item_column'},
{header:'Price',renderer:Ext.util.Format.usMoney,dataIndex:'amount',width:60},
{header:'Date',renderer:Ext.util.Format.dateRenderer(Extjs.DATE_FORMAT),dataIndex:'created',width:80},
{header:'Receipt',dataIndex:'amount',width:60,renderer:function(val,metadata,rec,row,col,store){
var url='/payment-receipt/?id='+rec.data.id+'';
return'<a href="'+url+'" target="_blank">view/print</a>';}}]}),
sm:new Ext.grid.RowSelectionModel({singleSelect:true}),
store:new Ext.data.ArrayStore({
autoDestroy:true,
fields:['id','item_name','amount',{name:'created',type:'date',dateFormat:'Y-m-dTH:i:s'}],
data:ExtPayment.PAYMENTS})}]}]}));}});
Ext.reg('paymentform',ExtPayment.PaymentForm);
var SWFUpload;
var swfobject;
if(SWFUpload==undefined){
SWFUpload=function(settings){
this.initSWFUpload(settings);};}
SWFUpload.prototype.initSWFUpload=function(userSettings){
try{
this.customSettings={};
this.settings={};
this.eventQueue=[];
this.movieName="SWFUpload_"+SWFUpload.movieCount++;
this.movieElement=null;
SWFUpload.instances[this.movieName]=this;
this.initSettings(userSettings);
this.loadSupport();
if(this.swfuploadPreload()){
this.loadFlash();}
this.displayDebugInfo();}catch(ex){
delete SWFUpload.instances[this.movieName];
throw ex;}};
SWFUpload.instances={};
SWFUpload.movieCount=0;
SWFUpload.version="2.5.0 2010-01-15 Beta 2";
SWFUpload.QUEUE_ERROR={
QUEUE_LIMIT_EXCEEDED:-100,
FILE_EXCEEDS_SIZE_LIMIT:-110,
ZERO_BYTE_FILE:-120,
INVALID_FILETYPE:-130};
SWFUpload.UPLOAD_ERROR={
HTTP_ERROR:-200,
MISSING_UPLOAD_URL:-210,
IO_ERROR:-220,
SECURITY_ERROR:-230,
UPLOAD_LIMIT_EXCEEDED:-240,
UPLOAD_FAILED:-250,
SPECIFIED_FILE_ID_NOT_FOUND:-260,
FILE_VALIDATION_FAILED:-270,
FILE_CANCELLED:-280,
UPLOAD_STOPPED:-290,
RESIZE:-300};
SWFUpload.FILE_STATUS={
QUEUED:-1,
IN_PROGRESS:-2,
ERROR:-3,
COMPLETE:-4,
CANCELLED:-5};
SWFUpload.UPLOAD_TYPE={
NORMAL:-1,
RESIZED:-2};
SWFUpload.BUTTON_ACTION={
SELECT_FILE:-100,
SELECT_FILES:-110,
START_UPLOAD:-120,
JAVASCRIPT:-130,
NONE:-130};
SWFUpload.CURSOR={
ARROW:-1,
HAND:-2};
SWFUpload.WINDOW_MODE={
WINDOW:"window",
TRANSPARENT:"transparent",
OPAQUE:"opaque"};
SWFUpload.RESIZE_ENCODING={
JPEG:-1,
PNG:-2};
SWFUpload.completeURL=function(url){
try{
var path="",indexSlash=-1;
if(typeof(url)!=="string"||url.match(/^https?:\/\//i)||url.match(/^\//)||url===""){
return url;}
indexSlash=window.location.pathname.lastIndexOf("/");
if(indexSlash<=0){
path="/";}else{
path=window.location.pathname.substr(0,indexSlash)+"/";}
return path+url;}catch(ex){
return url;}};
SWFUpload.onload=function(){};
SWFUpload.prototype.initSettings=function(userSettings){
this.ensureDefault=function(settingName,defaultValue){
var setting=userSettings[settingName];
if(setting!=undefined){
this.settings[settingName]=setting;}else{
this.settings[settingName]=defaultValue;}};
this.ensureDefault("upload_url","");
this.ensureDefault("preserve_relative_urls",false);
this.ensureDefault("file_post_name","Filedata");
this.ensureDefault("post_params",{});
this.ensureDefault("use_query_string",false);
this.ensureDefault("requeue_on_error",false);
this.ensureDefault("http_success",[]);
this.ensureDefault("assume_success_timeout",0);
this.ensureDefault("file_types","*.*");
this.ensureDefault("file_types_description","All Files");
this.ensureDefault("file_size_limit",0);
this.ensureDefault("file_upload_limit",0);
this.ensureDefault("file_queue_limit",0);
this.ensureDefault("flash_url","swfupload.swf");
this.ensureDefault("flash9_url","swfupload_fp9.swf");
this.ensureDefault("prevent_swf_caching",true);
this.ensureDefault("button_image_url","");
this.ensureDefault("button_width",1);
this.ensureDefault("button_height",1);
this.ensureDefault("button_text","");
this.ensureDefault("button_text_style","color: #000000; font-size: 16pt;");
this.ensureDefault("button_text_top_padding",0);
this.ensureDefault("button_text_left_padding",0);
this.ensureDefault("button_action",SWFUpload.BUTTON_ACTION.SELECT_FILES);
this.ensureDefault("button_disabled",false);
this.ensureDefault("button_placeholder_id","");
this.ensureDefault("button_placeholder",null);
this.ensureDefault("button_cursor",SWFUpload.CURSOR.ARROW);
this.ensureDefault("button_window_mode",SWFUpload.WINDOW_MODE.WINDOW);
this.ensureDefault("debug",false);
this.settings.debug_enabled=this.settings.debug;
this.settings.return_upload_start_handler=this.returnUploadStart;
this.ensureDefault("swfupload_preload_handler",null);
this.ensureDefault("swfupload_load_failed_handler",null);
this.ensureDefault("swfupload_loaded_handler",null);
this.ensureDefault("file_dialog_start_handler",null);
this.ensureDefault("file_queued_handler",null);
this.ensureDefault("file_queue_error_handler",null);
this.ensureDefault("file_dialog_complete_handler",null);
this.ensureDefault("upload_resize_start_handler",null);
this.ensureDefault("upload_start_handler",null);
this.ensureDefault("upload_progress_handler",null);
this.ensureDefault("upload_error_handler",null);
this.ensureDefault("upload_success_handler",null);
this.ensureDefault("upload_complete_handler",null);
this.ensureDefault("mouse_click_handler",null);
this.ensureDefault("mouse_out_handler",null);
this.ensureDefault("mouse_over_handler",null);
this.ensureDefault("debug_handler",this.debugMessage);
this.ensureDefault("custom_settings",{});
this.customSettings=this.settings.custom_settings;
if(!!this.settings.prevent_swf_caching){
this.settings.flash_url=this.settings.flash_url+(this.settings.flash_url.indexOf("?")<0?"?":"&")+"preventswfcaching="+new Date().getTime();
this.settings.flash9_url=this.settings.flash9_url+(this.settings.flash9_url.indexOf("?")<0?"?":"&")+"preventswfcaching="+new Date().getTime();}
if(!this.settings.preserve_relative_urls){
this.settings.upload_url=SWFUpload.completeURL(this.settings.upload_url);
this.settings.button_image_url=SWFUpload.completeURL(this.settings.button_image_url);}
delete this.ensureDefault;};
SWFUpload.prototype.loadSupport=function(){
this.support={
loading:swfobject.hasFlashPlayerVersion("9.0.28"),
imageResize:swfobject.hasFlashPlayerVersion("10.0.0")};};
SWFUpload.prototype.loadFlash=function(){
var targetElement,tempParent,wrapperType,flashHTML,els;
if(!this.support.loading){
this.queueEvent("swfupload_load_failed_handler",["Flash Player doesn't support SWFUpload"]);
return;}
if(document.getElementById(this.movieName)!==null){
this.support.loading=false;
this.queueEvent("swfupload_load_failed_handler",["Element ID already in use"]);
return;}
targetElement=document.getElementById(this.settings.button_placeholder_id)||this.settings.button_placeholder;
if(targetElement==undefined){
this.support.loading=false;
this.queueEvent("swfupload_load_failed_handler",["button place holder not found"]);
return;}
wrapperType=(targetElement.currentStyle&&targetElement.currentStyle["display"]||window.getComputedStyle&&document.defaultView.getComputedStyle(targetElement,null).getPropertyValue("display"))!=="block"?"span":"div";
tempParent=document.createElement(wrapperType);
flashHTML=this.getFlashHTML();
try{
tempParent.innerHTML=flashHTML;}catch(ex){
this.support.loading=false;
this.queueEvent("swfupload_load_failed_handler",["Exception loading Flash HTML into placeholder"]);
return;}
els=tempParent.getElementsByTagName("object");
if(!els||els.length>1||els.length===0){
this.support.loading=false;
this.queueEvent("swfupload_load_failed_handler",["Unable to find movie after adding to DOM"]);
return;}else if(els.length===1){
this.movieElement=els[0];}
targetElement.parentNode.replaceChild(tempParent.firstChild,targetElement);
if(window[this.movieName]==undefined){
window[this.movieName]=this.getMovieElement();}};
SWFUpload.prototype.getFlashHTML=function(flashVersion){
return['<object id="',this.movieName,'" type="application/x-shockwave-flash" data="',(this.support.imageResize?this.settings.flash_url:this.settings.flash9_url),'" width="',this.settings.button_width,'" height="',this.settings.button_height,'" class="swfupload">','<param name="wmode" value="',this.settings.button_window_mode,'" />','<param name="movie" value="',(this.support.imageResize?this.settings.flash_url:this.settings.flash9_url),'" />','<param name="quality" value="high" />','<param name="allowScriptAccess" value="always" />','<param name="flashvars" value="'+this.getFlashVars()+'" />','</object>'].join("");};
SWFUpload.prototype.getFlashVars=function(){
var httpSuccessString,paramString;
paramString=this.buildParamString();
httpSuccessString=this.settings.http_success.join(",");
return["movieName=",encodeURIComponent(this.movieName),"&amp;uploadURL=",encodeURIComponent(this.settings.upload_url),"&amp;useQueryString=",encodeURIComponent(this.settings.use_query_string),"&amp;requeueOnError=",encodeURIComponent(this.settings.requeue_on_error),"&amp;httpSuccess=",encodeURIComponent(httpSuccessString),"&amp;assumeSuccessTimeout=",encodeURIComponent(this.settings.assume_success_timeout),"&amp;params=",encodeURIComponent(paramString),"&amp;filePostName=",encodeURIComponent(this.settings.file_post_name),"&amp;fileTypes=",encodeURIComponent(this.settings.file_types),"&amp;fileTypesDescription=",encodeURIComponent(this.settings.file_types_description),"&amp;fileSizeLimit=",encodeURIComponent(this.settings.file_size_limit),"&amp;fileUploadLimit=",encodeURIComponent(this.settings.file_upload_limit),"&amp;fileQueueLimit=",encodeURIComponent(this.settings.file_queue_limit),"&amp;debugEnabled=",encodeURIComponent(this.settings.debug_enabled),"&amp;buttonImageURL=",encodeURIComponent(this.settings.button_image_url),"&amp;buttonWidth=",encodeURIComponent(this.settings.button_width),"&amp;buttonHeight=",encodeURIComponent(this.settings.button_height),"&amp;buttonText=",encodeURIComponent(this.settings.button_text),"&amp;buttonTextTopPadding=",encodeURIComponent(this.settings.button_text_top_padding),"&amp;buttonTextLeftPadding=",encodeURIComponent(this.settings.button_text_left_padding),"&amp;buttonTextStyle=",encodeURIComponent(this.settings.button_text_style),"&amp;buttonAction=",encodeURIComponent(this.settings.button_action),"&amp;buttonDisabled=",encodeURIComponent(this.settings.button_disabled),"&amp;buttonCursor=",encodeURIComponent(this.settings.button_cursor)].join("");};
SWFUpload.prototype.getMovieElement=function(){
if(this.movieElement==undefined){
this.movieElement=document.getElementById(this.movieName);}
if(this.movieElement===null){
throw"Could not find Flash element";}
return this.movieElement;};
SWFUpload.prototype.buildParamString=function(){
var name,postParams,paramStringPairs=[];
postParams=this.settings.post_params;
if(typeof(postParams)==="object"){
for(name in postParams){
if(postParams.hasOwnProperty(name)){
paramStringPairs.push(encodeURIComponent(name.toString())+"="+encodeURIComponent(postParams[name].toString()));}}}
return paramStringPairs.join("&amp;");};
SWFUpload.prototype.destroy=function(){
var movieElement;
try{
this.cancelUpload(null,false);
movieElement=this.cleanUp();
if(movieElement){
try{
movieElement.parentNode.removeChild(movieElement);}catch(ex){}}
window[this.movieName]=null;
SWFUpload.instances[this.movieName]=null;
delete SWFUpload.instances[this.movieName];
this.movieElement=null;
this.settings=null;
this.customSettings=null;
this.eventQueue=null;
this.movieName=null;
return true;}catch(ex2){
return false;}};
SWFUpload.prototype.displayDebugInfo=function(){
this.debug(
["---SWFUpload Instance Info---\n","Version: ",SWFUpload.version,"\n","Movie Name: ",this.movieName,"\n","Settings:\n","\t","upload_url:               ",this.settings.upload_url,"\n","\t","flash_url:                ",this.settings.flash_url,"\n","\t","flash9_url:                ",this.settings.flash9_url,"\n","\t","use_query_string:         ",this.settings.use_query_string.toString(),"\n","\t","requeue_on_error:         ",this.settings.requeue_on_error.toString(),"\n","\t","http_success:             ",this.settings.http_success.join(", "),"\n","\t","assume_success_timeout:   ",this.settings.assume_success_timeout,"\n","\t","file_post_name:           ",this.settings.file_post_name,"\n","\t","post_params:              ",this.settings.post_params.toString(),"\n","\t","file_types:               ",this.settings.file_types,"\n","\t","file_types_description:   ",this.settings.file_types_description,"\n","\t","file_size_limit:          ",this.settings.file_size_limit,"\n","\t","file_upload_limit:        ",this.settings.file_upload_limit,"\n","\t","file_queue_limit:         ",this.settings.file_queue_limit,"\n","\t","debug:                    ",this.settings.debug.toString(),"\n","\t","prevent_swf_caching:      ",this.settings.prevent_swf_caching.toString(),"\n","\t","button_placeholder_id:    ",this.settings.button_placeholder_id.toString(),"\n","\t","button_placeholder:       ",(this.settings.button_placeholder?"Set":"Not Set"),"\n","\t","button_image_url:         ",this.settings.button_image_url.toString(),"\n","\t","button_width:             ",this.settings.button_width.toString(),"\n","\t","button_height:            ",this.settings.button_height.toString(),"\n","\t","button_text:              ",this.settings.button_text.toString(),"\n","\t","button_text_style:        ",this.settings.button_text_style.toString(),"\n","\t","button_text_top_padding:  ",this.settings.button_text_top_padding.toString(),"\n","\t","button_text_left_padding: ",this.settings.button_text_left_padding.toString(),"\n","\t","button_action:            ",this.settings.button_action.toString(),"\n","\t","button_cursor:            ",this.settings.button_cursor.toString(),"\n","\t","button_disabled:          ",this.settings.button_disabled.toString(),"\n","\t","custom_settings:          ",this.settings.custom_settings.toString(),"\n","Event Handlers:\n","\t","swfupload_preload_handler assigned:  ",(typeof this.settings.swfupload_preload_handler==="function").toString(),"\n","\t","swfupload_load_failed_handler assigned:  ",(typeof this.settings.swfupload_load_failed_handler==="function").toString(),"\n","\t","swfupload_loaded_handler assigned:  ",(typeof this.settings.swfupload_loaded_handler==="function").toString(),"\n","\t","mouse_click_handler assigned:       ",(typeof this.settings.mouse_click_handler==="function").toString(),"\n","\t","mouse_over_handler assigned:        ",(typeof this.settings.mouse_over_handler==="function").toString(),"\n","\t","mouse_out_handler assigned:         ",(typeof this.settings.mouse_out_handler==="function").toString(),"\n","\t","file_dialog_start_handler assigned: ",(typeof this.settings.file_dialog_start_handler==="function").toString(),"\n","\t","file_queued_handler assigned:       ",(typeof this.settings.file_queued_handler==="function").toString(),"\n","\t","file_queue_error_handler assigned:  ",(typeof this.settings.file_queue_error_handler==="function").toString(),"\n","\t","upload_resize_start_handler assigned:      ",(typeof this.settings.upload_resize_start_handler==="function").toString(),"\n","\t","upload_start_handler assigned:      ",(typeof this.settings.upload_start_handler==="function").toString(),"\n","\t","upload_progress_handler assigned:   ",(typeof this.settings.upload_progress_handler==="function").toString(),"\n","\t","upload_error_handler assigned:      ",(typeof this.settings.upload_error_handler==="function").toString(),"\n","\t","upload_success_handler assigned:    ",(typeof this.settings.upload_success_handler==="function").toString(),"\n","\t","upload_complete_handler assigned:   ",(typeof this.settings.upload_complete_handler==="function").toString(),"\n","\t","debug_handler assigned:             ",(typeof this.settings.debug_handler==="function").toString(),"\n","Support:\n","\t","Load:                     ",(this.support.loading?"Yes":"No"),"\n","\t","Image Resize:             ",(this.support.imageResize?"Yes":"No"),"\n"].join(""));};
SWFUpload.prototype.addSetting=function(name,value,default_value){
if(value==undefined){
return(this.settings[name]=default_value);}else{
return(this.settings[name]=value);}};
SWFUpload.prototype.getSetting=function(name){
if(this.settings[name]!=undefined){
return this.settings[name];}
return"";};
SWFUpload.prototype.callFlash=function(functionName,argumentArray){
var movieElement,returnValue,returnString;
argumentArray=argumentArray||[];
movieElement=this.getMovieElement();
try{
if(movieElement!=undefined){
returnString=movieElement.CallFunction('<invoke name="'+functionName+'" returntype="javascript">'+__flash__argumentsToXML(argumentArray,0)+'</invoke>');
returnValue=eval(returnString);}else{
this.debug("Can't call flash because the movie wasn't found.");}}catch(ex){
this.debug("Exception calling flash function '"+functionName+"': "+ex.message);}
if(returnValue!=undefined&&typeof returnValue.post==="object"){
returnValue=this.unescapeFilePostParams(returnValue);}
return returnValue;};
SWFUpload.prototype.selectFile=function(){
this.callFlash("SelectFile");};
SWFUpload.prototype.selectFiles=function(){
this.callFlash("SelectFiles");};
SWFUpload.prototype.startUpload=function(fileID){
this.callFlash("StartUpload",[fileID]);};
SWFUpload.prototype.startResizedUpload=function(fileID,width,height,encoding,quality,allowEnlarging){
this.callFlash("StartUpload",[fileID,{"width":width,"height":height,"encoding":encoding,"quality":quality,"allowEnlarging":allowEnlarging}]);};
SWFUpload.prototype.cancelUpload=function(fileID,triggerErrorEvent){
if(triggerErrorEvent!==false){
triggerErrorEvent=true;}
this.callFlash("CancelUpload",[fileID,triggerErrorEvent]);};
SWFUpload.prototype.stopUpload=function(){
this.callFlash("StopUpload");};
SWFUpload.prototype.requeueUpload=function(indexOrFileID){
return this.callFlash("RequeueUpload",[indexOrFileID]);};
SWFUpload.prototype.getStats=function(){
return this.callFlash("GetStats");};
SWFUpload.prototype.setStats=function(statsObject){
this.callFlash("SetStats",[statsObject]);};
SWFUpload.prototype.getFile=function(fileID){
if(typeof(fileID)==="number"){
return this.callFlash("GetFileByIndex",[fileID]);}else{
return this.callFlash("GetFile",[fileID]);}};
SWFUpload.prototype.getQueueFile=function(fileID){
if(typeof(fileID)==="number"){
return this.callFlash("GetFileByQueueIndex",[fileID]);}else{
return this.callFlash("GetFile",[fileID]);}};
SWFUpload.prototype.addFileParam=function(fileID,name,value){
return this.callFlash("AddFileParam",[fileID,name,value]);};
SWFUpload.prototype.removeFileParam=function(fileID,name){
this.callFlash("RemoveFileParam",[fileID,name]);};
SWFUpload.prototype.setUploadURL=function(url){
this.settings.upload_url=url.toString();
this.callFlash("SetUploadURL",[url]);};
SWFUpload.prototype.setPostParams=function(paramsObject){
this.settings.post_params=paramsObject;
this.callFlash("SetPostParams",[paramsObject]);};
SWFUpload.prototype.addPostParam=function(name,value){
this.settings.post_params[name]=value;
this.callFlash("SetPostParams",[this.settings.post_params]);};
SWFUpload.prototype.removePostParam=function(name){
delete this.settings.post_params[name];
this.callFlash("SetPostParams",[this.settings.post_params]);};
SWFUpload.prototype.setFileTypes=function(types,description){
this.settings.file_types=types;
this.settings.file_types_description=description;
this.callFlash("SetFileTypes",[types,description]);};
SWFUpload.prototype.setFileSizeLimit=function(fileSizeLimit){
this.settings.file_size_limit=fileSizeLimit;
this.callFlash("SetFileSizeLimit",[fileSizeLimit]);};
SWFUpload.prototype.setFileUploadLimit=function(fileUploadLimit){
this.settings.file_upload_limit=fileUploadLimit;
this.callFlash("SetFileUploadLimit",[fileUploadLimit]);};
SWFUpload.prototype.setFileQueueLimit=function(fileQueueLimit){
this.settings.file_queue_limit=fileQueueLimit;
this.callFlash("SetFileQueueLimit",[fileQueueLimit]);};
SWFUpload.prototype.setFilePostName=function(filePostName){
this.settings.file_post_name=filePostName;
this.callFlash("SetFilePostName",[filePostName]);};
SWFUpload.prototype.setUseQueryString=function(useQueryString){
this.settings.use_query_string=useQueryString;
this.callFlash("SetUseQueryString",[useQueryString]);};
SWFUpload.prototype.setRequeueOnError=function(requeueOnError){
this.settings.requeue_on_error=requeueOnError;
this.callFlash("SetRequeueOnError",[requeueOnError]);};
SWFUpload.prototype.setHTTPSuccess=function(http_status_codes){
if(typeof http_status_codes==="string"){
http_status_codes=http_status_codes.replace(" ","").split(",");}
this.settings.http_success=http_status_codes;
this.callFlash("SetHTTPSuccess",[http_status_codes]);};
SWFUpload.prototype.setAssumeSuccessTimeout=function(timeout_seconds){
this.settings.assume_success_timeout=timeout_seconds;
this.callFlash("SetAssumeSuccessTimeout",[timeout_seconds]);};
SWFUpload.prototype.setDebugEnabled=function(debugEnabled){
this.settings.debug_enabled=debugEnabled;
this.callFlash("SetDebugEnabled",[debugEnabled]);};
SWFUpload.prototype.setButtonImageURL=function(buttonImageURL){
if(buttonImageURL==undefined){
buttonImageURL="";}
this.settings.button_image_url=buttonImageURL;
this.callFlash("SetButtonImageURL",[buttonImageURL]);};
SWFUpload.prototype.setButtonDimensions=function(width,height){
this.settings.button_width=width;
this.settings.button_height=height;
var movie=this.getMovieElement();
if(movie!=undefined){
movie.style.width=width+"px";
movie.style.height=height+"px";}
this.callFlash("SetButtonDimensions",[width,height]);};
SWFUpload.prototype.setButtonText=function(html){
this.settings.button_text=html;
this.callFlash("SetButtonText",[html]);};
SWFUpload.prototype.setButtonTextPadding=function(left,top){
this.settings.button_text_top_padding=top;
this.settings.button_text_left_padding=left;
this.callFlash("SetButtonTextPadding",[left,top]);};
SWFUpload.prototype.setButtonTextStyle=function(css){
this.settings.button_text_style=css;
this.callFlash("SetButtonTextStyle",[css]);};
SWFUpload.prototype.setButtonDisabled=function(isDisabled){
this.settings.button_disabled=isDisabled;
this.callFlash("SetButtonDisabled",[isDisabled]);};
SWFUpload.prototype.setButtonAction=function(buttonAction){
this.settings.button_action=buttonAction;
this.callFlash("SetButtonAction",[buttonAction]);};
SWFUpload.prototype.setButtonCursor=function(cursor){
this.settings.button_cursor=cursor;
this.callFlash("SetButtonCursor",[cursor]);};
SWFUpload.prototype.queueEvent=function(handlerName,argumentArray){
var self=this;
if(argumentArray==undefined){
argumentArray=[];}else if(!(argumentArray instanceof Array)){
argumentArray=[argumentArray];}
if(typeof this.settings[handlerName]==="function"){
this.eventQueue.push(function(){
this.settings[handlerName].apply(this,argumentArray);});
setTimeout(function(){
self.executeNextEvent();},0);}else if(this.settings[handlerName]!==null){
throw"Event handler "+handlerName+" is unknown or is not a function";}};
SWFUpload.prototype.executeNextEvent=function(){
var f=this.eventQueue?this.eventQueue.shift():null;
if(typeof(f)==="function"){
f.apply(this);}};
SWFUpload.prototype.unescapeFilePostParams=function(file){
var reg=/[$]([0-9a-f]{4})/i,unescapedPost={},uk,k,match;
if(file!=undefined){
for(k in file.post){
if(file.post.hasOwnProperty(k)){
uk=k;
while((match=reg.exec(uk))!==null){
uk=uk.replace(match[0],String.fromCharCode(parseInt("0x"+match[1],16)));}
unescapedPost[uk]=file.post[k];}}
file.post=unescapedPost;}
return file;};
SWFUpload.prototype.swfuploadPreload=function(){
var returnValue;
if(typeof this.settings.swfupload_preload_handler==="function"){
returnValue=this.settings.swfupload_preload_handler.call(this);}else if(this.settings.swfupload_preload_handler!=undefined){
throw"upload_start_handler must be a function";}
if(returnValue===undefined){
returnValue=true;}
return!!returnValue;}
SWFUpload.prototype.flashReady=function(){
var movieElement=this.cleanUp();
if(!movieElement){
this.debug("Flash called back ready but the flash movie can't be found.");
return;}
this.queueEvent("swfupload_loaded_handler");};
SWFUpload.prototype.cleanUp=function(){
var key,movieElement=this.getMovieElement();
try{
if(movieElement&&typeof(movieElement.CallFunction)==="unknown"){
this.debug("Removing Flash functions hooks (this should only run in IE and should prevent memory leaks)");
for(key in movieElement){
try{
if(typeof(movieElement[key])==="function"){
movieElement[key]=null;}}catch(ex){}}}}catch(ex1){}
window["__flash__removeCallback"]=function(instance,name){
try{
if(instance){
instance[name]=null;}}catch(flashEx){}};
return movieElement;};
SWFUpload.prototype.mouseClick=function(){
this.queueEvent("mouse_click_handler");};
SWFUpload.prototype.mouseOver=function(){
this.queueEvent("mouse_over_handler");};
SWFUpload.prototype.mouseOut=function(){
this.queueEvent("mouse_out_handler");};
SWFUpload.prototype.fileDialogStart=function(){
this.queueEvent("file_dialog_start_handler");};
SWFUpload.prototype.fileQueued=function(file){
file=this.unescapeFilePostParams(file);
this.queueEvent("file_queued_handler",file);};
SWFUpload.prototype.fileQueueError=function(file,errorCode,message){
file=this.unescapeFilePostParams(file);
this.queueEvent("file_queue_error_handler",[file,errorCode,message]);};
SWFUpload.prototype.fileDialogComplete=function(numFilesSelected,numFilesQueued,numFilesInQueue){
this.queueEvent("file_dialog_complete_handler",[numFilesSelected,numFilesQueued,numFilesInQueue]);};
SWFUpload.prototype.uploadResizeStart=function(file,resizeSettings){
file=this.unescapeFilePostParams(file);
this.queueEvent("upload_resize_start_handler",[file,resizeSettings.width,resizeSettings.height,resizeSettings.encoding,resizeSettings.quality]);};
SWFUpload.prototype.uploadStart=function(file){
file=this.unescapeFilePostParams(file);
this.queueEvent("return_upload_start_handler",file);};
SWFUpload.prototype.returnUploadStart=function(file){
var returnValue;
if(typeof this.settings.upload_start_handler==="function"){
file=this.unescapeFilePostParams(file);
returnValue=this.settings.upload_start_handler.call(this,file);}else if(this.settings.upload_start_handler!=undefined){
throw"upload_start_handler must be a function";}
if(returnValue===undefined){
returnValue=true;}
returnValue=!!returnValue;
this.callFlash("ReturnUploadStart",[returnValue]);};
SWFUpload.prototype.uploadProgress=function(file,bytesComplete,bytesTotal){
file=this.unescapeFilePostParams(file);
this.queueEvent("upload_progress_handler",[file,bytesComplete,bytesTotal]);};
SWFUpload.prototype.uploadError=function(file,errorCode,message){
file=this.unescapeFilePostParams(file);
this.queueEvent("upload_error_handler",[file,errorCode,message]);};
SWFUpload.prototype.uploadSuccess=function(file,serverData,responseReceived){
file=this.unescapeFilePostParams(file);
this.queueEvent("upload_success_handler",[file,serverData,responseReceived]);};
SWFUpload.prototype.uploadComplete=function(file){
file=this.unescapeFilePostParams(file);
this.queueEvent("upload_complete_handler",file);};
SWFUpload.prototype.debug=function(message){
this.queueEvent("debug_handler",message);};
SWFUpload.prototype.debugMessage=function(message){
var exceptionMessage,exceptionValues,key;
if(this.settings.debug){
exceptionValues=[];
if(typeof message==="object"&&typeof message.name==="string"&&typeof message.message==="string"){
for(key in message){
if(message.hasOwnProperty(key)){
exceptionValues.push(key+": "+message[key]);}}
exceptionMessage=exceptionValues.join("\n")||"";
exceptionValues=exceptionMessage.split("\n");
exceptionMessage="EXCEPTION: "+exceptionValues.join("\nEXCEPTION: ");
SWFUpload.Console.writeLine(exceptionMessage);}else{
SWFUpload.Console.writeLine(message);}}};
SWFUpload.Console={};
SWFUpload.Console.writeLine=function(message){
var console,documentForm;
try{
console=document.getElementById("SWFUpload_Console");
if(!console){
documentForm=document.createElement("form");
document.getElementsByTagName("body")[0].appendChild(documentForm);
console=document.createElement("textarea");
console.id="SWFUpload_Console";
console.style.fontFamily="monospace";
console.setAttribute("wrap","off");
console.wrap="off";
console.style.overflow="auto";
console.style.width="700px";
console.style.height="350px";
console.style.margin="5px";
documentForm.appendChild(console);}
console.value+=message+"\n";
console.scrollTop=console.scrollHeight-console.clientHeight;}catch(ex){
alert("Exception: "+ex.name+" Message: "+ex.message);}};
swfobject=function(){var D="undefined",r="object",S="Shockwave Flash",W="ShockwaveFlash.ShockwaveFlash",q="application/x-shockwave-flash",R="SWFObjectExprInst",x="onreadystatechange",O=window,j=document,t=navigator,T=false,U=[h],o=[],N=[],I=[],l,Q,E,B,J=false,a=false,n,G,m=true,M=function(){var aa=typeof j.getElementById!=D&&typeof j.getElementsByTagName!=D&&typeof j.createElement!=D,ah=t.userAgent.toLowerCase(),Y=t.platform.toLowerCase(),ae=Y?/win/.test(Y):/win/.test(ah),ac=Y?/mac/.test(Y):/mac/.test(ah),af=/webkit/.test(ah)?parseFloat(ah.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1")):false,X=!+"\v1",ag=[0,0,0],ab=null;if(typeof t.plugins!=D&&typeof t.plugins[S]==r){ab=t.plugins[S].description;if(ab&&!(typeof t.mimeTypes!=D&&t.mimeTypes[q]&&!t.mimeTypes[q].enabledPlugin)){T=true;X=false;ab=ab.replace(/^.*\s+(\S+\s+\S+$)/,"$1");ag[0]=parseInt(ab.replace(/^(.*)\..*$/,"$1"),10);ag[1]=parseInt(ab.replace(/^.*\.(.*)\s.*$/,"$1"),10);ag[2]=/[a-zA-Z]/.test(ab)?parseInt(ab.replace(/^.*[a-zA-Z]+(.*)$/,"$1"),10):0}}else{if(typeof O.ActiveXObject!=D){try{var ad=new ActiveXObject(W);if(ad){ab=ad.GetVariable("$version");if(ab){X=true;ab=ab.split(" ")[1].split(",");ag=[parseInt(ab[0],10),parseInt(ab[1],10),parseInt(ab[2],10)]}}}catch(Z){}}}return{w3:aa,pv:ag,wk:af,ie:X,win:ae,mac:ac}}(),k=function(){if(!M.w3){return}if((typeof j.readyState!=D&&j.readyState=="complete")||(typeof j.readyState==D&&(j.getElementsByTagName("body")[0]||j.body))){f()}if(!J){if(typeof j.addEventListener!=D){j.addEventListener("DOMContentLoaded",f,false)}if(M.ie&&M.win){j.attachEvent(x,function(){if(j.readyState=="complete"){j.detachEvent(x,arguments.callee);f()}});if(O==top){(function(){if(J){return}try{j.documentElement.doScroll("left")}catch(X){setTimeout(arguments.callee,0);return}f()})()}}if(M.wk){(function(){if(J){return}if(!/loaded|complete/.test(j.readyState)){setTimeout(arguments.callee,0);return}f()})()}s(f)}}();function f(){if(J){return}try{var Z=j.getElementsByTagName("body")[0].appendChild(C("span"));Z.parentNode.removeChild(Z)}catch(aa){return}J=true;var X=U.length;for(var Y=0;Y<X;Y++){U[Y]()}}function K(X){if(J){X()}else{U[U.length]=X}}function s(Y){if(typeof O.addEventListener!=D){O.addEventListener("load",Y,false)}else{if(typeof j.addEventListener!=D){j.addEventListener("load",Y,false)}else{if(typeof O.attachEvent!=D){i(O,"onload",Y)}else{if(typeof O.onload=="function"){var X=O.onload;O.onload=function(){X();Y()}}else{O.onload=Y}}}}}function h(){if(T){V()}else{H()}}function V(){var X=j.getElementsByTagName("body")[0];var aa=C(r);aa.setAttribute("type",q);var Z=X.appendChild(aa);if(Z){var Y=0;(function(){if(typeof Z.GetVariable!=D){var ab=Z.GetVariable("$version");if(ab){ab=ab.split(" ")[1].split(",");M.pv=[parseInt(ab[0],10),parseInt(ab[1],10),parseInt(ab[2],10)]}}else{if(Y<10){Y++;setTimeout(arguments.callee,10);return}}X.removeChild(aa);Z=null;H()})()}else{H()}}function H(){var ag=o.length;if(ag>0){for(var af=0;af<ag;af++){var Y=o[af].id;var ab=o[af].callbackFn;var aa={success:false,id:Y};if(M.pv[0]>0){var ae=c(Y);if(ae){if(F(o[af].swfVersion)&&!(M.wk&&M.wk<312)){w(Y,true);if(ab){aa.success=true;aa.ref=z(Y);ab(aa)}}else{if(o[af].expressInstall&&A()){var ai={};ai.data=o[af].expressInstall;ai.width=ae.getAttribute("width")||"0";ai.height=ae.getAttribute("height")||"0";if(ae.getAttribute("class")){ai.styleclass=ae.getAttribute("class")}if(ae.getAttribute("align")){ai.align=ae.getAttribute("align")}var ah={};var X=ae.getElementsByTagName("param");var ac=X.length;for(var ad=0;ad<ac;ad++){if(X[ad].getAttribute("name").toLowerCase()!="movie"){ah[X[ad].getAttribute("name")]=X[ad].getAttribute("value")}}P(ai,ah,Y,ab)}else{p(ae);if(ab){ab(aa)}}}}}else{w(Y,true);if(ab){var Z=z(Y);if(Z&&typeof Z.SetVariable!=D){aa.success=true;aa.ref=Z}ab(aa)}}}}}function z(aa){var X=null;var Y=c(aa);if(Y&&Y.nodeName=="OBJECT"){if(typeof Y.SetVariable!=D){X=Y}else{var Z=Y.getElementsByTagName(r)[0];if(Z){X=Z}}}return X}function A(){return!a&&F("6.0.65")&&(M.win||M.mac)&&!(M.wk&&M.wk<312)}function P(aa,ab,X,Z){a=true;E=Z||null;B={success:false,id:X};var ae=c(X);if(ae){if(ae.nodeName=="OBJECT"){l=g(ae);Q=null}else{l=ae;Q=X}aa.id=R;if(typeof aa.width==D||(!/%$/.test(aa.width)&&parseInt(aa.width,10)<310)){aa.width="310"}if(typeof aa.height==D||(!/%$/.test(aa.height)&&parseInt(aa.height,10)<137)){aa.height="137"}j.title=j.title.slice(0,47)+" - Flash Player Installation";var ad=M.ie&&M.win?"ActiveX":"PlugIn",ac="MMredirectURL="+O.location.toString().replace(/&/g,"%26")+"&MMplayerType="+ad+"&MMdoctitle="+j.title;if(typeof ab.flashvars!=D){ab.flashvars+="&"+ac}else{ab.flashvars=ac}if(M.ie&&M.win&&ae.readyState!=4){var Y=C("div");X+="SWFObjectNew";Y.setAttribute("id",X);ae.parentNode.insertBefore(Y,ae);ae.style.display="none";(function(){if(ae.readyState==4){ae.parentNode.removeChild(ae)}else{setTimeout(arguments.callee,10)}})()}u(aa,ab,X)}}function p(Y){if(M.ie&&M.win&&Y.readyState!=4){var X=C("div");Y.parentNode.insertBefore(X,Y);X.parentNode.replaceChild(g(Y),X);Y.style.display="none";(function(){if(Y.readyState==4){Y.parentNode.removeChild(Y)}else{setTimeout(arguments.callee,10)}})()}else{Y.parentNode.replaceChild(g(Y),Y)}}function g(ab){var aa=C("div");if(M.win&&M.ie){aa.innerHTML=ab.innerHTML}else{var Y=ab.getElementsByTagName(r)[0];if(Y){var ad=Y.childNodes;if(ad){var X=ad.length;for(var Z=0;Z<X;Z++){if(!(ad[Z].nodeType==1&&ad[Z].nodeName=="PARAM")&&!(ad[Z].nodeType==8)){aa.appendChild(ad[Z].cloneNode(true))}}}}}return aa}function u(ai,ag,Y){var X,aa=c(Y);if(M.wk&&M.wk<312){return X}if(aa){if(typeof ai.id==D){ai.id=Y}if(M.ie&&M.win){var ah="";for(var ae in ai){if(ai[ae]!=Object.prototype[ae]){if(ae.toLowerCase()=="data"){ag.movie=ai[ae]}else{if(ae.toLowerCase()=="styleclass"){ah+=' class="'+ai[ae]+'"'}else{if(ae.toLowerCase()!="classid"){ah+=" "+ae+'="'+ai[ae]+'"'}}}}}var af="";for(var ad in ag){if(ag[ad]!=Object.prototype[ad]){af+='<param name="'+ad+'" value="'+ag[ad]+'" />'}}aa.outerHTML='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'+ah+">"+af+"</object>";N[N.length]=ai.id;X=c(ai.id)}else{var Z=C(r);Z.setAttribute("type",q);for(var ac in ai){if(ai[ac]!=Object.prototype[ac]){if(ac.toLowerCase()=="styleclass"){Z.setAttribute("class",ai[ac])}else{if(ac.toLowerCase()!="classid"){Z.setAttribute(ac,ai[ac])}}}}for(var ab in ag){if(ag[ab]!=Object.prototype[ab]&&ab.toLowerCase()!="movie"){e(Z,ab,ag[ab])}}aa.parentNode.replaceChild(Z,aa);X=Z}}return X}function e(Z,X,Y){var aa=C("param");aa.setAttribute("name",X);aa.setAttribute("value",Y);Z.appendChild(aa)}function y(Y){var X=c(Y);if(X&&X.nodeName=="OBJECT"){if(M.ie&&M.win){X.style.display="none";(function(){if(X.readyState==4){b(Y)}else{setTimeout(arguments.callee,10)}})()}else{X.parentNode.removeChild(X)}}}function b(Z){var Y=c(Z);if(Y){for(var X in Y){if(typeof Y[X]=="function"){Y[X]=null}}Y.parentNode.removeChild(Y)}}function c(Z){var X=null;try{X=j.getElementById(Z)}catch(Y){}return X}function C(X){return j.createElement(X)}function i(Z,X,Y){Z.attachEvent(X,Y);I[I.length]=[Z,X,Y]}function F(Z){var Y=M.pv,X=Z.split(".");X[0]=parseInt(X[0],10);X[1]=parseInt(X[1],10)||0;X[2]=parseInt(X[2],10)||0;return(Y[0]>X[0]||(Y[0]==X[0]&&Y[1]>X[1])||(Y[0]==X[0]&&Y[1]==X[1]&&Y[2]>=X[2]))?true:false}function v(ac,Y,ad,ab){if(M.ie&&M.mac){return}var aa=j.getElementsByTagName("head")[0];if(!aa){return}var X=(ad&&typeof ad=="string")?ad:"screen";if(ab){n=null;G=null}if(!n||G!=X){var Z=C("style");Z.setAttribute("type","text/css");Z.setAttribute("media",X);n=aa.appendChild(Z);if(M.ie&&M.win&&typeof j.styleSheets!=D&&j.styleSheets.length>0){n=j.styleSheets[j.styleSheets.length-1]}G=X}if(M.ie&&M.win){if(n&&typeof n.addRule==r){n.addRule(ac,Y)}}else{if(n&&typeof j.createTextNode!=D){n.appendChild(j.createTextNode(ac+" {"+Y+"}"))}}}function w(Z,X){if(!m){return}var Y=X?"visible":"hidden";if(J&&c(Z)){c(Z).style.visibility=Y}else{v("#"+Z,"visibility:"+Y)}}function L(Y){var Z=/[\\\"<>\.;]/;var X=Z.exec(Y)!=null;return X&&typeof encodeURIComponent!=D?encodeURIComponent(Y):Y}var d=function(){if(M.ie&&M.win){window.attachEvent("onunload",function(){var ac=I.length;for(var ab=0;ab<ac;ab++){I[ab][0].detachEvent(I[ab][1],I[ab][2])}var Z=N.length;for(var aa=0;aa<Z;aa++){y(N[aa])}for(var Y in M){M[Y]=null}M=null;for(var X in swfobject){swfobject[X]=null}swfobject=null})}}();return{registerObject:function(ab,X,aa,Z){if(M.w3&&ab&&X){var Y={};Y.id=ab;Y.swfVersion=X;Y.expressInstall=aa;Y.callbackFn=Z;o[o.length]=Y;w(ab,false)}else{if(Z){Z({success:false,id:ab})}}},getObjectById:function(X){if(M.w3){return z(X)}},embedSWF:function(ab,ah,ae,ag,Y,aa,Z,ad,af,ac){var X={success:false,id:ah};if(M.w3&&!(M.wk&&M.wk<312)&&ab&&ah&&ae&&ag&&Y){w(ah,false);K(function(){ae+="";ag+="";var aj={};if(af&&typeof af===r){for(var al in af){aj[al]=af[al]}}aj.data=ab;aj.width=ae;aj.height=ag;var am={};if(ad&&typeof ad===r){for(var ak in ad){am[ak]=ad[ak]}}if(Z&&typeof Z===r){for(var ai in Z){if(typeof am.flashvars!=D){am.flashvars+="&"+ai+"="+Z[ai]}else{am.flashvars=ai+"="+Z[ai]}}}if(F(Y)){var an=u(aj,am,ah);if(aj.id==ah){w(ah,true)}X.success=true;X.ref=an}else{if(aa&&A()){aj.data=aa;P(aj,am,ah,ac);return}else{w(ah,true)}}if(ac){ac(X)}})}else{if(ac){ac(X)}}},switchOffAutoHideShow:function(){m=false},ua:M,getFlashPlayerVersion:function(){return{major:M.pv[0],minor:M.pv[1],release:M.pv[2]}},hasFlashPlayerVersion:F,createSWF:function(Z,Y,X){if(M.w3){return u(Z,Y,X)}else{return undefined}},showExpressInstall:function(Z,aa,X,Y){if(M.w3&&A()){P(Z,aa,X,Y)}},removeSWF:function(X){if(M.w3){y(X)}},createCSS:function(aa,Z,Y,X){if(M.w3){v(aa,Z,Y,X)}},addDomLoadEvent:K,addLoadEvent:s,getQueryParamValue:function(aa){var Z=j.location.search||j.location.hash;if(Z){if(/\?/.test(Z)){Z=Z.split("?")[1]}if(aa==null){return L(Z)}var Y=Z.split("&");for(var X=0;X<Y.length;X++){if(Y[X].substring(0,Y[X].indexOf("="))==aa){return L(Y[X].substring((Y[X].indexOf("=")+1)))}}}return""},expressInstallCallback:function(){if(a){var X=c(R);if(X&&l){X.parentNode.replaceChild(l,X);if(Q){w(Q,true);if(M.ie&&M.win){l.style.display="block"}}if(E){E(B)}}a=false}}}}();
swfobject.addDomLoadEvent(function(){
if(typeof(SWFUpload.onload)==="function"){
SWFUpload.onload.call(window);}});
Ext.namespace('Ext.ux');
Ext.ux.SwfUploadPanel=Ext.extend(Ext.grid.GridPanel,{
strings:{
text_add:'Add Photo(s)',
text_upload:'Upload Photo(s)',
text_cancel:'Cancel Upload',
text_clear:'Clear Queue',
text_progressbar:'Progress Bar',
text_remove:'Remove Photo',
text_remove_sure:'Are you sure you wish to remove this file from queue?',
text_error:'Error',
text_uploading:'Uploading file: {0} ({1} of {2})',
header_filename:'Filename',
header_size:'Size',
header_status:'Status',
status:{
0:'Queued',
1:'Uploading...',
2:'Completed',
3:'Error',
4:'Cancelled'},
error_queue_exceeded:'The selected file(s) exceed(s) the maximum number of {0} queued files.',
error_queue_slots_0:'There is no slot left',
error_queue_slots_1:'There is only one slot left',
error_queue_slots_2:'There are only {0} slots left',
error_size_exceeded:'The selected files size exceeds the allowed limit of 1 MB.',
error_zero_byte_file:'Zero byte file selected.',
error_invalid_filetype:'Invalid filetype selected.',
error_http_error:'HTTP error:',
error_security_error:'Security Error. Not allowed to post to different url.'},
swfResizeLimit:200*1024,
swfResizeWidth:1600,
swfResizeHeight:1200,
swfResizeQuality:75,
single_select:false,
confirm_delete:true,
file_types:"*.*",
file_types_description:"All Files",
file_size_limit:"1MB",
file_upload_limit:"0",
file_queue_limit:"0",
file_post_name:"Filedata",
flash_url:"swfupload.swf",
flash9_url:"swfupload_fp9.swf",
debug:false,
prevent_swf_caching:true,
autoExpandColumn:'name',
enableColumnResize:false,
enableColumnMove:false,
upload_cancelled:false,
initComponent:function(){
this.addEvents('swfUploadLoaded','swfUploadFailed','fileQueued','startUpload','fileUploadError','fileUploadSuccess','fileUploadComplete','allUploadsComplete','removeFiles','removeAllFiles');
this.rec=Ext.data.Record.create([
{name:'name'},
{name:'size'},
{name:'id'},
{name:'type'},
{name:'creationdate',type:'date',dateFormat:'m/d/Y'},
{name:'status'}]);
this.store=new Ext.data.Store({
reader:new Ext.data.JsonReader({
id:'id'},this.rec)});
this.columns=[{
id:'name',
header:this.strings.header_filename,
dataIndex:'name'},{
id:'size',
header:this.strings.header_size,
width:80,
dataIndex:'size',
renderer:this.formatBytes},{
id:'status',
header:this.strings.header_status,
width:90,
dataIndex:'status',
renderer:this.formatStatus.createDelegate(this)},{
id:'progress',
header:'Progress',
width:70,
renderer:this.formatProgressBar}];
this.sm=new Ext.grid.RowSelectionModel({
singleSelect:this.single_select});
this.sm.on('selectionchange',function(){
if(this.debug)console.info('SELECTION CHANGE');
var selRecords=this.selModel.getSelections();
this.clearBtn.setDisabled(selRecords.length<=0);},this);
this.progress_bar=new Ext.ProgressBar({
text:this.strings.text_progressbar,
listeners:{
render:function(){
this.resizeProgressBar();},
scope:this}});
this.tbar=[{
text:this.strings.text_add,
iconCls:'SwfUploadPanel_iconAdd',
xhandler:function(){
if(this.single_select){
this.suo.selectFile();}
else{
this.suo.selectFiles();}},
xscope:this,
listeners:{
render:function(){
this.initButton();},
scope:this}},'->',{
text:this.strings.text_cancel,
iconCls:'SwfUploadPanel_iconCancel',
handler:this.stopUpload,
scope:this,
hidden:true},{
text:this.strings.text_remove,
iconCls:'SwfUploadPanel_iconDelete',
handler:this.removeFiles,
scope:this,
hidden:true,
disabled:true},{
text:this.strings.text_upload,
iconCls:'SwfUploadPanel_iconUpload',
handler:this.startUpload,
scope:this,
hidden:true}];
this.addListener({
keypress:{
fn:function(e){
if(this.confirm_delete){
if(e.getKey()==e.DELETE){
Ext.MessageBox.confirm(this.strings.text_remove,this.strings.text_remove_sure,function(e){
if(e=='yes'){
this.removeFiles();}},this);}}else{
this.removeFiles(this);}},
scope:this},
contextmenu:function(e){
e.stopEvent();},
render:function(){
this.addBtn=this.getTopToolbar().items.items[0];
this.cancelBtn=this.getTopToolbar().items.items[2];
this.clearBtn=this.getTopToolbar().items.items[3];
this.uploadBtn=this.getTopToolbar().items.items[4];
(function(){
this.on('resize',this.resizeProgressBar,this);}).defer(100,this);}});
Ext.ux.SwfUploadPanel.superclass.initComponent.call(this);},
initButton:function(){
var suoID=Ext.id();
var em=this.addBtn.el.child('em');
em.setStyle({
position:'relative',
display:'block'});
em.createChild({
tag:'div',
id:suoID});
this.suo=new SWFUpload({
button_placeholder_id:suoID,
button_width:this.button_width||em.getWidth(),
button_height:this.button_height||em.getHeight(),
button_cursor:SWFUpload.CURSOR.HAND,
button_window_mode:SWFUpload.WINDOW_MODE.TRANSPARENT,
upload_url:this.upload_url,
post_params:this.post_params,
file_post_name:this.file_post_name,
file_size_limit:this.file_size_limit,
file_queue_limit:this.file_queue_limit,
file_types:this.file_types,
file_types_description:this.file_types_description,
file_upload_limit:this.file_upload_limit,
flash_url:this.flash_url,
flash9_url:this.flash9_url,
prevent_swf_caching:this.prevent_swf_caching,
swfupload_loaded_handler:this.swfUploadLoaded.createDelegate(this),
swfupload_load_failed_handler:this.swfUploadFailed.createDelegate(this),
file_dialog_start_handler:this.fileDialogStart.createDelegate(this),
file_queued_handler:this.fileQueue.createDelegate(this),
file_queue_error_handler:this.fileQueueError.createDelegate(this),
file_dialog_complete_handler:this.fileDialogComplete.createDelegate(this),
upload_start_handler:this.uploadStart.createDelegate(this),
upload_progress_handler:this.uploadProgress.createDelegate(this),
upload_error_handler:this.uploadError.createDelegate(this),
upload_success_handler:this.uploadSuccess.createDelegate(this),
upload_complete_handler:this.uploadComplete.createDelegate(this),
debug:this.debug,
debug_handler:this.debug?this.debugHandler:Ext.emptyFn});},
formatProgressBar:function(_v,cellmeta,record){
switch(record.data.fileState){
case SWFUpload.FILE_STATUS.COMPLETE:
if(Ext.isIE){
returnValue='<div class="x-progress-wrap" style="height: 18px">'+'<div class="x-progress-inner">'+'<div style="width: 100%;" class="x-progress-bar x-progress-text">'+'100 %'+'</div>'+'</div>'+'</div>';}else{
returnValue='<div class="x-progress-wrap" style="height: 18px">'+'<div class="x-progress-inner">'+'<div id="progressBar_'+record.data.id+'" style="width: 100%;" class="x-progress-bar">'+'</div>'+'<div id="progressText_'+record.data.id+'" style="width: 100%;" class="x-progress-text x-progress-text-back" />100 %</div>'+'</div>'+'</div>';}
break;
default:
returnValue='<div class="x-progress-wrap" style="height: 18px">'+'<div class="x-progress-inner">'+'<div id="progressBar_'+record.data.id+'" style="width: 0%;" class="x-progress-bar">'+'</div>'+'<div id="progressText_'+record.data.id+'" style="width: 100%;" class="x-progress-text x-progress-text-back" />0 %</div>'+'</div>'+'</div>';
break;}
return returnValue;},
resizeProgressBar:function(){
this.progress_bar.setWidth(this.getBottomToolbar().el.getWidth()-5);
Ext.fly(this.progress_bar.el.dom.firstChild.firstChild).applyStyles("height: 18px");},
debugHandler:function(line){
console.log(line);},
formatStatus:function(status){
return this.strings.status[status];},
formatBytes:function(size){
if(!size){
size=0;}
var suffix=["B","KB","MB","GB"];
var result=size;
size=parseInt(size,10);
result=size+" "+suffix[0];
var loop=0;
while(size/1024>1){
size=size/1024;
loop++;}
result=Math.round(size)+" "+suffix[loop];
return result;
if(isNaN(bytes)){
return('');}
var unit,val;
if(bytes<999){
unit='B';
val=(!bytes&&this.progressRequestCount>=1)?'~':bytes;}else if(bytes<999999){
unit='kB';
val=Math.round(bytes/1000);}else if(bytes<999999999){
unit='MB';
val=Math.round(bytes/100000)/10;}else if(bytes<999999999999){
unit='GB';
val=Math.round(bytes/100000000)/10;}else{
unit='TB';
val=Math.round(bytes/100000000000)/10;}
return(val+' '+unit);},
swfUploadLoaded:function(){
if(this.debug){
console.info('SWFUPLOAD LOADED');}
Ext.get(this.suo.movieName).setStyle({
position:'absolute',
top:0,
left:0});
this.fireEvent('swfUploadLoaded',this);},
swfUploadFailed:function(){
if(this.debug)console.info('SWFUPLOAD FAILED');
this.fireEvent('swfUploadFailed',this);},
fileDialogStart:function(){
if(this.debug)console.info('FILE DIALOG START');
this.fireEvent('fileDialogStart',this);},
fileQueue:function(file){
if(this.debug)console.info('FILE QUEUE');
file.status=0;
r=new this.rec(file);
r.id=file.id;
this.store.add(r);
this.fireEvent('fileQueued',this,file);},
fileQueueError:function(file,code,message){
if(this.debug)console.info('FILE QUEUE ERROR');
switch(code){
case-100:
var slots;
switch(message){
case'0':
slots=this.strings.error_queue_slots_0;
break;
case'1':
slots=this.strings.error_queue_slots_1;
break;
default:
slots=String.format(this.strings.error_queue_slots_2,message);}
Ext.MessageBox.alert(this.strings.text_error,String.format(this.strings.error_queue_exceeded+' '+slots,this.file_queue_limit));
break;
case-110:
Ext.MessageBox.alert(this.strings.text_error,String.format(this.strings.error_size_exceeded,this.formatBytes(this.file_size_limit*1024)));
break;
case-120:
Ext.MessageBox.alert(this.strings.text_error,this.strings.error_zero_byte_file);
break;
case-130:
Ext.MessageBox.alert(this.strings.text_error,this.strings.error_invalid_filetype);
break;}
this.fireEvent('fileQueueError',this,file,code);},
fileDialogComplete:function(file_count){
if(this.debug)console.info('FILE DIALOG COMPLETE: '+file_count);
if(file_count>0){
this.uploadBtn.show();
this.clearBtn.show();}
this.addBtn.show();
this.fireEvent('fileDialogComplete',this,file_count);},
uploadStart:function(file){
if(this.debug)console.info('UPLOAD START');
this.fireEvent('uploadStart',this,file);
return true;},
progressCount:0,
uploadProgress:function(file,bytes_completed,bytes_total){
var percent=Math.ceil((bytes_completed/bytes_total)*100);
if(percent!=this.progressCount)
{
Ext.getDom('progressBar_'+file.id).style.width=percent+"%";
Ext.getDom('progressText_'+file.id).innerHTML=percent+" %";
this.progressCount=percent;}
this.store.getById(file.id).set('status',1);
this.fireEvent('uploadProgress',this,file,bytes_completed,bytes_total);},
uploadError:function(file,error,code){
if(this.debug)console.info('UPLOAD ERROR');
if(code==500)
{
Ext.MessageBox.alert(this.strings.text_error,"File too big");
this.fireEvent('fileUploadError',this,file,error,code);
return;}
switch(error){
case-200:
Ext.MessageBox.alert(this.strings.text_error,this.strings.error_http_error+' '+code);
break;
case-230:
Ext.MessageBox.alert(this.strings.text_error,this.strings.error_security_error);
break;
case-290:
this.store.getById(file.id).set('status',4);
this.store.getById(file.id).commit();
break;}
this.fireEvent('fileUploadError',this,file,error,code);},
uploadSuccess:function(file,response){
if(this.debug)console.info('UPLOAD SUCCESS');
var data=Ext.decode(response);
if(data.success){
this.store.getById(file.id).data.fileState=SWFUpload.FILE_STATUS.COMPLETE;
this.store.getById(file.id).set('status',2);}else{
this.store.getById(file.id).set('status',3);
this.store.getById(file.id).commit();
if(data.msg){
Ext.MessageBox.alert(this.strings.text_error,data.msg);}}
this.fireEvent('fileUploadSuccess',this,file,data);},
uploadComplete:function(file){
if(this.debug)console.info('UPLOAD COMPLETE');
this.progress_bar.reset();
this.progress_bar.updateText(this.strings.text_progressbar);
if(this.suo.getStats().files_queued&&!this.upload_cancelled){
this.doStartUpload();}else{
this.fireEvent('fileUploadComplete',this,file);
this.allUploadsComplete();}},
allUploadsComplete:function(){
this.cancelBtn.hide();
this.addBtn.show();
this.fireEvent('allUploadsComplete',this);},
addPostParam:function(name,value){
if(this.suo){
this.suo.settings.post_params[name]=value;
this.suo.setPostParams(this.suo.settings.post_params);}else{
this.post_params[name]=value;}},
startUpload:function(){
if(this.debug)console.info('START UPLOAD');
this.uploadBtn.setDisabled(true);
this.clearBtn.hide();
this.addBtn.setDisabled(true);
this.upload_cancelled=false;
this.fireEvent('startUpload',this);
this.doStartUpload();},
doStartUpload:function(){
if(this.suo.support.imageResize&&this.suo.getQueueFile(0).size>this.swfResizeLimit){
this.suo.startResizedUpload(this.suo.getQueueFile(0).ID,this.swfResizeWidth,this.swfResizeHeight,SWFUpload.RESIZE_ENCODING.JPEG,this.swfResizeQuality)}else{
this.suo.startUpload(this.suo.getQueueFile(0).ID)}},
stopUpload:function(file){
if(this.debug)console.info('STOP UPLOAD');
this.suo.stopUpload();
this.upload_cancelled=true;
this.getStore().each(function(){
if(this.data.status==1){
this.set('status',0);
this.commit();}});
this.cancelBtn.hide();
if(this.suo.getStats().files_queued>0){
this.uploadBtn.show();}
this.addBtn.show();
this.clearBtn.show();
this.progress_bar.reset();
this.progress_bar.updateText(this.strings.text_progressbar);},
removeFiles:function(){
if(this.debug)console.info('REMOVE FILES');
var selRecords=this.selModel.getSelections();
for(var i=0;i<selRecords.length;i++){
if(selRecords[i].data.status!=1){
this.suo.cancelUpload(selRecords[i].id);
this.store.remove(selRecords[i]);}}
if(this.suo.getStats().files_queued===0){
this.uploadBtn.hide();
this.clearBtn.hide();}
this.fireEvent('removeFiles',this);},
removeAllFiles:function(){
if(this.debug)console.info('REMOVE ALL');
var files_left=this.suo.getStats().files_queued;
while(files_left>0){
this.suo.cancelUpload();
files_left=this.suo.getStats().files_queued;}
this.store.removeAll();
this.cancelBtn.hide();
this.uploadBtn.hide();
this.fireEvent('removeAllFiles',this);}});
Ext.ns('ExtGallery');
GalleryTypeCombo=Ext.extend(Ext.ux.form.HtmlSelect,{
constructor:function(config){
config=config||{};
GalleryTypeCombo.superclass.constructor.call(this,Ext.apply({
name:'type',
store:ExtGallery.GALLERY_TYPES,
valueField:'id',
displayField:'desc',
fieldLabel:"Type",
hiddenName:'type'},config));}});
Ext.reg('gallerytypecombo',GalleryTypeCombo);
function clickSelect(){
this.el.on('click',function(){
this.dom.select();});}
function doHref(a,href){
a.href=href;}
log={'debug':function(){
for(var i=0;i<arguments.length;i++){
var x=arguments[i];
var div=document.createElement('pre');
div.style.textAlign='left';
div.innerHTML=x;
document.body.appendChild(div);}},'dir':function(x){
for(var k in x){
log.debug(k+': '+x[k]);}
log.debug("\n");}};
log.info=log.debug;
Ext.ns('ExtGallery');
GallerySettingsForm=Ext.extend(Ext.FormPanel,{
constructor:function(config){
config=config||{};
GallerySettingsForm.superclass.constructor.call(this,Ext.apply(config,{
url:'/ajax-gallery-settings/',
border:false,
defaultType:'fieldset',
defaults:{
defaults:{
msgTarget:'side'}},
items:[{
title:"Default values for new galleries",
items:[{
xtype:'gallerytypecombo',
ref:'../type',
name:'type',
width:200},{
xtype:'container',
layout:'hbox',
fieldLabel:"Width",
items:[{
xtype:'spinnerfield',
name:'width',
fieldLabel:"Width",
width:70,
incrementValue:50,
minValue:100,
maxValue:1200},{
xtype:'label',
text:"pixels",
margins:'3 0 0 3'}]},{
xtype:'textfield',
name:'watermark',
ref:'watermarkField',
fieldLabel:"Watermark",
helpText:"text to draw on pictures"}]},{
title:"Upload type",
items:{
xtype:'radiogroup',
name:'upload_type',
columns:1,
items:[{
inputValue:'flash',
name:'upload_type',
boxLabel:"Flash (faster)"},{
inputValue:'std',
name:'upload_type',
boxLabel:"Standard"}]}},{
title:'List of galleries',
items:[{
xtype:'compositefield',
fieldLabel:"Show",
items:[{
xtype:'spinnerfield',
name:'list_size',
incrementValue:1,
minValue:10,
maxValue:100,
width:100},{
xtype:'label',
text:'galleries per page'}]},{
xtype:'compositefield',
fieldLabel:"Manager window height",
items:[{
xtype:'spinnerfield',
name:'manager_height',
incrementValue:10,
minValue:420,
maxValue:1000,
width:100},{
xtype:'label',
text:"pixels"}]}]},{
title:'Folder window',
items:[{
xtype:'checkbox',
name:'use_folders',
inputValue:'1',
fieldLabel:'Show folders'},{
xtype:'compositefield',
fieldLabel:"Folder window width",
items:[{
xtype:'spinnerfield',
name:'folders_width',
incrementValue:10,
minValue:180,
maxValue:400,
width:100},{
xtype:'label',
text:'pixels'}]}]}]}));}});
Ext.reg('gallerysettingsform',GallerySettingsForm);
var swfUploadForm,regUploadForm,activeForm;
function switchUploads()
{
if(!activeForm)return false;
activeForm.hide();
var a=document.getElementById('switchUploads');
if(activeForm==swfUploadForm){
activeForm=regUploadForm;
a.innerHTML='switch to Flash upload';}else{
activeForm=swfUploadForm;
a.innerHTML='switch to standard upload';}
activeForm.show();
return false;}
Ext.onReady(function(){
Ext.QuickTips.init();
function uploadComplete(){
location.href='/manager/?uid='+ExtGallery.UPLOAD_ID;}
var regUploadPanel,regEmailField=new Ext.form.TextField({
fieldLabel:'E-mail',
value:'',
anchor:'100%'});
function getUploadField(){
var t=new Ext.FormPanel({
layout:'column',
labelWidth:1,
hideLabel:true,
border:false,
url:"http://"+Extjs.SITE_DOMAIN+"/upload-gallery/",
maxFileSize:1024*1024*10,
fileUpload:true,
width:340,
items:[{
xtype:'button',
width:'5%',
iconCls:'SwfUploadPanel_iconDelete',
handler:function(){
regUploadPanel.remove(t);},
ref:'removeBtn'},{
xtype:'fileuploadfield',
width:310,
ref:'upload'},{
xtype:'hidden',
name:'upload_id',
value:ExtGallery.UPLOAD_ID},{
xtype:'hidden',
name:'session_id',
value:Ext.util.Cookies.get('sessionid')},{
xtype:'hidden',
name:'email',
ref:'email'}],
submitform:function(){
if(t.upload.getValue()){
t.getForm().submit({
success:function(form,resp){
t.fireEvent('uploadsuccess',resp.result);}});}else{
t.fireEvent('uploadsuccess');}}});
return t;};
regUploadPanel=new Ext.Panel({
autoScroll:true,
forceLayout:true,
height:210+ExtAccount.IS_LOGGED*40,
padding:5,
tbar:[{
xtype:'tbbutton',
text:'Add Photo(s)',
iconCls:'SwfUploadPanel_iconAdd',
handler:function(){
regUploadPanel.add(getUploadField());
regUploadPanel.doLayout();},
scope:this,
ref:'addBtn'},'->',{
xtype:'tbbutton',
text:'Upload Photo(s)',
iconCls:'SwfUploadPanel_iconUpload',
handler:function(){
if(regUploadPanel.items.items.length<=0)return;
var hasFiles=false;
Ext.each(regUploadPanel.items.items,function(e,ind){
if(e.upload.getValue())hasFiles=true;});
if(hasFiles){
regEmailField.setDisabled(true);
regUploadPanel.getTopToolbar().addBtn.setDisabled(true);
regUploadPanel.getTopToolbar().uploadBtn.setDisabled(true);
Ext.each(regUploadPanel.items.items,function(e,ind){
e.email.setValue(regEmailField.getValue());
e.removeBtn.setDisabled(true);
if(e.upload.getValue())hasFiles=true;
e.on('uploadsuccess',function(resp){
try{
regUploadPanel.items.items[ind].removeBtn.setIconClass('SwfUploadPanel_iconOK');
regUploadPanel.items.items[ind+1].submitform();}catch(e){
uploadComplete();}});});
regUploadPanel.items.items[0].submitform();
activeForm=null;}},
scope:this,
ref:'uploadBtn'}]});
for(var i=0;i<7+ExtAccount.IS_LOGGED*2;i++)regUploadPanel.add(getUploadField());
regUploadPanel.doLayout();
regUploadForm=new Ext.Panel({
layout:'form',
padding:5,
labelWidth:60,
renderTo:'reguploadform',
width:380,
height:260,
hidden:true,
cls:'right-labels',
items:ExtAccount.IS_LOGGED?[regUploadPanel]:[regUploadPanel,regEmailField]});
var swfEmailField=new Ext.form.TextField({
fieldLabel:'E-mail',
value:'',
anchor:'100%'});
var swfUploadPanel=new Ext.ux.SwfUploadPanel({
upload_url:"http://"+Extjs.SITE_DOMAIN+"/upload-gallery/",
post_params:{session_id:Ext.util.Cookies.get('sessionid')||'',upload_id:ExtGallery.UPLOAD_ID},
file_size_limit:"10 MB",
file_types:"*.jpg;*.png;*.JPG;*.PNG",
file_types_description:"JPEG Pictures; PNG Pictures",
file_upload_limit:32,
button_width:80,
button_height:16,
anchor:'100%',
height:210+ExtAccount.IS_LOGGED*40,
padding:0,
flash_url:"/static/extgallery/include/swfupload.swf?nocache="+ExtGallery.SWF_CRC,
flash9_url:"/static/extgallery/include/swfupload_fp9.swf?nocache="+ExtGallery.SWF_CRC,
prevent_swf_caching:Ext.isIE,
debug:false});
swfUploadForm=new Ext.Panel({
layout:'form',
labelWidth:60,
padding:5,
renderTo:'swfuploadform',
width:380,
height:260,
cls:'right-labels',
items:ExtAccount.IS_LOGGED?[swfUploadPanel]:[swfUploadPanel,swfEmailField]});
swfUploadPanel.on('startUpload',function(){
activeForm=null;
swfUploadPanel.addPostParam('email',swfEmailField.getValue());
swfUploadPanel.addPostParam('session_id',Ext.util.Cookies.get('sessionid'));
swfEmailField.setDisabled(true);});
swfUploadPanel.on('swfUploadFailed',function(){
swfUploadForm.hide();
activeForm=regUploadForm;
activeForm.show();
Ext.get('switchupload').addClass('hidden');});
swfUploadPanel.on('allUploadsComplete',uploadComplete);
activeForm=swfUploadForm;
if(ExtGallery.SETTINGS.upload_type!='flash'){
switchUploads();}});
Ext.ns('ExtAccount');
Ext.onReady(function(){
if(ExtAccount.IS_LOGGED){
Ext.fly('logout').dom.onclick=function(){
var f=Ext.get('logout_form');
f.query('input')[0].value=Ext.util.Cookies.get('csrftoken');
f.dom.submit();
return false;};}else{
ExtAccount.login=new LoginDialog();
Ext.fly('register').dom.onclick=function(){
ExtAccount.login.show();
ExtAccount.login.center();
ExtAccount.login.setPagePosition(ExtAccount.login.getPosition()[0],100);
ExtAccount.login.tab.setActiveTab(1);
return false;};
Ext.fly('login').dom.onclick=function(){
ExtAccount.login.show();
ExtAccount.login.center();
ExtAccount.login.setPagePosition(ExtAccount.login.getPosition()[0],100);
ExtAccount.login.tab.setActiveTab(0);
ExtAccount.login.tab.login.loginField.focus(false,1000);
return false;};}});
ConfigDialog=Ext.extend(Ext.TabPanel,{
constructor:function(config){
config=config||{};
var main=this;
ConfigDialog.superclass.constructor.call(this,Ext.apply(config,{
activeTab:0,
anchor:'100%',
height:470,
cls:'right-labels',
border:false,
deferredRender:false,
defaults:{
border:false,
padding:5,
hideMode:'offsets',
width:435,
defaults:{
labelWidth:130}},
items:[{
title:'Account Settings',
items:[{
xtype:'changeemailform',
ref:'../changeEmailForm'},{
xtype:'changepasswordform',
ref:'../changePasswordForm'},{
xtype:'removeaccountform',
ref:'../removeAccountForm'}]},{
title:'Gallery Settings',
items:{
xtype:'gallerysettingsform',
ref:'../gallerySettingsForm'},
bbar:['->',{
text:"Save changes",
handler:function(){
if(main.gallerySettingsForm.type.getValue()=='f'&&!ExtPayment.HAS_PREMIUM){
Ext.Msg.alert("Error","You need to purchase a Premium Service to enable the 'All Images Big' type of galleries."+'<BR />'+"Purchase option is available in the 'Account Settings' tab. You can find more information in our FAQ.");
return;}
main.gallerySettingsForm.getForm().submit({
params:{csrfmiddlewaretoken:Ext.util.Cookies.get('csrftoken')},
success:function(){
Ext.apply(ExtGallery.SETTINGS,main.gallerySettingsForm.getForm().getValues());
ExtGallery.SETTINGS['use_folders']=main.gallerySettingsForm.getForm().getFieldValues().use_folders;
Ext.each(['folders_width','manager_height'],function(k){
ExtGallery.SETTINGS[k]=parseInt(ExtGallery.SETTINGS[k]);});
main.fireEvent('save');}});}},{
text:"Cancel",
handler:function(){
main.fireEvent('cancel');}}]},{
xtype:'paymentform',
title:"Payments",
ref:'../premiumAccountForm'}]}));},
initForms:function(){
this.gallerySettingsForm.getForm().setValues(ExtGallery.SETTINGS);
this.changeEmailForm.getForm().reset();
this.changeEmailForm.getForm().setValues(ExtGallery.SETTINGS);
this.changePasswordForm.getForm().reset();
this.changePasswordForm.getForm().setValues(ExtGallery.SETTINGS);}});
var configDialogWindow,configDialog;
function ShowConfigDialog(){
if(!configDialogWindow){
configDialog=new ConfigDialog({
hideParent:true});
configDialogWindow=new Ext.Window({
title:'JPEGbay Settings',
y:50,
width:480,
closeAction:'hide',
modal:true,
resizable:false,
items:configDialog});
configDialog.on('save',function(){
configDialogWindow.hide();
if(ExtGallery.manager){
ExtGallery.manager.destroy();
ExtGallery.manager=new Manager({renderTo:'manager'});}});
configDialog.on('cancel',function(){
configDialogWindow.hide();});}
configDialogWindow.show();
configDialogWindow.center();
configDialogWindow.setPagePosition(configDialogWindow.getPosition()[0],100);
configDialog.initForms();
return false;}
