var bookmarkurl="http://www.blooming.com.my"
var bookmarktitle="Blooming.com.my"
function addBookmark(){
	if (document.all)
	window.external.AddFavorite(bookmarkurl,bookmarktitle)
}

function popimage(url, width, height, label) {
        handle = window.open("",label,"width=200,height=50,resizable=yes");
        handle.document.write("<body leftmargin=10 topmargin=20 marginwidth=10 marginheight=20><title>"+bookmarktitle+"</title><P align=center style='color:#666666; font-family:verdena,arial;'>LOADING IMAGE<BR>.");
		var timeexit = 1;
        autosize(url,width,height,label,handle,timeexit);
}

function autosize(url,width,height,label,handle,timeexit) {
	var iWidth = width+25;
	var iHeight = height+53;
	handle.document.close();
	handle = window.open(url,label,"width="+iWidth+",height="+iHeight+",toolbar=no,location=no,menubar=no,directories=no,status=no,scrollbars=no,resizable=yes,copyhistory=no");
	handle.window.resizeTo(iWidth,iHeight);
	handle.focus();
}

function openPopWindow(theURL,winName,features) {
	popup = window.open(theURL,winName,features);
	popup.focus();
}

function goTo(theURL) {
	 window.location.href= theURL;
}
 


var xPos,yPos;
xPos = 0;
yPos = 0;
var isNS = (navigator.appName == "Netscape" && parseInt(navigator.appVersion) >= 4);

function pos()
{
	imgElem = document.images["imageMed"];
	if(isNS)
	{
		xPos = eval(imgElem).x;
		yPos = eval(imgElem).y;
	}
	else
	{
        xPos = eval(imgElem).offsetLeft;
        tempEl = eval(imgElem).offsetParent;
        while (tempEl != null)
        {
			xPos += tempEl.offsetLeft;
            tempEl = tempEl.offsetParent;
        }
		 yPos = eval(imgElem).offsetTop;
		 tempEl = eval(imgElem).offsetParent;
		 while (tempEl != null)
		 {
			yPos += tempEl.offsetTop;
			tempEl = tempEl.offsetParent;
		}
		xPos = xPos - 25;
	}
}

function showObject(object)
{
	var lft,tp;
	w1 = document.images["imageMed"].width;
	w2 = 238;
	lft = xPos - (w2-w1);
	tp = yPos;
	object.left = lft + 11;
	object.top = tp - 85;
	object.borderColor = '#000000';
	object.visibility = VISIBLE;
}

function hideObject(object)
{
	object.visibility = HIDDEN;
}

var promoWin,popOpen=false
function popPromoWin(i){
	var winX,winY,w=250,h=250
	winX=screen.availWidth-10-w; winY=0
	promoWin=window.open(i,"Promo","width="+w+",height="+h+",left="+winX+",top="+winY); 
	promoWin.window.focus();
	popOpen=true
}

function isBlank(input){
var inputStr=input.value
if(window.RegExp && inputStr){
	var regExp1 = /\S/
	if(!regExp1.test(inputStr)) {input.value="";return true}; return false
}}

//
// Standard Form Field Check Functions
//

function isNumber(input){
var inputStr=input.value
if(window.RegExp && inputStr){
	var regExp1 = /[^0-9]/
	if(regExp1.test(inputStr)) {alert("Invalid entry.\n\nPlease ensure that entries are numbers only.");input.value="";input.focus();return false}; return true
}}

function isAlphaNum(input){
var inputStr=input.value
if(window.RegExp && inputStr){
	var regExp1 = /[^a-zA-Z0-9]/
	if(regExp1.test(inputStr)) {alert("Invalid entry.\n\nPlease ensure that entries are alphanumeric only.");input.value="";input.focus();return false}; return true
}}

