/*
Uploadify v2.1.0
Release Date: August 24, 2009

Copyright (c) 2009 Ronnie Garcia, Travis Nickels

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/

if(jQuery){(function(a){a.extend(a.fn,{uploadify:function(b){a(this).each(function(){settings=a.extend({id:a(this).attr("id"),uploader:"uploadify.swf",script:"uploadify.php",expressInstall:null,folder:"",height:30,width:110,cancelImg:"cancel.png",wmode:"opaque",scriptAccess:"sameDomain",fileDataName:"Filedata",method:"POST",queueSizeLimit:999,simUploadLimit:1,queueID:false,displayData:"percentage",onInit:function(){},onSelect:function(){},onQueueFull:function(){},onCheck:function(){},onCancel:function(){},onError:function(){},onProgress:function(){},onComplete:function(){},onAllComplete:function(){}},b);var e=location.pathname;e=e.split("/");e.pop();e=e.join("/")+"/";var f={};f.uploadifyID=settings.id;f.pagepath=e;if(settings.buttonImg){f.buttonImg=escape(settings.buttonImg)}if(settings.buttonText){f.buttonText=escape(settings.buttonText)}if(settings.rollover){f.rollover=true}f.script=settings.script;f.folder=escape(settings.folder);if(settings.scriptData){var g="";for(var d in settings.scriptData){g+="&"+d+"="+settings.scriptData[d]}f.scriptData=escape(g.substr(1))}f.width=settings.width;f.height=settings.height;f.wmode=settings.wmode;f.method=settings.method;f.queueSizeLimit=settings.queueSizeLimit;f.simUploadLimit=settings.simUploadLimit;if(settings.hideButton){f.hideButton=true}if(settings.fileDesc){f.fileDesc=settings.fileDesc}if(settings.fileExt){f.fileExt=settings.fileExt}if(settings.multi){f.multi=true}if(settings.auto){f.auto=true}if(settings.sizeLimit){f.sizeLimit=settings.sizeLimit}if(settings.checkScript){f.checkScript=settings.checkScript}if(settings.fileDataName){f.fileDataName=settings.fileDataName}if(settings.queueID){f.queueID=settings.queueID}if(settings.onInit()!==false){a(this).css("display","none");a(this).after('<div id="'+a(this).attr("id")+'Uploader"></div>');swfobject.embedSWF(settings.uploader,settings.id+"Uploader",settings.width,settings.height,"9.0.24",settings.expressInstall,f,{quality:"high",wmode:settings.wmode,allowScriptAccess:settings.scriptAccess});if(settings.queueID==false){a("#"+a(this).attr("id")+"Uploader").after('<div id="'+a(this).attr("id")+'Queue" class="uploadifyQueue"></div>')}}if(typeof(settings.onOpen)=="function"){a(this).bind("uploadifyOpen",settings.onOpen)}a(this).bind("uploadifySelect",{action:settings.onSelect,queueID:settings.queueID},function(j,h,i){if(j.data.action(j,h,i)!==false){var k=Math.round(i.size/1024*100)*0.01;var l="KB";if(k>1000){k=Math.round(k*0.001*100)*0.01;l="MB"}var m=k.toString().split(".");if(m.length>1){k=m[0]+"."+m[1].substr(0,2)}else{k=m[0]}if(i.name.length>20){fileName=i.name.substr(0,20)+"..."}else{fileName=i.name}queue="#"+a(this).attr("id")+"Queue";if(j.data.queueID){queue="#"+j.data.queueID}a(queue).append('<div id="'+a(this).attr("id")+h+'" class="uploadifyQueueItem"><div class="cancel"><a href="javascript:jQuery(\'#'+a(this).attr("id")+"').uploadifyCancel('"+h+'\')"><img src="'+settings.cancelImg+'" border="0" /></a></div><span class="fileName">'+fileName+" ("+k+l+')</span><span class="percentage"></span><div class="uploadifyProgress"><div id="'+a(this).attr("id")+h+'ProgressBar" class="uploadifyProgressBar"><!--Progress Bar--></div></div></div>')}});if(typeof(settings.onSelectOnce)=="function"){a(this).bind("uploadifySelectOnce",settings.onSelectOnce)}a(this).bind("uploadifyQueueFull",{action:settings.onQueueFull},function(h,i){if(h.data.action(h,i)!==false){alert("The queue is full. The max size is "+i+".")}});a(this).bind("uploadifyCheckExist",{action:settings.onCheck},function(m,l,k,j,o){var i=new Object();i=k;i.folder=e+j;if(o){for(var h in k){var n=h}}a.post(l,i,function(r){for(var p in r){if(m.data.action(m,l,k,j,o)!==false){var q=confirm("Do you want to replace the file "+r[p]+"?");if(!q){document.getElementById(a(m.target).attr("id")+"Uploader").cancelFileUpload(p,true,true)}}}if(o){document.getElementById(a(m.target).attr("id")+"Uploader").startFileUpload(n,true)}else{document.getElementById(a(m.target).attr("id")+"Uploader").startFileUpload(null,true)}},"json")});a(this).bind("uploadifyCancel",{action:settings.onCancel},function(l,h,k,m,j){if(l.data.action(l,h,k,m,j)!==false){var i=(j==true)?0:250;a("#"+a(this).attr("id")+h).fadeOut(i,function(){a(this).remove()})}});if(typeof(settings.onClearQueue)=="function"){a(this).bind("uploadifyClearQueue",settings.onClearQueue)}var c=[];a(this).bind("uploadifyError",{action:settings.onError},function(l,h,k,j){if(l.data.action(l,h,k,j)!==false){var i=new Array(h,k,j);c.push(i);a("#"+a(this).attr("id")+h+" .percentage").text(" - "+j.type+" Error");a("#"+a(this).attr("id")+h).addClass("uploadifyError")}});a(this).bind("uploadifyProgress",{action:settings.onProgress,toDisplay:settings.displayData},function(j,h,i,k){if(j.data.action(j,h,i,k)!==false){a("#"+a(this).attr("id")+h+"ProgressBar").css("width",k.percentage+"%");if(j.data.toDisplay=="percentage"){displayData=" - "+k.percentage+"%"}if(j.data.toDisplay=="speed"){displayData=" - "+k.speed+"KB/s"}if(j.data.toDisplay==null){displayData=" "}a("#"+a(this).attr("id")+h+" .percentage").text(displayData)}});a(this).bind("uploadifyComplete",{action:settings.onComplete},function(k,h,j,i,l){if(k.data.action(k,h,j,unescape(i),l)!==false){a("#"+a(this).attr("id")+h+" .percentage").text(" - Completed");a("#"+a(this).attr("id")+h).fadeOut(250,function(){a(this).remove()})}});if(typeof(settings.onAllComplete)=="function"){a(this).bind("uploadifyAllComplete",{action:settings.onAllComplete},function(h,i){if(h.data.action(h,i)!==false){c=[]}})}})},uploadifySettings:function(f,j,c){var g=false;a(this).each(function(){if(f=="scriptData"&&j!=null){if(c){var i=j}else{var i=a.extend(settings.scriptData,j)}var l="";for(var k in i){l+="&"+k+"="+escape(i[k])}j=l.substr(1)}g=document.getElementById(a(this).attr("id")+"Uploader").updateSettings(f,j)});if(j==null){if(f=="scriptData"){var b=unescape(g).split("&");var e=new Object();for(var d=0;d<b.length;d++){var h=b[d].split("=");e[h[0]]=h[1]}g=e}return g}},uploadifyUpload:function(b){a(this).each(function(){document.getElementById(a(this).attr("id")+"Uploader").startFileUpload(b,false)})},uploadifyCancel:function(b){a(this).each(function(){document.getElementById(a(this).attr("id")+"Uploader").cancelFileUpload(b,true,false)})},uploadifyClearQueue:function(){a(this).each(function(){document.getElementById(a(this).attr("id")+"Uploader").clearFileUploadQueue(false)})}})})(jQuery)};
/* SWFObject v2.2 <http://code.google.com/p/swfobject/> 
 is released under the MIT License <http://www.opensource.org/licenses/mit-license.php> 
*/
var 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}}}}();
var $j = jQuery.noConflict();
function trim(str, chars) {
 return ltrim(rtrim(str, chars), chars);
}

function ltrim(str, chars) {
 chars = chars || "\\s";
 return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}

function rtrim(str, chars) {
 chars = chars || "\\s";
 return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}

function debug(p_aVars){
 var l_sUrlEncodedVars = "";
 for(l_sKey in p_aVars){
 if(typeof p_aVars[l_sKey] == "array" || typeof p_aVars[l_sKey] == "object"){
 l_sUrlEncodedVars += debug_r(p_aVars[l_sKey], 'Array['+l_sKey+']');
 }else{
 l_sUrlEncodedVars += 'Array['+l_sKey+']' + '=' + p_aVars[l_sKey] + "\n";
 }
 }
 return l_sUrlEncodedVars;
}

/**
* Walk the array recursively to encode the data capture inside
**/
function debug_r(p_aVars, p_sArrayPrefix){
 var l_sUrlEncodedVars = "";
 for(l_sKey in p_aVars){
 // Check if p_aVars[l_sKey] is an array
 if(typeof p_aVars[l_sKey] == "array" || typeof p_aVars[l_sKey] == "object"){
 l_sUrlEncodedVars += debug_r(p_aVars[l_sKey], p_sArrayPrefix + "[" + l_sKey + "]");
 }else{
 l_sUrlEncodedVars += p_sArrayPrefix + "[" + l_sKey + "]" + '=' + p_aVars[l_sKey] + "\n";
 }
 }
 return l_sUrlEncodedVars;
}


var Refine = Refine || {};

Refine.Util = {};

Refine.Util.targetOffset = null;
Refine.Util.saveScrollPosition = function() {
 Refine.Util.targetOffset = $j(window).scrollTop();
};

Refine.Util.moveScrollPosition = function() {
 if (Refine.Util.targetOffset != null) {
 $j("html,body").animate( {
 scrollTop : Refine.Util.targetOffset
 }, 1000);
 }
}

