﻿var mParse = true;
var mTemplateItems;
var mTemplateDataID;
var mDesignMode;
var mMargin = 0;
var mToolboxOpen = false;
var mEditTemplateItemID;
var imgS,divM;
var mStartX, mStartY,mStartObjLeft,mStartObjTop,mStartObjRight,mStartObjBottom,mSizeObj;

var itPhoto = 1, itAccentPhoto = 2, itText = 3, itAllTextOnly = 5, itCardTextOnly = 6;

function OnLoadTemplate() {

   var sURL = location.href;

   ParseTemplateItems();

   if (mDesignMode == 0) {
      if (sURL.indexOf("tdguid") <= 0)
         ShowAllTextToolbox();
   }
      
}

function ParseTemplateItems() {

   var sRows, sRow, sCols;
   var iRow, iRows, iCol, iCols;
   var obj,el;
   var sTemplateData = document.getElementById("TemplateItemRows").value;
   var sFD = String.fromCharCode(8);
   var sRD = String.fromCharCode(9);

   el = document.getElementById("TemplateDataID");
   if (el)
      mTemplateDataID = el.value;

   imgS = document.getElementById("imgProductSample");
   divM = document.getElementById("divMarquee");

   mDesignMode = 0;
   el = document.getElementById("DesignMode");
   if (el)
      mDesignMode = parseFloat(el.value);

   if (mDesignMode == 1) {
      el = document.getElementById("EditTemplateItemID");
      if (el)
         mEditTemplateItemID = MakeNum(el.value);
   }
   else
      mMargin = 4;

   sRows = sTemplateData.split(sRD);
   iRows = sRows.length;
   mTemplateItems = new Array(iRows);

   for (iRow = 0; iRow < iRows; iRow++) {
      sRow = sRows[iRow];
      sCols = sRow.split(sFD);

      obj = new TemplateItem(MakeNum(sCols[0]));
      obj.ItemTypeID = MakeNum(sCols[1]);
      obj.Name = sCols[2];
      obj.Format = sCols[3];
      obj.TemplateID = MakeNum(sCols[4]);
      obj.Left = MakeNum(sCols[5]);
      obj.Top = MakeNum(sCols[6]);
      obj.Right = MakeNum(sCols[7]);
      obj.Bottom = MakeNum(sCols[8]);
      obj.DefaultFontSize = MakeNum(sCols[9]);
      obj.DefaultText = sCols[10];
      obj.TextLines = MakeNum(sCols[11]);
      obj.ImageFile = sCols[12];
      obj.Text = sCols[13];
      obj.FontSize = MakeNum(sCols[14]);

      if (mDesignMode==0 && obj.Name == "Spotlight Stats") {
         obj.Right = 130;
         obj.Top = 105;
      }
      
      if (obj.Text == "")
         obj.Text = obj.DefaultText;
         
      if (obj.FontSize == 0)
         obj.FontSize = obj.DefaultFontSize;
      
      mTemplateItems[iRow]=obj;
   }
   
   mParse = false;
}
function MakeNum(Text) {

   var iNum;
   
   iNum=parseFloat(Text);
   if (isNaN(iNum))
      iNum=0;

   return iNum; 
}

function TemplateItem(TemplateItemID) {

   this.TemplateItemID = TemplateItemID;
   this.ItemTypeID = 0;
   this.Name = "";
   this.Format = "";
   this.TemplateID = 0;
   this.Left = 0;
   this.Top = 0;
   this.Right = 0;
   this.Bottom = 0;
   this.DefaultFontSize = 0;
   this.OffsetX = 0;
   this.OffsetY = 0;
   this.Zoom = 100;
   this.Rotate = 0;
   this.ImageFile = "";
   this.Color = 0;
   this.Text = "";
   this.DefaultText = "";
   this.TextLines = 0;
   this.FontSize = 0;
   this.Selected = false;
   this.Highlighted = false;
   this.SizeHandle = 0;
   this.Select = TemplateItem_Select;
   this.Highlight = TemplateItem_Highlight;
}
function TemplateReadyState() {
   
   var obj = GetSelectedItem();
   var iL, iT;

   if (imgS.readyState == "complete")
      imgW.style.visibility = "hidden";
   else {
      if (imgW.style.visibility != "visible") {
         if (obj) {
            iL = absLeft(divM);
            iT = absTop(divM);
            iL = iL + ((obj.Right - obj.Left) / 2) - 27;
            iT = iT + ((obj.Bottom - obj.Top) / 2) - 27;
         }
         else {
            iL = absLeft(imgS);
            iT = absTop(imgS);
            iL = iL + (imgS.width / 2) - 27;
            iT = iT + (imgS.height / 2) - 27;
         }
         imgW.style.left = iL.toString() + "px";
         imgW.style.top = iT.toString() + "px";
         
         imgW.style.visibility = "visible";
      }
   }
}

