// Wizard functions ---------------------------------------------------------------- function wizardOpen(inForm, inArgs) { // Load wizard check //queueContent("wizardCheck", "/pages/content.php?page=wizardcheck&subpage=" + ((inArgs)?(inArgs):("")), inForm); // Directly launch wizard (no check) windowOpen("wizard", "formdata" ,"0", inForm, inArgs); } // Helper functions ---------------------------------------------------------------- function toggleRadiobuttonOptions(inFormId, inRadioName, inItemsOn, inItemsOff) { // Make an items array (one radio option alone won't result in an array) var items = (document.getElementById(inFormId).elements[inRadioName].length)?(document.getElementById(inFormId).elements[inRadioName]):([document.getElementById(inFormId).elements[inRadioName]]); for (var i=0; i inMaximum)?(inMaximum):(popupScrollPosition); tween("popupScrollContainer", "scrollLeft", (popupScrollPosition-1) * 330); } // Payment handling ---------------------------------------------------------------- function showPayment(inFormId, inProductId, inDescription, inPrice, inAction) { document.getElementById("backblocker").style.display = "block"; document.getElementById("payment").style.display = "block"; document.getElementById("paymentaction").value = inAction; document.getElementById("paymentframe").src = "/pages/payment.php?formId=" + encodeURIComponent(inFormId) + "&productId=" + encodeURIComponent(inProductId) + "&description=" + encodeURIComponent(inDescription) + "&price=" + encodeURIComponent(inPrice); } function hidePayment(inFormId, inTXID, inSuccess) { document.getElementById("backblocker").style.display = "none"; document.getElementById("payment").style.display = "none"; document.getElementById("paymentframe").src = "/pages/blank.php"; if (inSuccess) { document.getElementById(inFormId).elements["txid"].value = inTXID; document.getElementById(inFormId + "Submit").disabled = false; // Execute & clear action eval(document.getElementById("paymentaction").value); document.getElementById("paymentaction").value = ""; // Directly show loading document.getElementById('loading').style.display = "block"; } } // Confirmation handling ------------------------------------------------------------ function showConfirmation(inMessage, inAction) { document.getElementById("backblocker").style.display = "block"; document.getElementById("confirmation").style.display = "block"; document.getElementById("confirmationmessage").innerHTML = inMessage; document.getElementById("confirmationaction").value = inAction; } function hideConfirmation(inConfirmed) { document.getElementById("backblocker").style.display = "none"; document.getElementById("confirmation").style.display = "none"; document.getElementById("confirmationmessage").innerHTML = ""; if (inConfirmed) { eval(document.getElementById("confirmationaction").value); } document.getElementById("confirmationaction").value = ""; } // Alert handling ------------------------------------------------------------------ var alertActions = ""; function showAlert(inMessage, inAdditionalActions, inButtonLabel) { document.getElementById("backblocker").style.display = "block"; document.getElementById("alert").style.display = "block"; document.getElementById("alertmessage").innerHTML = inMessage; // Set button label inButtonLabel = (inButtonLabel)?(inButtonLabel):("OK"); document.getElementById("alertbutton").value = inButtonLabel; alertActions = inAdditionalActions; } function hideAlert() { document.getElementById("backblocker").style.display = "none"; document.getElementById("alert").style.display = "none"; document.getElementById("alertmessage").innerHTML = ""; if (alertActions) { eval(alertActions); alertActions = ""; } } // Loading handling ---------------------------------------------------------------- var loadingTimeout = null; function setLoading() { if (loadingTimeout) clearTimeout(loadingTimeout); loadingTimeout = setTimeout("document.getElementById('loading').style.display = 'block';", 1000); } function clearLoading() { document.getElementById("loading").style.display = "none"; if (loadingTimeout) clearTimeout(loadingTimeout); } // Error handling ----------------------------------------------------------------- window.onerror = errorHandling; function errorHandling (inMessage, inFile, inLine) { alert("Error!\n\nMessage: " + inMessage + "\nFile: " + inFile + "\nLine: " + inLine); return true; } // Navigation manipulation -------------------------------------------------------- var navigationPage = ""; function navigationRefresh() { // Reload navigation queueContent("navigation", "/pages/navigation.php?action=reload&page="+navigationPage); } function navigationSelectTab(inPage) { // Loop over all tabs var i = 1; while (document.getElementById("navigationTab" + i)) { // Fetch page var page = document.getElementById("navigationTab" + i).getAttribute("page"); if (page == inPage) { document.getElementById("navigationTab" + i).setAttribute("selected", 1); imageSwap(document.getElementById("navigationTab" + i), "navigation-" + page + "-over.gif"); } else { document.getElementById("navigationTab" + i).setAttribute("selected", 0); imageSwap(document.getElementById("navigationTab" + i), "navigation-" + page + "-out.gif"); } i++; } // Keep page navigationPage = inPage; } function navigationSelectButton(inWindow, inId, inPage, inSubpage) { // Get page & id var currentId = document.getElementById(inWindow).getAttribute("currentId"); var currentPage = document.getElementById(inWindow).getAttribute("currentPage"); // Set buttons & icons if (document.getElementById(inWindow + "NavigationButton" + currentId)) document.getElementById(inWindow + "NavigationButton" + currentId).className = "navigationButton"; if (document.getElementById(inWindow + "NavigationButton" + currentId + "Icon")) document.getElementById(inWindow + "NavigationButton" + currentId + "Icon").src = "/images/cashyourself/" + document.getElementById(inWindow + "NavigationButton" + currentId + "Icon").getAttribute("outsrc"); if (document.getElementById(inWindow + "NavigationButton" + inId)) document.getElementById(inWindow + "NavigationButton" + inId).className = "navigationButtonSelected"; if (document.getElementById(inWindow + "NavigationButton" + inId + "Icon")) document.getElementById(inWindow + "NavigationButton" + inId + "Icon").src = "/images/cashyourself/" + document.getElementById(inWindow + "NavigationButton" + inId + "Icon").getAttribute("selsrc"); // Set current id, page & subpage document.getElementById(inWindow).setAttribute("currentId", inId); document.getElementById(inWindow).setAttribute("currentPage", inPage); document.getElementById(inWindow).setAttribute("currentSubpage", inSubpage); } // Formatting functions ----------------------------------------------------------- function formatNumber(inNumber) { // Create decimals inNumber = inNumber.toFixed(2); // Extract parts inNumber = inNumber.split("."); // Extract full digits inNumber[0] = inNumber[0].split(""); // Set thousands separators for (var i=inNumber[0].length-3; i>0; i-=3) { inNumber[0].splice(i, 0, "'"); } // Combine full digits inNumber[0] = inNumber[0].join(""); // Combine parts inNumber = inNumber.join("."); // Return return inNumber; } // Array handling ----------------------------------------------------------------- function inArray(inNeedle, inHaystack) { // Make it more general by creating a needle array if (typeof(inNeedle) != "object") inNeedle = [inNeedle]; // Check needles against haystack for (var i=0; i")!=-1) { showBlock = eval(parseFloat(values[0]) + element.getAttribute("displayconditionvalue")); } // Switch display if (showBlock) { // Show block block.style.display = ""; } else { // Hide block block.style.display = "none"; // Reset value of element switch (element.tagName) { case "select": case "SELECT": element.selectedIndex = 0; break; case "input": case "INPUT": switch (element.type) { case "checkbox": case "radio": element.checked = false; break; case "hidden": case "text": element.value = ""; break; } break; case "textarea": case "TEXTAREA": element.value = ""; break; } } } } } function formCalculateTotal(inFormId, inFieldCosts, inFieldRebate, inFieldTotal, inLimit, inMessageId, inFieldLimit) { // Get form var formObj = document.getElementById(inFormId); // Prepare totals var costs = 0; var rebate = 0; var total = 0; // Loop over all fields for (var i=0; i inLimit) { document.getElementById(inMessageId).style.display = "block"; document.getElementById(inFieldLimit).value = ""; } else { document.getElementById(inMessageId).style.display = "none"; document.getElementById(inFieldLimit).value = "1"; } } function formCheckDate(inYearField, inMonthField, inDayField, inCheckField, inMarkerObj) { var inYear = parseInt(document.getElementById(inYearField).value, 10); var inMonth = parseInt(document.getElementById(inMonthField).value, 10); var inDay = parseInt(document.getElementById(inDayField).value, 10); var dateToCheck = new Date(inYear, inMonth-1, inDay); var year = parseInt(dateToCheck.getFullYear(), 10); var month = parseInt(dateToCheck.getMonth(), 10)+1; var day = parseInt(dateToCheck.getDate(), 10); if ((year==inYear && year>=1900 && month==inMonth && day==inDay) || (!inYear && !inMonth && !inDay)) { document.getElementById(inMarkerObj).style.display = "none"; document.getElementById(inCheckField).value = "1"; } else { document.getElementById(inMarkerObj).style.display = "inline"; document.getElementById(inCheckField).value = ""; } } function formCheck(inFormId, inFieldList) { // Get form var formObj = document.getElementById(inFormId); // Init field list inFieldList = (inFieldList)?(inFieldList.split(",")):([]); // Init state var allowSubmit = true; var radioCheckbox = []; // Loop over all fields for (var i=0; i 0); break; case "input": case "INPUT": switch (formObj.elements[i].type) { case "checkbox": case "radio": // Create entry for radio / checkbox radioCheckbox[formObj.elements[i].name] = (radioCheckbox[formObj.elements[i].name])?(radioCheckbox[formObj.elements[i].name]):(false); // If checked, override value with true if (formObj.elements[i].checked) { radioCheckbox[formObj.elements[i].name] |= true; } break; case "file": break; case "text": case "hidden": case "submit": default: allowSubmit &= (formObj.elements[i].value.length > 0); break; } break; case "textarea": case "TEXTAREA": default: allowSubmit &= (formObj.elements[i].value.length > 0); break; } } } } // Post-process radio / checkbox for (fieldName in radioCheckbox) { allowSubmit &= radioCheckbox[fieldName]; } // Return result anyway return allowSubmit; } function formAutoCheck(inFormId, inObjectToEnable, inAdditionalObjectToEnable, inEnableOnlyOnChange, inFieldList) { // Prepare data inFieldList = (!inFieldList)?(""):(inFieldList); // Check if form still exists if (document.getElementById(inFormId) && (document.getElementById(inObjectToEnable) || document.getElementById(inAdditionalObjectToEnable))) { // Check lock state var locked = document.getElementById(inFormId).getAttribute("locked"); if (!locked) { // Get formcheck result var result = (formCheck(inFormId, inFieldList) && ( (inEnableOnlyOnChange)?(parseInt(document.getElementById(inFormId).getAttribute("changed"))):(true) )); // Enable / disable object if (document.getElementById(inObjectToEnable)) document.getElementById(inObjectToEnable).disabled = !result; if (document.getElementById(inAdditionalObjectToEnable)) document.getElementById(inAdditionalObjectToEnable).disabled = !result; // Check dependencies formCheckDependencies(inFormId); // Re-call self setTimeout("formAutoCheck('" + inFormId + "', '" + inObjectToEnable + "', '" + inAdditionalObjectToEnable + "', " + inEnableOnlyOnChange + ", '" + inFieldList + "');", 50); } } } function formReset(inFormId) { // Check if form still exists if (document.getElementById(inFormId)) { document.getElementById(inFormId).reset(); } } function formSelectCheckboxes(inArray) { // Get state of first item var state = !document.getElementById(inArray[0]).checked; // Set all items for (var i=0; i", index) + 1; var segmentEnd = inHtml.indexOf("0 && 0) { inObject.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src=/images/cashyourself/" + inSource + ", sizingMethod=image);"; } else { inObject.src = "/images/cashyourself/" + inSource; } } // Redbutton manipulation -------------------------------------------------------- function redbuttonSwap(inObject, inState) { document.getElementById(inObject + "Left").src = "/images/cashyourself/box-redbutton-left-" + inState + ".gif"; document.getElementById(inObject + "Right").src = "/images/cashyourself/box-redbutton-right-" + inState + ".gif"; document.getElementById(inObject + "Middle").style.backgroundImage = "url(/images/cashyourself/box-redbutton-middle-" + inState + ".gif)"; } // Tooltip manipulation ----------------------------------------------------------- function tooltipShow(inEvent, inMessage) { // Fetch event if (document.getElementById("tooltip")) { if (self.event) { x = self.event.clientX; y = self.event.clientY; self.event.cancelBubble = true; } else { x = inEvent.clientX; y = inEvent.clientY; inEvent.stopPropagation(); } // Set content document.getElementById("tooltipContent").innerHTML = inMessage + " "; // Set tooltip document.getElementById("tooltip").style.display = "block"; document.getElementById("tooltip").style.top = y - document.getElementById("tooltipContent").offsetHeight - 15 + document.body.scrollTop; document.getElementById("tooltip").style.left = x - 163 + document.body.scrollLeft; } } function tooltipHide(inEvent) { if (document.getElementById("tooltip")) { document.getElementById("tooltipContent").innerHTML = ""; document.getElementById("tooltip").style.display = "none"; } } // Slot manipulation -------------------------------------------------------------- function slotSwap(inId) { if (document.getElementById(inId + "Content").style.display == "block") { document.getElementById(inId + "Content").style.display = "none"; if (document.getElementById(inId + "Link")) document.getElementById(inId + "Link").style.backgroundImage = "url(/images/cashyourself/slot-marker-closed.gif)"; } else { document.getElementById(inId + "Content").style.display = "block"; if (document.getElementById(inId + "Link")) document.getElementById(inId + "Link").style.backgroundImage = "url(/images/cashyourself/slot-marker-open.gif)"; } } function slotSwapTo(inId, inState) { if (inState == "none") { document.getElementById(inId + "Content").style.display = "none"; document.getElementById(inId + "Link").style.backgroundImage = "url(/images/cashyourself/slot-marker-closed.gif)"; } else { document.getElementById(inId + "Content").style.display = "block"; document.getElementById(inId + "Link").style.backgroundImage = "url(/images/cashyourself/slot-marker-open.gif)"; } } function slotSetActiveOption(inOptions, inActive) { for (var i=0; i boxContainerMarginTop + boxContainerMarginBottom + 2*boxMinHeight)?(height):(boxContainerMarginTop + boxContainerMarginBottom + 2*boxMinHeight); // Calculate additional widths if (width > 1024-boxContainerMarginLeft-boxContainerMarginRight) { var additionalWidth = Math.round((width - (1024-boxContainerMarginLeft-boxContainerMarginRight)) / 4); additionalWidth = (additionalWidth > 40)?(40):(additionalWidth); } else { var additionalWidth = 0; } // Fetch box var box = document.getElementById(inId); var column = (inColumn)?(inColumn):(box.getAttribute("column")); var targetWidth = parseInt(box.getAttribute("baseWidth")) + additionalWidth + ((parseInt(column)==1)?(additionalWidth):(0)); var targetLeft = parseInt(box.getAttribute("baseLeft")) + parseInt(column)*additionalWidth + ((parseInt(column)>1)?(additionalWidth):(0));; // Arrange by position switch (inPosition) { case "top": boxResizeTo(inId, targetWidth, Math.floor((height - boxContainerMarginSpace)/2)); boxMoveTo(inId, targetLeft, boxContainerMarginTop); break; case "bottom": boxResizeTo(inId, targetWidth, Math.floor((height - boxContainerMarginSpace)/2)); boxMoveTo(inId, targetLeft, boxContainerMarginTop + Math.floor((height - boxContainerMarginSpace)/2) + boxContainerMarginSpace); break; case "upperbottom": boxResizeTo(inId, targetWidth, Math.floor((height - 3*boxContainerMarginSpace)/4)); boxMoveTo(inId, targetLeft, boxContainerMarginTop + 2*Math.floor((height - 3*boxContainerMarginSpace)/4) + 2*boxContainerMarginSpace); break; case "lowerbottom": boxResizeTo(inId, targetWidth, Math.floor((height - 3*boxContainerMarginSpace)/4)); boxMoveTo(inId, targetLeft, boxContainerMarginTop + 3*Math.floor((height - 3*boxContainerMarginSpace)/4) + 3*boxContainerMarginSpace); break; case "full": boxResizeTo(inId, targetWidth, height); boxMoveTo(inId, targetLeft, boxContainerMarginTop); break; case "fullcenter": boxResizeTo(inId, targetWidth, height); boxMoveTo(inId, boxContainerMarginLeft + Math.round((width - parseInt(box.style.width)) / 2), boxContainerMarginTop); break; case "center": boxMoveTo(inId, boxContainerMarginLeft + Math.round((width - parseInt(box.style.width)) / 2), boxContainerMarginTop + Math.round((height - parseInt(box.style.height)) / 2)); break; } } function boxRearrange() { for (var i=0; i 0.01) { setTimeout("boxesBlendTo(" + inTargetAlpha + ");", 25); } } // Window manipulation ------------------------------------------------------------ var windowDragCurrent = ""; var windowDragOffsetX = 0; var windowDragOffsetY = 0; var windowDragMinY = 0; var windowResizeCurrent = ""; var windowResizeOffsetX = 0; var windowResizeOffsetY = 0; var windowResizeMinWidth = 400; var windowResizeMinHeight = 200; var windowList = []; var windowZTop = 100; var windowNumber = 0; var windowAutoNumber = 0; function windowRegister(inId) { // Add to windowlist windowList.push(inId); // Blend in document.getElementById(inId).style.visibility = "visible"; } function windowUnregister(inId) { // Remove from windowlist for (var i=0; i parseInt(document.getElementById(topWindow).style.zIndex)) { topWindow = windowList[i]; } } windowToFront(topWindow); } else { // Reset window list windowList = []; windowZTop = 100; windowAutoNumber = 0; // Select main navigation navigationSelectTab("dashboard"); } // Remove this window if (document.getElementById(inId)) { document.getElementById(inId).parentNode.removeChild(document.getElementById(inId)); } } function windowCloseAll() { // Remove all windows for (var i=0; i=windowResizeMinHeight) { document.getElementById(inId).style.height = inHeight; document.getElementById(inId + "ContentContainer").style.height = inHeight-windowTitlebarHeight-contentFooterHeight; document.getElementById(inId + "ContentFooter").style.top = inHeight-contentFooterHeight; if (hasShadow) { document.getElementById(inId + "Shadow").style.top = -5; document.getElementById(inId + "Shadow").style.height = inHeight+16; } if (hasBlocker) { document.getElementById(inId + "Blocker").style.top = 0; document.getElementById(inId + "Blocker").style.height = inHeight; //document.getElementById(inId + "Blocker").style.top = -4; //document.getElementById(inId + "Blocker").style.height = inHeight+12; } if (hasNavigation) { if (hasSearch) { document.getElementById(inId + "NavigationContainer").style.height = inHeight-windowTitlebarHeight-navigationFooterHeight-navigationSearchHeight+9; document.getElementById(inId + "SearchContainer").style.top = inHeight-navigationFooterHeight-navigationSearchHeight; document.getElementById(inId + "NavigationFooter").style.top = inHeight-navigationFooterHeight; } else { document.getElementById(inId + "NavigationContainer").style.height = inHeight-windowTitlebarHeight-navigationFooterHeight; document.getElementById(inId + "NavigationFooter").style.top = inHeight-navigationFooterHeight; } } } // Set window & elements depending on width if (inWidth>=windowResizeMinWidth) { document.getElementById(inId).style.width = inWidth; document.getElementById(inId + "TitleBar").style.width = inWidth; if (hasShadow) { document.getElementById(inId + "Shadow").style.left = -5; document.getElementById(inId + "Shadow").style.width = inWidth+16; } if (hasBlocker) { document.getElementById(inId + "Blocker").style.left = 0; document.getElementById(inId + "Blocker").style.width = inWidth; //document.getElementById(inId + "Blocker").style.left = -4; //document.getElementById(inId + "Blocker").style.width = inWidth+12; } if (hasNavigation) { document.getElementById(inId + "ContentContainer").style.left = 200; document.getElementById(inId + "ContentFooter").style.left = 200; document.getElementById(inId + "ContentContainer").style.width = inWidth-200; document.getElementById(inId + "ContentFooter").style.width = inWidth-200; } else { document.getElementById(inId + "ContentContainer").style.left = 0; document.getElementById(inId + "ContentFooter").style.left = 0; document.getElementById(inId + "ContentContainer").style.width = inWidth; document.getElementById(inId + "ContentFooter").style.width = inWidth; } } } function windowMoveTo(inId, inX, inY) { // Set window document.getElementById(inId).style.left = inX; document.getElementById(inId).style.top = inY; } function windowStartResize(inEvent, inId) { // Fetch correct event inEvent = (self.event)?(self.event):(inEvent); // Keep window properties windowResizeCurrent = inId; windowResizeOffsetX = parseInt(document.getElementById(windowResizeCurrent).offsetLeft) + parseInt(document.getElementById(windowResizeCurrent).offsetWidth) - inEvent.clientX; windowResizeOffsetY = parseInt(document.getElementById(windowResizeCurrent).offsetTop) + parseInt(document.getElementById(windowResizeCurrent).offsetHeight) - inEvent.clientY; // Prevent selections (MSIE) document.onselectstart = new Function ('return false'); } function windowResize(inEvent, inId) { // Is there a window that likes to be resized? if (windowResizeCurrent) { // Prevent selections (GECKO) try { self.getSelection().removeAllRanges(); } catch (e) { // Noop } // Fetch correct event inEvent = (self.event)?(self.event):(inEvent); // Calculate target width & height var targetWidth = inEvent.clientX - parseInt(document.getElementById(windowResizeCurrent).offsetLeft) + windowResizeOffsetX; var targetHeight = inEvent.clientY - parseInt(document.getElementById(windowResizeCurrent).offsetTop) + windowResizeOffsetY; // Resize the window windowResizeTo(windowResizeCurrent, targetWidth, targetHeight); } } function windowStopResize(inEvent) { // Enable selections document.onselectstart = new Function ('return true'); // Reset window properties windowResizeCurrent = ""; windowResizeOffsetX = 0; windowResizeOffsetY = 0; } function windowStartDrag(inEvent, inId) { // Fetch correct event inEvent = (self.event)?(self.event):(inEvent); // Keep window properties windowDragCurrent = inId; windowDragOffsetX = parseInt(document.getElementById(windowDragCurrent).offsetLeft) - inEvent.clientX; windowDragOffsetY = parseInt(document.getElementById(windowDragCurrent).offsetTop) - inEvent.clientY; // Prevent selections (MSIE) document.onselectstart = new Function ('return false'); } function windowDrag(inEvent) { // Is there a window that likes to be dragged? if (windowDragCurrent) { // Prevent selections (GECKO) try { self.getSelection().removeAllRanges(); } catch (e) { // Noop } // Fetch correct event inEvent = (self.event)?(self.event):(inEvent); // Calculate target position var targetX = inEvent.clientX+windowDragOffsetX; var targetY = (inEvent.clientY+windowDragOffsetY > windowDragMinY)?(inEvent.clientY+windowDragOffsetY):(windowDragMinY); // Set window windowMoveTo(windowDragCurrent, targetX, targetY); } } function windowStopDrag(inEvent) { // Enable selections document.onselectstart = new Function ('return true'); // Reset window properties windowDragCurrent = ""; windowDragOffsetX = 0; windowDragOffsetY = 0; } function windowShowHelp(inId) { // Swap buttons document.getElementById(inId + "ButtonShowHelp").style.display = "none"; document.getElementById(inId + "ButtonHideHelp").style.display = "inline"; // Show help document.getElementById(inId + "Help").style.display = "block"; } function windowHideHelp(inId) { // Swap buttons document.getElementById(inId + "ButtonShowHelp").style.display = "inline"; document.getElementById(inId + "ButtonHideHelp").style.display = "none"; // Hide help document.getElementById(inId + "Help").style.display = "none"; }