Refine.Util.fixOptionsWidth = function() {
}
Refine.Base = {

 // buffer to store arguments sent to getPage
 page_buffer : {},
 // index to the different arguments
 buffer_cnt : 0,
 /**
 * add argument to buffer
 *
 * @input argument array
 * @return index of the argument in buffer
 */


 addBuffer : function(arg) {
 var x, str, arr = [];
 if (!arg) {
 return 0;
 }

 // need to copy all elements to a new array

 for (x = 0; x < arg.length; x++) {
 arr.push(arg[x]);
 }

 str = JSON.stringify(arr);

 if (!str) {
 return 0;
 }

 // check if already buffered

 for (x in this.page_buffer) {

 if (this.page_buffer[x] === str) {
 return 0;
 }
 }

 // save and return the index

 this.buffer_cnt += 1;
 this.page_buffer[this.buffer_cnt] = str;
 return this.buffer_cnt;
 },

 removeBuffer : function(buffer_id) {
 if (!buffer_id) {
 return;
 }

 if (buffer_id in this.page_buffer) {
 delete this.page_buffer[buffer_id];
 }
 },

 /**
 * replace a gived div html with the data get from a controller
 *
 * @param url
 * (string) controller path with parameters (get request only) id
 * (string) id of the div which content will be replaced with the
 * data returned by ajax o (json object) //optional { callBefore:
 * function(){}, callAfter: function(){}, trans: "fade" //this
 * can be: "fade", "slideup", "slidedown", "slidedownup" params:
 * json data that contains arguments to callBefore and callAfter
 * functions. }
 */

 /**
 *
 * Refine.Test.testFunc(o) Refine.getPage(url, id, {trans:"fade",
 * callBefore: Refine.Test.testFunc, params:{pid:id, name:"test"}});
 *
 */

 getPage : function(url, id, o, method, data_obj) {
 var buffer_id;
 if (!url) {
 return;
 }
 switch (id) {
 case "popup_placeholder":
 break;
 default:
 break;
 }
 // try to put this event to the buffer. if already called, return
 buffer_id = this.addBuffer(arguments);

 if (!buffer_id) {
 return;
 }

 Refine.Util.saveScrollPosition();
 o = o || {};
 o.callType = o.callType || 'jquery'; // can be also normal
 o.trans = o.trans || "fade";
 o.params = o.params || {};
 o.container_type = o.container_type || "id"; // this can be class or
 // id. if class is
 // given, all the
 // classes content are
 // replaced
 o.keep_content = o.keep_content || false;
 o.time_delay = o.time_delay || 500;
 o.dataType = o.data_type || '';
 // $j("#content_left_small").css('cursor','wait');
 $j.ajax( {
 type : (method ? method : "GET"),
 url : url,
 data : data_obj,
 dataType : o.dataType,
 error : function() {
 Refine.Base.removeBuffer(buffer_id);
 // $j("#content_left_small").css('cursor','auto');
 },
 success : function(data) {
 // $j("#content_left_small").css('cursor','auto');
 Refine.Base.removeBuffer(buffer_id);
 if (!data) {
 return;
 }

 if (data == 'Please login to see this page') {
 window.location = Refine.base_url + 'users/login';
 }

 // call a function before action

 if (typeof o.callBefore === 'function') {
 o.callBefore(o.params);
 }

 if (o.callType === 'jquery') {
 if (o.keep_content) {
 $j("#" + id).append(data);
 } else {
 $j("#" + id).html(data);
 }
 } else {
 e = document.getElementById(id);
 if (e) {
 e.innerHTML = data;
 }
 }

 // call a function after action

 if (typeof o.callAfter === 'function') {
 setTimeout(function() {
 o.callAfter(o.params)
 }, o.time_delay);
 }
 return false;
 }

 });

 return false;
 },

 getContactList : function(url, id, o, method, data_obj) {

 if (!url) {
 return;
 }

 buffer_id = this.addBuffer(arguments);

 if (!buffer_id) {
 return;
 }

 $j.ajax( {
 type : (method ? method : "GET"),
 url : url,
 data : data_obj,
 dataType : o.dataType,
 error : function() {
 Refine.Base.removeBuffer(buffer_id);
 // $j("#content_left_small").css('cursor','auto');
 },
 success : function(data) {
 // $j("#content_left_small").css('cursor','auto');
 Refine.Base.removeBuffer(buffer_id);
 if (!data) {
 return;
 }

 if (data == 'Please login to see this page') {
 window.location = Refine.base_url + 'users/login';
 }

 // call a function before action

 if (typeof o.callBefore === 'function') {
 o.callBefore(o.params);
 }

 if (o.callType === 'jquery') {
 if (o.keep_content) {
 $j("#" + id).append(data);
 } else {
 $j("#" + id).val(data);
 }
 } else {
 e = document.getElementById(id);
 if (e) {
 if(data == "error") {
 //alert("There was an error importing your contacts ! \nPlease make sure the username and password are correct !");
 //$j('body').append('<div style="display:none" id="alertContent">There was an error importing your contacts ! <br>Please make sure the username and password are correct !</div>');
 Refine.Popup.display('There was an error importing your contacts ! \nPlease make sure the username and password are correct !');
 } else {
 if (o.keep_content && e.value != "") {
 e.value = e.value + ","+data;
 } else {
 e.value = data;
 }
 }
 }
 }

 // call a function after action

 if (typeof o.callAfter === 'function') {
 setTimeout(function() {
 o.callAfter(o.params)
 }, o.time_delay);
 }
 return false;
 }

 });

 return false;
 },


 /*
 * preloader: function() { if ( ($j("#preloader")).length != 0) {
 * $j("#preloader").ajaxStop(function(){ $j(this).hide(); });
 *
 * $j("#preloader").ajaxStart(function() { // If there was a error hide in
 * the moment the next request is done hide it if
 * ($j("#error_placeholder").length!=0) { $j("#error_placeholder").remove() }
 * var offset = $j("#preloader").offset();
 * $j(this).css("top",offset.top+"px"); $j(this).show(); }); } },
 */
 errorHandler : function() {
 $j
 .ajaxSetup( {
 error : function(x, e) {
 var error_message = 'Unknow Error. <br/> ' + x.responseText;

 switch (x.status) {
 case 0:
 error_message = 'You are offline!! <br/> Please Check Your Network.';
 break;
 case 404:
 error_message = 'Requested URL not found.';
 break;
 case 500:
 error_message = 'Internel Server Error.';
 break;
 }

 if (e == 'parsererror') {
 error_message = 'Internel Server Error.';
 }

 if (e == 'timeout') {
 error_message = 'Request Time out.';
 }
 // Refine.Base.showErrorMessage(error_message);
 }
 });

 },
 showErrorMessage : function(error_message) {
 content = '<div class="hide" id="error_placeholder">' + error_message + '</div>';
 $j('body').append(content);

 var offset = $j("#error_placeholder").offset();
 $j("#error_placeholder").css("top", offset.top + "px");
 $j("#error_placeholder").show("drop");
 setTimeout(function() {
 $j("#error_placeholder").hide("slow");
 }, 3000);
 },

 checkEmailAddress : function(fieldId) {

 var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
 var email = $j('#' + fieldId).attr('value');
 return reg.test(email);
 }
};
Validation.addAllThese([
['validate-cemail', 'Please make sure your email match.', function(v) {

 var email = $('email_address');
 var cemail = $('confirmation_email_address');

 return (email.value == cemail.value);

 var v = email.value;
 //var success = Validation.get('IsEmpty').test(v) || /^[a-z0-9,!\#\$%&'\*\+/=\?\^_`\{\|}~-]+(\.[a-z0-9,!#\$%&'\*\+/=\?\^_`\{\|}~-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*\.([a-z]{2,})/i.test(v);

 if (!success) return false;

 var v = email.value;
 //var success = Validation.get('IsEmpty').test(v) || /^[a-z0-9,!\#\$%&'\*\+/=\?\^_`\{\|}~-]+(\.[a-z0-9,!#\$%&'\*\+/=\?\^_`\{\|}~-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*\.([a-z]{2,})/i.test(v);

 if ($('password')) {
 var pass = $('password');
 }
 else {
 var pass = $$('.validate-password').length ? $$('.validate-password')[0] : $$('.validate-admin-password')[0];
 }
 var conf = $('confirmation') ? $('confirmation') : $$('.validate-cpassword')[0];
 return (pass.value == conf.value);
 }],
 ['validate_phone', 'This is a required field.', function(v) {
 return v!=0;
 }],

 ['validate-gender', 'Please specify your gender.', function(v) {

 var gender_male = $('gender_male');
 var gender_female = $('gender_female');

 return ($('gender_male').checked || $('gender_female').checked);
 }],
 ['validate-accept-terms', 'You must accept our terms and conditions in order to register.', function(v) {

 var input = $('accept_terms');

 return ($('accept_terms').checked);
 }],
 ['violation-textarea', 'This is a required field.', function(v) {
 return v!=0;
 }],
 ['violation_reason', 'This is a required field.', function(v) {
 return v!=0;
 }],
 ['violation_detailed', 'This is a required field.', function(v) {
 return v!=0;
 }],

 ['violations_file', 'This is a required field.', function(v) {
 return v!=0;
 }],

 ['validate-alteration', 'You must provide an alteration.', function(v) {

 if ($('product[alterations]1').checked) {
 return !Validation.get('IsEmpty').test($('alteration_text').value);
 }

 return true;
 }],
 ['validate-size-admin', 'You must provide at least one type of size for the listing.', function(v) {

 if (!$('letter_size').value.length && !$('usa_size').value.length && !$('denim_size').value.length
 && !$('knit_jersey_size').value.length && !$('usa_shoe_size').value.length && !$('europe_shoe_size').value.length
 && !$('other_sizes').value.length) {
 return false;
 }
 return true;
 }]
 ]);

 Refine.Widget = {};

 Refine.Widget.Select = {

 show: function() {

 },


 preload: function (p_sType, p_sEntity, p_sAttribute, p_sSelectID, _callback, p_bPreload )
 {
 if (_callback && _callback !=null)
 {
 $j('#'+p_sSelectID).change(_callback);
 }
 var l_sURL = refine_base_url + 'base/search/search/entity/'+ p_sEntity + '/type/' + p_sType + '/attribute/' + p_sAttribute + '/id/' + p_sSelectID;
 var l_oSelect = $j('#' + p_sSelectID);
 $j("#popup_placeholder").remove();
 var elementOffset = l_oSelect.offset();
 l_oSelect.blur();

 var l_sMark = '';

 $j('body').append('<div class="" id="popup_placeholder' + l_sMark + '"></div>');
 $j('.jScrollPaneContainer').clone(true).appendTo('#popup_placeholder');
 $j('#popup_placeholder').append('<div style="clear: both"></div>');
 $j('body').append('<div class="ui-widget-overlay" style="width: ' + $j(window).width() + '; height: ' + $j(window).height() + '; z-index: 1001;"></div>');


 $j('#popup_placeholder' + l_sMark).css({
 position: 'absolute',
 zIndex: 5000,
 left: elementOffset.left,
 top: elementOffset.top + 20
 });


 $j('.ui-widget-overlay').click(function() {
 $j("#popup_placeholder,.ui-widget-overlay").remove();
 });

 return false;
 },

 init: function (p_sType, p_sEntity, p_sAttribute, p_sSelectID, _callback, p_bPreload )
 {
 if (_callback && _callback !=null)
 {
 $j('#'+p_sSelectID).change(_callback);
 }
 var l_sURL = refine_base_url + 'base/search/search/entity/'+ p_sEntity + '/type/' + p_sType + '/attribute/' + p_sAttribute + '/id/' + p_sSelectID;
 var l_oSelect = $j('#' + p_sSelectID);
 $j("#popup_placeholder").remove();
 var elementOffset = l_oSelect.offset();
 l_oSelect.blur();

 if (!p_bPreload) {
 $j('body').append('<div class="" id="popuploader"></div>');
 $j("#popuploader").dialog({
 width : 534,
 height : 144,
 resizable : false,
 autoResize : true,
 modal : false,
 draggable : false,
 open: function() {
 $j('.ui-dialog-titlebar').hide();
 $j('.ui-dialog')
 .css('border', '0px')
 .css('margin', '0px')
 .css('padding', '0px')
 .css('background', 'none');
 $j('.ui-dialog-buttonpane').hide();
 $j('.ui-widget-overlay').css('background', 'none');
 $j('.ui-dialog-content').css('padding', '0px');
 $j('.ui-dialog-content').css('margin', '0px');
 $j('.ui-dialog-content').css('background', 'transparent');
 $j('.ui-dialog').css({
 position: 'absolute',
 zIndex: 5000,
 left: elementOffset.left,
 top: elementOffset.top + 20
 });
 $j("#popuploader").append("<div id=\"ajaxBusyselect\"><p><img src=\""+refine_base_url+"js/ajax-loader.gif\"/></p></div>");
 $j("#ajaxBusyselect").show();
 $j("#ajaxBusyselect").css({
 margin:"0px",
 paddingleft:"0px",
 paddingRight:"0px",
 paddingTop:"0px",
 paddingBottom:"0px",
 position:"absolute",
 right:"48%",
 top:"48%",
 width:"auto"
 });
 $j('#popuploader').css('background', '#ffffff');
 $j('#popuploader').css('border', '2px solid #989898');
 }
 });

 }

 var l_sMark = '';

 if (p_bPreload) {
// l_sMark = '_preloader_' + p_sSelectID;
 }

 $j('body').append('<div class="" id="popup_placeholder' + l_sMark + '"><div class="refineCreateBrand"><div class="clear"></div></div></div>');
 $j('#popup_placeholder' + l_sMark).hide();
 //$j('#popup_placeholder' + l_sMark).hide();
 Refine.Base.getPage(l_sURL, 'popup_placeholder' + l_sMark, {callAfter: function() {

 $j('#popup_placeholder' + l_sMark).hide();

 if (p_bPreload) {
 //alert('#popup_placeholder' + l_sMark);
// $j('#popup_placeholder' + l_sMark).hide();
 $j('#popup_placeholder' + l_sMark).css('visibility', 'hidden');
 //$j('#popup_placeholder' + l_sMark).show();
 }

 /*

 $j("#popup_placeholder").dialog({
 width : 'auto',
 resizable : false,
 autoResize : true,
 modal : true,
 draggable : false,
 close: function(event, ui) {
 $j("#popup_placeholder").remove();
 },
 title: '',
 buttons: {
 'transfer': function() {$j("#popup_placeholder").remove();},
 'cancel': function() {$j("#popup_placeholder").remove();}
 },
 open: function() {
 $j('.ui-dialog-titlebar').hide();
 $j('.ui-dialog')
 .css('border', '0px')
 .css('margin', '0px')
 .css('padding', '0px')
 .css('background', 'none');
 $j('.ui-dialog-buttonpane').hide();
 // $j('.ui-widget-overlay').css('background', 'none');
 $j('.ui-widget-overlay').click(function() {$j("#popup_placeholder").remove();});
 $j('.ui-dialog-content').css('padding', '0px');
 $j('.ui-dialog-content').css('margin', '0px');
 $j('.ui-dialog-content').css('background', 'transparent');
 $j('.ui-dialog').css({
 position: 'absolute',
 zIndex: 5000,
 left: elementOffset.left,
 top: elementOffset.top + 20
 });
 }
 });
 */


 if (!p_bPreload) {
 $j('body').append('<div class="ui-widget-overlay" style="width: ' + $j(window).width() + '; height: ' + $j(window).height() + '; z-index: 1001;"></div>');
 }

 $j('#popup_placeholder' + l_sMark).css({
 position: 'absolute',
 zIndex: 5000,
 left: elementOffset.left,
 top: elementOffset.top + 20
 });

 $j('#popup_placeholder' + l_sMark).show();

 $j("#popuploader").remove();
 $j('.ui-widget-overlay').click(function() {
 $j("#popup_placeholder,.ui-widget-overlay").remove();

 });
// $j('.ui-widget-overlay').css('background', 'url(images/spacer.gif) repeat-x repeat-y');
 $j('.refineCreateBrand').css('padding-right', '0px');

 $j('.refineCreateBrand').jScrollPane();

 if (p_bPreload) {
 //alert('#popup_placeholder' + l_sMark);
 $j('#popup_placeholder' + l_sMark).hide();
 $j('#popup_placeholder' + l_sMark).css('visibility', 'visible');
 //$j('#popup_placeholder' + l_sMark).show();
 }

 if($j.browser.msie && parseInt($j.browser.version) < 8)
 {
 $j('.jScrollPaneDrag').
 css('position', 'absolute').
 css('left', '0px');
 }
 $j('.jScrollPaneTrack').
 css('width', '10px').
 css('padding-left', '0px').
 css('background', '#ffffff');
 $j('.jScrollPaneDrag').
 css('background', '#989898').
 css('padding', '0px').
 css('margin', '0px');
 $j('.jScrollPaneTrack').
 css('border-left', '2px solid #989898');
 $j('.jScrollPaneDrag').parent().
 css('padding', '0px').css('margin', '0px');

 $j('#' + p_sSelectID + '_search_term').click();
 //$j('.refineCreateBrand input').trigger('click');
// alert($j(l_oSelect).attr('id'));
 //$j('favorite_designer_1').trigger('click');
 /*
 $j.each($j('option', $j(l_oSelect)), function() {

 $j(this).trigger('click');}
 );*/
 }});
 return false;
 }
 }



 Refine.Revision = {};

 Refine.Revision.Drafts = {
 init: function (url, flash_id)
 {
 var l_sURL = refine_base_url + url;
 var l_oSelect = $j('#' + flash_id);
 $j("#popup_placeholder").remove();
 var elementOffset = l_oSelect.offset();
 //l_oSelect.blur();

 $j('body').append('<div class="" id="popuploader"></div>');
 $j("#popuploader").dialog({
 width : 510,
 height : 144,
 resizable : false,
 autoResize : true,
 modal : false,
 draggable : false,
 open: function() {
 $j('.ui-dialog-titlebar').hide();
 $j('.ui-dialog')
 .css('border', '0px')
 .css('margin', '0px')
 .css('padding', '0px')
 .css('background', 'none');
 $j('.ui-dialog-buttonpane').hide();
 $j('.ui-widget-overlay').css('background', 'none');
 $j('.ui-dialog-content').css('padding', '0px');
 $j('.ui-dialog-content').css('margin', '0px');
 $j('.ui-dialog-content').css('background', 'transparent');
 $j('.ui-dialog').css({
 position: 'absolute',
 zIndex: 5000,
 left: elementOffset.left,
 top: elementOffset.top - 7
 });
 $j("#popuploader").append("<div id=\"ajaxBusyselect\"><p><img src=\""+refine_base_url+"js/ajax-loader.gif\"/></p></div>");
 $j("#ajaxBusyselect").show();
 $j("#ajaxBusyselect").css({
 margin:"0px",
 paddingleft:"0px",
 paddingRight:"0px",
 paddingTop:"0px",
 paddingBottom:"0px",
 position:"absolute",
 right:"48%",
 top:"48%",
 width:"auto"
 });
 $j('#popuploader').css('background', '#ffffff');
 $j('#popuploader').css('border', '2px solid #989898');
 }
 });

 //make flash smaller if it is the case
 document.getElementById('flash_main').width = 500;
 $j("#slider_and_filters").show();

 $j('body').append('<div class="" id="popup_placeholder"><div class="refineCreateBrand"><div class="clear"></div></div></div>');
 Refine.Base.getPage(l_sURL, 'popup_placeholder', {callAfter: function() {
 $j("#popup_placeholder").dialog({
 width : 510,
 resizable : false,
 autoResize : true,
 modal : false,
 draggable : false,
 close: function(event, ui) {
 $j("#popup_placeholder").remove();
 },
 title: '',
 buttons: {
 'transfer': function() {$j("#popup_placeholder").remove();},
 'cancel': function() {$j("#popup_placeholder").remove();}
 },
 open: function() {
 $j('.ui-dialog-titlebar').hide();
 $j('.ui-dialog')
 .css('border', '0px')
 .css('margin', '0px')
 .css('padding', '0px');
 $j('.ui-dialog-buttonpane').hide();
 $j('.ui-widget-overlay').css('background', 'none');
 $j('.ui-widget-overlay').click(function() {$j("#popup_placeholder").remove();});
 $j('.ui-dialog-content').css('padding', '0px');
 $j('.ui-dialog-content').css('margin', '0px');
 $j('.ui-dialog-content').css('background', 'transparent');
 $j('.ui-dialog').css({
 position: 'absolute',
 zIndex: 5000,
 left: elementOffset.left,
 top: elementOffset.top - 7
 });
 }
 });
 $j("#popuploader").remove();
 //$j('.refineCreateBrand').jScrollPane();
 //$j('.jScrollPaneTrack').css('background', '#ffffff');
 //$j('.jScrollPaneDrag').css('background', '#989898');
 //$j('.jScrollPaneTrack').css('border-left', '2px solid #989898');
 }});
 return false;
 }
 }


$j(document).ready(function() {
//$j(".shop-access a:first").attr("class", "loginpopup").removeAttr("href");
var link = $j(".shop-access a:first");

if (link.html() == "SIGN IN")
 {
 link.attr("class", "loginpopup").removeAttr("href");
 $j(".loginpopup").live("click", function() { tb_show('auto_load_sneakpeak', refine_base_url+'customer/account/loginuser?height=520&width=720')});
 }

});


function array_search (needle, haystack, argStrict) {
 // Searches the array for a given value and returns the corresponding key if successful
 //
 // version: 909.322
 // discuss at: http://phpjs.org/functions/array_search
 // + original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
 // + input by: Brett Zamir (http://brett-zamir.me)
 // + bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
 // * example 1: array_search('zonneveld', {firstname: 'kevin', middle: 'van', surname: 'zonneveld'});
 // * returns 1: 'surname'

 var strict = !!argStrict;
 var key = '';

 for (key in haystack) {
 if ((strict && haystack[key] === needle) || (!strict && haystack[key] == needle)) {
 return key;
 }
 }

 return false;
}


//////////////////////////////////////
//////////////////////////////////////
function foo(px,py,pw,ph,baseElement,fid)
{
var win = document.getElementById(this.fid);
}


