﻿/**
*
*  URL encode / decode
*  http://www.webtoolkit.info/
*
**/
 
var Url = {
 
	// public method for url encoding
	encode : function (string) {
		return escape(this._utf8_encode(string));
	},
 
	// public method for url decoding
	decode : function (string) {
		return this._utf8_decode(unescape(string));
	},
 
	// private method for UTF-8 encoding
	_utf8_encode : function (string) {
		string = string.replace(/\r\n/g,"\n");
		var utftext = "";
 
		for (var n = 0; n < string.length; n++) {
 
			var c = string.charCodeAt(n);
 
			if (c < 128) {
				utftext += String.fromCharCode(c);
			}
			else if((c > 127) && (c < 2048)) {
				utftext += String.fromCharCode((c >> 6) | 192);
				utftext += String.fromCharCode((c & 63) | 128);
			}
			else {
				utftext += String.fromCharCode((c >> 12) | 224);
				utftext += String.fromCharCode(((c >> 6) & 63) | 128);
				utftext += String.fromCharCode((c & 63) | 128);
			}
 
		}
        //alert(utftext);
		return utftext;
	},
 
	// private method for UTF-8 decoding
	_utf8_decode : function (utftext) {
		var string = "";
		var i = 0;
		var c = c1 = c2 = 0;
 
		while ( i < utftext.length ) {
 
			c = utftext.charCodeAt(i);
 
			if (c < 128) {
				string += String.fromCharCode(c);
				i++;
			}
			else if((c > 191) && (c < 224)) {
				c2 = utftext.charCodeAt(i+1);
				string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
				i += 2;
			}
			else {
				c2 = utftext.charCodeAt(i+1);
				c3 = utftext.charCodeAt(i+2);
				string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
				i += 3;
			}
 
		}
 
		return string;
	}
}

function replaceSymbol(string)
{
    var string1 = '';
    document.getElementById('engraver').value = '';
    for (var n = 0; n < string.length  ; n++)
    {
        switch(string.charAt(n))
        {
        case '∞': string1 += '~' + n + 'a'; break;
        case '•': string1 += '~' + n + 'b'; break;
        case '†': string1 += '~' + n + 'c'; break;
        case '♥': string1 += '~' + n + 'd'; break;
        case '☯': string1 += '~' + n + 'e'; break;
        case '☪': string1 += '~' + n + 'f'; break;
        case '✡': string1 += '~' + n + 'g'; break;
        case '✝': string1 += '~' + n + 'h'; break;
        case 'ॐ': string1 += '~' + n + 'i'; break;
        case '✠': string1 += '~' + n + 'j'; break;
        }
    }
    document.getElementById('engraver').value = string1;
}
//added by alvin
function replaceSymbol2(string, engraverID) {
    var string1 = '';
    document.getElementById(engraverID).value = '';
    for (var n = 0; n < string.length; n++) {
        switch (string.charAt(n)) {
            case '∞': string1 += '~' + n + 'a'; break;
            case '•': string1 += '~' + n + 'b'; break;
            case '†': string1 += '~' + n + 'c'; break;
            case '♥': string1 += '~' + n + 'd'; break;
            case '☯': string1 += '~' + n + 'e'; break;
            case '☪': string1 += '~' + n + 'f'; break;
            case '✡': string1 += '~' + n + 'g'; break;
            case '✝': string1 += '~' + n + 'h'; break;
            case 'ॐ': string1 += '~' + n + 'i'; break;
            case '✠': string1 += '~' + n + 'j'; break;
        }
    }
    document.getElementById(engraverID).value = string1;
}

function getEngravingFontName(font)
{
    if (font == "Bailey Regular") return "Bailey";
    if (font == "ClarendonTLig") return "Clarendon";
    if (font == "French_Script_MT") return "French Script";
    if (font == "HelvCND_R-Normal") return "Helvetica";
    if (font == "Old English") return "Old English";
    if (font == "Romana_Bold_BT") return "Roman";
    if (font == "Windsong") return "Wedding Script";
    return "Bailey"; 
}

