﻿

/* 
DisableSelects()
* Requeired: string, usually the id of an element
* Cascades a node list disabling the elements.*/
function DisableSelects(string) {   
    var courseInfo = document.getElementById("courseInfo");
//    var nodeList = document.getElementsByTagName("select");

    var nodeList = courseInfo.getElementsByTagName("select");
    for (i=0; i<nodeList.length; i++) {
        if (nodeList[i].id == string) {
            x = i;
        }
    }
    for (x=x; x<nodeList.length; x++) {
        var element = document.getElementById(nodeList[x].id);
        if (element.hasChildNodes()) {
            while(element.hasChildNodes() == true) {
                element.removeChild(element.childNodes[0]);
           } // while
       }
       element.setAttribute("disabled", "");
    } // for
} // function


function VerifyEmails() {
    var element = document.getElementById('notice');
	if (document.getElementById('email').value != document.getElementById('verify_email').value) {
	    element.style.display = "inline";
	    element.innerHTML = "<p>Emails do not match.</p>";
	} else {
	    element.style.display = "none";
	}
}


function HumanName(string) {
    var aString = "";
    var toArray = string.split("_")
    var i = 0;
    while(i<toArray.length) {
        var firstLetter = toArray[i].substr(0,1).toUpperCase();
        var trimmedWord = toArray[i].substr(1,toArray[i].length);
        var spacer = " ";
        aString = aString + firstLetter + trimmedWord + spacer; 
        i++;
    }
    return aString;
} // HumanName


function HumanNameSpaces(string) {
    var aString = "";
    var toArray = string.split(" ")
    var i = 0;
    while(i<toArray.length) {
        var firstLetter = toArray[i].substr(0,1).toUpperCase();
        var trimmedWord = toArray[i].substr(1,toArray[i].length);
        var spacer = " ";
        var aString = aString + firstLetter + trimmedWord + spacer; 
        i++;
    }
    return aString;
}

function LowerCase(aString) {
    var aString = aString.toLowerCase();
    return(aString);
}

function ResetProducts(element) {
    var target = document.getElementById(element);
    while(target.hasChildNodes() == true) {
        target.removeChild(target.childNodes[0]);
    } // while
}


function showProduct(aString) {
    var product = aString.split("^");  
    // Create the string that will show the product image and info
    var html = "";
    html = html + '<input type="button" name="add" id="'+ aString +'" value="Add" onclick="addProduct(this.id);" /><br />';
    html = html + "<img src='http://www.ccra.net/covers/cover.cfm?isbn="+product[16]+"' style='margin: 4px;' width='90px' height='135px' align='bottom'/><br />"
 	//html = html + "<img src='http://www.booksinprint.com//cgi-bin/CoverImage.pl?ean="+product[16]+"' style='margin: 4px;' width='90px' height='135px' align='bottom' alt='"+ product[9] +"'/><br />"
    html = html + product[9] + "<br />";
    html = html + HumanNameSpaces(product[8].toLowerCase()) + "<br />";
    html = html + HumanNameSpaces(product[13].toLowerCase()) + "<br />";
    if (product[12] > 0) {
       html = html + "<font color='blue'>"+ InStock(product[12]) +"</font>";
    } else {
        html = html + "<font color='red'>"+ InStock(product[12]) +"</font>";
    }
    return html; 
}

function addProduct(aString) {     
    // Create and randomized box Id 
    var parent = document.getElementById(aString);
    new Effect.Highlight(parent)
    //alert(parent.style.backgroundColor);
    var rString = randomString();
    
    // Create the parentNode id
    var product = aString.split("^"); 
    
    // Get the parent Id
    var cart = document.getElementById("cart");   
    var box = document.createElement("div"); 
    box.setAttribute("id", rString);
    box.style.margin = "5px";
    box.style.fontSize = "smaller";
    box.style.display = "none";
    
    shippingId = randomString();
    
    html = "<table width='100%'>";
    html = html + "<tr><td colspan='2'><b>"+product[9]+"</b></td>";
    html = html + "<tr><td>"+ HumanNameSpaces(product[8].toLowerCase()) + "</td>";
    html = html + "<td align='right'>";
    html = html + '<input type="hidden" name="products" value="'+ aString +'"/>';    
    html = html + '<input type="button" name="remove" value="Remove" style="font-size: smaller;" id="'+ aString +'^'+ rString +'" onClick="removeProduct(this.id);"/>';
    html = html + "</td></tr>";
    html = html + "<tr><td colspan='2'>Course: "+ product[3] +"-"+ product[4] +" "+ product[5] + "</td></tr>";
    html = html + "<tr><td colspan='2'>Shipping: ";
    html = html + "<select name='ship' id='"+ shippingId +"'>";
    html = html + "<option value='standard'>Free Standard</option>";
    html = html + "<option value='rush'>Rush ($15.00)</option>";
    html = html + "</select></td><tr></table>";
    html = html + "</p><hr>";   
    box.innerHTML = html
    cart.appendChild(box);
    //var isFreeShipping = sendRequest("shipping",shippingId,'','','','')    

    new Effect.Appear(box);
}