function dropdown_menu_hack(el)
{
if(el.runtimeStyle.behavior.toLowerCase()=="none"){return;}
el.runtimeStyle.behavior="none";

//var ie5 = (document.namespaces==null);
el.ondblclick = function(e)
{
window.event.returnValue=false;
return false;
}
if(window.createPopup==null)
{

var fid = "dropdown_menu_hack_" + Date.parse(new Date());

window.createPopup = function()
{
if(window.createPopup.frameWindow==null)
{
el.insertAdjacentHTML("AfterEnd","<iframe id='"+fid+"' name='"+fid+"' src='about:blank' frameborder='1' scrolling='no'></></iframe>");
var f = document.frames[fid];
f.document.open();
f.document.write("<html><body></body></html>");
f.document.close();
f.fid = fid;


var fwin = document.getElementById(fid);
fwin.style.cssText="position:absolute;top:0;left:0;display:none;z-index:99999;";


f.show = function(px,py,pw,ph,baseElement)
{
py = py + baseElement.getBoundingClientRect().top + Math.max( document.body.scrollTop, document.documentElement.scrollTop) ;
px = px + baseElement.getBoundingClientRect().left + Math.max( document.body.scrollLeft, document.documentElement.scrollLeft) ;
fwin.style.width = pw + "px";
fwin.style.height = ph + "px";
fwin.style.posLeft =px ;
fwin.style.posTop = py ;
fwin.style.display="block";
}


f_hide = function(e)
{
if(window.event && window.event.srcElement && window.event.srcElement.tagName && window.event.srcElement.tagName.toLowerCase()=="select"){return true;}
fwin.style.display="none";
}
f.hide = f_hide;
document.attachEvent("onclick",f_hide);
document.attachEvent("onkeydown",f_hide);

}
return f;
}
}

function showMenu()
{

function selectMenu(obj)
{
var o = document.createElement("option");
o.value = obj.value;
o.innerHTML = obj.innerHTML;
while(el.options.length>0){el.options[0].removeNode(true);}
el.appendChild(o);
el.title = o.innerHTML;
el.contentIndex = obj.selectedIndex ;
el.menu.hide();
if(typeof(obj.link) != "undefined" && obj.link != '')
{
 var link = obj.link.replace(/amp;/gi,'');
 select_click(link);
}
}

el.menu.show(0 , el.offsetHeight , 10, 10, el);
var mb = el.menu.document.body;

mb.style.cssText ="border:solid 1px black;margin:0;padding:0;overflow-y:auto;overflow-x:auto;background:white;text-aligbn:center;font-family:Arial;font-size:12px;color:#989898;";
var t = el.contentHTML;
t = t.replace(/<select/gi,'<ul');
t = t.replace(/<option/gi,'<li');
t = t.replace(/<\/option/gi,'</li');
t = t.replace(/<\/select/gi,'</ul');
mb.innerHTML = t;

var test = mb.innerHTML.split('<LI');
for(var i=0;i<test.length;i++)
{
 test[i] = test[i].substr(7, test[i].indexOf('>') - 7);
 if(test[i].substr(0,4) != "http")
 {
 test[i] = '';
 }
}

el.select = mb.all.tags("ul")[0];
el.select.style.cssText="list-style:none;margin:0;padding:0;";
mb.options = el.select.getElementsByTagName("li");

for(var i=0;i<mb.options.length;i++)
{
 if(i>0)
 mb.options[i].link = test[i+1];
 mb.options[i].selectedIndex = i;
 mb.options[i].style.cssText = "list-style:none;margin:0;padding:1px 2px;width/**/:100%;cursor:hand;cursorointer;white-space:nowrap;"
 mb.options[i].title =mb.options[i].innerHTML;
 mb.options[i].innerHTML ="<nobr>" + mb.options[i].innerHTML + "</nobr>";
 mb.options[i].onmouseover = function()
 {
 if( mb.options.selected ){mb.options.selected.style.background="white";mb.options.selected.style.color="#989898";}
 mb.options.selected = this;
 this.style.background="#333366";this.style.color="white";
 }

 mb.options[i].onmouseout = function(){this.style.background="white";this.style.color="#989898";}
 mb.options[i].onmousedown = function(){selectMenu(this); }
 mb.options[i].onkeydown = function(){selectMenu(this); }


 if(i == el.contentIndex)
 {
 mb.options[i].style.background="#333366";
 mb.options[i].style.color="white";
 mb.options.selected = mb.options[i];
 }
}


var mw = Math.max( ( el.select.offsetWidth + 22 ), el.offsetWidth + 22 );
mw = Math.max( mw, ( mb.scrollWidth+22) );
var mh = mb.options.length * 15 + 8 ;

var ie5= false;
var mx = (ie5)?-3:0;
var my = el.offsetHeight -2;
var docH = document.documentElement.offsetHeight ;
var bottomH = docH - el.getBoundingClientRect().bottom ;

mh = Math.min(mh, Math.max(( docH - el.getBoundingClientRect().top - 50),100) );

if(( bottomH < mh) )
{

mh = Math.max( (bottomH - 12),10);
if( mh <100 )
{
my = -100 ;

}
mh = Math.max(mh,100);
}


self.focus();

el.menu.show( mx , my , mw, mh , el);
sync=null;
if(mb.options.selected)
{
mb.scrollTop = mb.options.selected.offsetTop;
}




window.onresize = function(){el.menu.hide()};
}

function switchMenu()
{
if(event.keyCode)
{
if(event.keyCode==40){ el.contentIndex++ ;}
else if(event.keyCode==38){ el.contentIndex--; }
}
else if(event.wheelDelta )
{
if (event.wheelDelta >= 120)
el.contentIndex++ ;
else if (event.wheelDelta <= -120)
el.contentIndex-- ;
}else{return true;}




if( el.contentIndex > (el.contentOptions.length-1) ){ el.contentIndex =0;}
else if (el.contentIndex<0){el.contentIndex = el.contentOptions.length-1 ;}

var o = document.createElement("option");
o.value = el.contentOptions[el.contentIndex].value;
o.innerHTML = el.contentOptions[el.contentIndex].text;
while(el.options.length>0){el.options[0].removeNode(true);}
el.appendChild(o);
el.title = o.innerHTML;
}

if(dropdown_menu_hack.menu ==null)
{
dropdown_menu_hack.menu = window.createPopup();
document.attachEvent("onkeydown",dropdown_menu_hack.menu.hide);
}
el.menu = dropdown_menu_hack.menu ;
el.contentOptions = new Array();
el.contentIndex = el.selectedIndex;
el.contentHTML = el.outerHTML;

for(var i=0;i<el.options.length;i++)
{
el.contentOptions [el.contentOptions.length] =
{
"value": el.options[i].value,
"text": el.options[i].innerHTML
}

if(!el.options[i].selected){el.options[i].removeNode(true);i--;};
}


el.onkeydown = switchMenu;
el.onclick = showMenu;
el.onmousewheel= switchMenu;

}

////////////////////////////////////////////////////
////////////////////////////////////////////////////
Refine.Popup = {
 display: function(p_sTitle, p_sMessage, p_cOk, p_cCancel) {

 //$j("#refine_popup_placeholder").dialog('destroy');
 $j("#refine_popup_placeholder").remove();

 //$j("#refine_popup_placeholder").live('dialogopen', Refine.Popup.afterDialogOpen);

 content = '<div class="hide" id="refine_popup_placeholder"><div class="popupGreenContainer">' +
 '<div class="popupGreenTopLeft"></div>' +
 '<div class="popupGreenTop"></div>' +
 '<div class="popupGreenTopRight"></div>' +


 '<div style="clear: both;"/>' +


 '<div class="popupGreenLeft"></div>' +

 '<div class="popupGreenContent">' +
 '<div>' +
 '<div class="popupBTNCloseX"><a href="javascript:void(0);" id="close">close <img height="11" width="11" alt="x" src="'+refine_base_url+'skin/frontend/default/refine/images/pop_clos_btn_x.gif"/></a></div>' +
 '<div class="popupGreenMainText1"><p>' + p_sTitle + '</p></div>';
 if (p_sMessage != undefined)
 {
 content += '<div class="popupGreenText1">' + p_sMessage + '</div>';
 }
 if (p_cCancel)
 {
 content += '<div class="popupGreenCancelBtn"><a href="javascript:void(0);" id="cancel"><img src="'+refine_base_url+'skin/frontend/default/refine/images/pop_green_cancel_btn.gif" width="65" height="23" alt="Cancel button" border="0" /></a></div>';
 }
 content += '<div class="popupGreenOkBtn"><a href="javascript:void(0);" id="ok"><img src="'+refine_base_url+'skin/frontend/default/refine/images/pop_green_ok_btn.gif" width="35" height="23" alt="OK button" border="0" /></a></div>';
 content +=
 '</div></div>' +


 '<div class="popupGreenRight"></div>' +



 '<div class="clear"/>' +



 '<div class="popupGreenbottomLeft"></div>' +
 '<div class="popupGreenbottom"></div>' +
 '<div class="popupGreenbottomRight"></div></div></div>';


 $j('body').append(content);
 $j("#refine_popup_placeholder").bind('dialogopen', Refine.Popup.afterDialogOpen);
 $j("#refine_popup_placeholder").dialog({
 width: 'auto',
 resizable : false,
 autoResize : true,
 modal: true,
 close: function(event, ui)
 {
 $j("#refine_popup_placeholder").remove();
 }
 });
 $j("#close").bind('click', function(){
 Refine.Popup.closeDialog();
 if (p_cCancel && typeof(p_cCancel)!= 'boolean')
 p_cCancel();
 });
 $j("#cancel").bind('click', function(){
 Refine.Popup.closeDialog();
 if (p_cCancel && typeof(p_cCancel)!= 'boolean')
 p_cCancel();
 });
 $j("#ok").bind('click', function(){
 //alert('ok pressed');
 Refine.Popup.closeDialog();
 if (p_cOk && typeof(p_cOk)!= 'boolean')
 p_cOk();
 });

 },
 afterDialogOpen: function() {

 $j("#refine_popup_placeholder").parent().css('z-index', '100000');
 $j('.ui-dialog').css('background', 'transparent')
 .css('border', '0px');
 $j('.ui-dialog .ui-dialog-content').css('padding', 0);
 $j('.ui-dialog-titlebar').remove();
 $j("#refine_popup_placeholder").css('border', '0px');
 $j('.popupGreenContent').css('background', 'white');
 var height = $j('.popupGreenMainText1').height() + $j('.popupGreenOkBtn').height() + 50;
 if ($j('.popupGreenText1').height() > 0)
 height += $j('.popupGreenText1').height() + 20;
 $j('.popupGreenLeft,.popupGreenRight,.popupGreenContent').height(height);
 $j('#close').css('color','#ACAFB0').css('text-decoration', 'none');
 $j('.ui-dialog-content').css('background', 'none').height(height+50);
 $j("#refine_popup_placeholder").parent().css('z-index', '100000');
 $j("#refine_popup_placeholder").parent().css('width', '500px');
 },
 closeDialog: function() {
 $j('#refine_popup_placeholder').dialog('close');
 }
}

var path = '';

Refine.SmartScissors = {
 helpShowed : false,

 setting: null,
 init: function (p_oOptions) {

 if (p_oOptions) {
 this.settings = p_oOptions;
 }

 $j("#smart-app-close").bind('click', function() {
 Refine.SmartScissors.closePopup();
 });

 $j("#smart-app-cancel").bind('click', function(){
 Refine.SmartScissors.closePopup();
 });

 $j("#smart-app-ok").click(function() {

 if (Refine.SmartScissors.imageUrl != null) {

 Refine.SmartScissors.closePopup();

 Refine.Popup.display('generating image preview');
 $j('.popupGreenOkBtn, .popupBTNCloseX').remove();

 $j('table tr td', Refine.SmartScissors.currentImage).html('<img style="display: none;" srczzzz="'+ Refine.SmartScissors.imageUrl + '" />').css('background', 'white');

 var l_oImage = $j('img', $j(Refine.SmartScissors.currentImage));

 l_oImage.load(function() {

 if ($j(this).height() > $j(this).width()) {
 $j('table tr td', Refine.SmartScissors.currentImage).html('<img src="'+ Refine.SmartScissors.imageUrl + '" height="82" />').css('background', 'white');
 }
 else {
 $j('table tr td', Refine.SmartScissors.currentImage).html('<img src="'+ Refine.SmartScissors.imageUrl + '" width="82" />').css('background', 'white');
 }

 $j(l_oImage).parent().css('text-align', 'center');
 Refine.Popup.closeDialog();

 }).attr('src', Refine.SmartScissors.imageUrl);

 //l_oImage.trigger('load');



 /*
 alert(l_oImage.height());
 alert(l_oImage.width());

 if (l_oImage.height() > l_oImage.width()) {
 $j(Refine.SmartScissors.currentImage).html('<img src="'+ Refine.SmartScissors.imageUrl + '" height="82" />').css('background', 'white');
 }
 else {
 $j(Refine.SmartScissors.currentImage).html('<img src="'+ Refine.SmartScissors.imageUrl + '" width="82" />').css('background', 'white');
 }
 */


 var l_sImageName = Refine.SmartScissors.imageUrl.split('/').pop();

 $j("#ph" + $j(Refine.SmartScissors.currentImage).attr("id")).val(l_sImageName);

 $j("#cont" + $j(Refine.SmartScissors.currentImage).attr("id")).css({'border':'solid #4A4344'});
 //$j(l_oImage).css('margin-top', '20px');
 l_oImage.vAlign();
// $j(l_oImage).vAlign();

 $j.ajax({
 type: 'POST',
 url: refine_base_url + 'sellys/my/saveDraftStep3/mode/confirm',
 data: $j('#form-validate').serialize(),
 success: function() {
 }
 });
 }
 else {

 //alert('POPUP');

 Refine.Popup.display('You need to save an image first!');
 }

 return false;

 Refine.SmartScissors.closePopup();

 if (path !='') {
 var imgsrc = '<img src="'+refine_base_url + 'media/uploads/' + path.split('/').pop()+'" height=82px width=82px >';
 $j(Refine.SmartScissors.currentImage).html(imgsrc);
 $j("#ph"+$j(Refine.SmartScissors.currentImage).attr("id")).val(path);
 $j("#cont"+$j(Refine.SmartScissors.currentImage).attr("id")).css({'border':'solid #4A4344'});
 }
 });
 },

 rootUrl: 'media/uploads/',

 images: null,

 imageUrl: null,

 firstLoad: true,

 imageNumber: null,

 initImages: function() {
 },

 sizes: {
 smartWidth: 400,
 smartHeight: 600,

 popupContainerWidth: 400 + 50,
 popupContentWidth: 400 + 0,
 popupContentHeight: 600 + 150,

 popupWidth: 400 + 50,
 popupHeight: 600 + 245
 },

 currentImage: null,

 closePopup: function() {
 $j("#smart-scissors-popup").css('display', 'none');
 },

 display: function(p_iImageNumber) {

// if (Refine.SmartScissors.settings && Refine.SmartScissors.settings.displayMethod) {
// Refine.SmartScissors.settings.saveCallback(p_sImageURL);
// Refine.SmartScissors.closePopup();
// Refine.Popup.closeDialog();
// return true;
// }

 Refine.SmartScissors.imageNumber = p_iImageNumber;
 if (Refine.SmartScissors.helpShowed == false)
 {
 //tb_show('helper', refine_base_url+'sellys/my/helper/?height=646&width=700');

 /*
 var l_oPopup = $j("#smart-scissors-help-popup");

 l_oPopup.css('z-index', '1000');
 l_oPopup.css("position","absolute");
 l_oPopup.css("top", 50);
 l_oPopup.css("left", ( $j(window).width() - l_oPopup.width() ) / 2+$j(window).scrollLeft() + "px");
 l_oPopup.draggable({cancel: '#flash-smart-app, .browse'}).show();
 */
 }

 if ($j('#ph' + p_iImageNumber).attr('value').length) {

 var l_sImageName = $j('#ph' + p_iImageNumber).attr('value');
 Refine.SmartScissors.imageUrl = refine_base_url + Refine.SmartScissors.rootUrl + l_sImageName;


 }
 else {

 Refine.SmartScissors.imageUrl = null;
 }


 var l_oPopup = $j("#smart-scissors-popup");

 l_oPopup.css('z-index', '1000');
 l_oPopup.css("position","absolute");
 l_oPopup.css("top", 10);
 l_oPopup.css("left", ( $j(window).width() - l_oPopup.width() ) / 2+$j(window).scrollLeft() + "px");

 Refine.SmartScissors.currentImage = $j('#' + p_iImageNumber);

 l_oPopup.draggable({cancel: '#flash-smart-app, .browse'}).show();

 if ($j.browser.msie && !Refine.SmartScissors.firstLoad) {
 if (navigator.appName.indexOf("Microsoft") != -1) {
 var l_oFlash = window['smartflash'];
 }
 else {
 var l_oFlash = document['smartflash'];
 }

 if (Refine.SmartScissors.imageUrl != null) {
 //alert('load initiated');
 //l_oFlash.fctLoadImage(Refine.SmartScissors.imageUrl, 'jpg');
 Refine.SmartScissors.Application.init(Refine.SmartScissors.imageUrl, Refine.SmartScissors.imageNumber);
 }
 else {
// alert('load initiated');
 Refine.SmartScissors.Application.init('', Refine.SmartScissors.imageNumber);
 }
 }

 Refine.SmartScissors.firstLoad = false;

 $j('#smart-image').val('');

 return false;
 },

 initAdmin: function() {
 },


 displayAdmin: function(p_sImageUrl, p_iImageNumber) {


 var l_aoSelectedImage = $j("input[name='product[image]'][type='radio']:checked");
 var l_sForceMode = 'jpg';

 if (l_aoSelectedImage.length && p_sImageUrl.indexOf($j(l_aoSelectedImage[0]).attr('value')) > -1) {
 /**
 * we are processing the image which must be saved as a PNG
 */
 p_iImageNumber = 1;
 l_sForceMode = 'png'

 }

 else {
 /**
 * we are processing an image from 2-6
 */
 p_iImageNumber = 2;
 }

 /**
 * make a request to determine the image that we are going to edit
 */




 $j.ajax({
 url: refine_base_url + 'listing/smart/checkImageExistance',
 type: 'POST',
 data: ({
 image: p_sImageUrl,
 type: l_sForceMode
 }),
 dataType: 'json',
 success: function(jsonResponse) {
// alert('image to process: ' + jsonResponse.processed_url);

 Refine.SmartScissors.imageUrl = jsonResponse.processed_url;
 Refine.SmartScissors.imageNumber = p_iImageNumber;


 var l_oPopup = $j("#smart-scissors-popup");

 l_oPopup.css('z-index', '1000');
 l_oPopup.css("position","absolute");
 l_oPopup.css("top", 10);
 l_oPopup.css("left", ( $j(window).width() - l_oPopup.width() ) / 2+$j(window).scrollLeft() + "px");

 l_oPopup.draggable({cancel: '#flash-smart-app, .browse'}).show();

 if ($j.browser.msie && !Refine.SmartScissors.firstLoad) {
 if (navigator.appName.indexOf("Microsoft") != -1) {
 var l_oFlash = window['smartflash'];
 }
 else {
 var l_oFlash = document['smartflash'];
 }

 if (Refine.SmartScissors.imageUrl != null) {
 Refine.SmartScissors.Application.init(Refine.SmartScissors.imageUrl, Refine.SmartScissors.imageNumber);
 }
 else {
 Refine.SmartScissors.Application.init('', Refine.SmartScissors.imageNumber);
 }
 }

 Refine.SmartScissors.firstLoad = false;

 }
 });

 return false;

 },

 saveNoticeAdmin: function(p_sImageUrl) {
 alert(p_sImageUrl);
 },

 saveNotice: function(p_sImageURL) {

 if (Refine.SmartScissors.Application.convert_to_jpg) {
 p_sImageURL = p_sImageURL.replace('.png', '.jpg');
 }

 if (Refine.SmartScissors.settings && Refine.SmartScissors.settings.saveCallback) {
 Refine.SmartScissors.settings.saveCallback(p_sImageURL);
 Refine.SmartScissors.closePopup();
 Refine.Popup.closeDialog();
 return true;
 }

 Refine.SmartScissors.imageUrl = p_sImageURL;
 Refine.SmartScissors.closePopup();

 Refine.Popup.closeDialog();

 Refine.Popup.display('generating image preview');
 $j('.popupGreenOkBtn, .popupBTNCloseX').remove();

 $j('table tr td', Refine.SmartScissors.currentImage).html('<img style="display: none;" srczzzz="'+ Refine.SmartScissors.imageUrl + '" />').css('background', 'white');

 var l_oImage = $j('img', $j(Refine.SmartScissors.currentImage));

 l_oImage.load(function() {

 if ($j(this).height() > $j(this).width()) {
 $j('table tr td', Refine.SmartScissors.currentImage).html('<img src="'+ Refine.SmartScissors.imageUrl + '" height="82" />').css('background', 'white');
 }
 else {
 $j('table tr td', Refine.SmartScissors.currentImage).html('<img src="'+ Refine.SmartScissors.imageUrl + '" width="82" />').css('background', 'white');
 }

 $j(l_oImage).parent().css('text-align', 'center');
 Refine.Popup.closeDialog();

 }).attr('src', Refine.SmartScissors.imageUrl);

 var l_sImageName = Refine.SmartScissors.imageUrl.split('/').pop();
 $j("#ph" + $j(Refine.SmartScissors.currentImage).attr("id")).val(l_sImageName);
 $j("#cont" + $j(Refine.SmartScissors.currentImage).attr("id")).css({'border':'solid #4A4344'});
 l_oImage.vAlign();

 $j.ajax({
 type: 'POST',
 url: refine_base_url + 'sellys/my/saveDraftStep3/mode/confirm',
 data: $j('#form-validate').serialize(),
 success: function() {
 }
 });
 },

 startedNotice: function() {

 if (navigator.appName.indexOf("Microsoft") != -1) {
 var l_oFlash = window['smartflash'];
 }
 else {
 var l_oFlash = document['smartflash'];
 }

 if (Refine.SmartScissors.imageUrl != null) {
// alert('load initiated');
 //l_oFlash.fctLoadImage(Refine.SmartScissors.imageUrl, 'jpg');
 Refine.SmartScissors.Application.init(Refine.SmartScissors.imageUrl, Refine.SmartScissors.imageNumber);
 }
 else {
// alert('load initiated');
 //l_oFlash.fctLoadImage('', 'jpg');
 Refine.SmartScissors.Application.init('', Refine.SmartScissors.imageNumber);
 }

 },

 savePng: function(p_sByteData) {
 $j.ajax({
 type: "POST",
 url: refine_base_url+'listing/smart/savepng',
 data: "image=" + $j.URLEncode(p_sByteData),
 success: function(msg){
 Refine.SmartScissors.imageUrl = msg;
 Refine.Popup.display('Your image has been successfully saved!', Refine.SmartScissors.imageUrl);
 }
 });
 },

 showHelpVideo: function() {

 var l_oPopup = $j("#smart-scissors-video-help");

 l_oPopup.css('z-index', '1000');
 l_oPopup.css("position","absolute");
 l_oPopup.css("top", 100);
 l_oPopup.css("left", ( $j(window).width() - l_oPopup.width() ) / 2+$j(window).scrollLeft() + "px");
 l_oPopup.draggable({cancel: ''}).show();

 },

 closeHelpVideo: function() {
 $j("#smart-scissors-video-help").css('display', 'none');
 }
}