function revertSymbol(string) {
    var newStr = string;
    newStr = newStr.replace('♥', '(s1)');
    newStr = newStr.replace('∞', '(s2)');
    newStr = newStr.replace('•', '(s3)');
    newStr = newStr.replace('✝', '(s4)');
    newStr = newStr.replace('†', '(s5)');
    newStr = newStr.replace('✠', '(s6)');
    newStr = newStr.replace('ॐ', '(s7)');
    newStr = newStr.replace('☯', '(s8)');
    newStr = newStr.replace('☪', '(s9)');
    newStr = newStr.replace('✡', '(s10)');
    return newStr;

}


function renameSymbol(string)
{
    var newStr = string;
    newStr = newStr.replace(/♥/g, '(s1)');
    newStr = newStr.replace(/∞/g, '(s2)');
    newStr = newStr.replace(/•/g, '(s3)');
    newStr = newStr.replace(/✝/g, '(s4)');
    newStr = newStr.replace(/†/g, '(s5)');
    newStr = newStr.replace(/✠/g, '(s6)');
    newStr = newStr.replace(/ॐ/g, '(s7)');
    newStr = newStr.replace(/☯/g, '(s8)');
    newStr = newStr.replace(/☪/g, '(s9)');
    newStr = newStr.replace(/✡/g, '(s10)');
    return newStr;
}

function removeSymbol(string)
{
    var newStr = string;
    newStr = newStr.replace(/♥/g, '');
    newStr = newStr.replace(/∞/g, '');
    newStr = newStr.replace(/•/g, '');
    newStr = newStr.replace(/✝/g, '');
    newStr = newStr.replace(/†/g, '');
    newStr = newStr.replace(/✠/g, '');
    newStr = newStr.replace(/ॐ/g, '');
    newStr = newStr.replace(/☯/g, '');
    newStr = newStr.replace(/☪/g, '');
    newStr = newStr.replace(/✡/g, '');
    return newStr;
}

function assignForAll(dName, dValue)
{
    var dAll = document.getElementsByName(dName);
    for(var a = 0 ; dAll.length > a ; a++)
    {
        dAll[a].value = dValue;
    }
}

function validateEngrave(thisForm)
{
    var frmElements = thisForm.elements
	var elemName
	var elemObj

	submitonce(thisForm);
	var errMess = ""
    var isEngraved = "false";
    var engraveWord = "";
    var engraveType = "";
	for (var intI=0; intI < frmElements.length; intI++) {// *
		elemObj = frmElements[intI]
		elemName = elemObj.name;
		if(elemName == "IsEngraved")
		{
		    isEngraved = elemObj.value;
		}
		if(elemName == "EngraveWord")
		{
		    engraveWord = elemObj.value;
		}
		if(elemName == "EngraveType")
		{
		    engraveType = elemObj.value;
		}
	}
	var trimEngWord = trim(engraveWord);
	if(isEngraved == "true")
	{
	    if(engraveType == "" || engraveWord == ""){
	        var isAppend = false;
	        if(engraveType == "")
	        {
	            errMess += "Please choose the engrave type";
	            isAppend = true;
	        }
	        if(engraveWord == "")
	        {
	            if(isAppend)
	                errMess += " and input an engrave word.";
	            else
	                errMess += "Please input an engrave word.";
	        }
	        else
	        {
	            errMess += ".";
	        }
	    alert(errMess); 
	    return false;
	    }
	}
	
	return true;
}


function trim (myString)
{
    return myString.replace(/^\s+/g,'').replace(/\s+$/g,'')
}

function URLEncode (clearString) {
  var output = '';
  var x = 0;
  clearString = clearString.toString();
  var regex = /(^[a-zA-Z0-9_.]*)/;
  while (x < clearString.length) {
    var match = regex.exec(clearString.substr(x));
    if (match != null && match.length > 1 && match[1] != '') {
    	output += match[1];
      x += match[1].length;
    } else {
      if (clearString[x] == ' ')
        output += '+';
      else {
        var charCode = clearString.charCodeAt(x);
        var hexVal = charCode.toString(16);
        output += '%' + ( hexVal.length < 2 ? '0' : '' ) + hexVal.toUpperCase();
      }
      x++;
    }
  }
  return output;
}

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);
}