function isYear(input){
var inputStr=input.value
if(window.RegExp && inputStr){
	var regExp1 = /\b\d{4}\b/
	if(!regExp1.test(inputStr)) {alert("Invalid entry.\n\nPlease ensure that year is in YYYY format.");input.value="";input.focus();return false}; return true
}}

function isEmail(input){
var inputStr=input.value
if(window.RegExp && inputStr){
	var regstr1 = "(@.*@)|(\\.\\.)|(@\\.)|(\\.@)|(^\\.)"
	var regstr2 = "^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$"
	var regExp1 = new RegExp(regstr1)
	var regExp2 = new RegExp(regstr2)
	var regExp3 = /[^a-zA-Z0-9\-_.@]/
	if(!(!regExp1.test(inputStr) && regExp2.test(inputStr) && !regExp3.test(inputStr)) || !(inputStr.indexOf("@")>=0)) {alert("Invalid entry.\n\nPlease enter a valid Email Address.");input.value="";input.focus();return false}; return true
}}

function chkField(input,min,type){
if(type=="num") {isNumber(input)}
else if(type=="alphanum") {isAlphaNum(input)}
else {isBlank(input)}
var inputStr=input.value
if(window.RegExp && inputStr){
	inputStr=inputStr.replace(/^\s+/,""); inputStr=inputStr.replace(/\s+$/,"")
	if(min && inputStr.length<min) {alert("Invalid entry.\n\nPlease enter a minimum of "+min+" characters.");input.value="";input.focus()}
}}

function chkMaxLen(input,max,count){
var inputStr=input.value
if(max && inputStr.length>max) {alert("Your message has exceeded the maximum length of "+max+" characters.\n\nPlease shorten your entry.");input.value=inputStr.substring(0,max);input.focus()}
if(count) {count.value=input.value.length;input.blur();input.focus()}
}

var cmlTimer
function showMaxLen(input,max,count){
cmlTimer=setTimeout("chkMaxLen(document."+input.form.name+"."+input.name+","+max+",document."+count.form.name+"."+count.name+")",100)
}

function chkSelect(input){
if(!input.length) {if(input.checked) return true}
else {for(i=0;i<input.length;i++) {if(input[i].checked) return true}}
return false
}

function isListSelChg(ff){
return ff.options[ff.selectedIndex].defaultSelected
}


//
// Misc Form Field Check Functions
//

function isPrice(input){
var inputStr=input.value
if(window.RegExp && inputStr){
	var regExp1 = /[^0-9]/
	var regExp2 = /^[0-9]+\.\d{1,2}$/
	if(regExp1.test(inputStr) && !regExp2.test(inputStr)) {alert("Invalid entry.\n\nPlease ensure entry is a proper price value.");input.value="";input.focus();return false}; return true
}}

function noSpace(input){
var inputStr=input.value
if(window.RegExp && inputStr){
	var regExp1 = /\s/
	if(regExp1.test(inputStr)) {alert("Invalid entry.\n\nPlease do no use spaces for the entry.");input.value="";input.focus();return false}; return true
}}