Refine.SmartScissors.Application = {
 // crop mode can be simple or advanced
 crop_mode: null,
 // image format can be jpg or png
 image_save_format: null,
 // true or false
 crop_started: false,
 flash_handler: null,
 image_loaded: false,
 image_url: '',
 is_processed: false,
 image_number: null,

 execute_callback: true,

 convert_to_jpg: null,

 image_loaded_callback: null,


 init: function(p_sImageUrl, p_iImageNumber) {

 if (p_iImageNumber == -1) {
 p_iImageNumber = this.image_number;
 }

 if (p_iImageNumber == 1) {

 var p_sImageSaveFormat = 'png';
 this.image_number = p_iImageNumber;
 }
 else if (p_iImageNumber > -1) {
 var p_sImageSaveFormat = 'jpg';
 this.image_number = p_iImageNumber;
 }

 Refine.SmartScissors.Application.disable('startSimple');
 Refine.SmartScissors.Application.disable('startAdvanced');
 Refine.SmartScissors.Application.disable('apply');
 Refine.SmartScissors.Application.disable('cancel');

 this.crop_started = false;
 this.crop_mode = null;
 this.image_save_format = p_sImageSaveFormat;
 this.image_url = p_sImageUrl;
 this.image_loaded = false;
 this.is_processed = false;
 this.convert_to_jpg = null;
 this.image_loaded_callback = null;
 this.execute_callback = true;

 if (navigator.appName.indexOf("Microsoft") != -1) {
 this.flash_handler = window['smartflash'];
 }
 else {
 this.flash_handler = document['smartflash'];
 }

 this.flash_handler.fctLoadImage(p_sImageUrl, p_sImageSaveFormat);
 },

 startAdvanced: function() {

 if (Refine.SmartScissors.Application.image_loaded && !Refine.SmartScissors.Application.crop_started) {
 /*
 * call the advanced crop start
 */

 if (Refine.SmartScissors.Application.image_save_format == 'jpg') {

 /**
 * we need to switch to png format, and set a flag for converting back to jpg
 */


 Refine.SmartScissors.Application.convert_to_jpg = true;
 Refine.SmartScissors.Application.image_save_format = 'png';

 Refine.SmartScissors.Application.image_loaded_callback = function () {

 Refine.SmartScissors.Application.crop_started = true;
 Refine.SmartScissors.Application.is_processed = false;
 Refine.SmartScissors.Application.crop_mode = 'advanced';

 Refine.SmartScissors.Application.flash_handler.fctStartSmartScissors();

 Refine.SmartScissors.Application.disable('startSimple');
 Refine.SmartScissors.Application.disable('startAdvanced');
 Refine.SmartScissors.Application.disable('apply');
 Refine.SmartScissors.Application.enable('cancel');

 }

 Refine.SmartScissors.Application.flash_handler.fctLoadImage(Refine.SmartScissors.Application.image_url, 'png');

 return true;


 }


 Refine.SmartScissors.Application.crop_started = true;
 Refine.SmartScissors.Application.is_processed = false;
 Refine.SmartScissors.Application.crop_mode = 'advanced';

 Refine.SmartScissors.Application.disable('startSimple');
 Refine.SmartScissors.Application.disable('startAdvanced');
 Refine.SmartScissors.Application.disable('apply');
 Refine.SmartScissors.Application.enable('cancel');

 Refine.SmartScissors.Application.flash_handler.fctStartSmartScissors();


 }
 },

 startSimple: function() {
 if (Refine.SmartScissors.Application.image_loaded && !Refine.SmartScissors.Application.crop_started) {
 /*
 * call the advanced crop start
 */
 Refine.SmartScissors.Application.crop_started = true;
 Refine.SmartScissors.Application.is_processed = false;
 Refine.SmartScissors.Application.crop_mode = 'simple';

 Refine.SmartScissors.Application.flash_handler.fctStartSimpleCrop();

 Refine.SmartScissors.Application.disable('startSimple');
 Refine.SmartScissors.Application.disable('startAdvanced');
 Refine.SmartScissors.Application.enable('apply');
 Refine.SmartScissors.Application.enable('cancel');
 }
 },

 cancel: function() {

 Refine.SmartScissors.Application.crop_started = false;
 Refine.SmartScissors.Application.is_processed = false;
 Refine.SmartScissors.Application.flash_handler.fctCancelCrop();

 Refine.SmartScissors.Application.enable('startSimple');
 Refine.SmartScissors.Application.enable('startAdvanced');
 Refine.SmartScissors.Application.disable('cancel');
 Refine.SmartScissors.Application.disable('apply');
 Refine.SmartScissors.Application.disable('save');

 },

 apply: function() {

 Refine.SmartScissors.Application.crop_started = false;
 Refine.SmartScissors.Application.is_processed = true;
 Refine.SmartScissors.Application.flash_handler.fctApplyCrop();

 Refine.SmartScissors.Application.disable('startSimple');
 Refine.SmartScissors.Application.disable('startAdvanced');
 Refine.SmartScissors.Application.enable('cancel');
 Refine.SmartScissors.Application.disable('apply');
 Refine.SmartScissors.Application.enable('save');

 },

 imageLoaded: function() {

 this.execute_callback = !this.execute_callback;

 if (Refine.SmartScissors.Application.image_loaded_callback && this.execute_callback) {

 Refine.SmartScissors.Application.image_loaded_callback();
 Refine.SmartScissors.Application.image_loaded_callback = null;
 return true;
 }

 if (this.image_url != '') {
 this.image_loaded = true;
 this.enable('startAdvanced');
 this.enable('startSimple');
 this.disable('apply');
 this.disable('cancel');
 this.disable('save');
 }
 else {
 this.image_loaded = false;
 this.disable('startAdvanced');
 this.disable('startSimple');
 this.disable('apply');
 this.disable('cancel');
 this.disable('save');
 }

 },

 selectionComplete: function() {
 this.enable('apply');
 this.enable('cancel');
 },

 disable: function(p_sAction) {

 switch (p_sAction) {
 case 'apply':
 $j('#smart-scissors-apply')
 .attr('src', $j('#smart-scissors-apply').attr('src').replace('enabled', 'disabled'))
 .unbind('click');
 break;
 case 'startAdvanced':
 $j('#smart-scissors-start-advanced')
 .attr('src', $j('#smart-scissors-start-advanced').attr('src').replace('enabled', 'disabled'))
 .unbind('click');
 break;
 case 'startSimple':
 $j('#smart-scissors-start-simple')
 //.attr('src', $j('#smart-scissors-start-simple').attr('src').replace('enabled', 'disabled'))
 .unbind('click');
 break;
 case 'cancel':
 $j('#smart-scissors-cancel')
 .attr('src', $j('#smart-scissors-cancel').attr('src').replace('enabled', 'disabled'))
 .unbind('click');
 break;

 case 'save':
 $j('#smart-app-ok').unbind('click');
 break;
 }

 },
 enable: function(p_sAction) {
 switch (p_sAction) {
 case 'apply':
 $j('#smart-scissors-apply')
 .attr('src', $j('#smart-scissors-apply').attr('src').replace('disabled', 'enabled'))
 .click(Refine.SmartScissors.Application.apply);
 break;
 case 'startAdvanced':
 $j('#smart-scissors-start-advanced')
 .attr('src', $j('#smart-scissors-start-advanced').attr('src').replace('disabled', 'enabled'))
 .click(Refine.SmartScissors.Application.startAdvanced);
 break;
 case 'startSimple':
 $j('#smart-scissors-start-simple')
 //.attr('src', $j('#smart-scissors-start-simple').attr('src').replace('disabled', 'enabled'))
 .click(Refine.SmartScissors.Application.startSimple);
 break;
 case 'cancel':
 $j('#smart-scissors-cancel')
 .attr('src', $j('#smart-scissors-cancel').attr('src').replace('disabled', 'enabled'))
 .click(Refine.SmartScissors.Application.cancel);
 break;
 case 'save':
 $j('#smart-app-ok').click(Refine.SmartScissors.Application.save);
 break;
 }
 },

 save: function() {
 if (Refine.SmartScissors.Application.is_processed == true) {
 Refine.SmartScissors.Application.flash_handler.fctSaveImage();
 Refine.SmartScissors.Application.disable('save');
 Refine.Popup.display('saving image, please wait.');
 $j('.popupGreenOkBtn, .popupBTNCloseX').remove();
 }
 }

}

Refine.Recaptcha = {

 init: function() {

 // $j('#captcha-container').css('visibility', 'hidden');

 $j('.recaptcha_r1_c1, .recaptcha_r2_c2, .recaptcha_r2_c1, .recaptcha_r3_c2, .recaptcha_r3_c3, .recaptcha_r7_c1, .recaptcha_r8_c1,.recaptcha_r4_c2, .recaptcha_r3_c1, .recaptcha_r4_c4 ').css('background', '#ffffff');
 $j('.recaptcha_r4_c1').css('background', 'white');

 $j('#captcha-frame').hide();
 $j('.recaptcha_input_area').appendTo('#captcha-input-text');
 $j('#recaptcha_image').clone().appendTo('#captcha-image');
 $j('.recaptcha_input_area_text, #recaptcha_challenge_field_holder').html('');

 $j('#captcha-refresh-image').click(function () {Recaptcha.reload();});
/*
 $j('#captcha-listen-code').click(function () {
 $j(this).hide();
 $j('#captcha-see-code').show();
 Recaptcha.switch_type('audio');

 });*/
 $j('#captcha-see-code').click(function () {
 $j(this).hide();
 //$j('#captcha-listen-code').show();
 Recaptcha.switch_type('image');
 });

 $j('#recaptcha_image img').remove();
 Recaptcha.reload();

 $j('#recaptcha_response_field').live('focus', function(event) {
 event.event.stopPropagation();
 event.preventDefault();
 $j('#recaptcha_response_field').unbind('focus');
 return false;
 });
 $j('#captcha-refresh-image').css('visibility', 'visible');
 $j('#recaptcha_response_field').addClass('validate-required');

 $j(window).load(function () {
// $j('#captcha-container').css('visibility', 'visible');
 });

 }

}

$j.fn.vAlign = function() { return this.each(function(i){ var ah = $j(this).height(); var ph = $j(this).parent().height(); var mh = (ph - ah) / 2; $j(this).css('margin-top', mh); }); };

$j(document).ready(function() {

 if($j.browser.msie)
 {

 if(parseInt($j.browser.version) < 7) {
 }

// var l_iMaxWidth = 0;

 /*
 $j('.selectbox').each(function() {
 $j(this)
 .mouseover(function() {
 $j(this)
 .data("origWidth", $j(this).css("width"))
 .css("width", "auto");
 })
 .mouseout(function() {
 $j(this).css("width", $j(this).data("origWidth"));
 })
 });

 return true;*/
 var elems = document.getElementsByClassName('selectbox');
 for(var i=0; i<elems.length; i++)
 {
 dropdown_menu_hack(elems[i]);
 }
 }
});


$j.fn.vAlign = function() {
 return this.each(function(i){
 var ah = $j(this).height();
 var ph = $j(this).parent().height();
 var mh = (ph - ah) / 2;

 $j(this).css('margin-top', mh);
 });
};

$j.extend({URLEncode:function(c){var o='';var x=0;c=c.toString();var r=/(^[a-zA-Z0-9_.]*)/;
 while(x<c.length){var m=r.exec(c.substr(x));
 if(m!=null && m.length>1 && m[1]!=''){o+=m[1];x+=m[1].length;
 }else{if(c[x]==' ')o+='+';else{var d=c.charCodeAt(x);var h=d.toString(16);
 o+='%'+(h.length<2?'0':'')+h.toUpperCase();}x++;}}return o;},
URLDecode:function(s){var o=s;var binVal,t;var r=/(%[^%]{2})/;
 while((m=r.exec(o))!=null && m.length>1 && m[1]!=''){b=parseInt(m[1].substr(1),16);
 t=String.fromCharCode(b);o=o.replace(m[1],t);}return o;}
});


var Refine = Refine || {};

Refine.Slider = Refine.Slider || {};

Refine.Slider.Settings = {
 debug: false,
 total_nr_of_items : 0,
 nr_of_pages_per_click : 1,
 nr_of_pages_per_slide : 10,
 nr_of_divisions_per_page : 15,
 pixels_per_page : 0,
 total_nr_of_div : 0,
 current_pos : 0,
 scroll_pos : 50,
 picture_width : 0,
 //3 units of slider : 1 element
 pic_units : 0,
 //there are 5 pictures per page
 pic_per_page : 10,
 //15 units : one page
 //max position example: 303 elements * 150 width per element /scroll_pos,
 max_position : 0,
 // how much to increase per button click
 amount : 0,
 //internal use
 old_pos : 0,
 interval: null,
 //middle pos type data for the new ajax call
 last_load_pos : 0,
 first_load_pos : 0,
 max_pos_error: 0,
 nr_of_rows: 1,
 extra_count: 0,
 doing_ajax : false,
 url: refine_base_url+"productlist/productlisting/search",
 order_type : '',
 order_field : '',

 last_request_count: 0,
 last_request_offset: 0,

 last_request_id: 0,
 slider_mark_id: 0,
 scroll_ajust_internal_value: 0
};

