var templateCode = function(){

	function ChangePostcode(obj) {
		if (obj.value.length<5 || obj.value.length>9){
			alert("Invalid Postcode. Please enter postcode correctly, i.e. AB12 3CD");
			if(obj.id == 'txtBillingPostcode'){
				return false;
			}
		} else {
			if (obj.value.indexOf(' ') == -1) {
				var postcodeset1 = obj.value;
				var postcodeset2 = obj.value;
				postcodeset1 = obj.value.substring(0, obj.value.length - 3);
				postcodeset2 = obj.value.substring(obj.value.length - 3, 99);
				temppostcodestr = postcodeset1 + " " + postcodeset2;
				obj.value = temppostcodestr.toUpperCase();
			} else {
				obj.value = obj.value.toUpperCase();
			}
		}
	}
	
	function ToUpperCase(obj){
		obj.value=obj.value.toUpperCase();
	}

	function ToProperCase(obj){
		var first, the_rest;
		first = obj.value.charAt(0);
		the_rest = obj.value.substring(1);
		obj.value = first.toUpperCase() + the_rest.toLowerCase();
	} 

	function ToCapitalAfterSpace(obj){
		obj.value = obj.value.toLowerCase();
		obj.value = obj.value.substr(0,1).toUpperCase() + obj.value.substr(1,obj.value.length-1);
		for (i=0; i<obj.value.length; i++){
			if (obj.value.substr(i,1)==" "){
				obj.value = obj.value.substr(0,i+1) + obj.value.substr(i+1,1).toUpperCase() + obj.value.substr(i+2,obj.value.length-i);
			}
		}
		obj.value = RobsReplace(obj.value, '/'); 
	}
	
	
	function ToCapitalAfterSpaceOrHyphen(obj){
		obj.value = obj.value.toLowerCase();
		obj.value = obj.value.substr(0,1).toUpperCase() + obj.value.substr(1,obj.value.length-1);
		for (i=0; i<obj.value.length; i++){
			if (obj.value.substr(i,1)==" "||obj.value.substr(i,1)=="-"){
				obj.value = obj.value.substr(0,i+1) + obj.value.substr(i+1,1).toUpperCase() + obj.value.substr(i+2,obj.value.length-i);
			}
		}
		obj.value = RobsReplace(obj.value, '/'); 
	}


    function isDigit(c){
        return ((c >= '0') && (c <= '9'))
    }
	
    function RobsReplace(sStr, sStrToFilterOut){
        var s = '';
        for (var i = 0; i < sStr.length; i++) {
            if (sStr.charAt(i) != sStrToFilterOut) 
                s += sStr.charAt(i);
        }
        return s;
    }
    
    function getCookieValueByName(name){
        if (document.cookie.length > 0) {
            var cookie = document.cookie.split("; ");
            for (var i = 0; i < cookie.length; i++) {
                var value = String(cookie[i]).split("=");
                if (String(value[0]).match(name) !== null) {
                    return (unescape(value[1]));
                }
            }
        }
        return null;
    }
    
    function testCookieLen(name){
        var j = 0;
        var cookie = document.cookie.split(" ;");
        
        for (var i = 0; i < cookie.length; i++) {
            var value = String(cookie[i]).split("=");
            if (String(value[0]).match(name) !== null) {
                j++;
            }
        }
        return j;
    }
    
    function testCompareCookie(name){
        var j = 0;
        var cookies = document.cookie.split(";");
        if (cookies.length <= 1) {
            j = 0;
            return j;
        }
        for (var i = 0; i < cookies.length; i++) {
            if (cookies[i].match(name)) {
                if (!cookies[i].match('=')) {
                    j = 0;
                    return j;
                }
                var cookie = cookies[i].split("=");
                var cookieLen = cookie[1].split("%2C");
                j = cookieLen.length;
            }
        }
        return j;
    }
    return {
    
        appendCookieValueByName: function(name, valueToAppend, id){
            var newValue = getCookieValueByName(name);
            var thisTickBox = document.getElementById(id);
            var newCookieAr = new Array();
            if (thisTickBox.checked == false) {
                var cookies = document.cookie.split(";");
                for (var i = 0; i < cookies.length; i++) {
                    if (cookies[i].match(name)) {
                        var cookie = cookies[i].split("=");
                        var cookieItems = cookie[1].split("%2C");
                        for (var n = 0; n < cookieItems.length; n++) {
                            if (cookieItems.length == 0) {
                                newCookie = ' ';
                            }
                            else {
                                if (cookieItems[n] !== '' && cookieItems[n] != valueToAppend && cookieItems[n] != 'undefined') {
                                    newCookieAr.push(cookieItems[n]);
                                }
                            }
                        }
                        var newCookie = newCookieAr.toString();
                    }
                }
                document.cookie = name + "=" + escape(newCookie) + "; path=/";
            }
            else {
                if (testCompareCookie(name) == 3) {
                    alert('You can only Compare 3 products at a time');
                    thisTickBox.checked = false;
                    return false;
                }
                else {
                    if (newValue === null || newValue === '') {
                        newValue = valueToAppend;
                    }
                    else {
                        if (newValue.match(valueToAppend)) {
                            newValue2 = newValue.replace(String(valueToAppend), "");
                            newValue = newValue2;
                        }
                        else {
                            newValue += "," + valueToAppend;
                        }
                    }
                    document.cookie = name + "=" + escape(newValue) + "; path=/";
                }
            }
        },
        
        checkCompareLinkStatus : function(el) {
        	if ($(el).length !== 0) {
                var name = "comparelist";
                var values = getCookieValueByName(name);
                var status = false;
                if (values === null) {
                	status = false;
                } else {
                	status = true;
                }
                return status;
        	}
        },
        
        setCompareLinkStatus : function(el) {
        	if ($(el).length !== 0) {
                var name = "comparelist";
                var values = getCookieValueByName(name);
                var showLink = false;
            	var totalSet = 0;
                if (values !== null && values !== '') {
                    var comp_array = values.split(",");
                    if (comp_array.length > 0) {
                        for (var i = 0; i < comp_array.length; i++) {
                        	if (comp_array[i] !== '') {
                        		totalSet += 1;
                        	}
                        }
                        if (totalSet > 1 ) {
                        	showLink = true;
                        }
                    }
                }
                if (showLink) {
                	$(el).css('display', 'inline');
                	$('#comparespan').css('display', 'inline');
                } else {
                	$(el).css('display','none');
                	if (totalSet === 0) {
                		$('#comparespan').css('display','none');
                	}
                }
        	}
        },
        
        clearCompareList: function(){
            var name = "comparelist";
            var date = new Date();
            date.setTime(date.getTime() + (64 * 24 * 60 * 60 * -1000));
            var expires = "; expires=" + date.toGMTString();
            
            var values = getCookieValueByName(name);
            
            if (values != null) {
                if (values.indexOf(",") > -1) {
                    var comp_array = values.split(",");
                    var part_num = 0;
                    while (part_num < comp_array.length) {
                        var id = "compare" + comp_array[part_num];
                        var thisTickBox = document.getElementById(id);
                        if (thisTickBox != null) {
                            thisTickBox.checked = false;
                        }
                        part_num += 1;
                    }
                }
                else {
                    var id = "compare" + values;
                    var thisTickBox = document.getElementById(id);
                    if (thisTickBox != null) {
                        thisTickBox.checked = false;
                    }
                }
            }
            document.cookie = name + "=''" + expires + "; path=/";
			
			if ($('#comparespan').length === 1) {
			//	$('#comparespan').html('');
			}
			
        },
        
        submitFormValueConcatAction: function(obj, form, escapeflag){
            if (escapeflag == true) {
                var obj_value = escape(obj.value);
                obj_value = obj_value.replace('/', ' ');
            }
            else {
                var obj_value = obj.value;
            }
            var form = document.getElementById(form);
            form.action = form.action + obj_value;
            form.submit();
        },
        
        submitFormValueAsAction: function(obj, form, escapeflag){
            if (escapeflag == true) {
                var obj_value = escape(obj.value);
                obj_value = obj_value.replace('/', ' ');
            }
            else {
                var obj_value = obj.value;
            }
            var form = document.getElementById(form);
            form.action = obj_value;
            form.submit();
        },
        
        clearFieldValue: function(obj){
            obj.value = '';
            return obj;
        },
        
        ValidateTelephoneNumber: function(obj){
            for (i = 0; i < obj.value.length; i++) {
                if (obj.value.substr(i, 1) != " " && isDigit(obj.value.substr(i, 1)) != true) {
                    alert("Telephone Number must consist of digits 0 through 9, and spaces only.");
                    obj.value = '';
                }
            }
        },
        
        
        ValidateTelephoneNumber2: function(obj, type){
            retvalue = 0;
            for (i = 0; i < obj.value.length; i++) {
                if (!type) {
                    type = 'Telephone';
                }
                if (obj.value.substr(i, 1) != " " && isDigit(obj.value.substr(i, 1)) != true) {
                    retvalue = 1;
                    alert(type + " Number must consist of digits 0 through 9, and spaces only.");
                    obj.value = '';
                    break;
                }
                if (type == 'Home') {
                    if (obj.value.substring(0, 2) == '07') {
                        retvalue = 1;
                        alert("Please do not enter Mobile number as Home Telephone Number.");
                        break;
                    }
                }
            }
            return retvalue;
        },
        
        
        ValidateEmailAddress: function(obj){
            if (obj.value.indexOf('@') == -1) {
                alert("Invalid Email Address entered.");
            }
        },
        
        ToUpperCase: function(obj){
            obj.value = obj.value.toUpperCase()
        },
        
        
        ToProperCase: function(obj){
            var first, the_rest;
            first = obj.value.charAt(0);
            the_rest = obj.value.substring(1);
            obj.value = first.toUpperCase() + the_rest.toLowerCase();
        },
        
        
        ToCapitalAfterSpace: function(obj){
            obj.value = obj.value.toLowerCase();
            obj.value = obj.value.substr(0, 1).toUpperCase() + obj.value.substr(1, obj.value.length - 1);
            for (i = 0; i < obj.value.length; i++) {
                if (obj.value.substr(i, 1) == " ") {
                    obj.value = obj.value.substr(0, i + 1) + obj.value.substr(i + 1, 1).toUpperCase() + obj.value.substr(i + 2, obj.value.length - i);
                }
            }
            obj.value = RobsReplace(obj.value, '/');
        },
        
        
        ToCapitalAfterSpaceOrHyphen: function(obj){
            obj.value = obj.value.toLowerCase();
            obj.value = obj.value.substr(0, 1).toUpperCase() + obj.value.substr(1, obj.value.length - 1);
            for (i = 0; i < obj.value.length; i++) {
                if (obj.value.substr(i, 1) == " " || obj.value.substr(i, 1) == "-") {
                    obj.value = obj.value.substr(0, i + 1) + obj.value.substr(i + 1, 1).toUpperCase() + obj.value.substr(i + 2, obj.value.length - i);
                }
            }
            obj.value = RobsReplace(obj.value, '/');
        },
        
        ChangePostcode: function(obj){
            if (obj.value.length < 5 || obj.value.length > 9) {
                alert("Invalid Postcode. Please enter postcode correctly, i.e. AB12 3CD");
                if (obj.id == 'txtBillingPostcode') {
                    return false;
                }
            }
            else {
                if (obj.value.indexOf(' ') == -1) {
                    var postcodeset1 = obj.value;
                    var postcodeset2 = obj.value;
                    postcodeset1 = obj.value.substring(0, obj.value.length - 3);
                    postcodeset2 = obj.value.substring(obj.value.length - 3, 99);
                    temppostcodestr = postcodeset1 + " " + postcodeset2;
                    obj.value = temppostcodestr.toUpperCase();
                }
                else {
                    obj.value = obj.value.toUpperCase();
                }
            }
        },
		
		updateChosenStore : function(element,storeId) {
			
    		$('#storeIndicator').show();

			var uri = 'action.php?cdx=updatechosenstore';
			uri += '&storeid=' + storeId;
			uri += '&mode=UpdateStoreName';

			$('#reserveStoreName').load(uri, {},
  				function(data){
    				$('#storeIndicator').hide();
					$('.storelist a').removeClass('strong');
			  	}
			);
			
			var uri = 'action.php?cdx=updatechosenstore';
			uri += '&storeid=' + storeId;
			uri += '&mode=UpdateStore';
			
			$('#chosenStore').load(uri, {},
				function(data) {
					
				}
			);
			
		},
		
		onStoreChange : function(selectObj,storeid) {
			
			var idx = selectObj.selectedIndex;
			var storeId = selectObj.options[idx].value;
			
			var uri = 'action.php?cdx=updatechosenstore';
			uri += '&storeid=' + storeId;
			uri += '&mode=SetStore';
			
			$('#reserveStoreName').load(uri, {},
				function() {
					
				}
			);
			
		}
        
    }
}();