function TemplateItem_Select() {

   var i;

   for (i in mTemplateItems) {
      mTemplateItems[i].Selected = false;
      if (mTemplateItems[i].TemplateItemID == this.TemplateItemID)
         mTemplateItems[i].Selected = true;
   }

}
function TemplateItem_Highlight() {

   var obj;
   var i;
   var iLeft, iTop, iWidth, iHeight, iImgL,iImgT;

   for (i in mTemplateItems) {
      mTemplateItems[i].Highlighted = false;
      if (mTemplateItems[i].TemplateItemID == this.TemplateItemID) {
         obj = mTemplateItems[i];
         if (obj.Highlighted == false) {
            obj.Highlighted = true;

            iImgL = absLeft(imgS);
            iImgT = absTop(imgS);

            iLeft = iImgL + obj.Left + mMargin;
            iTop = iImgT + obj.Top + mMargin;
            iWidth = obj.Right - obj.Left - mMargin;
            iHeight = obj.Bottom - obj.Top - mMargin;

            if ((iTop + iHeight) > (iImgT + imgS.height)) {
               iHeight = (iImgT + imgS.height)-iTop-(mMargin*2);
            }
            if ((iLeft + iWidth) > (iImgL + imgS.width)) {
               iWidth = (iImgL + imgS.width) - iLeft - (mMargin * 2);
            }

            imgS.title = "Click to change " + obj.Name;
            divM.style.left = iLeft.toString() + "px";
            divM.style.top = iTop.toString() + "px";
            divM.style.width = iWidth.toString() + "px";
            divM.style.height = iHeight.toString() + "px";
            divM.style.visibility = "visible";
         }
      }      
   }

}
function UnHighlightAll() {
   var i;
   
   for (i in mTemplateItems) {
      mTemplateItems[i].Highlighted = false;
   }

}
function UnSelectAll() {
   var i;

   for (i in mTemplateItems) {
      mTemplateItems[i].Selected = false;
   }

}
function GetSelectedItem() {
   var i;
   var obj;

   for (i in mTemplateItems) {
      if (mTemplateItems[i].Selected==true) {
         obj= mTemplateItems[i];
      }
   }

   return obj;
}

function TrackOff(e) {
   /* Firefox fires onmouseout when mouse leaves div over image instead of when mouse
      really leaves image.  So see if we are still over image */

   var ev = e || window.event;
   var el = ev.srcElement || ev.target;

   if (el) {
      if (el.tagName == "IMAGE") {
         if (mToolboxOpen == false) {
            UnHighlightAll();
            divM.style.visibility = "hidden";
         }
      }
   }
}
function HighlightListItem(el,ID) {

   var obj;
   
   if (mToolboxOpen == false) {
      obj = GetGemplateItemById(ID);
      if (obj) {
         el.style.border = "1px solid #c0c0c0";
         el.className = "bgl5 hand txl";
         obj.Highlight();
      }
   }
}
function UnHighlightListItem(el) {

   el.style.border = "1px solid #ffffff";
   el.className = "hand txl";
   if (mToolboxOpen==false)
      UnHighlightAll();
}

function TrackTemplateItem(e) {
   
   var obj;

   if (!mSizeObj) {
      obj = GetGemplateItemAtCursor(e);
      if (obj) {
         if (mDesignMode == 1) {
            switch (obj.SizeHandle) {
               case 1:
                  imgS.style.cursor = 'w-resize';
                  break;
               case 2:
                  imgS.style.cursor = 'n-resize';
                  break;
               case 3:
                  imgS.style.cursor = 'e-resize';
                  break;
               case 4:
                  imgS.style.cursor = 's-resize';
                  break;
               default:
                  imgS.style.cursor = 'pointer';
                  break;
            }
         }
         else {
            imgS.style.cursor = "pointer";
            divM.style.cursor = "pointer";
         }

         if (mToolboxOpen == false)
            obj.Highlight();
      }
      else {
         imgS.style.cursor = 'default';
         divM.style.cursor = 'default';
         if (mToolboxOpen == false) {
            UnHighlightAll();
            divM.style.visibility = "hidden";
         }
      }
   }
}