function checkCreditCard(cardNumber, cardType)
{
   var isValid = false;
   var ccCheckRegExp = /[^\d ]/;
   isValid = !ccCheckRegExp.test(cardNumber);
   if(isValid)
   {
      var cardNumbersOnly = cardNumber.replace(/ /g,"");
      var cardNumberLength = cardNumbersOnly.length;
      var lengthIsValid = false;
      var prefixIsValid = false;
      var prefixRegExp;

      switch(cardType)
      {
         case "MASTER":
            lengthIsValid = (cardNumberLength == 16);
            prefixRegExp = /^5[1-5]/;
            break;

         case "VISA":
            lengthIsValid = (cardNumberLength == 16 || cardNumberLength == 13);
            prefixRegExp = /^4/;
            break;

         case "AMEX":
            lengthIsValid = (cardNumberLength == 15);
            prefixRegExp = /^3(4|7)/;
            break;

         case "DINERS":
            lengthIsValid = (cardNumberLength == 14);
            prefixRegExp = /^3(0[0-5]|6|8)/;

         case "JCB":
				return true;
         case "OTHER":
				return true;

         default:
            prefixRegExp = /^$/;
            alert("Card type not found");
      }

      prefixIsValid = prefixRegExp.test(cardNumbersOnly);
      isValid = prefixIsValid && lengthIsValid;
   }
	if (isValid)
   {
      var numberProduct;
      var numberProductDigitIndex;
      var checkSumTotal = 0;

      for (digitCounter = cardNumberLength - 1;
         digitCounter >= 0;
         digitCounter--)
      {
         checkSumTotal += parseInt (cardNumbersOnly.charAt(digitCounter));
         digitCounter--;
         numberProduct = String((cardNumbersOnly.charAt(digitCounter) * 2));
         for (var productDigitCounter = 0;
               productDigitCounter < numberProduct.length;
               productDigitCounter++)
         {
            checkSumTotal += parseInt(numberProduct.charAt(productDigitCounter));
         }
      }
      isValid = (checkSumTotal % 10 == 0);
   }
  return isValid;
}


function checkNumeric(objName,minval, maxval,comma,period,hyphen)
{
	var numberfield = objName;
	if (chkNumeric(objName,minval,maxval,comma,period,hyphen) == false)
	{
		numberfield.select();
		numberfield.focus();
		return false;
	}
	else
	{
		return true;
	}
}

function chkNumeric(objName,minval,maxval,comma,period,hyphen)
{
// only allow 0-9 be entered, plus any values passed
// (can be in any order, and don't have to be comma, period, or hyphen)
// if all numbers allow commas, periods, hyphens or whatever,
// just hard code it here and take out the passed parameters
var checkOK = "0123456789" + comma + period + hyphen;
var checkStr = objName;
var allValid = true;
var decPoints = 0;
var allNum = "";

for (i = 0;  i < checkStr.value.length;  i++)
{
ch = checkStr.value.charAt(i);
for (j = 0;  j < checkOK.length;  j++)
if (ch == checkOK.charAt(j))
break;
if (j == checkOK.length)
{
allValid = false;
break;
}
if (ch != ",")
allNum += ch;
}
if (!allValid)
{	
alertsay = "Please enter only these values \""
alertsay = alertsay + checkOK + "\"."
alert(alertsay);
return (false);
}

// set the minimum and maximum
var chkVal = allNum;
var prsVal = parseInt(allNum);
if (chkVal != "" && !(prsVal >= minval && prsVal <= maxval))
{
alertsay = "Please enter a value greater than or "
alertsay = alertsay + "equal to \"" + minval + "\" and less than or "
alertsay = alertsay + "equal to \"" + maxval + "\"."
alert(alertsay);
return (false);
}
}

function checkDateElement(dateElement)
{
	if(!checkValidDate(dateElement.value))
	{
		alert("The date you supplied was invalid. Please try again.");
		dateElement.focus;
		return false;
	}
	return true;
}