Refine.Slider.init = function()
{
 Refine.Slider.initPreloader();
 Refine.Slider.Settings.total_nr_of_items = Math.round(Refine.Slider.Settings.total_nr_of_items / Refine.Slider.Settings.nr_of_rows);
 Refine.Slider.Settings.pixels_per_page = Refine.Slider.Settings.scroll_pos * Refine.Slider.Settings.nr_of_divisions_per_page;
 Refine.Slider.Settings.total_nr_of_div = Refine.Slider.Settings.nr_of_pages_per_slide * Refine.Slider.Settings.nr_of_divisions_per_page;
 Refine.Slider.Settings.pic_units = Refine.Slider.Settings.picture_width / Refine.Slider.Settings.scroll_pos;
 Refine.Slider.Settings.max_position = Math.round((Refine.Slider.Settings.total_nr_of_items-Refine.Slider.Settings.pic_per_page)*Refine.Slider.Settings.picture_width/Refine.Slider.Settings.scroll_pos);
 Refine.Slider.Settings.amount = Refine.Slider.Settings.pic_units*(Refine.Slider.Settings.pic_per_page-1);
 Refine.Slider.Settings.total_nr_of_div = Refine.Slider.Settings.max_position;
 //if 80 items extra then we have 40 and 40
 Refine.Slider.Settings.extra_count = 0;//Refine.Slider.Settings.extra_count / 2;
 //
 if(Refine.Slider.Settings.max_position < 0)
 Refine.Slider.Settings.max_position = 0;
 $j('#maxim').html(Refine.Slider.Settings.max_position);
 $j("#slider").slider({
 max: Refine.Slider.Settings.max_position,
 min: 0,
 handle: '#myHandle',
 slide: function(event, ui) {
 var val = $j('#slider').slider('value');
 Refine.Slider.Settings.old_pos = val;
 Refine.Slider.scroll_set_value(val);
 Refine.Slider.check_ajax(val);
 Refine.Slider.print_page_nr(val);
 },
 stop: function(event, ui)
 {
 var val = $j('#slider').slider('value');
 if(Refine.Slider.Settings.max_position > 4)
 {
 if(val <2 && Refine.Slider.Settings.current_pos == 0)
 {
 $j('#slider').slider('option', 'value', 0);
 val = 0;
 Refine.Slider.scroll_set_value(0);
 }
 if(val > Refine.Slider.Settings.max_position - 2)
 {
 $j('#slider').slider('option', 'value', Refine.Slider.Settings.max_position);
 val = Refine.Slider.Settings.max_position;
 Refine.Slider.scroll_set_value(val);
 }
 }
 Refine.Slider.Settings.old_pos = val;
 Refine.Slider.Settings.doing_ajax = false;
 Refine.Slider.scroll_set_value(val);
 Refine.Slider.check_ajax(val);
 Refine.Slider.print_page_nr(val);
 },
 change: function(event, ui){
 var val = $j('#slider').slider('value');
 if(Refine.Slider.Settings.max_position > 4)
 {
 if(val <2 && Refine.Slider.Settings.current_pos == 0)
 {
 $j('#slider').slider('option', 'value', 0);
 val = 0;
 Refine.Slider.scroll_set_value(0);
 }
 if(val > Refine.Slider.Settings.max_position - 3)
 {
 $j('#slider').slider('option', 'value', Refine.Slider.Settings.max_position);
 val = Refine.Slider.Settings.max_position;
 Refine.Slider.scroll_set_value(val);
 }
 }
 Refine.Slider.Settings.old_pos = val;
 //Refine.Slider.Settings.doing_ajax = false;
 Refine.Slider.check_ajax(val);
 Refine.Slider.print_page_nr(val);
 }
 });
 //get first pages values

 Refine.Slider.Settings.last_request_count = 20*Refine.Slider.Settings.nr_of_rows;
 Refine.Slider.Settings.last_request_offset = 0;
 Refine.Slider.Settings.last_request_id++;
 Refine.Slider.Settings.slider_mark_id++;

 if (Refine.Slider.Settings.debug) {
 alert('Call started: ' + "&slider_mark_id="+Refine.Slider.Settings.slider_mark_id+"&lid=" + Refine.Slider.Settings.last_request_id + "&offset="+0+"&count="+(20*Refine.Slider.Settings.nr_of_rows)+"&rows="+Refine.Slider.Settings.nr_of_rows+"&order_field="+Refine.Slider.Settings.order_field+"&order_type="+Refine.Slider.Settings.order_type);
 }

 $j.ajax({
 type: "POST",
 url: Refine.Slider.Settings.url,
 data: "&slider_mark_id="+Refine.Slider.Settings.slider_mark_id+"&lid=" + Refine.Slider.Settings.last_request_id + "&offset="+0+"&count="+(20*Refine.Slider.Settings.nr_of_rows)+"&rows="+Refine.Slider.Settings.nr_of_rows+"&order_field="+Refine.Slider.Settings.order_field+"&order_type="+Refine.Slider.Settings.order_type,
 success: function(msg){

 if (Refine.Slider.Settings.debug) {
 alert('Call completed');
 }

 $j("#scroll").html(msg);
 }
 });
 Refine.Slider.Settings.last_load_pos = 15*Refine.Slider.Settings.pic_units;
 Refine.Slider.Settings.first_load_pos = 0;
 Refine.Slider.print_page_nr(0);
}

Refine.Slider.initPreloader = function()
{
 $j("#slider_container").append("<div id=\"ajaxBusy\"><p><img src=\""+refine_base_url+"js/ajax-loader.gif\"/></p></div>");
 $j("#ajaxBusy").css({
 display:"none",
 margin:"0px",
 paddingleft:"0px",
 paddingRight:"0px",
 paddingTop:"0px",
 paddingBottom:"0px",
 position:"absolute",
 right:"48%",
 top:"0%",
 width:"auto"
 });
}


$j(document).ajaxStart(function() {
 $j('#ajaxBusy').show();
}).ajaxStop(function(){
 $j('#ajaxBusy').hide();
});

Refine.Slider.check_ajax = function(val)
{
 //if we scrolled more then we have last added get all new content
 if(((Math.ceil(val) >= Math.floor(Refine.Slider.Settings.last_load_pos)) || (Math.ceil(val) <= Math.floor(Refine.Slider.Settings.first_load_pos))) && !Refine.Slider.Settings.doing_ajax)
 {
 if(val <= 0)
 {
 val = 0;
 }
 var temp = Math.ceil(((val)/Refine.Slider.Settings.pic_units)-Refine.Slider.Settings.nr_of_divisions_per_page)*Refine.Slider.Settings.nr_of_rows;
 temp = temp - Refine.Slider.Settings.extra_count;
 if(temp <= 0)
 temp = 0;
 var count = Refine.Slider.Settings.pic_per_page * Refine.Slider.Settings.nr_of_rows * 7;
 if(temp + count > Refine.Slider.Settings.total_nr_of_items * Refine.Slider.Settings.nr_of_rows)
 {
 count = Refine.Slider.Settings.total_nr_of_items*Refine.Slider.Settings.nr_of_rows - temp;
 }

 Refine.Slider.Settings.doing_ajax = true;


 //if (Refine.Slider.Settings.last_request_count != count || Refine.Slider.Settings.last_request_offset != temp) {

 Refine.Slider.Settings.last_request_count = count;
 Refine.Slider.Settings.last_request_offset = temp;

 Refine.Slider.Settings.last_request_id++;

 var t_count = count;
 var t_temp = temp;


 $j.ajax({
 type: "POST",
 url: Refine.Slider.Settings.url,
 data: "&slider_mark_id="+Refine.Slider.Settings.slider_mark_id+"&ild=" + Refine.Slider.Settings.last_request_id + "&offset=" + temp + "&count=" + count + "&rows=" + Refine.Slider.Settings.nr_of_rows + "&order_field=" + Refine.Slider.Settings.order_field + "&order_type=" + Refine.Slider.Settings.order_type,
 success: function(msg){


 if (t_count != Refine.Slider.Settings.last_request_count || t_temp != Refine.Slider.Settings.last_request_offset) return false;

 var temp = (val - (Refine.Slider.Settings.nr_of_divisions_per_page * Refine.Slider.Settings.pic_units)) * Refine.Slider.Settings.scroll_pos;
 temp = temp - Refine.Slider.Settings.extra_count * Refine.Slider.Settings.picture_width;
 if (temp <= 0)
 temp = 0;
 var string_response = '<li id="special_scroll_li" style="width:' + temp + 'px;"></li>' + msg;
 $j("#scroll").html(string_response);
 Refine.Slider.check_all_width(-val*Refine.Slider.Settings.scroll_pos);
 Refine.Slider.Settings.first_load_pos = val - (Refine.Slider.Settings.extra_count - Refine.Slider.Settings.pic_per_page) - Refine.Slider.Settings.nr_of_divisions_per_page * Refine.Slider.Settings.pic_units;
 Refine.Slider.Settings.last_load_pos = val + (Refine.Slider.Settings.extra_count - Refine.Slider.Settings.pic_per_page) + Refine.Slider.Settings.nr_of_divisions_per_page * Refine.Slider.Settings.pic_units;
 //alert(Refine.Slider.Settings.first_load_pos + ' ' + Refine.Slider.Settings.last_load_pos);
 Refine.Slider.Settings.doing_ajax = false;
 //do another ajax if trouble with real value of slider
 if ((($j('#slider').slider('value') >= Refine.Slider.Settings.last_load_pos) || ($j('#slider').slider('value') <= Refine.Slider.Settings.first_load_pos)) && !Refine.Slider.Settings.doing_ajax) {
 Refine.Slider.check_ajax($j('#slider').slider('value'));
 }
 $j('.scroll_element img').each(function () {$j(this).attr('src', $j(this).attr('srcx'))});
 }
 });
 //}
 }
}

Refine.Slider.check_all_width = function(val)
{
 var li_width = $j("#special_scroll_li").width();
 var scroll_margin = val;
 //scroll_margin = scroll_margin.substr(0, scroll_margin.length - 2);
 //scroll_margin = parseInt(scroll_margin);
 //console.log(scroll_margin+ ' -- '+li_width);
 var i = 0;
 while(li_width > 50000)
 {
 i++;
 li_width = li_width - 10000;
 scroll_margin = scroll_margin + 10000;
 }
 $j("#special_scroll_li").width(li_width);
 $j("#scroll").css("marginLeft", scroll_margin+'px');
 Refine.Slider.Settings.scroll_ajust_internal_value = i*10000;
}

Refine.Slider.scroll_set_value = function (value)
{
 var temp = -value*Refine.Slider.Settings.scroll_pos;
 temp = temp + Refine.Slider.Settings.scroll_ajust_internal_value;
 $j('#scroll').css('marginLeft', temp+'px');
}

Refine.Slider.scroll_animate = function (value)
{
 if(-value*Refine.Slider.Settings.scroll_pos > 0)
 {
 $j('#scroll').animate({
 marginLeft: 0
 }, 500);
 return;
 }
 var animate_value = -value*Refine.Slider.Settings.scroll_pos;
 animate_value = animate_value + Refine.Slider.Settings.scroll_ajust_internal_value;
 //alert(-value*Refine.Slider.Settings.scroll_pos);
 $j('#scroll').animate({
 marginLeft: Math.round(animate_value)
 }, 500);
}

Refine.Slider.incValue = function()
{
 var val = $j('#slider').slider('option', 'value');
 if(val+Refine.Slider.Settings.amount >= Refine.Slider.Settings.max_position)
 {
 val = Refine.Slider.Settings.total_nr_of_div;
 }else
 {
 val += Refine.Slider.Settings.amount;
 }
 Refine.Slider.scroll_animate(val);
 Refine.Slider.Settings.old_pos = val;
 Refine.Slider.check_ajax(val);
 $j('#slider').slider('option', 'value', val);
 Refine.Slider.print_page_nr(val);
}

Refine.Slider.decValue = function()
{
 var val = $j('#slider').slider('option', 'value');
 if(val - Refine.Slider.Settings.amount < 0)
 {
 val = 0;
 }else
 {
 val -= Refine.Slider.Settings.amount;
 }
 Refine.Slider.scroll_animate(val);
 Refine.Slider.Settings.old_pos = val;
 Refine.Slider.check_ajax(val);
 $j('#slider').slider('option', 'value', val);
 Refine.Slider.print_page_nr(val);
}

Refine.Slider.print_page_nr = function(val)
{
 var max_pg = 0;
 max_pg = Math.ceil(Refine.Slider.Settings.max_position/Refine.Slider.Settings.amount)+1;
 var pg = 0;
 pg = Math.ceil(val/Refine.Slider.Settings.amount)+1;
 if(pg > max_pg) pg = max_pg;
 if(max_pg == 0)
 max_pg = 1;
 $j('#page_number').html(pg+'/'+max_pg);
}

Refine.Slider.reset = function()
{
 $j("#slider").slider('destroy');
 $j("#slider").html('<a href="#" id="myHandle" class="ui-slider-handle"></a>');
 $j("#scroll").css('margin-left', '0px');
 Refine.Slider.Settings.total_nr_of_items = 0; Refine.Slider.Settings.nr_of_pages_per_click = 1; Refine.Slider.Settings.nr_of_pages_per_slide = 10;
 Refine.Slider.Settings.nr_of_divisions_per_page = 15; Refine.Slider.Settings.pixels_per_page = 0;
 Refine.Slider.Settings.total_nr_of_div = 0; Refine.Slider.Settings.current_pos = 0; Refine.Slider.Settings.scroll_pos = 50; Refine.Slider.Settings.picture_width = 0;
 Refine.Slider.Settings.pic_units = 0; Refine.Slider.Settings. pic_per_page = 10; Refine.Slider.Settings.max_position = 0; Refine.Slider.Settings.amount = 0; Refine.Slider.Settings.old_pos = 0; Refine.Slider.Settings.interval= null;
 Refine.Slider.Settings.last_load_pos = 0; Refine.Slider.Settings.first_load_pos = 0; Refine.Slider.Settings.max_pos_error= 0; Refine.Slider.Settings.nr_of_rows= 1; Refine.Slider.Settings.extra_count= 0;
 Refine.Slider.Settings.doing_ajax = false; Refine.Slider.Settings.url= refine_base_url+"productlist/productlisting/search"; Refine.Slider.Settings.order_type = '';
 Refine.Slider.Settings.order_field = ''; Refine.Slider.Settings.last_request_count= 0; Refine.Slider.Settings.last_request_offset= 0; Refine.Slider.Settings.last_request_id= 0;
};

//////////////////////////////////////////////////////////////
Refine.Slider1 = Refine.Slider1 || {};
Refine.Slider1.Settings = {
 total_nr_of_items : 0,
 nr_of_pages_per_click : 1,
 nr_of_pages_per_slide : 10,
 nr_of_divisions_per_page : 15,
 pixels_per_page : 0,
 total_nr_of_div : 0,
 current_pos : 0,
 scroll_pos : 50,
 picture_width : 0,
 //3 units of slider : 1 element
 pic_units : 0,
 //there are 5 pictures per page
 pic_per_page : 10,
 //15 units : one page
 //max position example: 303 elements * 150 width per element /scroll_pos,
 max_position : 0,
 // how much to increase per button click
 amount : 0,
 //internal use
 old_pos : 0,
 interval: null,
 //middle pos type data for the new ajax call
 last_load_pos : 0,
 first_load_pos : 0,
 max_pos_error: 0,
 nr_of_rows: 1,
 extra_count: 0,
 doing_ajax : false,
 url: refine_base_url+"productlist/productlisting/search",
 order_type : '',
 order_field : '',
 rev_status : 0,
 last_request_count: 0,
 last_request_offset: 0,

 last_request_id: 0,
 slider_mark_id: 0
};