function SelectTemplateItem(e) {

   var divName;
   var eType=typeof e;
   var obj;
   var sURL;

   if (eType == "number")
      obj = GetGemplateItemById(e);
   else
      obj = GetGemplateItemAtCursor(e);
   
   if (obj) {
      obj.Select();
      obj.Highlight();
      if (mDesignMode == 0 || mDesignMode==2) {
         if (obj.ItemTypeID == itPhoto) {
            if (obj.ImageFile == "")
               ShowPhotoSelectToolbox(obj);
            else
               ShowPhotoEditToolbox(obj);
         }
         else if (obj.ItemTypeID == itText || obj.ItemTypeID == itCardTextOnly) {
            ShowTextEditToolbox(obj);
         }
      }
      else if (mDesignMode == 1) {
         if (obj.SizeHandle == 0) {
            sURL = "edittemplate.asp?id=" + obj.TemplateID + "&itemid=" + obj.TemplateItemID;
            document.location = sURL;
         }
         else {
            if (obj.TemplateItemID == mEditTemplateItemID) {
               mSizeObj = obj;
               mStartObjLeft = obj.Left;
               mStartObjTop = obj.Top;
               mStartObjRight = obj.Right;
               mStartObjBottom = obj.Bottom;

               if (document.attachEvent) {
                  e = window.event;
                  mStartX = e.clientX + document.documentElement.scrollLeft + document.body.scrollLeft;
                  mStartY = e.clientY + document.documentElement.scrollTop + document.body.scrollTop;
                  document.attachEvent("onmousemove", TemplateSizeMove);
                  document.attachEvent("onmouseup", TemplateSizeUp);
                  e.cancelBubble = true;
                  e.returnValue = false;
               }
               else {
                  mStartX = e.clientX + window.scrollX;
                  mStartY = e.clientY + window.scrollY;
                  document.addEventListener("mousemove", TemplateSizeMove, true);
                  document.addEventListener("mouseup", TemplateSizeUp, true);
               }
            }
            else {
               alert("You must edit this item before you can resize it.");
            }
         }
      }
   }

}
function TemplateSizeMove(e) {
   var el = document.getElementById("AdminInfo");
   var sInfo;
   var x, y;
   var ev = window.event || e;

   if (document.attachEvent) {
      x = ev.clientX + document.documentElement.scrollLeft + document.body.scrollLeft;
      y = ev.clientY + document.documentElement.scrollTop + document.body.scrollTop;
   }
   else {
      x = ev.clientX + window.scrollX;
      y = ev.clientY + window.scrollY;
   }

   x = x - mStartX;
   y = y - mStartY;
   switch (mSizeObj.SizeHandle) {
      case 1:
         mSizeObj.Left = mStartObjLeft + x;
         break;
      case 2:
         mSizeObj.Top = mStartObjTop + y;
         break;
      case 3:
         mSizeObj.Right = mStartObjRight + x;
         break;
      case 4:
         mSizeObj.Bottom = mStartObjBottom + y;
         break;
   }
   //el.innerHTML = sInfo;
   mSizeObj.Highlight();
   
   if (document.attachEvent) {
      window.event.cancelBubble = true;
      window.event.returnValue = false;
   }
   else
      ev.preventDefault();
}