function removeProduct(aString) {
    var cart = document.getElementById("cart");
    var product = aString.split("^");
    var arraySize = product.length - 1;
    var boxId = product[arraySize];
    var box = document.getElementById(boxId);
    cart.removeChild(box)
}



function InStock(aString) {
//    if (aString > 0) {
        var text = "Currently "+ aString +" on the shelf";
//    } else {
//        var text = "Out of Stock<br />Click Add to place in cart";
//    }
    return text;
}

function EscapeString(aString) {
    aString = aString.replace(">", " - ");
    aString = aString.replace("<", "");
    aString = aString.replace("*", " - ");
    aString = aString.replace("+", " + ");
    aString = aString.replace(":", ": ");
    aString = aString.replace("-", " - ");
    aString = aString.replace(",", ", ");
    return aString;

}


function ProductInfo(aString) {
    var product = aString.split("^");
    var box = document.createElement("div");
    var boldText = document.createElement("b");
    var text = product[3] +"-"+ product[4] +"-"+ product[5]
    boldText.appendChild(document.createTextNode(text));
    box.appendChild(boldText);

    // Title
    text = product[9];
    br = document.createElement("br");
    box.appendChild(br);
    box.appendChild(document.createTextNode(text));


    // Author
    text = HumanNameSpaces(product[8].toLowerCase());
    br = document.createElement("br");
    box.appendChild(br);
    box.appendChild(document.createTextNode(text));
    
    // Hidden input
    var input = document.createElement("input");
    input.style.display = "none";
    input.setAttribute("type", "hidden");
    input.setAttribute("name", "product");
    input.setAttribute("value", aString);
 
    box.appendChild(input);
    return box;
}


function num2money(n_value) {
    // validate input
    if (isNaN(Number(n_value)))
    return 'ERROR';

    // save the sign
    var b_negative = Boolean(n_value < 0);
    n_value = Math.abs(n_value);

    // round to 1/100 precision, add ending zeroes if needed
    var s_result = String(Math.round(n_value*1e2)%1e2 + '00').substring(0,2);

    // separate all orders
    var b_first = true;
    var s_subresult;
    while (n_value > 1) {
    s_subresult = (n_value >= 1e3 ? '00' : '') + Math.floor(n_value%1e3);
    s_result = s_subresult.slice(-3) + (b_first ? '.' : ',') + s_result;
    b_first = false;
    n_value = n_value/1e3;
    }
    // add at least one integer digit
    if (b_first)
    s_result = '0.' + s_result;

    // apply formatting and return
    return b_negative
    ? '($' + s_result + ')'
    : '$' + s_result;
}


function randomString() {
	var chars = "0123456789abcdefghiklmnopqrstuvwxyz";
	var string_length = 8;
	var aString = '';
	for (var i=0; i<string_length; i++) {
		var rnum = Math.floor(Math.random() * chars.length);
		aString += chars.substring(rnum,rnum+1);
	}
    return aString;
}


function ValidateString(aString) {
    var element = document.getElementById(aString);
    var target = document.getElementById(aString+"_validation");
    while(target.hasChildNodes() == true) {
        target.removeChild(target.childNodes[0]);
    } // while

    var image = document.createElement("img");
    if (element.value.length == 0) {
        element.style.borderColor = "red";
        image.setAttribute("src", "images/no.gif");
        setCookie(aString, true, null);
    } else {
        element.style.borderColor = "#999";
        image.setAttribute("src", "images/yes.gif");
        setCookie(aString, false, null);

    }
    target.appendChild(image);
}


function ValidateLastName(aString) {
    var element = document.getElementById(aString);
    var target = document.getElementById(aString+"_validation");
    while(target.hasChildNodes() == true) {
        target.removeChild(target.childNodes[0]);
    } // while

    var image = document.createElement("img");
    if (element.value.length == 0) {
        element.style.borderColor = "red";
        image.setAttribute("src", "images/no.gif");
        setCookie(aString, true, 1);
    } else {
        element.style.borderColor = "#999";
        image.setAttribute("src", "images/yes.gif");
    }
    target.appendChild(image);
}