Refine.Slider1.init = function()
{
 Refine.Slider.initPreloader();
 Refine.Slider1.Settings.total_nr_of_items = Math.round(Refine.Slider1.Settings.total_nr_of_items / Refine.Slider1.Settings.nr_of_rows);
 Refine.Slider1.Settings.pixels_per_page = Refine.Slider1.Settings.scroll_pos * Refine.Slider1.Settings.nr_of_divisions_per_page;
 Refine.Slider1.Settings.total_nr_of_div = Refine.Slider1.Settings.nr_of_pages_per_slide * Refine.Slider1.Settings.nr_of_divisions_per_page;
 Refine.Slider1.Settings.pic_units = Refine.Slider1.Settings.picture_width / Refine.Slider1.Settings.scroll_pos;
 Refine.Slider1.Settings.max_position = Math.round((Refine.Slider1.Settings.total_nr_of_items-Refine.Slider1.Settings.pic_per_page)*Refine.Slider1.Settings.picture_width/Refine.Slider1.Settings.scroll_pos);
 Refine.Slider1.Settings.amount = Refine.Slider1.Settings.pic_units*(Refine.Slider1.Settings.pic_per_page-1);
 Refine.Slider1.Settings.total_nr_of_div = Refine.Slider1.Settings.max_position;
 //if 80 items extra then we have 40 and 40
 Refine.Slider1.Settings.extra_count = Refine.Slider1.Settings.extra_count / 2;
 //
 if(Refine.Slider1.Settings.max_position < 0)
 Refine.Slider1.Settings.max_position = 0;
 $j('#maxim1').html(Refine.Slider1.Settings.max_position);
 $j("#slider1").slider({
 max: Refine.Slider1.Settings.max_position,
 min: 0,
 handle: '#myHandle1',
 slide: function(event, ui) {
 var val = $j('#slider1').slider('value');
 Refine.Slider1.Settings.old_pos = val;
 Refine.Slider1.scroll_set_value(val);
 Refine.Slider1.check_ajax(val);
 Refine.Slider1.print_page_nr(val);
 },
 stop: function(event, ui)
 {
 var val = $j('#slider1').slider('value');
 if(val <2 && Refine.Slider1.Settings.current_pos == 0)
 {
 $j('#slider1').slider('option', 'value', 0);
 val = 0;
 Refine.Slider1.scroll_set_value(0);
 }
 if(val > Refine.Slider1.Settings.max_position - 2)
 {
 $j('#slider1').slider('option', 'value', Refine.Slider1.Settings.max_position);
 val = Refine.Slider1.Settings.max_position;
 Refine.Slider1.scroll_set_value(val);
 }
 Refine.Slider1.Settings.old_pos = val;
 Refine.Slider1.Settings.doing_ajax = false;
 Refine.Slider1.scroll_set_value(val);
 Refine.Slider1.check_ajax(val);
 Refine.Slider1.print_page_nr(val);
 },
 change: function(event, ui){
 var val = $j('#slider1').slider('value');
 if(val <2 && Refine.Slider1.Settings.current_pos == 0)
 {
 $j('#slider1').slider('option', 'value', 0);
 val = 0;
 Refine.Slider1.scroll_set_value(0);
 }
 if(val > Refine.Slider1.Settings.max_position - 3)
 {
 $j('#slider1').slider('option', 'value', Refine.Slider1.Settings.max_position);
 val = Refine.Slider1.Settings.max_position;
 Refine.Slider1.scroll_set_value(val);
 }
 Refine.Slider1.Settings.old_pos = val;
 //Refine.Slider1.Settings.doing_ajax = false;
 Refine.Slider1.check_ajax(val);
 Refine.Slider1.print_page_nr(val);
 }
 });
 //get first pages values

 Refine.Slider1.Settings.last_request_count = 20*Refine.Slider1.Settings.nr_of_rows;
 Refine.Slider1.Settings.last_request_offset = 0;
 Refine.Slider1.Settings.last_request_id++;

 $j.ajax({
 type: "POST",
 url: Refine.Slider1.Settings.url,
 data: "status="+Refine.Slider1.Settings.rev_status + "&lid=" + Refine.Slider1.Settings.last_request_id + "&offset="+0+"&count="+(20*Refine.Slider1.Settings.nr_of_rows)+"&rows="+Refine.Slider1.Settings.nr_of_rows+"&order_field="+Refine.Slider1.Settings.order_field+"&order_type="+Refine.Slider1.Settings.order_type,
 success: function(msg){
 $j("#scroll1").html(msg);
 }
 });
 Refine.Slider1.Settings.last_load_pos = 15*Refine.Slider1.Settings.pic_units;
 Refine.Slider1.Settings.first_load_pos = 0;
 Refine.Slider1.print_page_nr(0);
}

Refine.Slider1.check_ajax = function(val)
{
 //if we scrolled more then we have last added get all new content
 if(((val >= Refine.Slider1.Settings.last_load_pos) || (val <= Refine.Slider1.Settings.first_load_pos)) && !Refine.Slider1.Settings.doing_ajax)
 {
 if(val <= 0)
 {
 val = 0;
 }
 var temp = Math.ceil(((val)/Refine.Slider1.Settings.pic_units)-Refine.Slider1.Settings.nr_of_divisions_per_page)*Refine.Slider1.Settings.nr_of_rows;
 temp = temp - Refine.Slider1.Settings.extra_count;
 if(temp <= 0)
 temp = 0;
 var count = Refine.Slider1.Settings.pic_per_page * Refine.Slider1.Settings.nr_of_rows * 7;
 if(temp + count > Refine.Slider1.Settings.total_nr_of_items * Refine.Slider1.Settings.nr_of_rows)
 {
 count = Refine.Slider1.Settings.total_nr_of_items*Refine.Slider1.Settings.nr_of_rows - temp;
 }

 Refine.Slider1.Settings.doing_ajax = true;

 //if (Refine.Slider1.Settings.last_request_count != count || Refine.Slider1.Settings.last_request_offset != temp) {

 Refine.Slider1.Settings.last_request_count = count;
 Refine.Slider1.Settings.last_request_offset = temp;

 Refine.Slider1.Settings.last_request_id++;

 var t_count = count;
 var t_temp = temp;


 $j.ajax({
 type: "POST",
 url: Refine.Slider1.Settings.url,
 data: "status="+Refine.Slider1.Settings.rev_status + "&ild=" + Refine.Slider1.Settings.last_request_id + "&offset=" + temp + "&count=" + count + "&rows=" + Refine.Slider1.Settings.nr_of_rows + "&order_field=" + Refine.Slider1.Settings.order_field + "&order_type=" + Refine.Slider1.Settings.order_type,
 success: function(msg){

 if (t_count != Refine.Slider1.Settings.last_request_count || t_temp != Refine.Slider1.Settings.last_request_offset) return false;

 var temp = (val - (Refine.Slider1.Settings.nr_of_divisions_per_page * Refine.Slider1.Settings.pic_units)) * Refine.Slider1.Settings.scroll_pos;
 temp = temp - Refine.Slider1.Settings.extra_count * Refine.Slider1.Settings.picture_width;
 if (temp <= 0)
 temp = 0;
 $j("#scroll1").html('<li style="width:' + temp + 'px;"></li>');
 $j("#scroll1").append(msg);
 Refine.Slider1.Settings.first_load_pos = val - (Refine.Slider1.Settings.extra_count - Refine.Slider1.Settings.pic_per_page) - Refine.Slider1.Settings.nr_of_divisions_per_page * Refine.Slider1.Settings.pic_units;
 Refine.Slider1.Settings.last_load_pos = val + (Refine.Slider1.Settings.extra_count - Refine.Slider1.Settings.pic_per_page) + Refine.Slider1.Settings.nr_of_divisions_per_page * Refine.Slider1.Settings.pic_units;
 //alert(Refine.Slider1.Settings.first_load_pos + ' ' + Refine.Slider1.Settings.last_load_pos);
 Refine.Slider1.Settings.doing_ajax = false;

 $j('.scrollItem img').each(function() {
 $j(this).attr('src', $j(this).attr('srcx'));
 });

 //do another ajax if trouble with real value of slider
 if ((($j('#slider1').slider('value') >= Refine.Slider1.Settings.last_load_pos) || ($j('#slider1').slider('value') <= Refine.Slider1.Settings.first_load_pos)) && !Refine.Slider1.Settings.doing_ajax) {
 Refine.Slider1.check_ajax($j('#slider1').slider('value'));
 }
 }
 });
 //}
 }
}

Refine.Slider1.scroll_set_value = function (value)
{
 $j('#scroll1').css('marginLeft', -value*Refine.Slider1.Settings.scroll_pos);
}

Refine.Slider1.scroll_animate = function (value)
{
 if(-value*Refine.Slider1.Settings.scroll_pos > 0)
 {
 $j('#scroll1').animate({
 marginLeft: 0
 }, 500);
 return;
 }
 $j('#scroll1').animate({
 marginLeft: Math.round(-value*Refine.Slider1.Settings.scroll_pos)
 }, 500);
}

Refine.Slider1.incValue = function()
{
 var val = $j('#slider1').slider('option', 'value');
 if(val+Refine.Slider1.Settings.amount >= Refine.Slider1.Settings.max_position)
 {
 val = Refine.Slider1.Settings.total_nr_of_div;
 }else
 {
 val += Refine.Slider1.Settings.amount;
 }
 Refine.Slider1.scroll_animate(val);
 Refine.Slider1.Settings.old_pos = val;
 Refine.Slider1.check_ajax(val);
 $j('#slider1').slider('option', 'value', val);
 Refine.Slider1.print_page_nr(val);
}

Refine.Slider1.decValue = function()
{
 var val = $j('#slider1').slider('option', 'value');
 if(val - Refine.Slider1.Settings.amount < 0)
 {
 val = 0;
 }else
 {
 val -= Refine.Slider1.Settings.amount;
 }
 Refine.Slider1.scroll_animate(val);
 Refine.Slider1.Settings.old_pos = val;
 Refine.Slider1.check_ajax(val);
 $j('#slider1').slider('option', 'value', val);
 Refine.Slider1.print_page_nr(val);
}

Refine.Slider1.print_page_nr = function(val)
{

 var pg = 0;
 if(val % Refine.Slider1.Settings.pic_units*(Refine.Slider1.Settings.pic_per_page-1) == 0)
 {
 pg = Math.floor(val/Refine.Slider1.Settings.amount)+1;
 }
 else
 {
 pg = Math.ceil(val/Refine.Slider1.Settings.amount);
 }
 var max_pg = 0;
 max_pg = Math.ceil(Refine.Slider1.Settings.max_position/Refine.Slider1.Settings.amount);
 if(max_pg == 0)
 max_pg = 1;
 $j('#page_number1').html(pg+'/'+max_pg);
}

Refine.Slider1.reset = function()
{
 $j("#slider1").slider('destroy');
 Refine.Slider1.Settings.total_nr_of_items = 0;nr_of_pages_per_click = 1;nr_of_pages_per_slide = 10;nr_of_divisions_per_page = 15;
 Refine.Slider1.Settings.pixels_per_page = 0;Refine.Slider1.Settings.total_nr_of_div = 0;Refine.Slider1.Settings.current_pos = 0;
 Refine.Slider1.Settings.scroll_pos = 50;Refine.Slider1.Settings.picture_width = 150;Refine.Slider1.Settings.pic_units = 0;
 Refine.Slider1.Settings.pic_per_page = 5;Refine.Slider1.Settings.max_position = 0;Refine.Slider1.Settings.amount = 0;
 Refine.Slider1.Settings.old_pos = 0;Refine.Slider1.Settings.interval= null;Refine.Slider1.Settings.last_load_pos = 0;
 Refine.Slider1.Settings.first_load_pos = 0;Refine.Slider1.Settings.doing_ajax = false;
};

////////////////////////////////////////////


Refine.Tooltip = Refine.Tooltip || {};

Refine.Tooltip.Settings = {
 id : 'tt',
 top : 60,
 left : 120,
 maxw : 300,
 speed : 10,
 timer : 20,
 endalpha : 95,
 alpha : 0,
 tt : null,
 t : null,
 c : null,
 b : null,
 ie : null,
 y_pos: 4
};

Refine.Tooltip.show = function(obj, content, width)
{
 Refine.Tooltip.Settings.ie = document.all ? true : false;
 if(Refine.Tooltip.Settings.tt == null)
 {
 Refine.Tooltip.Settings.tt = document.createElement('div');
 Refine.Tooltip.Settings.tt.setAttribute('id', Refine.Tooltip.Settings.id);
 Refine.Tooltip.Settings.t = document.createElement('div');
 Refine.Tooltip.Settings.t.setAttribute('id', Refine.Tooltip.Settings.id + 'top');
 Refine.Tooltip.Settings.c = document.createElement('div');
 Refine.Tooltip.Settings.c.setAttribute('id', Refine.Tooltip.Settings.id + 'cont');
 Refine.Tooltip.Settings.b = document.createElement('div');
 Refine.Tooltip.Settings.b.setAttribute('id',Refine.Tooltip.Settings.id + 'bot');
 Refine.Tooltip.Settings.tt.appendChild(Refine.Tooltip.Settings.t);
 Refine.Tooltip.Settings.tt.appendChild(Refine.Tooltip.Settings.c);
 Refine.Tooltip.Settings.tt.appendChild(Refine.Tooltip.Settings.b);
 document.body.appendChild(Refine.Tooltip.Settings.tt);
 Refine.Tooltip.Settings.tt.style.opacity = 0;
 Refine.Tooltip.Settings.tt.style.filter = 'alpha(opacity=0)';
 document.onmouseover = Refine.Tooltip.whichelement;
 }
 Refine.Tooltip.Settings.tt.style.display = 'block';
 $j(Refine.Tooltip.Settings.tt).css('z-index','20');
 Refine.Tooltip.Settings.c.innerHTML = content;
 Refine.Tooltip.Settings.tt.style.width = width ? width + 'px' : 'auto';
 //Refine.Tooltip.Settings.tt.style.width = width ? '400px' : 'auto';
 if(!width && Refine.Tooltip.Settings.ie)
 {
 Refine.Tooltip.Settings.t.style.display = 'none';
 Refine.Tooltip.Settings.b.style.display = 'none';
 Refine.Tooltip.Settings.tt.style.width = tt.offsetWidth;
 Refine.Tooltip.Settings.t.style.display = 'block';
 Refine.Tooltip.Settings.b.style.display = 'block';
 }
 if(Refine.Tooltip.Settings.tt.offsetWidth > Refine.Tooltip.Settings.maxw)
 {
 Refine.Tooltip.Settings.tt.style.width = Refine.Tooltip.Settings.maxw + 'px';
 }
 Refine.Tooltip.pos(obj);
 clearInterval(Refine.Tooltip.Settings.tt.timer);
 Refine.Tooltip.Settings.tt.timer = setInterval(function(){Refine.Tooltip.fade(1)}, Refine.Tooltip.Settings.timer);
}

Refine.Tooltip.sneakpeek = function(id)
{
 tb_show("",refine_base_url+"sneakpeek/list/dialog/product_id/"+id+"?height=600");
}

Refine.Tooltip.minisneak = function(id)
{
 tb_show('auto_load_sneakpeak', refine_base_url+'sneakpeek/list/minisneak/product_id/'+id+'?height=490&width=330');
}


Refine.Tooltip.whichelement = function(e)
{
 var targ;
 if (!e) var e = window.event;
 if (e.target) targ = e.target;
 else if (e.srcElement) targ = e.srcElement;
 if (targ.nodeType == 3) // defeat Safari bug
 targ = targ.parentNode;

 if(targ.id.substr(0,2) == "tt")
 {
 return true;
 }
 Refine.Tooltip.hide();
}

Refine.Tooltip.pos = function(obj)
{


 temp = $j(obj).offset();
 var y_pos = parseInt(temp.top - $j(obj).height() * Refine.Tooltip.Settings.y_pos);
 Refine.Tooltip.Settings.tt.style.left = parseInt(temp.left + $j(obj).width() / 2) + 'px';
 if(BrowserDetect.browser == 'Explorer' && BrowserDetect.version < 8)
 {

 y_pos = parseInt(temp.top - 10 * Refine.Tooltip.Settings.y_pos) + 100;
 }
 Refine.Tooltip.Settings.tt.style.top = y_pos + 'px';
}

Refine.Tooltip.fade = function(d)
{
 if(BrowserDetect.browser == 'Explorer' && BrowserDetect.version < 7)
 {
 clearInterval(Refine.Tooltip.Settings.tt.timer);
 if(d == -1)
 {
 Refine.Tooltip.Settings.tt.style.display = 'none';
 return;
 }
 else
 {
 Refine.Tooltip.Settings.tt.style.display = 'block';
 return;
 }
 }
 var a = Refine.Tooltip.Settings.alpha;
 if((a != Refine.Tooltip.Settings.endalpha && d == 1) || (a != 0 && d == -1))
 {
 var i = Refine.Tooltip.Settings.speed;
 if(Refine.Tooltip.Settings.endalpha - a < Refine.Tooltip.Settings.speed && d == 1)
 {
 i = Refine.Tooltip.Settings.endalpha - a;
 }
 else if(Refine.Tooltip.Settings.alpha < Refine.Tooltip.Settings.speed && d == -1)
 {
 i = a;
 }
 Refine.Tooltip.Settings.alpha = a + (i * d);
 Refine.Tooltip.Settings.tt.style.opacity = Refine.Tooltip.Settings.alpha * .01;
 Refine.Tooltip.Settings.tt.style.filter = 'alpha(opacity=' + Refine.Tooltip.Settings.alpha + ')';
 }
 else
 {
 clearInterval(Refine.Tooltip.Settings.tt.timer);
 if(d == -1)
 {
 Refine.Tooltip.Settings.tt.style.display = 'none';
 }
 }
}

Refine.Tooltip.hide = function()
{
 clearInterval(Refine.Tooltip.Settings.tt.timer);
 Refine.Tooltip.Settings.tt.timer = setInterval(function(){Refine.Tooltip.fade(-1)}, Refine.Tooltip.Settings.timer);
}

Refine.Drag = Refine.Drag || {};

Refine.Drag.mouseX = function (evt)
{
 if (evt.pageX)
 return evt.pageX;
 else if (evt.clientX)
 return evt.clientX + (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft);
 else return null;
}
Refine.Drag.mouseY = function (evt)
{
 if (evt.pageY) return evt.pageY;
 else if (evt.clientY)
 return evt.clientY + (document.documentElement.scrollTop ? document.documentElement.scrollTop :document.body.scrollTop);
 else return null;
}


Refine.Drag.initialize = function()
{
 $j('body').append('<div id="mask"></div>');
 var offset = $j('#flash_app').offset();
 var temp = document.getElementById('flash_app');
 $j('#mask').
 css('position', 'absolute').
 css('top', offset.top).
 css('left', offset.left).
 css('width', temp.offsetWidth).
 css('height', temp.offsetHeight).
 css('z-index', 110);
}