function TemplateSizeUp(e) {

   var elL = document.getElementById("ItemLeft");
   var elT = document.getElementById("ItemTop");
   var elR = document.getElementById("ItemRight");
   var elB = document.getElementById("ItemBottom");

   if (elL.value != mSizeObj.Left.toString()) {
      elL.value = mSizeObj.Left.toString();
      elL.style.backgroundColor = "#00cc00";
   }
   if (elT.value != mSizeObj.Top.toString()) {
      elT.value = mSizeObj.Top.toString();
      elT.style.backgroundColor = "#00cc00";
   }
   if (elR.value != mSizeObj.Right.toString()) {
      elR.value = mSizeObj.Right.toString();
      elR.style.backgroundColor = "#00cc00";
   }
   if (elB.value != mSizeObj.Bottom.toString()) {
      elB.value = mSizeObj.Bottom.toString();
      elB.style.backgroundColor = "#00cc00";
   }
   
   mSizeObj = "";
   
   if (document.attachEvent) {
      document.detachEvent("onmousemove", TemplateSizeMove);
      document.detachEvent("onmouseup", TemplateSizeUp);
   }
   else {
      document.removeEventListener("mousemove", TemplateSizeMove, true);
      document.removeEventListener("mouseup", TemplateSizeUp, true);
   }
}
function TemplateShowFontList() {

   var obj = GetSelectedItem();
   var i, iSize,iStep;
   var sSizes;

   if (obj.DefaultFontSize < 24)
      iStep = 1;
   else if (obj.DefaultFontSize < 64)
      iStep = 2;
   else
      iStep = 6;
   
   iSize = obj.DefaultFontSize - (iStep*6);

   sSizes = iSize.toString(); ;
   for (i = 1; i <= 13; i++) {
      iSize = iSize + iStep;
      sSizes += "," + iSize.toString();
   }
   
   ShowDropDown(6, "FontSize", sSizes);
   
}

function ShowPhotoSelectToolbox(obj) {

   var div = document.getElementById("tblPhotoSelectToolbox");
   var divC = document.getElementById("tdPhotoSelectCaption");
   var divI = document.getElementById("divPhotoSelectInfo");
   var filU = document.getElementById("filUpload");
   var imgU = document.getElementById("imgUpload");
   var iW, iH;
   var sInfo;

   /*if (filU && imgU) {
      if (filU.click)
         filU.style.visibility = 'hidden';
      else
         imgU.style.visibility = 'hidden';
   }*/
   
   HidePhotoEditToolbox();
   HideTextEditToolbox();

   if (obj) {
      iW = (obj.Right - obj.Left) * 2;
      iH = (obj.Bottom - obj.Top) * 2;
      divC.innerHTML = obj.Name;
      sInfo = "<div class='txl txb'>" + obj.Name + " Recommendations</div>";
      sInfo += "<ul>";
      sInfo += "<li>minimum width of " + iW.toString() + "</li>";
      sInfo += "<li>minimum height of " + iH.toString() + "</li>";
      sInfo += "<li>JPG Format (uncompressed)</li>";
      sInfo += "</ul>";
      divI.innerHTML = sInfo;
   }
   else {
      divI.innerHTML = "";
      divC.innerHTML = "My Photos";
   }
      
   //if (div.style.visibility == "hidden") {
      AlignToolbox(div, imgS, obj);
      div.style.visibility = "visible";
   //}
   mToolboxOpen = true;
}
function HidePhotoSelectToolbox() {

   var div = document.getElementById("tblPhotoSelectToolbox");

   if (div)
      div.style.visibility = 'hidden';
   mToolboxOpen = false;

}
function ShowPhotoEditToolbox(obj) {

   var div = document.getElementById("tblPhotoEditToolbox");
   var divC = document.getElementById("tdPhotoEditCaption");

   HidePhotoSelectToolbox();
   HideTextEditToolbox();

   divC.innerHTML = obj.Name;
   //if (div.style.visibility == "hidden") {
      AlignToolbox(div, imgS, obj);
      div.style.visibility = "visible";
   //}
   mToolboxOpen = true;
}
function HidePhotoEditToolbox() {

   var div = document.getElementById("tblPhotoEditToolbox");

   if (div)
      div.style.visibility = 'hidden';
   mToolboxOpen = false;

}
function ShowAllTextToolbox() {

   var div = document.getElementById("tblAllTextToolbox");
   var tbl = document.getElementById("tblSideBox");
   var i,iLeft, iTop;
   var sID,sText,sVals,sYear;
   var obj,el,elDisp;

   HideTextEditToolbox();
   HidePhotoEditToolbox();
   HidePhotoSelectToolbox();
   UnHighlightAll();

   for (i in mTemplateItems) {
      obj = mTemplateItems[i];
      if (obj.ItemTypeID == itText || obj.ItemTypeID == itAllTextOnly) {
         sID = "AllTextID" + obj.TemplateItemID;
         el = document.getElementById(sID);
         if (el) {
            sText = obj.Text;
            if (obj.Name == "Date" && sText != "") {
               sText = sText.replace(".", "/");
               sText = sText.replace(".", "/");
               if (sText.indexOf("/") > 0) {
                  sVals = sText.split("/");
                  sYear = sVals[2];
                  if (sYear.length == 2)
                     sYear = "20" + sYear;
                  sText = sVals[0] + "/" + sVals[1] + "/" + sYear;
               }
               dt = new Date(sText);
               sText = MonthName(dt.getMonth() + 1) + " " + dt.getDate() + ", " + dt.getFullYear();
            }
            else if (obj.Name == "Gender" && sText != "") {
               if (sText == "boy")
                  document.getElementsByName("optGender")[0].checked=true;
               else if (sText == "girl")
                  document.getElementsByName("optGender")[1].checked=true;
            }
            el.value = sText;
            elDisp = document.getElementById("Display" + sID);
            if (elDisp) {
               elDisp.innerHTML = sText;
            }
         }
      }
   }
   
   if (div.style.visibility == "hidden") {
      iLeft = absLeft(tbl) + 120;
      iTop = absTop(tbl) + 20;
      div.style.left = iLeft.toString() + "px";
      div.style.top = iTop.toString() + "px";
      div.style.visibility = "visible";
   }
   mToolboxOpen = true;

}
function SetAllText() {

   var i,j,iFormatItems;
   var obj,objI, el;
   var sDate, sTime, sDate2, sTime2, sLength, sWeight;
   var sFormattedText, sFormatItems, sFormatName,sNewText;

   for (i in mTemplateItems) {
      obj = mTemplateItems[i];
      if (obj.ItemTypeID == itText || obj.ItemTypeID == itAllTextOnly) {
         sID = "AllTextID" + obj.TemplateItemID;
         el = document.getElementById(sID);
         if (el) {
            obj.Text = el.value;
         }
      }
   }

   for (i in mTemplateItems) {
      obj = mTemplateItems[i];
      sFormattedText = obj.Format;
      if (sFormattedText.indexOf("]")>=0 && (obj.ItemTypeID == itText || obj.ItemTypeID == itCardTextOnly)) {
         sFormatItems = sFormattedText.split("]");
         iFormatItems = sFormatItems.length - 1;
         for (j = 0; j<=iFormatItems; j++) {
            sFormatName = sFormatItems[j];
            sFormatName = sFormatName.replace(" ", "");
            sFormatName = sFormatName.replace("[", "");
            sNewText = FormatText(obj,sFormatName);
            sFormattedText = sFormattedText.replace("[" + sFormatName + "]", sNewText);
         }
         obj.Text = sFormattedText;
      }
   }

   UpdateAllText();
   
   HideAllTextToolbox();
   
}