function ValidateEmail(aString1, aString2) {
    var element1 = document.getElementById(aString1);
    var element2 = document.getElementById(aString2);

    var target = document.getElementById("email_validation");
    while(target.hasChildNodes() == true) {
        target.removeChild(target.childNodes[0]);
    } // while

    var expObj = RegExp("^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$");
    var image = document.createElement("img");    

    if (element1.value == element2.value) {
        if (element1.value.match(expObj) || element2.value.match(expObj)) {
            element1.style.borderColor = "#999";
            element2.style.borderColor = "#999";
            image.setAttribute("src", "images/yes.gif");
            setCookie("email", false, null);           
        } else {       
            element1.style.borderColor = "red";
            element2.style.borderColor = "red";
            image.setAttribute("src", "images/no.gif");
            setCookie("email", true, null);   
        }
    } else {
        element1.style.borderColor = "red";
        element2.style.borderColor = "red";
        image.setAttribute("src", "images/no.gif");
        setCookie("email", true, null);   
    }     

    target.appendChild(image);    
}



function ValidateAreaCode(aString) {
    var element = document.getElementById(aString)
    var pattern = /^[2-9]\d{2}$/;
    var expObj = new RegExp(pattern);
    if (element.value.match(expObj)) {
        element.style.borderColor = "#999";
        return true;
    } else {
        element.style.borderColor = "red";
        return false;
    }
}

function ValidatePrefix(aString) {
    var element = document.getElementById(aString)
    var image = document.createElement("img");    
    var pattern = /^\d{3}$/;
    var expObj2 = new RegExp(pattern);
    if (element.value.match(expObj2)) {
        element.style.borderColor = "#999";
        return true;
    } else {
        element.style.borderColor = "red";
        return false;
    }
}

function ValidatePhoneNumber(aString) {
    var element = document.getElementById(aString)
    var image = document.createElement("img");    
    var pattern = /^\d{4}$/;
    var expObj3 = new RegExp(pattern);
    if (element.value.match(expObj3)) {
        element.style.borderColor = "#999";
        return true;
    } else {
        element.style.borderColor = "red";
        return false;
    }
}


function ValidatePhone(aString1, aString2, aString3) {
    ValidateAreaCode(aString1);    
    ValidatePrefix(aString2);
    ValidatePhoneNumber(aString3);

    var target = document.getElementById("phone_validation");
    while(target.hasChildNodes() == true) {
        target.removeChild(target.childNodes[0]);
    } // while

    var image = document.createElement("img")   

    if (!ValidateAreaCode(aString1) || !ValidatePrefix(aString2) || !ValidatePhoneNumber(aString3)) {
        image.setAttribute("src", "images/no.gif");  
    } else {
        image.setAttribute("src", "images/yes.gif");  
    }
    target.appendChild(image);        
}


function setCookie(c_name,value,expiredays) {
    var exdate=new Date()
    exdate.setDate(exdate.getDate()+expiredays)
    document.cookie=c_name+ "=" +escape(value)+ ((expiredays==null) ? "" : ";expires="+exdate.toGMTString())
}

function getCookie(c_name) {
    if (document.cookie.length>0) {
        c_start=document.cookie.indexOf(c_name + "=")
        if (c_start!=-1) { 
            c_start=c_start + c_name.length+1 
            c_end=document.cookie.indexOf(";",c_start)
            if (c_end==-1) c_end=document.cookie.length
                return unescape(document.cookie.substring(c_start,c_end))
            } 
        }
    return ""
}

function ValidateForm() {
    ValidateString("first_name")
    ValidateString("last_name")
    ValidatePhone("phone_areacode", "phone_prefix", "phone_extension")
    ValidateEmail("email", "verify_email");

    var errors = new Array();
    
    if (getCookie("first_name") == "true") {
        errors.push("First name is required.\n")
    }

    if (getCookie("last_name") == "true") {
        errors.push("Last name is required.\n")
    }

    if (getCookie("email") == "true") {
        errors.push("Email is required.\n")
    }

    if (getCookie("phone") == "true") {
        errors.push("Phone is required.\n")
    }

    var cart = document.getElementById("cart");
    var elements = cart.getElementsByTagName("div");
    if (elements.length == 0) {
        errors.push("Your cart is empty.");
    }
   
    if (errors.length > 0) {
        var aString = "There were some errors in submitting the form, please complete all fields:\n"
        for(var i=0; i<errors.length; i++) {
            aString = aString + " - "+errors[i];
        }
        alert(aString);
        return false;
    } else {
        return true;
    }
}


function FreeShipping() {   
    var today = new Date();   
   
    var starts_on = new Date();
        starts_on.setYear(2009);
        starts_on.setMonth(8)
        starts_on.setDate(20);
         
    var ends_on = new Date();
        ends_on.setYear(2009);
        ends_on.setMonth(9)
        ends_on.setDate(5);
    
    if ((starts_on < today) & (ends_on > today)) {
        return true;
    } else {
        return false;
    }
}   