Refine.Drag.init = function(id, type, p_sUrl)
{
 $j("#ttimg_"+id).draggable({
 appendTo: 'body',
 helper: 'clone',
 stack: { group: 'products', min: 250 },
 start: function(event, ui) {
 Refine.Drag.initialize();
 var picture_left = Math.abs(Refine.Drag.mouseX(event) - $j($j("#ttimg_"+id)).offset().left);
 var picture_top = Math.abs(Refine.Drag.mouseY(event) - $j($j("#ttimg_"+id)).offset().top);
 $j("#mask").droppable({
 tolerance : "intersect",
 drop: function(event, ui) {
 _id = id;
 if(type == 'special_type')
 {
 _id = 0;
 }
 if (p_sUrl)
 document.getElementById("flash_main").fromJS_dropItem("#ttimg_"+id,p_sUrl, Math.abs(Refine.Drag.mouseX(event) - $j($j('#flash_app')).offset().left - picture_left), Math.abs(Refine.Drag.mouseY(event) - $j($j('#flash_app')).offset().top - picture_top), _id);
 else
 document.getElementById("flash_main").fromJS_dropItem("#ttimg_"+id,$j("#ttimg_"+id).attr('src'), Math.abs(Refine.Drag.mouseX(event) - $j($j('#flash_app')).offset().left - picture_left), Math.abs(Refine.Drag.mouseY(event) - $j($j('#flash_app')).offset().top - picture_top), _id);
 //alert('Dropped!');
 }
 });
 },
 stop: function(event, ui) {
 $j('#mask').remove();
 }

 });
}

//Flash used function
displayBackgroundsPanel = function(param_width, param_visible)
{
 if(param_visible == true)
 {
 $j("#slider_and_filters").hide();
 }
 else
 {
 $j("#slider_and_filters").show();
 }
 document.getElementById('flash_main').width = param_width;
}

//example to reset the scroll
/*$j(document).ready(function(){
 Refine.Slider.reset();
 Refine.Slider.Settings.total_nr_of_items = 9;
 Refine.Slider.init();
 });
*/
//$j(document).ready(Refine.Slider.init);
/*
 * Thickbox 3.1 - One Box To Rule Them All.
 * By Cody Lindley (http://www.codylindley.com)
 * Copyright (c) 2007 cody lindley
 * Licensed under the MIT License: http://www.opensource.org/licenses/mit-license.php
*/

var tb_pathToImage = "js/ajax-loader.gif";

/*!!!!!!!!!!!!!!!!! edit below this line at your own risk !!!!!!!!!!!!!!!!!!!!!!!*/

//on page load call tb_init
$j(document).ready(function(){
 tb_init('a.thickbox, area.thickbox, input.thickbox');//pass where to apply thickbox
 imgLoader = new Image();// preload image
 imgLoader.src = refine_base_url + tb_pathToImage;
});

//add thickbox to href & area elements that have a class of .thickbox
function tb_init(domChunk){
 $j(domChunk).click(function(){
 var t = this.title || this.name || null;
 var a = this.href || this.alt;
 var g = this.rel || false;
 tb_show(t,a,g);
 this.blur();
 return false;
 });
}

function tb_show(caption, url, imageGroup) {//function called when the user clicks on a thickbox link

 try {
 if (typeof document.body.style.maxHeight === "undefined") {//if IE 6
 $j("body","html").css({height: "100%", width: "100%"});
 $j("html").css("overflow","hidden");
 if (document.getElementById("TB_HideSelect") === null) {//iframe to hide select elements in ie6
 $j("body").append("<iframe id='TB_HideSelect'></iframe><div id='TB_overlay'></div><div id='TB_window'></div>");
 $j("#TB_overlay").click(tb_remove);
 }
 }else{//all others
 if(document.getElementById("TB_overlay") === null){
 $j("body").append("<div id='TB_overlay'></div><div id='TB_window'></div>");
 $j("#TB_overlay").click(tb_remove);
 }
 }

 if(tb_detectMacXFF()){
 $j("#TB_overlay").addClass("TB_overlayMacFFBGHack");//use png overlay so hide flash
 }else{
 $j("#TB_overlay").addClass("TB_overlayBG");//use background and opacity
 }

 if(caption===null){caption="";}
 //$j("body").append("<div id='TB_load'><img src='"+imgLoader.src+"' /></div>");//add loader to the page
 $j("body").append("<div id='TB_load'></div>");//add loader to the page
 $j('#TB_load').show();//show loader

 var baseURL;
 if(url.indexOf("?")!==-1){ //ff there is a query string involved
 baseURL = url.substr(0, url.indexOf("?"));
 }else{
 baseURL = url;
 }

 var urlString = /\.jpg$j|\.jpeg$j|\.png$j|\.gif$j|\.bmp$j/;
 var urlType = baseURL.toLowerCase().match(urlString);

 if(urlType == '.jpg' || urlType == '.jpeg' || urlType == '.png' || urlType == '.gif' || urlType == '.bmp'){//code to show images

 TB_PrevCaption = "";
 TB_PrevURL = "";
 TB_PrevHTML = "";
 TB_NextCaption = "";
 TB_NextURL = "";
 TB_NextHTML = "";
 TB_imageCount = "";
 TB_FoundURL = false;
 if(imageGroup){
 TB_TempArray = $j("a[@rel="+imageGroup+"]").get();
 for (TB_Counter = 0; ((TB_Counter < TB_TempArray.length) && (TB_NextHTML === "")); TB_Counter++) {
 var urlTypeTemp = TB_TempArray[TB_Counter].href.toLowerCase().match(urlString);
 if (!(TB_TempArray[TB_Counter].href == url)) {
 if (TB_FoundURL) {
 TB_NextCaption = TB_TempArray[TB_Counter].title;
 TB_NextURL = TB_TempArray[TB_Counter].href;
 TB_NextHTML = "<span id='TB_next'>&nbsp;&nbsp;<a href='#'>Next &gt;</a></span>";
 } else {
 TB_PrevCaption = TB_TempArray[TB_Counter].title;
 TB_PrevURL = TB_TempArray[TB_Counter].href;
 TB_PrevHTML = "<span id='TB_prev'>&nbsp;&nbsp;<a href='#'>&lt; Prev</a></span>";
 }
 } else {
 TB_FoundURL = true;
 TB_imageCount = "Image " + (TB_Counter + 1) +" of "+ (TB_TempArray.length);
 }
 }
 }

 imgPreloader = new Image();
 imgPreloader.onload = function(){
 imgPreloader.onload = null;

 // Resizing large images - orginal by Christian Montoya edited by me.
 var pagesize = tb_getPageSize();
 var x = pagesize[0] - 150;
 var y = pagesize[1] - 150;
 var imageWidth = imgPreloader.width;
 var imageHeight = imgPreloader.height;
 if (imageWidth > x) {
 imageHeight = imageHeight * (x / imageWidth);
 imageWidth = x;
 if (imageHeight > y) {
 imageWidth = imageWidth * (y / imageHeight);
 imageHeight = y;
 }
 } else if (imageHeight > y) {
 imageWidth = imageWidth * (y / imageHeight);
 imageHeight = y;
 if (imageWidth > x) {
 imageHeight = imageHeight * (x / imageWidth);
 imageWidth = x;
 }
 }
 // End Resizing

 TB_WIDTH = imageWidth + 30;
 TB_HEIGHT = imageHeight + 60;
 $j("#TB_window").append("<a href='' id='TB_ImageOff' title='Close'><img id='TB_Image' src='"+url+"' width='"+imageWidth+"' height='"+imageHeight+"' alt='"+caption+"'/></a>" + "<div id='TB_caption'>"+caption+"<div id='TB_secondLine'>" + TB_imageCount + TB_PrevHTML + TB_NextHTML + "</div></div><div id='TB_closeWindow'><a href='#' id='TB_closeWindowButton' title='Close'>close</a> or Esc Key</div>");

 $j("#TB_closeWindowButton").click(tb_remove);

 if (!(TB_PrevHTML === "")) {
 function goPrev(){
 if($j(document).unbind("click",goPrev)){$j(document).unbind("click",goPrev);}
 $j("#TB_window").remove();
 $j("body").append("<div id='TB_window'></div>");
 tb_show(TB_PrevCaption, TB_PrevURL, imageGroup);
 return false;
 }
 $j("#TB_prev").click(goPrev);
 }

 if (!(TB_NextHTML === "")) {
 function goNext(){
 $j("#TB_window").remove();
 $j("body").append("<div id='TB_window'></div>");
 tb_show(TB_NextCaption, TB_NextURL, imageGroup);
 return false;
 }
 $j("#TB_next").click(goNext);

 }

 document.onkeydown = function(e){
 if (e == null) { // ie
 keycode = event.keyCode;
 } else { // mozilla
 keycode = e.which;
 }
 if(keycode == 27){ // close
 tb_remove();
 } else if(keycode == 190){ // display previous image
 if(!(TB_NextHTML == "")){
 document.onkeydown = "";
 goNext();
 }
 } else if(keycode == 188){ // display next image
 if(!(TB_PrevHTML == "")){
 document.onkeydown = "";
 goPrev();
 }
 }
 };

 tb_position();
 $j("#TB_load").remove();
 $j("#TB_ImageOff").click(tb_remove);
 $j("#TB_window").css({display:"block"}); //for safari using css instead of show
 };

 imgPreloader.src = url;
 }else{//code to show html

 var queryString = url.replace(/^[^\?]+\??/,'');
 var params = tb_parseQuery( queryString );

 //alert(params.modal);

 TB_WIDTH = (params['width']*1) + 30 || 630; //defaults to 630 if no paramaters were added to URL
 TB_HEIGHT = (params['height']*1) + 40 || 440; //defaults to 440 if no paramaters were added to URL
 ajaxContentW = TB_WIDTH - 30;
 ajaxContentH = TB_HEIGHT - 45;

 if(url.indexOf('TB_iframe') != -1){// either iframe or ajax window
 urlNoQuery = url.split('TB_');
 $j("#TB_iframeContent").remove();
 if(params['modal'] != "true"){//iframe no modal
 $j("#TB_window").append("<div id='TB_title'><div id='TB_ajaxWindowTitle'>"+caption+"</div><div id='TB_closeAjaxWindow'><a href='#' id='TB_closeWindowButton' title='Close'>close</a> or Esc Key</div></div><iframe frameborder='0' hspace='0' src='"+urlNoQuery[0]+"' id='TB_iframeContent' name='TB_iframeContent"+Math.round(Math.random()*1000)+"' onload='tb_showIframe()' style='width:"+(ajaxContentW + 29)+"px;height:"+(ajaxContentH + 17)+"px;' > </iframe>");
 }else{//iframe modal
 $j("#TB_overlay").unbind();
 $j("#TB_window").append("<iframe frameborder='0' hspace='0' src='"+urlNoQuery[0]+"' id='TB_iframeContent' name='TB_iframeContent"+Math.round(Math.random()*1000)+"' onload='tb_showIframe()' style='width:"+(ajaxContentW + 29)+"px;height:"+(ajaxContentH + 17)+"px;'> </iframe>");
 }
 }else{// not an iframe, ajax
 if($j("#TB_window").css("display") != "block"){
 if(params['modal'] != "true"){//ajax no modal
 $j("#TB_window").append("<div id='TB_title'><div id='TB_ajaxWindowTitle'>"+caption+"</div><div id='TB_closeAjaxWindow'><a href='#' id='TB_closeWindowButton'>close</a> or Esc Key</div></div><div id='TB_ajaxContent' style='width:"+ajaxContentW+"px;height:"+ajaxContentH+"px'></div>");
 }else{//ajax modal
 $j("#TB_overlay").unbind();
 $j("#TB_window").append("<div id='TB_ajaxContent' class='TB_modal' style='width:"+ajaxContentW+"px;height:"+ajaxContentH+"px;'></div>");
 }
 }else{//this means the window is already up, we are just loading new content via ajax
 $j("#TB_ajaxContent")[0].style.width = ajaxContentW +"px";
 $j("#TB_ajaxContent")[0].style.height = ajaxContentH +"px";
 $j("#TB_ajaxContent")[0].scrollTop = 0;
 $j("#TB_ajaxWindowTitle").html(caption);
 }
 }

 $j("#TB_closeWindowButton").click(tb_remove);

 if(url.indexOf('TB_inline') != -1){
 $j("#TB_ajaxContent").append($j('#' + params['inlineId']).children());
 $j("#TB_window").unload(function () {
 $j('#' + params['inlineId']).append( $j("#TB_ajaxContent").children() ); // move elements back when you're finished
 });
 tb_position();
 $j("#TB_load").remove();
 $j("#TB_window").css({display:"block"});
 }else if(url.indexOf('TB_iframe') != -1){
 tb_position();
 if($j.browser.safari){//safari needs help because it will not fire iframe onload
 $j("#TB_load").remove();
 $j("#TB_window").css({display:"block"});
 }
 }else{
 $j("#TB_ajaxContent").load(url += "&random=" + (new Date().getTime()),function(){//to do a post change this load method
 tb_position();
 $j("#TB_load").remove();
 tb_init("#TB_ajaxContent a.thickbox");
 $j("#TB_window").css({display:"block"});
 });
 }

 }

 $j('#TB_title').remove();
 //$j('#TB_window #TB_ajaxContent').css('width', 'auto').css('height', 'auto');

 if(!params['modal']){
 document.onkeyup = function(e){
 if (e == null) { // ie
 keycode = event.keyCode;
 } else { // mozilla
 keycode = e.which;
 }
 if(keycode == 27){ // close
 tb_remove();
 }
 };
 }

 } catch(e) {
 //nothing here
 }
}

//helper functions below
function tb_showIframe(){
 $j("#TB_load").remove();
 $j("#TB_window").css({display:"block"});
}

function tb_remove() {
 $j("#TB_imageOff").unbind("click");
 $j("#TB_closeWindowButton").unbind("click");
 $j("#TB_window").fadeOut("fast",function(){$j('#TB_window,#TB_overlay,#TB_HideSelect').trigger("unload").unbind().remove();});
 $j("#TB_load").remove();
 if (typeof document.body.style.maxHeight == "undefined") {//if IE 6
 $j("body","html").css({height: "auto", width: "auto"});
 $j("html").css("overflow","");
 }
 document.onkeydown = "";
 document.onkeyup = "";
 return false;
}

function tb_position() {
$j("#TB_window").css({marginLeft: '-' + parseInt((TB_WIDTH / 2),10) + 'px', width: TB_WIDTH + 'px'});
 if( ! (BrowserDetect.browser == 'Explorer' && BrowserDetect.version < 7))
 $j("#TB_window").css({marginTop: '-' + parseInt((TB_HEIGHT / 2 - 30),10) + 'px'});
}

function tb_parseQuery ( query ) {
 var Params = {};
 if ( ! query ) {return Params;}// return empty object
 var Pairs = query.split(/[;&]/);
 for ( var i = 0; i < Pairs.length; i++ ) {
 var KeyVal = Pairs[i].split('=');
 if ( ! KeyVal || KeyVal.length != 2 ) {continue;}
 var key = unescape( KeyVal[0] );
 var val = unescape( KeyVal[1] );
 val = val.replace(/\+/g, ' ');
 Params[key] = val;
 }
 return Params;
}

function tb_getPageSize(){
 var de = document.documentElement;
 var w = window.innerWidth || self.innerWidth || (de&&de.clientWidth) || document.body.clientWidth;
 var h = window.innerHeight || self.innerHeight || (de&&de.clientHeight) || document.body.clientHeight;
 arrayPageSize = [w,h];
 return arrayPageSize;
}

function tb_detectMacXFF() {
 var userAgent = navigator.userAgent.toLowerCase();
 if (userAgent.indexOf('mac') != -1 && userAgent.indexOf('firefox')!=-1) {
 return true;
 }
}



// Flash Player Version Detection - Rev 1.6
// Detect Client Browser type
// Copyright(c) 2005-2006 Adobe Macromedia Software, LLC. All rights reserved.
var isIE = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;

function ControlVersion()
{
 var version;
 var axo;
 var e;

 // NOTE : new ActiveXObject(strFoo) throws an exception if strFoo isn't in the registry

 try {
 // version will be set for 7.X or greater players
 axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
 version = axo.GetVariable("$version");
 } catch (e) {
 }

 if (!version)
 {
 try {
 // version will be set for 6.X players only
 axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
 
 // installed player is some revision of 6.0
 // GetVariable("$version") crashes for versions 6.0.22 through 6.0.29,
 // so we have to be careful. 
 
 // default to the first public version
 version = "WIN 6,0,21,0";

 // throws if AllowScripAccess does not exist (introduced in 6.0r47) 
 axo.AllowScriptAccess = "always";

 // safe to call for 6.0r47 or greater
 version = axo.GetVariable("$version");

 } catch (e) {
 }
 }

 if (!version)
 {
 try {
 // version will be set for 4.X or 5.X player
 axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
 version = axo.GetVariable("$version");
 } catch (e) {
 }
 }

 if (!version)
 {
 try {
 // version will be set for 3.X player
 axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
 version = "WIN 3,0,18,0";
 } catch (e) {
 }
 }

 if (!version)
 {
 try {
 // version will be set for 2.X player
 axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
 version = "WIN 2,0,0,11";
 } catch (e) {
 version = -1;
 }
 }
 
 return version;
}