function FormatText(Source,FormatName) {

   var obj,dt;
   var sRet, sVal, sVals, sFormat, sField,sYear;
   var x,i,iLen;

   x = FormatName.indexOf("(");
   if (x >= 0) {
      sFormat = FormatName.substring(0, x);
      sField = FormatName.substring(x + 1);
      sField = sField.replace(")", "");
      if (sField == "")
         sField = Source.Name;
   }
   else {
      sFormat = "";
      sField = FormatName;
   }
      
   sVal = "";
   sRet = "";
   obj = GetGemplateItemByName(sField);
   if (obj) {
      if (obj.Text != "") {
         sVal = obj.Text;
      }
   }

   if (sFormat == "")
      sRet = sVal;
   else {
      if (sVal != "") {
         switch (sFormat) {
            case "FirstWord":
               sVals = sVal.split(" ");
               sRet = sVals[0];
               break;
            case "LastWord":
               sVals = sVal.split(" ");
               sRet = sVals[sVals.length - 1];
               break;
            case "NoLastWord":
               sVals = sVal.split(" ");
               iLen = sVals.length - 2;
               for (i = 0; i <= iLen; i++) {
                  sRet += sVals[i];
                  if (i < iLen)
                     sRet += " ";
               }
               break;
            case "FirstLetter":
               sRet = sVal.substring(0, 1);
               break;
            case "NoFirstLetter":
               sRet = sVal.substring(1);
               break;
            case "Letter1":
               sRet = sVal.substring(0, 1);
               break;
            case "Letter2":
               sRet = sVal.substring(1, 2);
               break;
            case "Letter3":
               sRet = sVal.substring(2, 3);
               break;
            case "Letter4":
               sRet = sVal.substring(3, 4);
               if (sRet == "")
                  sRet = " ";
               break;
            case "ShortDate":
               if (sVal != "") {
                  dt = new Date(sVal);
                  sYear = dt.getFullYear().toString();
                  sRet = (dt.getMonth() + 1) + "/" + dt.getDate() + "/" + sYear.substring(2,4);
               }
            case "DotDate":
               if (sVal != "") {
                  dt = new Date(sVal);
                  sYear = dt.getFullYear().toString();
                  sRet = (dt.getMonth() + 1) + "." + dt.getDate() + "." + sYear.substring(2, 4);
               }
               break;
            default:
               break;
         }
      }
   }

   return sRet;
}
function UpdateAllText() {

   var i;
   var obj;
   var sAll,sData,sRet;
   var sFD = String.fromCharCode(8);
   var sRD = String.fromCharCode(9);

   sAll = "";
   for (i in mTemplateItems) {
      obj = mTemplateItems[i];
      if (obj.ItemTypeID == itText || obj.ItemTypeID == itAllTextOnly || obj.ItemTypeID == itCardTextOnly) {
         if (sAll == "")
            sAll = obj.TemplateItemID + sFD + obj.Text;
         else
            sAll = sAll + sRD + obj.TemplateItemID + sFD + obj.Text;
      }
   }

   sData = "action=setalltext&value=" + encodeURIComponent(sAll);
   sRet = PostTemplateData(sData);
   
   TemplateShowImage("", "");
}