function GetSearchInput(aString) {   
    var target = document.getElementById("searchBox");
    while (target.firstChild) {
        target.removeChild(target.firstChild);
    }
    
    aString = aString.substr(7, aString.length - 7);
    if (aString.substr(0,4) == "date") {
        DateRangeSearch(aString, target);
    } else {
        if (aString == "status") {
            StatusSearch(aString, target);       
        } else {
            TextSearch(aString, target);
        }
    } 
}

function TextSearch(aString, object) {   
    html = "<input type='text' name='"+ aString +"' id='"+ aString +"' class='inputMedium' />";
    html = html + "<br /><label class='labelMedium'>Include Semester</label><input type='checkbox' name='checkbox' id='checkbox' class='checkbox' checked /> ";
    html = html + "<input type='submit' name='submit' id='submit' class='button' value='Find'/>";
    object.innerHTML = html;
}

function StatusSearch(aString, object) {
    var html = "";
    html = html + "<select name='"+aString+"' id='"+aString+"' class='inputSmall'>";
    html = html + "<option value='entered'>Entered</option>";
    html = html + "<option value='ordered'>Ordered</option>";
    html = html + "<option value='arrived'>Arrived</option>";
    html = html + "<option value='notified'>Notified</option>";
    html = html + "<option value='pickedup'>Picked Up</option>";
    html = html + "</select>";
    html = html + "<br /><label style='text-align:right;'>Include Semester</label><input type='checkbox' name='checkbox' id='checkbox' class='checkbox' checked /> ";
    html = html + "<input type='submit' name='submit' id='submit' class='button' value='Find'/>";
    object.innerHTML = html;
}

function DateRangeSearch(aString, object) {
    var html = "";
    var selected = "";
    var fields = new Array(aString+"_starts_on", aString+"_ends_on");
    var today = new Date();
    var thisDate = new Array();
    thisDate[0] = new Array(today.getUTCMonth() + 1, 1, 12)
    thisDate[1] = new Array(today.getUTCDate(), 1, 31)
    thisDate[2] = new Array(today.getUTCFullYear(), today.getUTCFullYear() - 3, today.getUTCFullYear())
    
    for(var a = 0; a < fields.length; a++) {
        for(var b = 0; b < thisDate.length; b++) {
            html = html + "<select name='"+fields[a]+"' class='input75'>";
            for(var c = thisDate[b][1]; c <= thisDate[b][2]; c++) {
                selected = c == thisDate[b][0] ? " selected" : "";
                html = html + "<option value='"+c+"' "+selected+">"+c+"</option>";
            } // for thisDate[b]
            html = html + "</select>";
        } // for thisDate
        if (a == 0) {
            html = html + " TO ";
        } 
    } // for fields
    html = html + "<br /><label style='text-align: right;'>Include Semester</label><input type='checkbox' name='checkbox' id='checkbox' class='checkbox' checked /> ";
    html = html + "<input type='submit' name='submit' id='submit' class='button' value='Find'/>";
    object.innerHTML = html;    
}
// onchange="ValidateBox1('order_<%= objRecordset.Fields("ID") %>','remind_<%= objRecordset.Fields("ID") %>','delete_<%= objRecordset.Fields("ID") %>')"

function ValidateBox2(id2, id3) {
    id2 = document.getElementById(id2)
    id3 = document.getElementById(id3)
    
    if (id2.checked == true) {
        id3.disabled = true
    } else {
        id3.disabled = false
    }
}

function ValidateBox3(id2, id3) {
    id2 = document.getElementById(id2)
    id3 = document.getElementById(id3)
    
    if (id3.checked == true) {
        id2.disabled = true
    } else {
        id2.disabled = false
    }
}

function ValidateBox4(id1, id2) {
    id1 = document.getElementById(id1)
    id2 = document.getElementById(id2)
    if (id1.checked == true) {
        id2.disabled = true;
    } else {
        id2.disabled = false;
    }
}

function ValidateBox5(id1, id2) {
    id1 = document.getElementById(id1)
    id2 = document.getElementById(id2)
    
    if (id2.checked == true) {
        id1.disabled = true
    } else {
        id1.disabled = false
    }
}

function checkAll(field) {
    for(var i = 0; i < field.length; i++) {
        field[i].checked = true 
    }
}

function uncheckAll(field) {
    for(var i = 0; i < field.length; i++) {
        field[i].checked = false 
    }
}



// Phone number Auto-tab
function autoTab(obj, event, len, next) {
	var fieldLength = 0;
	if (event == "down") {
		fielLenght = obj.value.length;	
	} else if (event == "up") {
		if (obj.value.length != fieldLength) {
			fieldLength = obj.value.length;
		
			if (fieldLength == len) {
				next.focus();
			}	
		}
	}
	
	
}

// <input type="text" onkeyup="autoTab(this,'up',3,this.form.phone_prefix)" onkeydown="autoTab(this,'down',3)" maxlength="3" size="3" name="Phone_1"/>