//********************************************************************
//*-------------------------------------------------------------------
//* Licensed Materials - Property of IBM
//*
//* WebSphere Commerce
//*
//* (c) Copyright International Business Machines Corporation. 2003
//*     All rights reserved.
//*
//* US Government Users Restricted Rights - Use, duplication or
//* disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
//*
//*-------------------------------------------------------------------
//*

//////////////////////////////////////////////////////////
// Checks whether a string contains a double byte character
// target = the string to be checked
//
// Return true if target contains a double byte char; false otherwise
//////////////////////////////////////////////////////////
function containsDoubleByte (target) {
     var str = new String(target);
     var oneByteMax = 0x007F;

     for (var i=0; i < str.length; i++){
        chr = str.charCodeAt(i);
        if (chr > oneByteMax) {return true;}
     }
     return false;
}

//////////////////////////////////////////////////////////
// A simple function to validate an email address
// It does not allow double byte characters
// strEmail = the email address string to be validated
//
// Return true if the email address is valid; false otherwise
//////////////////////////////////////////////////////////
function isValidEmail(strEmail){
	// check if email contains dbcs chars
	if (containsDoubleByte(strEmail)){
		return false;
	}
	
	if(strEmail.length == 0) {
		return true;
	} else if (strEmail.length < 5) {
             return false;
       	}else{
           	if (strEmail.indexOf(" ") > 0){
                      	return false;
               	}else{
                  	if (strEmail.indexOf("@") < 1) {
                            	return false;
                     	}else{
                           	if (strEmail.lastIndexOf(".") < (strEmail.indexOf("@") + 2)){
                                     	return false;
                                }else{
                                        if (strEmail.lastIndexOf(".") >= strEmail.length-2){
                                        	return false;
                                        }
                              	}
                       	}
              	}
       	}
      	return true;
}



//////////////////////////////////////////////////////////
// This function will count the number of bytes
// represented in a UTF-8 string
//
// arg1 = the UTF-16 string
// arg2 = the maximum number of bytes allowed in your input field
// Return false is this input string is larger then arg2
// Otherwise return true...
//////////////////////////////////////////////////////////
function isValidUTF8length(UTF16String, maxlength) {
    if (utf8StringByteLength(UTF16String) > maxlength) return false;
    else return true;
}

//////////////////////////////////////////////////////////
// This function will count the number of bytes
// represented in a UTF-8 string
//
// arg1 = the UTF-16 string you want a byte count of...
// Return the integer number of bytes represented in a UTF-8 string
//////////////////////////////////////////////////////////
function utf8StringByteLength(UTF16String) {
  if (UTF16String === null) return 0;
  var str = String(UTF16String);
  var oneByteMax = 0x007F;
  var twoByteMax = 0x07FF;
  var byteSize = str.length;

  for (i = 0; i < str.length; i++) {
    chr = str.charCodeAt(i);
    if (chr > oneByteMax) byteSize = byteSize + 1;
    if (chr > twoByteMax) byteSize = byteSize + 1;
  }  
  return byteSize;
}



// Onload Stacker Function
var onloadHandlers = [];
window.onload = function(){
	for(var i=0;i<onloadHandlers.length;i++){
		eval(onloadHandlers[i]);
	}
}



// Get Elements By ClassName
function getElementsByClassName(oElm, strTagName, strClassName){
	var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
	var arrReturnElements = new Array();
	strClassName = strClassName.replace(/\-/g, "\\-");
	var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
	var oElement;
	for(var i=0; i<arrElements.length; i++){
		oElement = arrElements[i];
		if(oRegExp.test(oElement.className)){
			arrReturnElements.push(oElement);
		}
	}
	return (arrReturnElements)
}

//Call to scroll the window to the top for DHTML layers
function toTop() {
	self.scrollTo(0, 0)
}

function createCookie(name, value, days) {
	 if (days)
	 {
 		 var date = new Date();
 		 date.setTime(date.getTime()+(days*24*60*60*1000));
 		 var expires = "; expires="+date.toGMTString();
	 }
	 else {
		var expires = "";
	 }
	 document.cookie = name+"="+value+expires+"; path=/";
}