function HideAllTextToolbox() {

   var div = document.getElementById("tblAllTextToolbox");

   div.style.visibility = 'hidden';
   mToolboxOpen = false;

}
function PostTemplateData(Data) {

   var obj;
   var sRet;

   if (window.XMLHttpRequest) {
      obj = new XMLHttpRequest();
   }
   else if (window.ActiveXObject) {
      obj = new ActiveXObject("Microsoft.XMLHTTP");
   }

   obj.open("POST","http://www.picturemeperfect.com/template-data.aspx", false);
   obj.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
   obj.setRequestHeader("Content-length", Data.length);
   obj.setRequestHeader("Connection", "close");

   obj.send("designmode=" + mDesignMode + "&templatedataid=" + mTemplateDataID + "&" + Data);
   sRet = obj.responseText;

   return sRet;
}
function ShowAddNotesToolbox() {

   var div = document.getElementById("tblAddNotesToolbox");
   var tbl = document.getElementById("tblSideBox");
   var txt = document.getElementById("txtNotes");
   var iLeft, iTop;

   HideAllTextToolbox();
   HideTextEditToolbox();
   HidePhotoEditToolbox();
   HidePhotoSelectToolbox();
   UnHighlightAll();

   if (div.style.visibility == "hidden") {
      iLeft = absLeft(tbl) + 120;
      iTop = absTop(tbl) + 20;
      div.style.left = iLeft.toString() + "px";
      div.style.top = iTop.toString() + "px";
      div.style.visibility = "visible";
      txt.focus();
   }
   mToolboxOpen = true;

}

function HideAddNotesToolbox() {

   var div = document.getElementById("tblAddNotesToolbox");

   div.style.visibility = 'hidden';
   mToolboxOpen = false;

}

function TemplateSetNotes() {

   var txt = document.getElementById("txtNotes");

   sRet = PostTemplateData("action=notes&value=" + txt.value);
   HideAddNotesToolbox();

}
function ShowTextEditToolbox(obj) {

   var div = document.getElementById("tblTextEditToolbox");
   var divC = document.getElementById("tdTextEditCaption");
   var txt = document.getElementById("txtText");
   var chk = document.getElementById("chkOmitText");
   var txtFS = document.getElementById("FontSize");
   var elFS = document.getElementById("DisplayFontSize");
   
   HidePhotoEditToolbox();
   HidePhotoSelectToolbox();
   
   divC.innerHTML = obj.Name;
   txt.value = obj.Text;
   txtFS.value = obj.FontSize;
   elFS.innerHTML = obj.FontSize;

   if (obj.Text == " ")
      chk.checked = true;
   else
      chk.checked = false;
      
   //if (div.style.visibility == "hidden") {
      AlignToolbox(div,imgS,obj);
      div.style.visibility = "visible";
   //}
   txt.focus();
   mToolboxOpen = true;

}
function AlignToolbox(div,img,obj) {

   var iLeft, iTop, iImgW, iImgH, iImgL,iImgT,iDivW, iDivH;

   if (div.id == "tblTextEditToolbox") {
      iDivW = 434;
      iDivH = 180;
   }
   else if (div.id == "tblPhotoSelectToolbox") {
      iDivW = 434;
      iDivH = 180;
   }

   else if (div.id == "tblPhotoEditToolbox") {
      iDivW = 458;
      iDivH = 94;
   }
   
   iImgL = absLeft(img);
   iImgT = absTop(img);
   
   iImgW = img.width;
   iImgH = img.height;

   if (obj) {
      if (obj.Right > (iImgW / 2))
         iLeft = iImgL + obj.Right - iDivW;
      else
         iLeft = iImgL + obj.Left;

      if (obj.Bottom > (iImgH / 2))
         iTop = iImgT + (obj.Top - iDivH) - 5;
      else
         iTop = iImgT + obj.Bottom + 5;
   }
   else {
      iLeft = iImgL;
      iTop = iImgT;
   }

   if (iTop < iImgT)
      iTop = iImgT;
   if (iLeft < iImgL)
      iLeft = iImgL;
   
   div.style.left = iLeft.toString() + "px";
   div.style.top = iTop.toString() + "px";

}

