﻿/*
================
    GENERAL
================
Created: August 2008
Updated: May 2009

Description:

Set of JavaScript functions that are to general.
These are generally functions required by most if not all the pages, or functions
that did not deserve a file of their own.

*/

// General Values
//===================
var contactSalesAlert = "Please contact our sales department by email at sales@ecarpetgallery.com\nor by phone toll-free at 1-888-466-6869.";
var contactSupportAlert = "Please contact our technical support department by email at support@ecarpetgallery.com\n.";
var numericMatchexpression = /^(-)?(\d*)(\.?)(\d*)$/;

// Regular Expressions and Responses for User Account Information Validation 
var emailRegularExpression = "^[\\w-_\.]*[\\w-_\.]\@[\\w]\.+[\\w]+[\\w]$";
var telephoneRegularExpression = /^[0-9\-\.\(\)\s]+$/;
var telephoneErrorMessage = " can only contain numbers, spaces, or any of the following characters -().";
var userNameRegularExpression = /^[0-9A-Za-z\.\-\_\#\!\*\?]+$/;
var userNameErrorMessage = " can only contain letters, numbers, or any of the following characters -_.#!?*.";
var alphanumericRegularExpression = /^[0-9A-Za-z\-\\'\_\.\/\#\s\\"]+$/;
var alphanumericErrorMessage = " can only contain letters, numbers, spaces, or any of the following characters -_.#/\"\'.";
var postalCodeRegularExpression = /^[0-9A-Za-z\-\.\s\#\/]+$/;
var postalCodeErrorMessage = " can only contain letters, numbers, spaces, or any of the following characters -.#/.";

// Validators
//============
function ValidateEmailAddress(emailAddress){
    var regex = new RegExp(emailRegularExpression);
    
    if (emailAddress.length==0)
        return "Email address is empty.";
    else if(emailAddress.length>80)
        return "Email address cannot be longer than 80 characters.";
    else if(!regex.test(emailAddress))
        return "Please enter a valid email address.";
    return "";
}

function ValidateEmailInput(elementId)
{
    var emailAddress = getPageElement(elementId).value;
    var validationResult = ValidateEmailAddress(emailAddress);
    if (validationResult=="") return true;
    alert(validationResult);
    return false;
}

// General Functions
//===================    
function getQueryStringValue(name)
{
    var re = new RegExp('[?&]' + escape(name) + '=([^&$]+)'); // added [?&]
    var m = re.exec(window.location.search); // no substr
    return m ? m[1] : '';
}

function passQueryString(name)
{
    var re = new RegExp('[?&]' + escape(name) + '=([^&$]+)'); // added [?&]
    var m = re.exec(window.location.search); // no substr
    return m ? '&' + name + '=' + m[1] : '';
}

function getPageElement(id){
    
    if(document.all){
        return document.all[id];
    }else {
        return document.getElementById(id);        
    }
    
}

function isNumeric(value)
{
    var re = new RegExp(numericMatchexpression);
    return re.test(value);
}

function isDefined(variable)
{
    return (typeof(window[variable]) == "undefined")?  false: true;
}

// SEO Related Toggle functions
//==============================
function showDivBlock(dropDownID)
{
    getPageElement(dropDownID).style.visibility='visible';
}

function dontShowDivBlock(dropDownID)
{
    getPageElement(dropDownID).style.visibility='hidden';
}

function toggle(id)
{
	if(getPageElement(id).style.display == 'block'){
		getPageElement(id).style.display = 'none';
	}
	else{
		getPageElement(id).style.display = 'block';
	}
}

function carpetSearchReadMore()
{
	if(getPageElement('ctl00_ContentPlaceHolder1_readMoreText').style.display == 'block'){
		getPageElement('ctl00_ContentPlaceHolder1_readMoreText').style.display = 'none';
        getPageElement('ctl00_ContentPlaceHolder1_readMoreOpen').style.display = 'block';
	}
	else{
		getPageElement('ctl00_ContentPlaceHolder1_readMoreText').style.display = 'block';
		getPageElement('ctl00_ContentPlaceHolder1_readMoreOpen').style.display = 'none';
	}
	return false;
}

function carpetInformationReadMore()
{
	if(getPageElement('ctl00_ContentPlaceHolder1_itemTextReadMore').style.display == 'block'){
		getPageElement('ctl00_ContentPlaceHolder1_itemTextReadMore').style.display = 'none';
        getPageElement('readMoreOpen').style.display = 'inline';
        getPageElement('readMoreClose').style.display = 'none';
	}
	else{
		getPageElement('ctl00_ContentPlaceHolder1_itemTextReadMore').style.display = 'block';
		getPageElement('readMoreOpen').style.display = 'none';
		getPageElement('readMoreClose').style.display = 'inline';
	}
	return false;
}

// Opacity
//=========
function FadeDown(id) {
    var objToFade = document.getElementById(id);
    if(typeof objToFade.style.opacity == "string") {
        objToFade.style.opacity = 0.5;
    } else {
        //here use document.getElementById(id).filters.alpha.opacity
        objToFade.style.filter = "alpha(opacity=50)";
    }
}

function FadeUp(id) {
    var objToFade = document.getElementById(id);
    if(typeof objToFade.style.opacity == "string") {
        objToFade.style.opacity = 1;
    } else {
        //here use document.getElementById(id).filters.alpha.opacity
        objToFade.style.filter = "alpha(opacity=100)";
    }
}

// Cookie Support and Shopping Cart Pane Management
//==================================================
function CheckForCookieSupport()
{
    /* Set a cookie to be sure that one exists. */
    document.cookie = 'ecgtestcookie' + escape('nothing');
    
    /* Check for the cookie */
    if (document.cookie != "") 
    {
        //If we are in the checkout area, 
        //the shopping cart pane is used as an information pane
        if (!document.getElementById('ctl00_ContentPlaceHolder1_checkoutStep'))
            GetCart();
        else    
            GetShoppingCartPaneInformation();
    }
}

// Helpers to Manipulate Page Elements
//=====================================
function AddOptionToDropDown(dropdown, name, value)
{
  var elOptNew = document.createElement('option');
  elOptNew.text = name;
  elOptNew.value = value;
  
  try {
    dropdown.add(elOptNew, null); // standards compliant; doesn't work in IE
  }
  catch(ex) {
    dropdown.add(elOptNew); // IE only
  }
}

function ClearOptionsFromDropDown(dropdown)
{
  var i;
  for (i = dropdown.length - 1; i>=0; i--) {
      dropdown.remove(i);
  }
}

// Format Currency
//=================
function formatCurrency(num) {
    num = num.toString().replace(/\$|\,/g,'');
    if(isNaN(num))
        num = "0";
    sign = (num == (num = Math.abs(num)));
    num = Math.floor(num*100+0.50000000001);
    cents = num%100;
    num = Math.floor(num/100).toString();
    if(cents<10)
        cents = "0" + cents;
    for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
        num = num.substring(0,num.length-(4*i+3))+','+
    num.substring(num.length-(4*i+3));
    return (((sign)?'':'-') + '$' + num + '.' + cents);
}