function createCookieWDomain(name, value, days, domain) {
	 if (days)
	 {
 		 var date = new Date();
 		 date.setTime(date.getTime()+(days*24*60*60*1000));
 		 var expires = "; expires="+date.toGMTString();
	 }
	 else {
		var expires = "";
	 }
	 if (domain)
	 {
 		 var domain = "; domain="+domain;
	 }
	 else {
		var domain = "";
	 }
	 document.cookie = name+"="+value+expires+domain+"; path=/";
}

function findArg (name) {
	sArgs = location.search.slice(1).split('&');
	r = '';
	for (var i = 0; i < sArgs.length; i++) {
		if (sArgs[i].slice(0,sArgs[i].indexOf('=')) == name) {
			r = sArgs[i].slice(sArgs[i].indexOf('=')+1);
			break;
		}
	}
	return (r.length > 0 ? unescape(r) : '')
}

function launchNewWindow(newURL, height, width) {
  	var newwindow = window.open(newURL,
                    null,
                    "height=" + height + ",width=" + width + ",resizable=1,scrollbars=1");

	return newwindow;
}   

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++)
	{
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return "";
}

function buildURLParam(param, value){
	return param = "&" + param + "=" + value;
}

function getURLParam(strParamName){
  var strRet = "";
  var strHref = window.location.href;
  if ( strHref.indexOf("?") > -1 ){
    var strQueryString = strHref.substr(strHref.indexOf("?")).toLowerCase();
    var aQueryString = strQueryString.split("&");
    for ( var iParam = 0; iParam < aQueryString.length; iParam++ ){
      if ( aQueryString[iParam].indexOf(strParamName + "=") > -1 ){
        var aParam = aQueryString[iParam].split("=");
        strRet = aParam[1];
        break;
      }
    }
  }
  return strRet;
} 

function numbersOnly(event) {  	
	var Key;
	if (event.keyCode) {
		Key = event.keyCode;
		// ignore backspace
		if (Key == 8) 
			return true;
	} else if(event.which) {
		Key = event.which;
	} else {
		event.charCode;
	}
		if (Key<48||Key>57) {
		return false;
	} 
}
function ccCharsOnly(e) {  	
	
	var keynum;
	if(e.keyCode) 
	{
		keynum = e.keyCode;
		} else if(e.which) {
		keynum = e.which;
		} else if (e.charCode) {
		keynum = e.charCode;
	}
	
	if ( (keynum == 8) || (keynum == 9) || (keynum == 32) || (keynum == 45) || (keynum>47 && keynum<58)) {
		return true;
	} else return false;

}

function removeNonNumbers(event, field) {
	var filteredValue = '';
	
	var digits = "0123456789";
	
	for (var i=0; i<field.value.length; i++) {
		// don't add non-numeric values
		if (digits.indexOf(field.value.charAt(i)) != -1) {
			// current digit is ok, can add this
			filteredValue += field.value.charAt(i);
		}
	}
	
	// replace the filtered value
	field.value = filteredValue;
}