function HideTextEditToolbox() {

   var div = document.getElementById("tblTextEditToolbox");

   if (div)
      div.style.visibility = 'hidden';
   mToolboxOpen = false;

}
function GetGemplateItemAtCursor(e) {

   var obj = GetImageCoords(e);
   var objTI,objRet;
   var i;
   var blLook;

   obj.x = obj.x - mMargin;
   obj.y = obj.y - mMargin;
   objRet = "";
   for (i in mTemplateItems) {
      objTI = mTemplateItems[i];
      blLook = false;
      if (mDesignMode==1) {
         blLook = true;
      }
      else {
         if (objTI.ItemTypeID == itCardTextOnly || objTI.ItemTypeID == itPhoto || objTI.ItemTypeID == itText)
            blLook = true;
      }
      if (blLook) {
         if ((obj.x >= objTI.Left && obj.x <= objTI.Right) && (obj.y >= objTI.Top && obj.y <= objTI.Bottom)) {
            if (obj.x < objTI.Left + 6)
               objTI.SizeHandle = 1;
            else if (obj.y < objTI.Top + 6)
               objTI.SizeHandle = 2;
            else if (obj.x > objTI.Right - 6)
               objTI.SizeHandle = 3;
            else if (obj.y > objTI.Bottom - 6)
               objTI.SizeHandle = 4;
            else
               objTI.SizeHandle = 0;

            objRet = objTI;
            break;
         }
      }
   }
   return objRet;
   
}
function GetGemplateItemById(ID) {

   var objTI;
   var i;
   
   for (i in mTemplateItems) {
      objTI = mTemplateItems[i];
      if (objTI.TemplateItemID==ID) {
         return objTI;
      }
   }
}
function GetGemplateItemByName(Name) {

   var objTI;
   var i;

   for (i in mTemplateItems) {
      objTI = mTemplateItems[i];
      if (objTI.Name == Name) {
         return objTI;
      }
   }
}

function GetImageCoords(e) {
   
   var x = 0;
   var y = 0;
   var ev;

   ev = e || window.event;

   if (ev.pageX) {
      x = e.pageX;
      y = e.pageY;
   }
   else if (ev.clientX) {
      x = ev.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
      y = ev.clientY + document.body.scrollTop + document.documentElement.scrollTop;
   }

   x = x - absLeft(imgS);
   y = y - absTop(imgS);

   return { x: x, y: y };
}

function TemplateZoom(Value) {

   TemplateShowImage("zoom", Value);
}
function TemplateSetFontSize(Value) {

   var iSize;
   var obj = GetSelectedItem();
   var el = document.getElementById("FontSize");
   var td = document.getElementById("DisplayFontSize");
   
   switch (Value) {
      case -1:
         iSize = parseFloat(el.value);
         iSize = iSize + 1;
         el.value = iSize;
         td.innerHTML = iSize;
         break;
      case -2:
         iSize = parseFloat(el.value);
         iSize = iSize - 1;
         el.value = iSize;
         td.innerHTML = iSize;
         break;
      default:
         iSize = Value;
         break;
   }

   obj.FontSize = iSize;
   TemplateShowImage("fontsize", iSize);
}
function TemplateRotateLeft(Value) {

   TemplateShowImage("rotateleft", Value);
}