function checkValidDate(dateStr) 
{
    // dateStr must be of format month day year with either slashes
    // or dashes separating the parts. Some minor changes would have
    // to be made to use day month year or another format.
    // This function returns True if the date is valid.
    var slash1 = dateStr.indexOf("/");
    if (slash1 == -1) { slash1 = dateStr.indexOf("-"); }
    // if no slashes or dashes, invalid date
    if (slash1 == -1) { return false; }

    var dateYear = dateStr.substring(0, slash1)
    var dateYearAndDay = dateStr.substring(slash1+1, dateStr.length);
    var slash2 = dateYearAndDay.indexOf("/");
    if (slash2 == -1) { slash2 = dateYearAndDay.indexOf("-"); }
    // if not a second slash or dash, invalid date
    if (slash2 == -1) { return false; }
    var dateMonth = dateYearAndDay.substring(0, slash2);
    var dateDay = dateYearAndDay.substring(slash2+1, dateYearAndDay.length);

    if ( (dateMonth == "") || (dateDay == "") || (dateYear == "") ) { return false; }
    // if any non-digits in the month, invalid date
    for (var x=0; x < dateMonth.length; x++) {
        var digit = dateMonth.substring(x, x+1);
        if ((digit < "0") || (digit > "9")) { return false; }
    }
    // convert the text month to a number
    var numMonth = 0;
    for (var x=0; x < dateMonth.length; x++) {
        digit = dateMonth.substring(x, x+1);
        numMonth *= 10;
        numMonth += parseInt(digit);
    }
    if ((numMonth <= 0) || (numMonth > 12)) { return false; }
    // if any non-digits in the day, invalid date
    for (var x=0; x < dateDay.length; x++) {
        digit = dateDay.substring(x, x+1);
        if ((digit < "0") || (digit > "9")) { return false; }
    }
    // convert the text day to a number
    var numDay = 0;
    for (var x=0; x < dateDay.length; x++) {
        digit = dateDay.substring(x, x+1);
        numDay *= 10;
        numDay += parseInt(digit);
    }
    if ((numDay <= 0) || (numDay > 31)) { return false; }
    // February can't be greater than 29 (leap year calculation comes later)
    if ((numMonth == 2) && (numDay > 29)) { return false; }
    // check for months with only 30 days
    if ((numMonth == 4) || (numMonth == 6) || (numMonth == 9) || (numMonth == 11)) { 
        if (numDay > 30) { return false; } 
    }
    // if any non-digits in the year, invalid date
    for (var x=0; x < dateYear.length; x++) {
        digit = dateYear.substring(x, x+1);
        if ((digit < "0") || (digit > "9")) { return false; }
    }
    // convert the text year to a number
    var numYear = 0;
    for (var x=0; x < dateYear.length; x++) {
        digit = dateYear.substring(x, x+1);
        numYear *= 10;
        numYear += parseInt(digit);
    }
    // Year must be a 2-digit year or a 4-digit year
    if ( (dateYear.length != 2) && (dateYear.length != 4) ) { return false; }
    // if 2-digit year, use 50 as a pivot date
    if ( (numYear < 50) && (dateYear.length == 2) ) { numYear += 2000; }
    if ( (numYear < 100) && (dateYear.length == 2) ) { numYear += 1900; }
    if ((numYear <= 0) || (numYear > 9999)) { return false; }
    // check for leap year if the month and day is Feb 29
    if ((numMonth == 2) && (numDay == 29)) {
        var div4 = numYear % 4;
        var div100 = numYear % 100;
        var div400 = numYear % 400;
        // if not divisible by 4, then not a leap year so Feb 29 is invalid
        if (div4 != 0) { return false; }
        // at this point, year is divisible by 4. So if year is divisible by
        // 100 and not 400, then it's not a leap year so Feb 29 is invalid
        if ((div100 == 0) && (div400 != 0)) { return false; }
    }
    // date is valid
    return true;
}

function attachCharCounter(textboxId, counterId) {
	var textbox = getObject(textboxId);
	var counter = getObject(counterId);

	if(textbox) {
		var maxlength = textbox.getAttribute('maxlength');
		var imsg = textbox.getAttribute('imsg');

		textbox.onkeyup = function() {
			var counterValue = maxlength - Number(textbox.value.length);
			counter.value = counterValue < 0 ? 0 : counterValue;
			counter.style.color = 'rgb(' + (maxlength - counterValue) + ',0,0)';

			if(this.value.length > maxlength) {
				alert(imsg);
				this.value = this.value.substring(0, maxlength);
			}
		}
	}
}

function getObject(objOrId) {
	if(typeof objOrId == 'object') {
		return objOrId;
	} else if(typeof objOrId == 'string') {
		return document.getElementById(objOrId);
	} else {
		return null;
	}
}