function removeNonCCChars(event, field) {
	var filteredValue = '';
	
	var digits = "0123456789 -";
	
	for (var i=0; i<field.value.length; i++) {
		// don't add non-numeric values
		if (digits.indexOf(field.value.charAt(i)) != -1) {
			// current digit is ok, can add this
			filteredValue += field.value.charAt(i);
		}
	}
	
	// replace the filtered value
	field.value = filteredValue;
}
function FlashDetector(instanceName){
	var t = this;
	var activeX = false;
	t.ieAutoInstall = true;
	t.hasVersion = function(ver){
		t.swf = false;
		if(!ver) ver = 0;
		var n = navigator;
		if(n.plugins && n.plugins.length > 0){
			var m,tp,d,v;
			m = n.mimeTypes;
			tp = 'application/x-shockwave-flash';
			if(m && m[tp] && m[tp].enabledPlugin && m[tp].enabledPlugin.description){
				d = m[tp].enabledPlugin.description;
				v = d.charAt(d.indexOf('.')-1);
				t.swf = (v >= ver) ? true : false;
			}
		}else if(n.appVersion.indexOf("Mac") == -1 && window.execScript){
			for(var i=ver; i<=10&&i!=1&&t.swf!=true; i++){
				execScript('on error resume next: '+instanceName+'.swf=IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash'+((i==0)?'':'.'+i)+'"))','VBScript');
			}
			activeX = true;
		}else{
			t.swf = false;
		}
		return t.swf;
	}
	t.getPluginTag = function(swfFile,width,height,bgcolor,ver,altFormat,params){
		var s = '';
		var win = (navigator.appVersion.toLowerCase().indexOf("win")!=-1);
		var ie = (navigator.appName=="Microsoft Internet Explorer");
		if(t.hasVersion(ver) && swfFile || win && ie && swfFile && t.ieAutoInstall){
			var additionalParams = '';
			if(params && params.length>0){

				var pArray = params.split(",");
				for(var i=0; i<pArray.length; i++){
					var ta = pArray[i].substr(0,pArray[i].indexOf('='));
					var v = pArray[i].substr(pArray[i].indexOf('=')+1,pArray[i].length);
					additionalParams += (activeX)?'\t<param name="' + ta + '" value="' + v + '" />\n': ' '+ ta + '="' + v + '"';
				}
			}
			if(activeX){
				s = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,21,0" width="'+width+'" height="'+height+'">\n';
				s += '\t<param name="movie" value="'+swfFile+'" />\n';
				s += '\t<param name="quality" value="high" />\n';
				s += '\t<param name="menu" value="false" />\n';
				s += '\t<param name="bgcolor" value="'+bgcolor+'" />\n';
				s += additionalParams;
				s += altFormat;
				s += '</object>\n\n';
				//alert(s);
				return s;
			}else{
				s = '<embed src="'+swfFile+'" quality="high" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" menu="false" width="'+width+'" height="'+height+'" bgcolor="'+bgcolor+'"'+additionalParams+'></embed>\n';
				return s;
			}
		}else{
			t.noFlash = true;
			return altFormat;
		}
	}
	t.embedMovie = function(swfFile,width,height,bgcolor,ver,altFormat,params){
		document.write(flash.getPluginTag(swfFile,width,height,bgcolor,ver,altFormat,params));
	}
}

var flash = new FlashDetector("flash");


var StyleGallery = function(){
	var t = this;
	if(!document.getElementById('gallery')){return;}

	// Properties
    t.thumbs = document.getElementById('gallery-thumbs').getElementsByTagName('a');
    t.bigImg = document.getElementById('gallery-image');
	t.contents = document.getElementById('gallery-details-content').getElementsByTagName('div');
	t.view = document.getElementById('gallery-larger');
	t.prev = document.getElementById('gallery-prev');
	t.next = document.getElementById('gallery-next');
    t.current = 0;

	// Setup Thumb Links
	t.initThumbs = function(){
		if(!t.thumbs){return;}
        for(i=0;i<t.thumbs.length;i++){
            if(t.thumbs[i].className=='gallery-thumb-link'){
                t.thumbs[i].position=i;
                t.thumbs[i].onclick=function(){
					t.current = this.position;
                    t.switchImage(this.position);
					t.switchContent(this.position);
                    return false;
                }
            }
        }
	}

	// Setup Controls
	t.initControls = function(){
		//View Larger
		t.view.onclick = function(){
			var regex = /_hero/i;// This will ignore the case of the hero letters.
			var largeImgURL = t.thumbs[t.current].href.replace(regex,'_large');
			window.open(largeImgURL,'ViewLarger', 'status = 1, height = 438, width = 670, resizable = 0');
			return false;
		}
		// Previous
		t.prev.onclick = function(){
			if(t.current>0){
				t.current--;
				t.switchImage(t.current);
				t.switchContent(t.current);
			}
			return false;
		}
		// Next
		t.next.onclick = function(){
			if(t.current<t.thumbs.length-1){
				t.current++;
				t.switchImage(t.current);
				t.switchContent(t.current);
			}
			return false;
		}
	}// End Setup Controls

	// Switch Image
	t.switchImage = function(num){
		if(t.thumbs[num].href==''){return;}
		t.bigImg.src = t.thumbs[num].href;
	}//End Switch Image

	// Switch Content
	t.switchContent = function(num){
		if(!t.contents[num]){return;}
		for(i=0; i<t.contents.length; i++){
			t.contents[i].style.display = 'none';
		}
		t.contents[num].style.display = 'block';
	}//End Switch Content


	// Initialization
	t.init = function(){
		t.initThumbs();
		t.initControls();
	}// End Initialization

	// Initialize
	this.init();


}

// Onload Init
onloadHandlers[onloadHandlers.length] = 'StyleGallery = new StyleGallery();';
