                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if(!window.__td){window.__MT=100;window.__ti=0;window.__td=[];window.__td.length=__MT;window.__noTrace=false;

}






if(typeof(vp)=="undefined")
{
var vp={};
}





if(typeof(vp.image)=="undefined")
{
vp.image=function image(){if(!window.__noTrace){__td[__ti]=arguments;__ti=__ti>=__MT?0:__ti+1;}};
}










vp.image.SearchedImage=function image_SearchedImage(type,id,iCreated,iWidth,iHeight,sName)
{if(!window.__noTrace){__td[__ti]=arguments;__ti=__ti>=__MT?0:__ti+1;}




var me=this;





this.created=parseInt(iCreated);





this.width=parseInt(iWidth);





this.height=parseInt(iHeight);





this.name=sName;





this.inheritFrom=vp.image.Image;
this.inheritFrom(type,id);
};


vp.image.SearchedProject=function image_SearchedProject(sName,iDocId,sModified,images)
{if(!window.__noTrace){__td[__ti]=arguments;__ti=__ti>=__MT?0:__ti+1;}
var me=this;

this.sName=sName;

this.iDocId=iDocId;

this.sModified=sModified;

this.oImages=images;
};








vp.image.Search=function image_Search(fnOnSearchCompleteHandler,bIsProjectSearch)
{if(!window.__noTrace){__td[__ti]=arguments;__ti=__ti>=__MT?0:__ti+1;}




var me=this;





this.images=null;





this.projects=null;





this.onsearchcomplete=new vp.events.CustomEvent(this,"onsearchcomplete");

if(fnOnSearchCompleteHandler)
{
this.onsearchcomplete.addHandler(fnOnSearchCompleteHandler);
}





this.searchByShopper=function pb_this_searchByShopper(iImageTypes)
{if(!window.__noTrace){__td[__ti]=arguments;__ti=__ti>=__MT?0:__ti+1;}

if(iImageTypes&vp.image.Search.Type.Library)
{
throw new Error("vp.image.Search.searchByShopper: this method does not support Library image search");
}

doSearch(iImageTypes,null);
};






this.searchByKeywords=function pb_this_searchByKeywords(sSearchWords)
{if(!window.__noTrace){__td[__ti]=arguments;__ti=__ti>=__MT?0:__ti+1;}
doSearch(vp.image.Search.Type.Library,sSearchWords);
};








var doSearch=function pv_doSearch(iImageTypes,sSearchWords)
{if(!window.__noTrace){__td[__ti]=arguments;__ti=__ti>=__MT?0:__ti+1;}
var searchURL=new vp.web.URL("/vp/ns/image_search.aspx");
searchURL.setItem("t",iImageTypes);
searchURL.setItem("p",sSearchWords);
searchURL.setItem("project",bIsProjectSearch);
searchURL.setItem("ts",new Date().getTime());

try
{
vp.http.getAsync(searchURL,searchCallback);
}
catch(ex)
{
vp.logger.logError(Math.random(),"vp.image.Search","vp.image.Search: AJAX search error",vp.logger.Severity.Error);
searchCallback(null);
}
};





var searchCallback=function pv_searchCallback(data)
{if(!window.__noTrace){__td[__ti]=arguments;__ti=__ti>=__MT?0:__ti+1;}
me.images=[];
me.projects=[];

var isProjectSearch=false;



if(data)
{
var imageDataArray=vp.http.parseJSON(data);

if(imageDataArray.length>0)
{
if(imageDataArray[0].projectsignature)
{
isProjectSearch=true;
}
}

var i;

if(isProjectSearch)
{
for(i=1;i<imageDataArray.length;i++)
{
me.projects[i-1]=createProject(imageDataArray[i]);
}
}
else
{

for(i=0;i<imageDataArray.length;i++)
{
me.images[i]=createImage(imageDataArray[i]);
}
}
}


var e={};
e.images=me.images;

if(isProjectSearch)
{
e.projects=me.projects;
}
me.onsearchcomplete.fire(e);
};

var createProject=function pv_createProject(projectSpec)
{if(!window.__noTrace){__td[__ti]=arguments;__ti=__ti>=__MT?0:__ti+1;}
var images=[];

for(var i=0;i<projectSpec.images.length;i++)
{
images[i]=createImage(projectSpec.images[i]);
}

var oProject=new vp.image.SearchedProject(projectSpec.docName,projectSpec.docId,projectSpec.modified,images);
return oProject;
};








var createImage=function pv_createImage(imageSpec)
{if(!window.__noTrace){__td[__ti]=arguments;__ti=__ti>=__MT?0:__ti+1;}
var imgType=vp.image.Search.Type.toImageType(imageSpec.type);

var oImage=new vp.image.SearchedImage(imgType,imageSpec.id,imageSpec.created,imageSpec.width,imageSpec.height,imageSpec.name);

if(imageSpec.fileId)
{
oImage.fileId=imageSpec.fileId;
}
if(imageSpec.pvwUrl)
{
oImage.previewUrl=imageSpec.pvwUrl;
}
return oImage;
};







this.getImage=function pb_this_getImage(eType,iId)
{if(!window.__noTrace){__td[__ti]=arguments;__ti=__ti>=__MT?0:__ti+1;}
for(var i=0;i<me.images.length;i++)
{
if(iId==me.images[i].id&&eType==me.images[i].type)
{
return me.images[i];
}
}
return null;
};

};





vp.image.Search.Type={
Library:1,
Upload:2,
Logo:4,
Caricature:8,
Partner:16
};




vp.image.Search.Type.fromImageType=function image_Search_Type_fromImageType(eImageType)
{if(!window.__noTrace){__td[__ti]=arguments;__ti=__ti>=__MT?0:__ti+1;}
switch(eImageType)
{
case vp.image.Image.Type.Library:
return vp.image.Search.Type.Library;
case vp.image.Image.Type.Upload:
return vp.image.Search.Type.Upload;
case vp.image.Image.Type.Logo:
return vp.image.Search.Type.Logo;
case vp.image.Image.Type.Caricature:
return vp.image.Search.Type.Caricature;
case vp.image.Image.Type.Partner:
return vp.image.Search.Type.Partner;
default:
throw new Error("vp.image.Search.Type.fromImageType: Unhandled image type: "+eImageType);
}
};




vp.image.Search.Type.toImageType=function image_Search_Type_toImageType(eSearchType)
{if(!window.__noTrace){__td[__ti]=arguments;__ti=__ti>=__MT?0:__ti+1;}
switch(eSearchType)
{
case vp.image.Search.Type.Library:
return vp.image.Image.Type.Library;
case vp.image.Search.Type.Upload:
return vp.image.Image.Type.Upload;
case vp.image.Search.Type.Logo:
return vp.image.Image.Type.Logo;
case vp.image.Search.Type.Caricature:
return vp.image.Image.Type.Caricature;
case vp.image.Search.Type.Partner:
return vp.image.Image.Type.Partner;
default:
throw new Error("vp.image.Search.Type.toImageType: Unhandled image type: "+eSearchType);
}
};