// JavaScript helper required to detect Flash Player PlugIn version information
function GetSwfVer(){
 // NS/Opera version >= 3 check for Flash plugin in plugin array
 var flashVer = -1;
 
 if (navigator.plugins != null && navigator.plugins.length > 0) {
 if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {
 var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
 var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description;
 var descArray = flashDescription.split(" ");
 var tempArrayMajor = descArray[2].split("."); 
 var versionMajor = tempArrayMajor[0];
 var versionMinor = tempArrayMajor[1];
 var versionRevision = descArray[3];
 if (versionRevision == "") {
 versionRevision = descArray[4];
 }
 if (versionRevision[0] == "d") {
 versionRevision = versionRevision.substring(1);
 } else if (versionRevision[0] == "r") {
 versionRevision = versionRevision.substring(1);
 if (versionRevision.indexOf("d") > 0) {
 versionRevision = versionRevision.substring(0, versionRevision.indexOf("d"));
 }
 }
 var flashVer = versionMajor + "." + versionMinor + "." + versionRevision;
 }
 }
 // MSN/WebTV 2.6 supports Flash 4
 else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4;
 // WebTV 2.5 supports Flash 3
 else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3;
 // older WebTV supports Flash 2
 else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2;
 else if ( isIE && isWin && !isOpera ) {
 flashVer = ControlVersion();
 } 
 return flashVer;
}

// When called with reqMajorVer, reqMinorVer, reqRevision returns true if that version or greater is available
function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision)
{
 versionStr = GetSwfVer();
 if (versionStr == -1 ) {
 return false;
 } else if (versionStr != 0) {
 if(isIE && isWin && !isOpera) {
 // Given "WIN 2,0,0,11"
 tempArray = versionStr.split(" "); // ["WIN", "2,0,0,11"]
 tempString = tempArray[1]; // "2,0,0,11"
 versionArray = tempString.split(","); // ['2', '0', '0', '11']
 } else {
 versionArray = versionStr.split(".");
 }
 var versionMajor = versionArray[0];
 var versionMinor = versionArray[1];
 var versionRevision = versionArray[2];

 // is the major.revision >= requested major.revision AND the minor version >= requested minor
 if (versionMajor > parseFloat(reqMajorVer)) {
 return true;
 } else if (versionMajor == parseFloat(reqMajorVer)) {
 if (versionMinor > parseFloat(reqMinorVer))
 return true;
 else if (versionMinor == parseFloat(reqMinorVer)) {
 if (versionRevision >= parseFloat(reqRevision))
 return true;
 }
 }
 return false;
 }
}

function AC_AddExtension(src, ext)
{
 if (src.indexOf('?') != -1)
 return src.replace(/\?/, ext+'?'); 
 else
 return src + ext;
}

function AC_Generateobj(objAttrs, params, embedAttrs) 
{ 
 var str = '';
 if (isIE && isWin && !isOpera)
 {
 str += '<object ';
 for (var i in objAttrs)
 str += i + '="' + objAttrs[i] + '" ';
 str += '>';
 for (var i in params)
 str += '<param name="' + i + '" value="' + params[i] + '" /> ';
 str += '</object>';
 } else {
 str += '<embed ';
 for (var i in embedAttrs)
 str += i + '="' + embedAttrs[i] + '" ';
 str += '> </embed>';
 }

 document.write(str);
}

function AC_FL_RunContent(){
 var ret = 
 AC_GetArgs
 ( arguments, ".swf", "movie", "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
 , "application/x-shockwave-flash"
 );
 AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}

function AC_GetArgs(args, ext, srcParamName, classid, mimeType){
 var ret = new Object();
 ret.embedAttrs = new Object();
 ret.params = new Object();
 ret.objAttrs = new Object();
 for (var i=0; i < args.length; i=i+2){
 var currArg = args[i].toLowerCase(); 

 switch (currArg){ 
 case "classid":
 break;
 case "pluginspage":
 ret.embedAttrs[args[i]] = args[i+1];
 break;
 case "src":
 case "movie": 
 args[i+1] = AC_AddExtension(args[i+1], ext);
 ret.embedAttrs["src"] = args[i+1];
 ret.params[srcParamName] = args[i+1];
 break;
 case "onafterupdate":
 case "onbeforeupdate":
 case "onblur":
 case "oncellchange":
 case "onclick":
 case "ondblClick":
 case "ondrag":
 case "ondragend":
 case "ondragenter":
 case "ondragleave":
 case "ondragover":
 case "ondrop":
 case "onfinish":
 case "onfocus":
 case "onhelp":
 case "onmousedown":
 case "onmouseup":
 case "onmouseover":
 case "onmousemove":
 case "onmouseout":
 case "onkeypress":
 case "onkeydown":
 case "onkeyup":
 case "onload":
 case "onlosecapture":
 case "onpropertychange":
 case "onreadystatechange":
 case "onrowsdelete":
 case "onrowenter":
 case "onrowexit":
 case "onrowsinserted":
 case "onstart":
 case "onscroll":
 case "onbeforeeditfocus":
 case "onactivate":
 case "onbeforedeactivate":
 case "ondeactivate":
 case "type":
 case "codebase":
 ret.objAttrs[args[i]] = args[i+1];
 break;
 case "id":
 case "width":
 case "height":
 case "align":
 case "vspace": 
 case "hspace":
 case "class":
 case "title":
 case "accesskey":
 case "name":
 case "tabindex":
 ret.embedAttrs[args[i]] = ret.objAttrs[args[i]] = args[i+1];
 break;
 default:
 ret.embedAttrs[args[i]] = ret.params[args[i]] = args[i+1];
 }
 }
 ret.objAttrs["classid"] = classid;
 if (mimeType) ret.embedAttrs["type"] = mimeType;
 return ret;
}



/*
 http://www.JSON.org/json2.js
 2009-04-16

 Public Domain.

 NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.

 See http://www.JSON.org/js.html

 This file creates a global JSON object containing two methods: stringify
 and parse.

 JSON.stringify(value, replacer, space)
 value any JavaScript value, usually an object or array.

 replacer an optional parameter that determines how object
 values are stringified for objects. It can be a
 function or an array of strings.

 space an optional parameter that specifies the indentation
 of nested structures. If it is omitted, the text will
 be packed without extra whitespace. If it is a number,
 it will specify the number of spaces to indent at each
 level. If it is a string (such as '\t' or '&nbsp;'),
 it contains the characters used to indent at each level.

 This method produces a JSON text from a JavaScript value.

 When an object value is found, if the object contains a toJSON
 method, its toJSON method will be called and the result will be
 stringified. A toJSON method does not serialize: it returns the
 value represented by the name/value pair that should be serialized,
 or undefined if nothing should be serialized. The toJSON method
 will be passed the key associated with the value, and this will be
 bound to the object holding the key.

 For example, this would serialize Dates as ISO strings.

 Date.prototype.toJSON = function (key) {
 function f(n) {
 // Format integers to have at least two digits.
 return n < 10 ? '0' + n : n;
 }

 return this.getUTCFullYear() + '-' +
 f(this.getUTCMonth() + 1) + '-' +
 f(this.getUTCDate()) + 'T' +
 f(this.getUTCHours()) + ':' +
 f(this.getUTCMinutes()) + ':' +
 f(this.getUTCSeconds()) + 'Z';
 };

 You can provide an optional replacer method. It will be passed the
 key and value of each member, with this bound to the containing
 object. The value that is returned from your method will be
 serialized. If your method returns undefined, then the member will
 be excluded from the serialization.

 If the replacer parameter is an array of strings, then it will be
 used to select the members to be serialized. It filters the results
 such that only members with keys listed in the replacer array are
 stringified.

 Values that do not have JSON representations, such as undefined or
 functions, will not be serialized. Such values in objects will be
 dropped; in arrays they will be replaced with null. You can use
 a replacer function to replace those with JSON values.
 JSON.stringify(undefined) returns undefined.

 The optional space parameter produces a stringification of the
 value that is filled with line breaks and indentation to make it
 easier to read.

 If the space parameter is a non-empty string, then that string will
 be used for indentation. If the space parameter is a number, then
 the indentation will be that many spaces.

 Example:

 text = JSON.stringify(['e', {pluribus: 'unum'}]);
 // text is '["e",{"pluribus":"unum"}]'


 text = JSON.stringify(['e', {pluribus: 'unum'}], null, '\t');
 // text is '[\n\t"e",\n\t{\n\t\t"pluribus": "unum"\n\t}\n]'

 text = JSON.stringify([new Date()], function (key, value) {
 return this[key] instanceof Date ?
 'Date(' + this[key] + ')' : value;
 });
 // text is '["Date(---current time---)"]'


 JSON.parse(text, reviver)
 This method parses a JSON text to produce an object or array.
 It can throw a SyntaxError exception.

 The optional reviver parameter is a function that can filter and
 transform the results. It receives each of the keys and values,
 and its return value is used instead of the original value.
 If it returns what it received, then the structure is not modified.
 If it returns undefined then the member is deleted.

 Example:

 // Parse the text. Values that look like ISO date strings will
 // be converted to Date objects.

 myData = JSON.parse(text, function (key, value) {
 var a;
 if (typeof value === 'string') {
 a =
/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value);
 if (a) {
 return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4],
 +a[5], +a[6]));
 }
 }
 return value;
 });

 myData = JSON.parse('["Date(09/09/2001)"]', function (key, value) {
 var d;
 if (typeof value === 'string' &&
 value.slice(0, 5) === 'Date(' &&
 value.slice(-1) === ')') {
 d = new Date(value.slice(5, -1));
 if (d) {
 return d;
 }
 }
 return value;
 });


 This is a reference implementation. You are free to copy, modify, or
 redistribute.

 This code should be minified before deployment.
 See http://javascript.crockford.com/jsmin.html

 USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO
 NOT CONTROL.
*/

/*jslint evil: true */

/*global JSON */

/*members "", "\b", "\t", "\n", "\f", "\r", "\"", JSON, "\\", apply,
 call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours,
 getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join,
 lastIndex, length, parse, prototype, push, replace, slice, stringify,
 test, toJSON, toString, valueOf
*/

// Create a JSON object only if one does not already exist. We create the
// methods in a closure to avoid creating global variables.

if (!this.JSON) {
 JSON = {};
}
(function () {

 function f(n) {
 // Format integers to have at least two digits.
 return n < 10 ? '0' + n : n;
 }

 if (typeof Date.prototype.toJSON !== 'function') {

 Date.prototype.toJSON = function (key) {

 return this.getUTCFullYear() + '-' +
 f(this.getUTCMonth() + 1) + '-' +
 f(this.getUTCDate()) + 'T' +
 f(this.getUTCHours()) + ':' +
 f(this.getUTCMinutes()) + ':' +
 f(this.getUTCSeconds()) + 'Z';
 };

 String.prototype.toJSON =
 Number.prototype.toJSON =
 Boolean.prototype.toJSON = function (key) {
 return this.valueOf();
 };
 }

 var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
 escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
 gap,
 indent,
 meta = { // table of character substitutions
 '\b': '\\b',
 '\t': '\\t',
 '\n': '\\n',
 '\f': '\\f',
 '\r': '\\r',
 '"' : '\\"',
 '\\': '\\\\'
 },
 rep;


 function quote(string) {

// If the string contains no control characters, no quote characters, and no
// backslash characters, then we can safely slap some quotes around it.
// Otherwise we must also replace the offending characters with safe escape
// sequences.

 escapable.lastIndex = 0;
 return escapable.test(string) ?
 '"' + string.replace(escapable, function (a) {
 var c = meta[a];
 return typeof c === 'string' ? c :
 '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
 }) + '"' :
 '"' + string + '"';
 }


 function str(key, holder) {

// Produce a string from holder[key].

 var i, // The loop counter.
 k, // The member key.
 v, // The member value.
 length,
 mind = gap,
 partial,
 value = holder[key];

// If the value has a toJSON method, call it to obtain a replacement value.

 if (value && typeof value === 'object' &&
 typeof value.toJSON === 'function') {
 value = value.toJSON(key);
 }

// If we were called with a replacer function, then call the replacer to
// obtain a replacement value.

 if (typeof rep === 'function') {
 value = rep.call(holder, key, value);
 }

// What happens next depends on the value's type.

 switch (typeof value) {
 case 'string':
 return quote(value);

 case 'number':

// JSON numbers must be finite. Encode non-finite numbers as null.

 return isFinite(value) ? String(value) : 'null';

 case 'boolean':
 case 'null':

// If the value is a boolean or null, convert it to a string. Note:
// typeof null does not produce 'null'. The case is included here in
// the remote chance that this gets fixed someday.

 return String(value);

// If the type is 'object', we might be dealing with an object or an array or
// null.

 case 'object':

// Due to a specification blunder in ECMAScript, typeof null is 'object',
// so watch out for that case.

 if (!value) {
 return 'null';
 }

// Make an array to hold the partial results of stringifying this object value.

 gap += indent;
 partial = [];

// Is the value an array?

 if (Object.prototype.toString.apply(value) === '[object Array]') {

// The value is an array. Stringify every element. Use null as a placeholder
// for non-JSON values.

 length = value.length;
 for (i = 0; i < length; i += 1) {
 partial[i] = str(i, value) || 'null';
 }

// Join all of the elements together, separated with commas, and wrap them in
// brackets.

 v = partial.length === 0 ? '[]' :
 gap ? '[\n' + gap +
 partial.join(',\n' + gap) + '\n' +
 mind + ']' :
 '[' + partial.join(',') + ']';
 gap = mind;
 return v;
 }

// If the replacer is an array, use it to select the members to be stringified.

 if (rep && typeof rep === 'object') {
 length = rep.length;
 for (i = 0; i < length; i += 1) {
 k = rep[i];
 if (typeof k === 'string') {
 v = str(k, value);
 if (v) {
 partial.push(quote(k) + (gap ? ': ' : ':') + v);
 }
 }
 }
 } else {

// Otherwise, iterate through all of the keys in the object.

 for (k in value) {
 if (Object.hasOwnProperty.call(value, k)) {
 v = str(k, value);
 if (v) {
 partial.push(quote(k) + (gap ? ': ' : ':') + v);
 }
 }
 }
 }

// Join all of the member texts together, separated with commas,
// and wrap them in braces.

 v = partial.length === 0 ? '{}' :
 gap ? '{\n' + gap + partial.join(',\n' + gap) + '\n' +
 mind + '}' : '{' + partial.join(',') + '}';
 gap = mind;
 return v;
 }
 }

// If the JSON object does not yet have a stringify method, give it one.

 if (typeof JSON.stringify !== 'function') {
 JSON.stringify = function (value, replacer, space) {

// The stringify method takes a value and an optional replacer, and an optional
// space parameter, and returns a JSON text. The replacer can be a function
// that can replace values, or an array of strings that will select the keys.
// A default replacer method can be provided. Use of the space parameter can
// produce text that is more easily readable.

 var i;
 gap = '';
 indent = '';

// If the space parameter is a number, make an indent string containing that
// many spaces.

 if (typeof space === 'number') {
 for (i = 0; i < space; i += 1) {
 indent += ' ';
 }

// If the space parameter is a string, it will be used as the indent string.

 } else if (typeof space === 'string') {
 indent = space;
 }

// If there is a replacer, it must be a function or an array.
// Otherwise, throw an error.

 rep = replacer;
 if (replacer && typeof replacer !== 'function' &&
 (typeof replacer !== 'object' ||
 typeof replacer.length !== 'number')) {
 throw new Error('JSON.stringify');
 }

// Make a fake root object containing our value under the key of ''.
// Return the result of stringifying the value.

 return str('', {'': value});
 };
 }


// If the JSON object does not yet have a parse method, give it one.

 if (typeof JSON.parse !== 'function') {
 JSON.parse = function (text, reviver) {

// The parse method takes a text and an optional reviver function, and returns
// a JavaScript value if the text is a valid JSON text.

 var j;

 function walk(holder, key) {

// The walk method is used to recursively walk the resulting structure so
// that modifications can be made.

 var k, v, value = holder[key];
 if (value && typeof value === 'object') {
 for (k in value) {
 if (Object.hasOwnProperty.call(value, k)) {
 v = walk(value, k);
 if (v !== undefined) {
 value[k] = v;
 } else {
 delete value[k];
 }
 }
 }
 }
 return reviver.call(holder, key, value);
 }


// Parsing happens in four stages. In the first stage, we replace certain
// Unicode characters with escape sequences. JavaScript handles many characters
// incorrectly, either silently deleting them, or treating them as line endings.

 cx.lastIndex = 0;
 if (cx.test(text)) {
 text = text.replace(cx, function (a) {
 return '\\u' +
 ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
 });
 }

// In the second stage, we run the text against regular expressions that look
// for non-JSON patterns. We are especially concerned with '()' and 'new'
// because they can cause invocation, and '=' because it can cause mutation.
// But just to be safe, we want to reject all unexpected forms.

// We split the second stage into 4 regexp operations in order to work around
// crippling inefficiencies in IE's and Safari's regexp engines. First we
// replace the JSON backslash pairs with '@' (a non-JSON character). Second, we
// replace all simple value tokens with ']' characters. Third, we delete all
// open brackets that follow a colon or comma or that begin the text. Finally,
// we look to see that the remaining characters are only whitespace or ']' or
// ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval.

 if (/^[\],:{}\s]*$/.
test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@').
replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']').
replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {

// In the third stage we use the eval function to compile the text into a
// JavaScript structure. The '{' operator is subject to a syntactic ambiguity
// in JavaScript: it can begin a block or an object literal. We wrap the text
// in parens to eliminate the ambiguity.

 j = eval('(' + text + ')');

// In the optional fourth stage, we recursively walk the new structure, passing
// each name/value pair to a reviver function for possible transformation.

 return typeof reviver === 'function' ?
 walk({'': j}, '') : j;
 }

// If the text is not JSON parseable, then a SyntaxError is thrown.

 throw new SyntaxError('JSON.parse');
 };
 }
}());