function TemplateRotateRight(Value) {

   TemplateShowImage("rotateright", Value);
}
function TemplateAlignText(Value) {

   TemplateShowImage("textalign", Value);
}
function TemplateVAlignText(Value) {

   TemplateShowImage("textvalign", Value);
}
function TemplateNudge(Value) {

   TemplateShowImage("nudge", Value);
}
function TemplateResetText() {

   var txtFS = document.getElementById("FontSize");
   var elFS = document.getElementById("DisplayFontSize");
   var obj = GetSelectedItem();
   
   txtFS.value = obj.DefaultFontSize;
   elFS.innerHTML = obj.DefaultFontSize;

   TemplateShowImage("reset", "");
}
function TemplateResetPhoto() {

   TemplateShowImage("reset", "");
}
function TemplateSetPhoto(ImageFile) {

   var blSet = false;
   var obj = GetSelectedItem();

   if (obj) {
      if (obj.ItemTypeID == itPhoto)
         blSet = true;
   }
   
   if (blSet) {
      obj.ImageFile = ImageFile;
      TemplateShowImage("setphoto", ImageFile);

      HidePhotoSelectToolbox();
      ShowPhotoEditToolbox(obj);
   }
   else {
      alert("You have not selected a photo frame to insert this photo into. Click a photo frame on the card or from the list.");
   }
}
function TemplateRemovePhoto() {
   var obj = GetSelectedItem();

   obj.ImageFile = "";

   TemplateShowImage("removephoto", "");

   HidePhotoEditToolbox();
}
function TemplateSetPhotoColor(Value) {
   var obj = GetSelectedItem();

   obj.Color = Value;
   TemplateShowImage("setcolor", obj.Color);
}

function TemplateSetText() {
   var txt = document.getElementById("txtText");
   var obj = GetSelectedItem();

   obj.Text = txt.value;

   TemplateShowImage("settext", obj.Text);
}

function TemplateOmitText(el) {
   var txt = document.getElementById("txtText");
   var obj = GetSelectedItem();

   if (el.checked) {
      txt.value = " ";
   }
   else {
      txt.value = "";
   }
      
   obj.Text = txt.value;

   TemplateShowImage("settext", obj.Text);
}

function TemplateSetCardColor(ColorItemID) {

   var sURL,sRet;

   AjaxShowLoader(imgS, 0, 0);
   sURL = imgS.src;
   sURL = UpdateQueryParam(sURL, "coloritemid1", ColorItemID);
   sURL = UpdateQueryParam(sURL, "a", "");
   sURL = UpdateQueryParam(sURL, "v", "");
   imgS.src = sURL;

   sRet = PostTemplateData("action=coloritemid1&value=" + ColorItemID);

}
function TemplateSetLayout(Value) {

   sRet = PostTemplateData("action=layout&value=" + Value);

}
function TemplateSetSampleActive(Active) {

   var sURL, sRet;

   sURL = imgS.src;
   sURL = UpdateQueryParam(sURL, "sampleactive", Active);
   sURL = UpdateQueryParam(sURL, "a", "");
   sURL = UpdateQueryParam(sURL, "v", "");
   imgS.src = sURL;

   sRet = PostTemplateData("action=sampleactive&value=" + Active);

}
function TemplateSetMakeSamples(ProductID) {

   var sURL, sRet;

   sRet = PostTemplateData("action=makesamples&value=" + ProductID + "&size=180");
   alert(sRet);

}
function TemplateShowImage(Action, Value) {

   var obj = GetSelectedItem();
   var iTemplateItemID,iL, iT;
   var sURL;
   
   if (obj)
      iTemplateItemID = obj.TemplateItemID;
   else
      iTemplateItemID = 0;

   if (obj) {
      iL = absLeft(divM);
      iT = absTop(divM);
      iL = iL + ((obj.Right - obj.Left) / 2) - 27;
      iT = iT + ((obj.Bottom - obj.Top) / 2) - 27;
      AjaxShowLoader(divM, iL, iT);
   }
   else {
      AjaxShowLoader(imgS, 0, 0);
   }
       
   sURL = imgS.src;
   sURL = UpdateQueryParam(sURL, "templateitemid", iTemplateItemID);
   sURL = UpdateQueryParam(sURL, "a", Action);
   sURL = UpdateQueryParam(sURL, "v", escape(Value));
   sURL = UpdateQueryParam(sURL, "unique", Math.random());

   imgS.src = sURL;
}